I had the honor of testing HUMAIN inference serving: an independent benchmark of humain-m3-research-preview on the HUMAIN Node gateway (api.node.humain.com/v1). This report is a serving assessment — throughput, latency, scaling, reliability, and cost — not a base-model capability comparison.

Headline results: 21.6 req/s max sustained throughput, 11.5k output tok/s peak, sub-second first-token latency, and a 7/10 conditional production readiness verdict at capped concurrency with 429-aware clients. At list pricing ($0.30 in / $1.20 out per 1M tokens), that is roughly $0.32–$0.88 per 1,000 requests depending on shape. Full method, curves, and pricing math below — plus my personal feedback and why in-Kingdom inference matters for AI sovereignty.

Benchmark date 8 Sep 2026
Endpoint api.node.humain.com/v1
Model humain-m3-research-preview
Scenarios 9 across 3 shapes
Requests 16,126 ok / 31,218 errored
Verdict 7/10, conditional

Scope: inference serving assessment as deployed on the HUMAIN Node gateway (OpenAI-compatible /v1/chat/completions, streaming) — not a base-model capability comparison. 30 s per benchmark (~38 min total incl. rerun); max concurrency tested 512 (deliberate overload probe), max sustained 115. Errors are dominated by the deliberate overload probes.

Executive Summary

  • Fast generator, moderate first-token latency. Inter-token latency is 3.6–7.3 ms p50 (≈140–280 tok/s per stream — very fast streaming); TTFT p50 is 559–867 ms across shapes. Users see the first token in well under a second, then a rapid stream.
  • Throughput plateaus at ~21–22 req/s regardless of prompt/output shape; output-token throughput scales with output length (peak ≈3.0k tok/s chat, 5.9k long-ctx, 11.5k balanced; ≈30k total tok/s).
  • Scaling is near-linear up to a clear knee, then fail-fast 429s. The gateway sheds load with HTTP 429 (31,188 of 31,218 errors) instead of letting latency explode — good overload behavior, but clients must implement backoff.
  • Sweet spots (measured): chat 256/128 → concurrency ~16–24; long-ctx 1024/256 → ~24–40; balanced 512/512 → ~40–78. Each holds 15–20 req/s with zero errors.
  • Steady 17 RPS (1024 RPM budget) is sustainable for all three shapes: 16.3 / 16.0 / 15.1 req/s with zero errors on the rerun; TTFT p50 591 / 756 / 804 ms.
  • End-to-end is output-dominated: E2E p50 ≈1.1 s (128 out) → 1.8 s (256 out) → 3.5 s (512 out). TTFT is roughly constant; generation time drives E2E.
  • Caution — first 512/512 attempt collapsed entirely (0/510 and 0/2610 successful) after the suite had saturated the endpoint; a rerun ~30 min later succeeded fully. Treat 512-token outputs as the capacity-sensitive shape: cap concurrency, keep headroom, retry with backoff.
  • Verdict: conditionally production-ready for chat, copilot, and agentic workloads at capped concurrency with 429-aware clients; strong fit for batch. Not approved for uncapped autoscaling or burst traffic without further testing.

Key results

21.6 req/s
Max sustained throughput. Chat shape, conc 41; plateau ≈21–22 req/s all shapes
11.5k tok/s
Peak output throughput. Balanced 512/512 at conc 115; ≈30k total tok/s
559 ms
Best TTFT p50. Chat 256/128, low concurrency; 717–867 ms for larger shapes
1.44 s
Best E2E p95. Chat shape at conc 24; 2.2 s long-ctx; 5.0 s balanced
3.6–7.3 ms
Generation speed (ITL p50). ≈140–280 tok/s per stream; perceived streaming is instant
78
Max zero-error concurrency. Balanced shape; 24 chat / 40 long-ctx (measured)
100%
Steady-load success rate. 0 errors on all constant/concurrent reruns in operating range
7 / 10
Production readiness. Conditional: capped concurrency + 429 backoff required

What is HUMAIN Node

HUMAIN Node is HUMAIN’s gateway to frontier and sovereign AI models: one account, one API key, and one bill across many providers, with OpenAI-compatible endpoints, team budgets, and a choice of Global, in-Kingdom, or sovereign hosting per workload — without changing client code.

The model under test, humain-m3-research-preview, was commissioned by HUMAIN and delivered by MiniMax: a 428-billion-parameter mixture-of-experts with 23B active parameters per token. It launched in research preview in September 2026, with open weights planned to follow under the MiniMax Community License. Access is a controlled, territory-by-territory preview — exactly the kind of early window I was grateful to be given.

428B
Mixture-of-experts. 23B active parameters per token.
Sep 2026
Research preview. Controlled early access; open weights to follow.
1 API
HUMAIN Node. OpenAI-compatible, streaming, usage stats.
3
Hosting choices. Global, in-Kingdom, or sovereign.

Benchmark Configuration

