Thursday, June 4, 2026

Trade-standard LLM benchmarks in DataRobot

Each LLM deployment has a ceiling, a latency curve, and a unit price. Most groups function blindly, discovering their deployment limits solely when over-provisioning exhausts their GPU funds or peak visitors causes a catastrophic failure.

Three numbers matter: most sustained concurrency earlier than GPU saturation, end-to-end latency at that concurrency, and price per million tokens at sustained load. These metrics emerge from how the mannequin interacts together with your {hardware}, runtime, tokenizer, and visitors combine.

DataRobot 11.8 modifications that with LLM Profiling Jobs: a local integration of NVIDIA AIPerf, the industry-standard generative AI benchmarking device. One authenticated POST benchmarks any DataRobot LLM deployment serving an OpenAI-compatible internet server, sweeps the concurrency vary and use circumstances you outline, and returns the empirical inputs to Quota Reservations (accessible in DataRobot 11.9).

Why LLM capability is difficult to foretell

LLM inference doesn’t scale linearly. Compute and reminiscence calls for per request rely dynamically on immediate size, response size, sampling parameters, and KV cache utilization.A deployment that serves 50 brief chat turns per second can stall at 5 long-context RAG requests per second on the identical {hardware}. 4 distinct behaviors make static or speculative capability estimates unreliable:

  • Latency is non-linear in concurrency. Time to first token and inter-token latency keep roughly flat throughout a large concurrency vary, then rise sharply as soon as GPU reminiscence bandwidth or compute saturates. TTFT rises when prefill compute saturates; inter-token latency rises when decode reminiscence bandwidth saturates. Which one bites first will depend on the workload combine and the deployment’s GPU configuration (single card or a cluster). The saturation knee is the working level that issues, and it could’t be inferred from a single low-load measurement.
  • Throughput and latency commerce off. You’ll be able to squeeze extra complete tokens per second out of a deployment by working it at increased concurrency, at the price of slower per-user response. The precise trade-off will depend on your SLO, not on a generic suggestion.
  • Use case combine issues. Two deployments working the identical mannequin on the identical {hardware} can have very completely different capability if one serves brief Q&A and the opposite serves long-context summarization. The combo must be within the take a look at, or the take a look at is improper.
  • Caching and routing change the reply. Prefix caching (widespread in agentic coding with periodic compaction) and KV-aware routing can raise efficient throughput dramatically. Profiles run in opposition to a chilly deployment with random inputs characterize the ground, not the ceiling.

LLM Profiling Jobs make these curves seen.

How LLM benchmarks assist

  • Defend capability and quota selections with measured knowledge. When finance questions a four-H100 footprint, or when cross-functional groups negotiate shared capability, you’ll be able to justify the structure with empirical profiling knowledge. Saturation knee, SLO goal, and forecast visitors make GPU sizing an evidence-based line merchandise. The identical numbers feed Quota Reservations immediately.
  • Account for price per shopper. Whole token throughput plus the GPU occasion price provides a cost-per-million-tokens determine that helps chargeback or showback. Attribute spend to shoppers proportionally to their reservations, not by guesswork.
  • Evaluate fashions and {hardware} on equal phrases. Maintain the workload profile fixed and differ one dimension at a time: the identical mannequin on completely different GPU configurations (a B200 node vs a B300 node, or 4×H100 vs 8×H100), or completely different fashions on the identical configuration (Qwen3.6 35B-A3B MoE vs Qwen3.6 27B dense). As a result of AIPerf metrics match NVIDIA’s revealed NIM benchmarks, the numbers are additionally immediately akin to public benchmarks for a similar mannequin and {hardware} mixtures. The precise enter for procurement and capacity-sizing selections earlier than a {hardware} order.
  • Show a change is protected earlier than you ship it. Earlier than a mannequin improve, vLLM bump, driver swap, or GPU migration, rerun the identical profile and evaluate in opposition to the prior baseline. Regressions present up within the metrics, not in incident studies.

What LLM benchmark metrics imply

The 4 headline metrics AIPerf returns map on to consumer expertise and to GPU economics:

  • Time to first token (TTFT, ms). Measures how lengthy a consumer waits between submitting a immediate and seeing the primary character; this metric is dominated by prefill compute.
  • Inter-token latency (ITL, ms). Common time between successive output tokens as soon as era has began. Units the perceived “typing velocity” of the response.
  • Request throughput (requests/sec). Full request-and-response cycles per second on the examined concurrency. The premise for the Capability (RPM) worth on Quota Reservations.
  • Whole token throughput (tokens/sec). Whole tokens (enter plus output) processed per second throughout all concurrent requests. The premise for cost-per-token economics.