ItemValue
Endpointhttps://api.node.humain.com/v1 — POST /v1/chat/completions (streaming, usage stats)
Modelhumain-m3-research-preview (MiniMax M3)
AuthBearer HUMAIN_NODE_API_KEY
ShapesRun 1 chat 256 prompt / 128 out · Run 2 long-ctx 1024 / 256 · Run 3 balanced 512 / 512 (synthetic text, gpt2 tokenizer for sizing)
Profilessweep (10 steps: 1× synchronous, 1× throughput probe @512, 8× ramp) · constant @17 RPS · concurrent @16 streams
Constraintmax_duration 30 s per benchmark (incomplete = in-flight at window end, not failures)
Client notesEndpoint health-check validation disabled by the load harness (gateway exposes /healthz, not /health); per-request timeout Not Available

Sweep step 1 in every run is a deliberate throughput overload probe (max_concurrency 512) that intentionally triggers thousands of 429s. It is marked OVERLOAD PROBE below and excluded from scaling curves.

Performance Overview

Across 16,126 successful requests the endpoint behaves like a well-batched streaming server behind a strict rate limiter. Throughput rises near-linearly with concurrency until a per-shape knee, flattens at ~21–22 req/s, and then sheds excess load with HTTP 429 rather than queueing indefinitely. TTFT is dominated by prompt processing (≈560 ms at 256 tokens → ≈750–870 ms at 512–1024 tokens) and stays flat across the efficient zone. Generation cadence (ITL 3.6–7 ms) is excellent and only degrades past saturation. End-to-end latency is therefore a near-linear function of requested output tokens — a customer-visible property worth documenting in any SLA.

Concurrency Analysis

Chat 256/128 — sweep steps

ConcReq/sOut tok/sE2E p50E2E p95TTFT p50ITL p50Error rateAssessment
10.9125101512775593.60.0% (27/27)Stable
132.844803500490820009.594.7% (983/18475)Overload Probe
52.9382125916077853.839.0% (86/141)Saturated
108.61131113214385633.70.0% (258/258)Stable
1412.41631113314475673.60.0% (372/372)Stable
1916.32144110514215693.60.0% (489/489)Efficient
2420.02639113814436073.70.0% (601/601)Efficient
2921.72847126415747773.89.5% (651/719)Degrading
3321.42821128719037923.822.6% (643/831)Degrading
4121.62981135619108053.933.8% (647/978)Saturated

Long-context 1024/256 — sweep steps

ConcReq/sOut tok/sE2E p50E2E p95TTFT p50ITL p50Error rateAssessment
10.5148176720447213.50.0% (16/16)Stable
133.0927647245588192810.384.5% (990/6400)Overload Probe
52.3616172620697573.946.6% (70/131)Saturated
158.22169174123047563.70.0% (246/246)Stable
2212.03201167720597233.50.0% (361/361)Stable
3015.84178177821577494.00.0% (475/475)Efficient
4019.55153188323397614.40.0% (584/584)Efficient
4721.25595206727227844.99.9% (635/705)Degrading
5121.35629213226537765.122.0% (638/818)Degrading
6521.15896234929088035.935.6% (634/985)Saturated

Balanced 512/512 — sweep steps (rerun)

ConcReq/sOut tok/sE2E p50E2E p95TTFT p50ITL p50Error rateAssessment
10.3181286244517173.70.0% (10/10)Stable
40533.217489792111846182511.286.4% (995/7337)Overload Probe
42.01097258232195743.749.6% (61/121)Saturated
247.84128274435877363.90.0% (235/235)Stable
3711.36006292435657564.20.0% (340/340)Stable
5615.07881333441447825.00.0% (449/449)Stable
7818.39652380250128305.70.0% (548/548)Efficient
9420.310677411153548376.38.4% (610/666)Degrading
9919.010099436359238546.726.0% (571/772)Degrading
11521.211507459661708677.335.7% (635/988)Saturated

Steady-load checks (30 s each)

ProfileReq/sConcTTFT p50/p95/p99 (ms)ITL p50/p99 (ms)E2E p50/p95/p99 (ms)In/Out/Total tok/sResult
constant16.320591 / 904 / 17123.6 / 6.31142 / 1492 / 21588492 / 2158 / 10565489 ok, 0 err, 21 inc (0.0%)
concurrent13.116604 / 922 / 19683.7 / 5.81141 / 1483 / 20006897 / 1738 / 8512393 ok, 0 err, 16 inc (0.0%)
constant16.031756 / 862 / 10064.0 / 6.21802 / 2218 / 236620620 / 4198 / 24102479 ok, 0 err, 31 inc (0.0%)
concurrent9.316706 / 818 / 11533.8 / 6.01641 / 2096 / 251111934 / 2441 / 14015280 ok, 0 err, 15 inc (0.0%)
constant15.160804 / 1032 / 11585.1 / 8.63474 / 4431 / 520312395 / 7940 / 19369453 ok, 0 err, 58 inc (0.0%)
concurrent5.716717 / 827 / 10123.8 / 6.12635 / 3361 / 38804669 / 3009 / 7338172 ok, 0 err, 15 inc (0.0%)

Throughput Scaling

Concurrency vs requests/sec

Chat 256/128 Long-ctx 1024/256 Balanced 512/512 req/s 0 5 10 15 20 25 0 20 40 60 80 100 120 Median concurrency Chat 256/128 conc 1: 0.9 req/s Chat 256/128 conc 5: 2.87 req/s Chat 256/128 conc 10: 8.57 req/s Chat 256/128 conc 14: 12.37 req/s Chat 256/128 conc 19: 16.3 req/s Chat 256/128 conc 24: 20.03 req/s Chat 256/128 conc 29: 21.7 req/s Chat 256/128 conc 33: 21.43 req/s Chat 256/128 conc 41: 21.57 req/s Long-ctx 1024/256 conc 1: 0.53 req/s Long-ctx 1024/256 conc 5: 2.3 req/s Long-ctx 1024/256 conc 15: 8.17 req/s Long-ctx 1024/256 conc 22: 12.03 req/s Long-ctx 1024/256 conc 30: 15.83 req/s Long-ctx 1024/256 conc 40: 19.47 req/s Long-ctx 1024/256 conc 47: 21.17 req/s Long-ctx 1024/256 conc 51: 21.27 req/s Long-ctx 1024/256 conc 65: 21.13 req/s Balanced 512/512 conc 1: 0.33 req/s Balanced 512/512 conc 4: 2.03 req/s Balanced 512/512 conc 24: 7.83 req/s Balanced 512/512 conc 37: 11.33 req/s Balanced 512/512 conc 56: 14.97 req/s Balanced 512/512 conc 78: 18.27 req/s Balanced 512/512 conc 94: 20.33 req/s Balanced 512/512 conc 99: 19.03 req/s Balanced 512/512 conc 115: 21.17 req/s

Near-linear to each shape's knee, then a hard plateau at ~21–22 req/s. The plateau is identical across shapes — consistent with a gateway/request-rate ceiling rather than GPU exhaustion (which would plateau token throughput, not request rate). Hypothesis only; server telemetry would be needed to confirm.

Concurrency vs output tokens/sec

Chat 256/128 Long-ctx 1024/256 Balanced 512/512 out tok/s 0 2500 5000 7500 10000 12500 0 20 40 60 80 100 120 Median concurrency Chat 256/128 conc 1: 125 out tok/s Chat 256/128 conc 5: 382.3 out tok/s Chat 256/128 conc 10: 1130.6 out tok/s Chat 256/128 conc 14: 1631 out tok/s Chat 256/128 conc 19: 2144.2 out tok/s Chat 256/128 conc 24: 2639 out tok/s Chat 256/128 conc 29: 2847 out tok/s Chat 256/128 conc 33: 2820.9 out tok/s Chat 256/128 conc 41: 2980.9 out tok/s Long-ctx 1024/256 conc 1: 148.4 out tok/s Long-ctx 1024/256 conc 5: 615.7 out tok/s Long-ctx 1024/256 conc 15: 2168.8 out tok/s Long-ctx 1024/256 conc 22: 3200.8 out tok/s Long-ctx 1024/256 conc 30: 4178.2 out tok/s Long-ctx 1024/256 conc 40: 5153.1 out tok/s Long-ctx 1024/256 conc 47: 5594.9 out tok/s Long-ctx 1024/256 conc 51: 5629.1 out tok/s Long-ctx 1024/256 conc 65: 5895.6 out tok/s Balanced 512/512 conc 1: 181.3 out tok/s Balanced 512/512 conc 4: 1096.7 out tok/s Balanced 512/512 conc 24: 4128.3 out tok/s Balanced 512/512 conc 37: 6006.2 out tok/s Balanced 512/512 conc 56: 7880.8 out tok/s Balanced 512/512 conc 78: 9652.3 out tok/s Balanced 512/512 conc 94: 10677.1 out tok/s Balanced 512/512 conc 99: 10099.5 out tok/s Balanced 512/512 conc 115: 11507.1 out tok/s

Token throughput keeps climbing with output length long after request rate plateaus: the server converts the same ~21 req/s into far more tokens for 512-output workloads (peak 11.5k out tok/s, ~30k total tok/s).

Latency Analysis

End-to-end p95 vs concurrency (ms)