For every metric, AIPerf studies averages and percentiles (p50, p90, p99). When GPU saturation is detected through the sweep, estimatedCapacity studies the iteration instantly earlier than it. When saturation isn’t detected (the widespread case, for the reason that profiler isn’t co-located with the deployment), estimatedCapacity studies the final iteration examined. Sweep large sufficient that the curve clearly bends, or deal with the outcome as a decrease certain.

Submitting a job

A profiling request takes 4 parameters: a deploymentId (the ID of the DataRobot LLM deployment you need to profile), a listing of concurrency ranges to brush, a request depend scalar (what number of requests every concurrent employee points), and a number of use circumstances. Every use case defines an enter sequence size (ISL), an output sequence size (OSL), normal deviations for each, and a weight (prob). Weights throughout all use circumstances should sum to 100.

export DATAROBOT_ENDPOINT="https://app.datarobot.com"
export DR_API_KEY=""
export HUGGINGFACE_DR_CRED_ID=""
export DEPLOYMENT_ID=""
export CONCURRENCIES="[1,10,50,100]"
export REQUEST_COUNT_SCALAR=2
export MODEL_TOKENIZER="openai/gpt-oss-20b"
export USE_CASES='[{"isl":200,"islStddev":15,"osl":1000,"oslStddev":15,"prob":100}]'
 
curl -X POST -H "Authorization: Bearer ${DR_API_KEY}" 
     -H "Content material-Kind: software/json" 
     "${DATAROBOT_ENDPOINT}/api/v2/llmProfilingJobs/" 
     -d @- <

A 202 Accepted response returns the job ID, an execution ID, and a standing ID:

{
  "id": "69e09f9e25fdfdfab0d27925",
  "jobExecutionId": "69e09f9f25fdfdfab0d27926",
  "statusId": "5633f028-3f68-4f83-bddc-560d266d6bd2"
}

Monitoring and retrieving LMM benchmark outcomes

Ballot the Standing API with the returned statusId. When the job finishes, the API returns 303 See Different and the Location header factors to the outcomes endpoint:

curl -s -L -i 
  -H "Authorization: Bearer ${DR_API_KEY}" 
  "${DATAROBOT_ENDPOINT}/api/v2/standing/${STATUS_ID}/"

Fetch the complete outcomes with the profiling job id:

curl -H "Authorization: Bearer ${DR_API_KEY}" 
     "${DATAROBOT_ENDPOINT}/api/v2/llmProfilingJobs/${LLM_PROFILING_JOB_ID}/profilingResults/"

Instance payload (truncated):

{
  "estimatedCapacity": {
    "metrics": [
      { "name": "request_throughput",     "units": "requests/sec", "measurements": [{ "name": "avg", "value": 8.84    }] },
      { "identify": "inter_token_latency",    "items": "ms",           "measurements": [{ "name": "avg", "value": 23.79   }] },
      { "identify": "time_to_first_token",    "items": "ms",           "measurements": [{ "name": "avg", "value": 833.06  }] },
      { "identify": "total_token_throughput", "items": "tokens/sec",   "measurements": [{ "name": "avg", "value": 4524.80 }] }
    ]
  },
  "outcomes": [ "...per-iteration benchmark data..." ]
}

estimatedCapacity is the sustained working level. outcomes accommodates one entry per concurrency stage examined, with the complete metric set.

Studying the curve

The estimated-capacity numbers inform you the sustained ceiling. The per-iteration outcomes present you ways the deployment behaves as load climbs towards that ceiling. The desk beneath is an illustrative instance.

Concurrent requests TTFT (ms) Whole throughput (tokens/sec) Be aware
1 ~150 ~600 Low load, near-floor latency
10 ~250 ~2,500 Throughput scales practically linearly
50 ~800 ~4,500 estimatedCapacity returned from this iteration
100 ~1,500 ~4,600 Saturated: TTFT roughly doubles, throughput plateaus