Chat 256/128 Long-ctx 1024/256 Balanced 512/512 ms 0 2000 4000 6000 8000 0 20 40 60 80 100 120 Median concurrency Chat 256/128 conc 1: 1276.6 ms E2E p95 Chat 256/128 conc 5: 1607 ms E2E p95 Chat 256/128 conc 10: 1438.3 ms E2E p95 Chat 256/128 conc 14: 1447.2 ms E2E p95 Chat 256/128 conc 19: 1420.7 ms E2E p95 Chat 256/128 conc 24: 1442.9 ms E2E p95 Chat 256/128 conc 29: 1574.1 ms E2E p95 Chat 256/128 conc 33: 1903.2 ms E2E p95 Chat 256/128 conc 41: 1910 ms E2E p95 Long-ctx 1024/256 conc 1: 2043.8 ms E2E p95 Long-ctx 1024/256 conc 5: 2069 ms E2E p95 Long-ctx 1024/256 conc 15: 2304.3 ms E2E p95 Long-ctx 1024/256 conc 22: 2059 ms E2E p95 Long-ctx 1024/256 conc 30: 2156.7 ms E2E p95 Long-ctx 1024/256 conc 40: 2339.1 ms E2E p95 Long-ctx 1024/256 conc 47: 2722.3 ms E2E p95 Long-ctx 1024/256 conc 51: 2652.6 ms E2E p95 Long-ctx 1024/256 conc 65: 2907.9 ms E2E p95 Balanced 512/512 conc 1: 4451.4 ms E2E p95 Balanced 512/512 conc 4: 3219.5 ms E2E p95 Balanced 512/512 conc 24: 3587.1 ms E2E p95 Balanced 512/512 conc 37: 3565 ms E2E p95 Balanced 512/512 conc 56: 4144 ms E2E p95 Balanced 512/512 conc 78: 5012 ms E2E p95 Balanced 512/512 conc 94: 5354.3 ms E2E p95 Balanced 512/512 conc 99: 5922.8 ms E2E p95 Balanced 512/512 conc 115: 6170 ms E2E p95

E2E is output-dominated: ~1.4 s (128 out) → ~2.2 s (256 out) → ~5.0 s (512 out) inside the efficient zone. Past the knee it grows steadily rather than exploding — because excess load is rejected (429) instead of queued.

TTFT Analysis

TTFT p50 vs concurrency (ms)

Chat 256/128 Long-ctx 1024/256 Balanced 512/512 ms 0 200 400 600 800 1000 0 20 40 60 80 100 120 Median concurrency Chat 256/128 conc 1: 559.2 ms TTFT p50 Chat 256/128 conc 5: 785.2 ms TTFT p50 Chat 256/128 conc 10: 563.4 ms TTFT p50 Chat 256/128 conc 14: 566.8 ms TTFT p50 Chat 256/128 conc 19: 568.9 ms TTFT p50 Chat 256/128 conc 24: 606.9 ms TTFT p50 Chat 256/128 conc 29: 776.7 ms TTFT p50 Chat 256/128 conc 33: 792.4 ms TTFT p50 Chat 256/128 conc 41: 805.4 ms TTFT p50 Long-ctx 1024/256 conc 1: 720.5 ms TTFT p50 Long-ctx 1024/256 conc 5: 756.7 ms TTFT p50 Long-ctx 1024/256 conc 15: 755.5 ms TTFT p50 Long-ctx 1024/256 conc 22: 723 ms TTFT p50 Long-ctx 1024/256 conc 30: 749.2 ms TTFT p50 Long-ctx 1024/256 conc 40: 761.4 ms TTFT p50 Long-ctx 1024/256 conc 47: 784.2 ms TTFT p50 Long-ctx 1024/256 conc 51: 776.5 ms TTFT p50 Long-ctx 1024/256 conc 65: 803.4 ms TTFT p50 Balanced 512/512 conc 1: 716.9 ms TTFT p50 Balanced 512/512 conc 4: 573.8 ms TTFT p50 Balanced 512/512 conc 24: 735.6 ms TTFT p50 Balanced 512/512 conc 37: 756 ms TTFT p50 Balanced 512/512 conc 56: 782.4 ms TTFT p50 Balanced 512/512 conc 78: 830.3 ms TTFT p50 Balanced 512/512 conc 94: 837.4 ms TTFT p50 Balanced 512/512 conc 99: 854.2 ms TTFT p50 Balanced 512/512 conc 115: 866.5 ms TTFT p50

TTFT p99 vs concurrency, log scale (ms)

Chat 256/128 Long-ctx 1024/256 Balanced 512/512 ms (log scale) 1000 2000 4000 0 20 40 60 80 100 120 Median concurrency Chat 256/128 conc 1: TTFT p99 1889.5 ms Chat 256/128 conc 5: TTFT p99 1964.2 ms Chat 256/128 conc 10: TTFT p99 996.3 ms Chat 256/128 conc 14: TTFT p99 2018.5 ms Chat 256/128 conc 19: TTFT p99 2066.8 ms Chat 256/128 conc 24: TTFT p99 1021.1 ms Chat 256/128 conc 29: TTFT p99 1015.5 ms Chat 256/128 conc 33: TTFT p99 2491.2 ms Chat 256/128 conc 41: TTFT p99 2551 ms Long-ctx 1024/256 conc 1: TTFT p99 882 ms Long-ctx 1024/256 conc 5: TTFT p99 1229 ms Long-ctx 1024/256 conc 15: TTFT p99 2735.7 ms Long-ctx 1024/256 conc 22: TTFT p99 958.2 ms Long-ctx 1024/256 conc 30: TTFT p99 978.6 ms Long-ctx 1024/256 conc 40: TTFT p99 1796.9 ms Long-ctx 1024/256 conc 47: TTFT p99 2408.6 ms Long-ctx 1024/256 conc 51: TTFT p99 1096.7 ms Long-ctx 1024/256 conc 65: TTFT p99 1288.7 ms Balanced 512/512 conc 1: TTFT p99 1263.7 ms Balanced 512/512 conc 4: TTFT p99 1762 ms Balanced 512/512 conc 24: TTFT p99 1399.4 ms Balanced 512/512 conc 37: TTFT p99 1420.8 ms Balanced 512/512 conc 56: TTFT p99 1162.6 ms Balanced 512/512 conc 78: TTFT p99 1192.1 ms Balanced 512/512 conc 94: TTFT p99 1538 ms Balanced 512/512 conc 99: TTFT p99 1636.7 ms Balanced 512/512 conc 115: TTFT p99 1238 ms

What TTFT means: time from sending a request to the first visible token — the "did it hear me?" delay users feel. p50 559–867 ms is acceptable for chat/copilots (feels responsive, especially with a typing indicator); p99 1–2.5 s under load means occasional slow starts. TTFT scales with prompt length (prefill cost) and is flat across concurrency until saturation — good scheduler behavior. Only the overload probe (excluded) and post-knee steps show TTFT p99 degradation.

Token Generation Performance

Inter-token latency p50 vs concurrency (ms)

Chat 256/128 Long-ctx 1024/256 Balanced 512/512 ms 0 2 4 6 8 0 20 40 60 80 100 120 Median concurrency Chat 256/128 conc 1: 3.61 ms ITL p50 Chat 256/128 conc 5: 3.76 ms ITL p50 Chat 256/128 conc 10: 3.69 ms ITL p50 Chat 256/128 conc 14: 3.65 ms ITL p50 Chat 256/128 conc 19: 3.61 ms ITL p50 Chat 256/128 conc 24: 3.74 ms ITL p50 Chat 256/128 conc 29: 3.82 ms ITL p50 Chat 256/128 conc 33: 3.82 ms ITL p50 Chat 256/128 conc 41: 3.92 ms ITL p50 Long-ctx 1024/256 conc 1: 3.51 ms ITL p50 Long-ctx 1024/256 conc 5: 3.9 ms ITL p50 Long-ctx 1024/256 conc 15: 3.69 ms ITL p50 Long-ctx 1024/256 conc 22: 3.49 ms ITL p50 Long-ctx 1024/256 conc 30: 3.96 ms ITL p50 Long-ctx 1024/256 conc 40: 4.38 ms ITL p50 Long-ctx 1024/256 conc 47: 4.94 ms ITL p50 Long-ctx 1024/256 conc 51: 5.15 ms ITL p50 Long-ctx 1024/256 conc 65: 5.95 ms ITL p50 Balanced 512/512 conc 1: 3.71 ms ITL p50 Balanced 512/512 conc 4: 3.74 ms ITL p50 Balanced 512/512 conc 24: 3.9 ms ITL p50 Balanced 512/512 conc 37: 4.21 ms ITL p50 Balanced 512/512 conc 56: 4.97 ms ITL p50 Balanced 512/512 conc 78: 5.69 ms ITL p50 Balanced 512/512 conc 94: 6.35 ms ITL p50 Balanced 512/512 conc 99: 6.74 ms ITL p50 Balanced 512/512 conc 115: 7.3 ms ITL p50

Perceived streaming speed: 3.6–5 ms ITL ≈ 200–280 tok/s per stream in the efficient zone — text visibly pours out. Even at conc 115 (balanced) ITL p50 is 7.3 ms (~140 tok/s), still faster than reading speed. TPOT p50 (includes TTFT amortized) is ~9 ms chat, ~7 ms long-ctx, ~9 ms balanced — consistent with E2E ÷ output tokens. Generation consistency is high: ITL p99 stays under 12 ms everywhere except the deliberate overload probe (22 ms).

Scalability Curve