When AIPerf detects GPU saturation through the sweep, it identifies the iteration earlier than it (concurrency 50 right here) and returns these metrics as estimatedCapacity. When saturation isn’t detected, estimatedCapacity is just the final iteration examined, which is why the sweep wants to increase previous the knee. Something previous that time trades user-perceived latency for marginal throughput good points. If the product spec requires TTFT underneath 1 second, the curve exhibits the deployment helps as much as roughly 50 concurrent requests with margin: provision GPU so peak concurrent demand stays at or beneath that stage.

From profiling outcome to Quota Reservations config

The bridge from a profiling run to a Quota Reservations configuration is direct:

Quota setting The place it comes from Instance (from pattern above)
Capability (RPM) estimatedCapacity.request_throughput × 60 8.84 req/sec × 60 ≈ 530 RPM
Utilization Threshold Choose 70–80% of Capability so enforcement engages earlier than the saturation knee 80% → enforcement at ~424 RPM
Reserved % per shopper Sized to the minimal every precedence shopper wants throughout competition 30% Manufacturing Agent A, 20% Agent B, 30% Agent C, 20% unreserved pool
Refill fee Capability / 60 (requests per second) 530 / 60 ≈ 8.83 req/sec

For a primer on how Capability, Utilization Threshold, and Reserved % work together underneath load, see Charge Limiting vs. Quota Reservations.

A labored price instance

Take the pattern outcome: 4,524 complete tokens per second sustained (enter plus output). That’s roughly 16.3 million tokens per hour from one deployment.

If the underlying GPU occasion prices $X per hour, the associated fee per million tokens is $X / 16.3. For an occasion at $4 per hour, that’s about $0.25 per million tokens. For $12 per hour, about $0.74. To calculate price per million output tokens—the usual benchmark for public API comparisons—divide the whole price by the workload’s output share. For instance, given an ISL of 200 and an OSL of 1000, output accounts for roughly 83% of complete tokens. At a $4 hourly occasion worth, this interprets to roughly $0.30 per million output tokens.

Each benchmark run provides you a contemporary, correct cost-per-token determine for the precise mannequin, {hardware}, and quantization mixture you’re working. After a vLLM improve or a {hardware} swap, re-run the identical profile and ensure your unit economics improved as a substitute of trusting a vendor declare. That is the inspiration for per-token and per-agent price transparency in chargeback.

Selecting your inputs

A helpful profile begins with two questions: what concurrency vary do you anticipate in manufacturing, and what does your visitors really appear to be?

  • Concurrencies to brush. Begin large ([1, 10, 50, 100]) to find the saturation knee, then slim (equivalent to [40, 50, 60, 70]) for an SLO-grade studying round that time.
  • Request depend scalar. Set it excessive sufficient that every iteration runs lengthy sufficient to clean out noise. A scalar of two is an affordable start line. Increase it if variance seems excessive.
  • Use circumstances. Match your actual visitors combine. When you serve 70% brief chat turns (ISL 200, OSL 300) and 30% long-context RAG (ISL 4000, OSL 800), outline two use circumstances with prob: 70 and prob: 30. Testing a blended visitors combine exposes tail-latency habits (equivalent to p99 spikes) {that a} single-use-case common obscures.
  • Tokenizer. Set it explicitly. The benchmark will depend on correct token counts, so the matching tokenizer is a part of an accurate measurement.

Operational notes

  • Profiling generates artificial load. Run jobs in opposition to a non-production LLM deployment or throughout a upkeep window.
  • As a result of the visitors is artificial, prefill cache hits received’t seem in token metrics.
  • Profiling treats the deployment as a black field. Whether or not the deployment runs on one GPU or many, and no matter mixture of tensor, pipeline, knowledge, or knowledgeable parallelism it makes use of, the profile measures the externally observable outcome.
  • Jobs could be canceled with a DELETE to the profiling job ID. Cancellation is best-effort and will not cease a run that’s practically full.
  • Earlier than you submit, retailer your Hugging Face token in DataRobot Credential Administration as an “API Token (API Key)” credential. AIPerf makes use of it to fetch the mannequin tokenizer, and the saved credential prevents rate-limit errors.

Get entry

LLM Profiling Jobs are in personal preview in DataRobot 11.8. To allow in your tenant, contact your DataRobot account staff. They are going to activate the Allow Dynamic Quota Capability Profiling function flag (the inner identify for LLM Profiling Jobs) and configure the profiling job picture in your cluster.

Study extra

Related Articles

LEAVE A REPLY

Please enter your comment!
Please enter your name here

Latest Articles