Chat 256/128 Long-ctx 1024/256 Balanced 512/512 req/s EFFICIENT WATCH SATURATED 0 5 10 15 20 25 0 20 40 60 80 100 120 Median concurrency Chat 256/128 conc 1: 0.9 req/s Chat 256/128 conc 5: 2.87 req/s Chat 256/128 conc 10: 8.57 req/s Chat 256/128 conc 14: 12.37 req/s Chat 256/128 conc 19: 16.3 req/s Chat 256/128 conc 24: 20.03 req/s Chat 256/128 conc 29: 21.7 req/s Chat 256/128 conc 33: 21.43 req/s Chat 256/128 conc 41: 21.57 req/s Long-ctx 1024/256 conc 1: 0.53 req/s Long-ctx 1024/256 conc 5: 2.3 req/s Long-ctx 1024/256 conc 15: 8.17 req/s Long-ctx 1024/256 conc 22: 12.03 req/s Long-ctx 1024/256 conc 30: 15.83 req/s Long-ctx 1024/256 conc 40: 19.47 req/s Long-ctx 1024/256 conc 47: 21.17 req/s Long-ctx 1024/256 conc 51: 21.27 req/s Long-ctx 1024/256 conc 65: 21.13 req/s Balanced 512/512 conc 1: 0.33 req/s Balanced 512/512 conc 4: 2.03 req/s Balanced 512/512 conc 24: 7.83 req/s Balanced 512/512 conc 37: 11.33 req/s Balanced 512/512 conc 56: 14.97 req/s Balanced 512/512 conc 78: 18.27 req/s Balanced 512/512 conc 94: 20.33 req/s Balanced 512/512 conc 99: 19.03 req/s Balanced 512/512 conc 115: 21.17 req/s

Efficient zone (conc ≲ 30): linear gains, flat TTFT, zero errors for chat/long-ctx. Watch zone (30–80): shape-dependent — long-ctx and balanced still scale cleanly here while chat starts shedding (first 429s at conc 29). Saturated zone (>80): request rate flat at ~21 req/s, rising 429 share, TTFT p99 creeping up. Recommended production concurrency sits inside the efficient zone with headroom (see below).

Reliability

  • Error mix (measured): 31,188 × HTTP 429 Too Many Requests, 30 × HTTP 503 (one cluster in balanced-sweep step 9 rerun). No timeouts, no malformed responses, no partial streams in the sampled data.
  • In-operating-range success rate: 100% — zero errors on all constant @17 RPS and concurrent @16 runs (rerun), and zero errors on every sweep step below each shape's knee.
  • Incomplete requests (e.g. 21–100 per 30 s window) are in-flight requests cut off by the max_duration constraint — a benchmark artifact, not a server signal.
  • Anomaly — first balanced attempt: constant (0/510) and concurrent (0/2610) returned zero successes when run immediately after two full suites; the rerun ~30 min later succeeded fully (453 ok / 172 ok). Consistent with lingering server-side throttling after sustained saturation, though the exact mechanism is unknown. Lesson: 512-output workloads need headroom and backoff; do not size capacity from a single post-saturation sample.

Measured failure evidence

Failed request — HTTP 429 (run-3 sweep step 7, conc 94)
request_id : 801b8b86-7fc6-4c40-841d-904da132dccc
status     : errored
targeted   :  +0.000s (t0)
queued     :  -11.088s
dequeued   :  +0.001s
req_start  :  +0.001s
first_tok  :  —
last_tok   :  —
req_end    :  —
resolved   :  +0.165s
req_iters  :  0   tok_iters : 0
error      :  HTTPStatusError("Client error '429 Too Many Requests' for url 'https://api.node.humain.com/v1/chat/completions'\nFor more information check: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/429")

Measured: the request waited ~11.1 s in the client queue (queued → dequeued), was sent, and was rejected in ~0.16 s with 429. Zero token iterations — pure shed load. This is the fail-fast pattern behind the 31,188 measured 429s.

Failed request — HTTP 503 (run-3 sweep step 8, conc 99)
request_id : dcf3000f-c84c-4fc3-9973-5868e15f0a18
status     : errored
targeted   :  +0.000s (t0)
queued     :  -9.515s
dequeued   :  +0.000s
req_start  :  +0.000s
first_tok  :  —
last_tok   :  —
req_end    :  —
resolved   :  +0.163s
req_iters  :  0   tok_iters : 0
error      :  HTTPStatusError("Server error '503 Service Unavailable' for url 'https://api.node.humain.com/v1/chat/completions'\nFor more information check: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/503")

Measured: same ~9.5 s queue wait, then a 503 Service Unavailable in ~0.16 s — the only server-side error signature in the dataset (30 occurrences, one cluster). Retry policy must cover 503 as well as 429.

Successful request — same shape, clean step (run-3 sweep step 6, conc 78)
request_id : f0c8805d-fc0f-4317-984f-ae92fe7391f2
status     : completed
targeted   :  +0.000s (t0)
queued     :  -1.139s
dequeued   :  +0.013s
req_start  :  +0.013s
first_tok  :  +0.843s
last_tok   :  +2.483s
req_end    :  +2.497s
resolved   :  +2.497s
req_iters  :  204   tok_iters : 198
error      :  none

Measured contrast: ~1.2 s queue wait, first token at +0.843 s (TTFT), 198 token iterations, request completed in ~2.50 s. What "good" looks like inside the operating range.

Source: measured per-request entries in benchmarks/run-3-balanced/sweep/benchmarks.json (request/response bodies omitted; errored entries carry no request payload). Response headers (Retry-After, X-Request-ID) are Not Available — the load harness does not capture response headers; see Additional Testing Required.

Workload Suitability

8/10
Interactive Chat — Suitable.

TTFT p50 ~590 ms and ~270 tok/s streaming feel snappy for chat, copilots, and assistants. E2E p95 1.4 s at 128 outputs fits turn-taking UX. Caveats: keep concurrency ≤24 per replica; p99 TTFT ~1.7–2.0 s means a small share of slow starts — mask with typing indicators and a client timeout ≥10 s.

7/10
Agentic AI — Suitable with budget.

Sequential tool-calling loops compound ~1.1 s per step (chat shape): a 10-step agent ≈ 11–15 s — acceptable for research/coding agents, tight for real-time ones. Longer generations (512 out ≈ 3.5 s E2E) multiply quickly. Caveats: enforce per-step timeouts, parallelize independent calls up to the concurrency cap, and add 429 retry with jitter since agents burst.

8/10
Batch Processing — Strong fit.

Highest value: ~30k total tok/s and 11.5k out tok/s on 512-output work. Throughput is predictable and errors are clean 429s that a queue-with-backoff absorbs. Caveats: pace submissions under the observed ~21 req/s ceiling per endpoint, and re-test 512-output at higher concurrency before committing to deadlines (first-attempt collapse).

Long context (1024 prompt, measured)

4× prompt length adds only ~165 ms to TTFT p50 (591 → 756 ms) and E2E grows 1.14 → 1.80 s — sub-linear, indicating efficient prefill. Tightest tail of all shapes at steady load (TTFT p99 1,006 ms). Larger windows (8k+) were Not Available in this dataset and must be tested before advertising long-context support.

Production Recommendation

ItemValue
Recommended concurrency (per endpoint)16–24 chat · 24–40 long-ctx · 40–60 balanced (stay below first-error knee with headroom)
Maximum tested concurrency512 (overload probe) · 115 sustained
Observed saturation point~21–22 req/s request-rate plateau; first 429s at conc ≈29 / 47 / 94 per shape
Recommended operating range≤17 RPS with ≤60 concurrent; target ≤70% of knee concurrency per shape
  • Traffic management: client-side concurrency limiter per shape + exponential backoff with jitter on 429; never retry 429s immediately (the probe shows immediate retries amplify the storm: 17k errors in 30 s).
  • Timeouts: client timeout ≥30 s for 512-output workloads (E2E p99 ~5–7 s, plus queueing); ≥10 s for chat.
  • Autoscaling: scale on p95 TTFT and 429 rate, not on RPS alone — RPS plateaus while user experience degrades. Keep one replica's headroom above the knee.
  • Load balancing: route by expected output length (short vs long generations) since E2E differs 3–4×; isolate 512-output traffic so it cannot starve interactive chat.
  • Capacity planning: budget ~21 req/s and ~10k/24k/19k total tok/s per endpoint for chat/long-ctx/balanced respectively at 17 RPS; derate 30% for p99 headroom.

Pricing and what it costs to run

HUMAIN Node prices humain-m3 at $0.30 per 1M input tokens and $1.20 per 1M output tokens — output costs 4× input, so the bill follows generation, exactly like end-to-end latency does. Applied to the measured steady-load token rates:

ShapeInput tok/reqOutput tok/reqCost / 1k reqCost / hour at ~17 RPS
Chat 256/128521132$0.32~$19
Long-ctx 1024/2561,289262$0.70~$40
Balanced 512/512821526$0.88~$48
  • Output dominates the bill: roughly 50% of cost on chat shapes, ~45% on long-context, ~72% on 512-output workloads. Prompt caching (priced separately on Node) would move the input share further down.
  • FinOps takeaway: cap output length first, concurrency second. A 512-output workload costs ~3× a chat workload per request at the same request rate — route long generations to isolated pools so they cannot starve (or bill like) interactive chat.
  • Budgeting rule of thumb: ~$20/hour per saturated chat endpoint, ~$40–48/hour for long-generation shapes at ~17 RPS. Derate 30% for p99 headroom, same as capacity.

Risks / Concerns

SeverityConcern
HighPost-saturation throttling: the first 512/512 steady-load attempt failed 100% after sustained overload; recovery took tens of minutes. A traffic spike could degrade the endpoint well beyond the spike itself.
MediumStrict ~21 req/s ceiling shared across shapes — a single 1024-RPM-style budget. Bursty multi-tenant traffic will hit 429s; clients without backoff will see cascading failures.
MediumTTFT p99 1–2.5 s under load (vs 559–867 ms p50): tail-sensitive UX (voice, real-time copilots) needs mitigation.
Medium30 s 503 cluster (balanced sweep rerun): rare server-side errors exist — retry policy must cover 503 as well as 429.
LowConcurrent-16-fixed underperforms rate-based load for long E2E shapes (5.7 vs 15.1 RPS balanced) — expected via Little's Law, but worth knowing when sizing worker pools.
LowNo data on >1024-token prompts, multi-turn, tool-calling, or multi-replica behavior — do not extrapolate.

Additional Testing Required

  • Longer sustained load (15–60 min soak) at recommended concurrency to check for drift, KV-cache pressure, or slow throttling onset.
  • Larger context windows (4k/8k/32k prompts) — prefill scaling is currently only measured to 1024 tokens.
  • Burst test: idle → 2× recommended concurrency step jump; measure recovery time (the observed ~30 min recovery needs quantification).
  • Multi-turn conversations and tool-calling schemas (agentic realism) instead of single-turn synthetic prompts.
  • Failure testing: behavior at 2× ceiling, retry-storm resilience, 503 handling.
  • Multi-replica and autoscaling behavior; per-key RPM accounting under parallel clients.
  • Repeated 512-output runs to confirm the first-attempt collapse root cause and rule out residue effects.

Scorecard

7/10
TTFT. Sub-second p50 (559–867 ms) is good; p99 1–2.5 s under load costs points.
9/10
Generation speed. ITL p50 3.6–7.3 ms (≈140–280 tok/s/stream); consistently fast, degrades gracefully.
8/10
Throughput. ~21 req/s plateau; up to ~30k total tok/s. Capped by gateway, not collapsing.
6/10
Tail latency. p99/p50 ≈2–3× in-zone (acceptable); post-knee tails and 429 storms need client mitigation.
6/10
Stability. 100% in-zone success and clean 429 fail-fast; marked down for the post-saturation collapse episode and a 503 cluster.
8/10
Concurrency scaling. Near-linear to a clear, reproducible knee per shape; textbook plateau thereafter.
8/10
Interactive suitability. Fast first token + rapid stream; cap concurrency ≤24, mask p99 with UX.
7/10
Agentic suitability. ~1.1 s/step compounds acceptably; requires timeout + backoff discipline for bursts.
8/10
Batch suitability. High token throughput, predictable pacing, clean retryable errors.
7/10
Production readiness. Approve with guardrails: per-shape concurrency caps, 429/503 backoff, isolated long-generation traffic, and the follow-up tests above.

Expert Assessment

If I were approving this endpoint for production today: approve chat/copilot/assistant traffic at ≤24 concurrent (≈16 RPS) with 429-aware retries and ≥10 s timeouts; approve offline batch at paced ≤17 RPS with a queue; conditionally approve agentic workloads with per-step budgets and burst caps. Limit: no uncapped autoscaling, no 512-output traffic sharing a pool with interactive chat, no reliance on >21 req/s per endpoint. Test next: a 60-minute soak at recommended concurrency, a quantified burst-recovery test, and 4k+ context — in that order. The single biggest open question is the post-saturation throttling episode: until its trigger and recovery time are characterized, keep 30% headroom below the knee.

Evidence class: all numeric claims above are measured from the 9 benchmark runs; knees, zones, and sweet spots are observed patterns; infrastructure causes (gateway ceiling, GPU/scheduler saturation) are inferred hypotheses — server-side telemetry was Not Available.

Why this matters for AI sovereignty

Performance numbers are only half the story for a Saudi bank, government entity, or regulated enterprise. The other half is where the tokens are processed. HUMAIN runs inference on sovereign data centers inside the Kingdom — AMD Instinct systems went live in 2026 with a 1 GW buildout target by 2030 — so workloads stay aligned with NCA, SAMA, and PDPL expectations without data crossing borders. That is the same compliance-by-design argument I make in my AI adoption work: sovereignty is not a deployment detail, it is architecture.

The direction of travel is unmistakable: frontier open models hosted on in-Kingdom inference platforms, and partnerships bringing global model builders onto Saudi infrastructure. For regulated buyers, the question is shifting from “can we use AI and stay compliant?” to “which in-Kingdom endpoint serves each workload best?” — and that is exactly what benchmarks like this one answer.

My feedback

Testing HUMAIN inference first-hand was a privilege, and the platform made a strong impression: the OpenAI-compatible API was a genuine drop-in (existing SDKs, streaming with usage stats, no client rewrite), and the gateway’s fail-fast 429 behavior under overload is how I wish every inference provider behaved — shed load loudly instead of queueing silently.

My honest notes back: the post-saturation throttling episode (a full 100% failure window on 512-output workloads after sustained overload, recovering ~30 min later) is the one thing I would want characterized before committing production traffic; the small 503 cluster deserves the same retry coverage as 429s; and preview rough edges like the /healthz vs /health mismatch are worth sanding down for enterprise load-harness integrations. None of these change the verdict — conditionally production-ready at capped concurrency — and I’m looking forward to re-running this suite against the open weights and larger context windows next.


Benchmarks run 8 September 2026 against the HUMAIN Node gateway. All numeric claims are measured from the 9 benchmark runs; infrastructure causes are inferred hypotheses — server-side telemetry was not available. See also the AI adoption case study.