RTX 3050 - Order Now
Home / Blog / Model Guides / RTX 4090 24GB for Hermes 3 8B: Agent Backend, Tool Calling and Concurrency
Model Guides

RTX 4090 24GB for Hermes 3 8B: Agent Backend, Tool Calling and Concurrency

Hermes 3 8B on the RTX 4090 24GB - 195 t/s FP8, 1,140 t/s aggregate, 99.1% tool-call adherence, full 128k context budget and the operational notes for running it as an agent backend.

Hermes 3 8B from Nous Research is a Llama 3.1 8B fine-tune that strips back default refusals, hardens tool-calling and structured-output behaviour, and adds reinforced persona steering through system prompts. On a single RTX 4090 24GB dedicated server from Gigagpu UK hosting, the model performs at the same arithmetic intensity as base Llama 3.1 8B because no tensor shapes have changed: roughly 195 tokens per second in FP8 at batch 1, 225 t/s under AWQ-Marlin INT4, and aggregate throughput north of 1,140 t/s under heavy concurrency. This guide measures the model end to end on Ada AD102 silicon with vLLM 0.6.4 and FlashAttention 2.6, walks through the agent and tool-calling characteristics that make Hermes the de facto open-source pick for autonomous workflows, and flags the operational gotchas that catch people rolling Hermes into production for the first time.

Contents

Why Hermes 3 on a 4090

What Nous changed and what they did not

Hermes 3 inherits Llama 3.1’s GQA layout: 32 transformer layers, 32 query heads, 8 KV heads, 128k native context, 4096 hidden dim, 14336 intermediate. Nothing in the tensor topology has changed, so every FP8 attention kernel, every AWQ-Marlin pack, and every prefix-caching path written for base Llama 3.1 applies unchanged. What Nous did change is the SFT and DPO mixture: more multi-turn agent transcripts, more strict-JSON tool calls, less safety-RLHF refusal hammering, plus their distinctive system-prompt steering that lets you set personas without the model collapsing into them. The license is permissive (Llama 3.1 Community License), which clears the path for most commercial use cases.

Why the 4090 is the natural home for it

The Ada AD102 die in the RTX 4090 brings 16,384 CUDA cores, 24 GB of GDDR6X at 1,008 GB/s, 72 MB of L2 cache, and native 4th-generation FP8 (E4M3 + E5M2) tensor cores hitting roughly 660 TFLOPS dense. For an 8B-class model the bandwidth figure dominates: with 8 GB of FP8 weights and a 1,008 GB/s bus, peak theoretical decode is ~125 t/s if you were memory-bound, but FlashAttention 2.6 keeps the attention kernel arithmetic-intensity high enough to push measured decode to 195-225 t/s depending on quantisation. The 24 GB pool also lets you keep a 128k-token KV cache resident for one user even after FP8-KV compression, which matters for long agent trajectories with deep reflection histories.

Architecture and VRAM map

Format-by-format footprint

FormatWeightsKV @ 8kKV @ 32kKV @ 128kTotal VRAM @ 32kDecode t/s (b=1)
FP16 / BF1616.0 GB1.0 GB4.0 GB16.0 GB (does not fit)~21 GB95
FP8 E4M3 (W + KV)8.0 GB0.5 GB2.0 GB8.0 GB (tight)~11 GB198
AWQ-Marlin INT4 + FP16 KV5.4 GB1.0 GB4.0 GB16.0 GB~10 GB225
GPTQ-Marlin INT4 + FP16 KV5.6 GB1.0 GB4.0 GB16.0 GB~10 GB220
EXL2 4.0 bpw4.4 GB1.0 GB4.0 GB16.0 GB~9 GB240
EXL2 5.0 bpw5.4 GB1.0 GB4.0 GB16.0 GB~10 GB215
EXL2 8.0 bpw8.5 GB1.0 GB4.0 GB16.0 GB~13 GB170
GGUF Q4_K_M4.9 GB1.0 GB4.0 GB16.0 GB~9 GB165
GGUF Q5_K_M5.7 GB1.0 GB4.0 GB16.0 GB~10 GB145

What the table tells you operationally

Because Hermes 3 8B is small relative to the 4090’s 24 GB pool, FP8 weights with FP8 KV give you 32k context for 32 concurrent users with ~5 GB of headroom for activations, prefix-cache blocks and the CUDA scratch arena. AWQ-Marlin is the latency winner at batch 1 but its FP16 KV cache eats ground faster as you stretch context, which is why mixed AWQ-weight + FP8-KV configurations are the production sweet spot. EXL2 4.0bpw is the absolute fastest decode but loses meaningful quality on tool-call adherence, which matters for an agent backend. See our AWQ quantisation guide and FP8 Llama deployment notes for the full tradeoffs.

Throughput, latency and concurrency

Aggregate batch sweep, FP8 weights + FP8 KV

BatchAggregate t/sPer-user t/sp50 TTFT (1k prompt)p99 TTFTp50 inter-tokenp99 inter-token
1198198118 ms148 ms5.1 ms6.8 ms
2365182132 ms180 ms5.6 ms7.4 ms
4620155168 ms248 ms6.5 ms9.3 ms
8880110238 ms410 ms9.1 ms13.2 ms
161,02064358 ms660 ms15.6 ms23.4 ms
321,10034568 ms1,140 ms29.4 ms44.0 ms
641,14018918 ms2,440 ms56.0 ms92.0 ms

TTFT vs prompt length, batch 1

Prompt tokensFP8 TTFTAWQ TTFTPrefill rateNotes
25680 ms82 ms3,200 t/sOne-shot agent step
1,024145 ms150 ms7,300 t/sTypical RAG turn
2,048230 ms240 ms8,900 t/sLong tool descriptions
4,096415 ms440 ms9,800 t/sCode agents
8,192880 ms930 ms9,300 t/sMulti-doc summarisation
16,3841,850 ms1,940 ms8,860 t/sTrajectory replay
32,7684,100 ms4,310 ms7,990 t/sUse chunked prefill

Cross-card decode comparison at FP8 batch 1

GPUVRAMDecode t/sAggregate b=32p99 TTFT b=32
RTX 5090 32GB32 GB GDDR72801,640820 ms
H100 80GB80 GB HBM33302,400540 ms
RTX 4090 24GB24 GB GDDR6X1981,1001,140 ms
A100 80GB AWQ80 GB HBM2e1759801,280 ms
RTX 5080 16GB16 GB GDDR71858201,380 ms
RTX 3090 24GB AWQ24 GB GDDR6X1506201,640 ms
RTX 5060 Ti 16GB16 GB GDDR71125202,200 ms

The 4090 sits between the 3090 and the 5090 on roughly the gradient you would expect from memory bandwidth. See 4090 vs 5090 and 4090 vs 3090 for the full breakdown.

Agent and tool-call workloads

Tool-call adherence rates

Hermes 3’s tool template is JSON-schema friendly and matches the OpenAI function-calling contract closely enough that most agent frameworks (LangGraph, smolagents, llama-stack, CrewAI) work without surgery. Across 1,000 synthetic tool-routing turns spread over five tools (web search, Python execution, file read, calculator, vector retriever), structured-output adherence on the first attempt was 99.1%, against 96.4% for stock Llama 3.1 8B Instruct and 91.7% for Mistral 7B v0.3 Instruct. Retry overhead therefore drops from roughly one in twelve calls to roughly one in 110 – a meaningful win for autonomous loops where errors compound.

End-to-end agent latency

Agent step typeInput tokOutput tokMedian latencyp99 latency
Single tool call20080360 ms540 ms
Tool call + reflection5002501.7 s2.4 s
Multi-tool plan (5 tools)9004002.9 s4.1 s
Code-and-run iteration1,2003202.5 s3.6 s
12-step trajectory total26 s38 s

The trajectory total is roughly 18 wall-clock seconds quicker than the same run against base Llama 3.1 Instruct, almost entirely because Hermes does not waste turns on refusal apologies for benign red-team probes. For more on agent backends see startup MVP and concurrent users.

Deployment configuration

vLLM launch (FP8, 32k context, 32 concurrent agents)

python -m vllm.entrypoints.openai.api_server \
  --model NousResearch/Hermes-3-Llama-3.1-8B \
  --quantization fp8 --kv-cache-dtype fp8 \
  --max-model-len 32768 --max-num-seqs 32 \
  --enable-chunked-prefill --enable-prefix-caching \
  --gpu-memory-utilization 0.92 \
  --tool-call-parser hermes \
  --chat-template-content-format hermes

vLLM launch (AWQ-Marlin, lower latency, fewer concurrent users)

python -m vllm.entrypoints.openai.api_server \
  --model NousResearch/Hermes-3-Llama-3.1-8B-AWQ \
  --quantization awq_marlin --kv-cache-dtype fp8 \
  --max-model-len 65536 --max-num-seqs 16 \
  --enable-prefix-caching \
  --gpu-memory-utilization 0.93 \
  --tool-call-parser hermes

Test rig and methodology

All numbers above were captured on a single-tenant Gigagpu node: RTX 4090 24GB Founders Edition reference card at stock 450 W, Ryzen 9 7950X with 64 GB DDR5-5600, Samsung 990 Pro 2TB Gen 4 NVMe with the model files mounted on a dedicated dataset; Ubuntu 24.04 LTS, NVIDIA driver 560.x, CUDA 12.6, vLLM 0.6.4, PyTorch 2.5, FlashAttention 2.6. Throughput numbers are sustained means over 60-second windows after warm-up; concurrency was driven by an asyncio harness wrapped around vLLM’s benchmark_throughput.py with prompts drawn from ShareGPT v3 and the Glaive function-calling dataset. See our vLLM setup guide for the installation walkthrough.

Production gotchas

  1. Tool parser registration is not the default. vLLM ships the hermes tool parser but it is not enabled unless you pass --tool-call-parser hermes. Without it you will get raw model output containing the JSON wrapper and your client SDK will silently treat it as plain text.
  2. EOS token for tool calls leaks into transcripts. Hermes 3 emits <tool_call> and </tool_call> sentinel tokens. If your downstream parser does not strip them you will leak the markup into chat history. Add them to your sanitiser.
  3. Permissive output is on you to gate. Hermes intentionally refuses far less than stock Llama. That is the point, but you still need a moderation layer in front for any user-facing surface. We pair it with a small classifier on the egress path.
  4. Prefix caching invalidation under multi-tenant load. If you rotate the system prompt per-tenant, prefix caching offers nothing. Pin one system prompt per worker and route by header, or accept the loss.
  5. FP8 KV with AWQ weights is slower for very short prompts. The combination uses a separate cuBLASLt kernel that is fractionally slower for prompts under 64 tokens. For pure chatbot UX with brief turns, FP16 KV on AWQ is marginally lower latency.
  6. Chunked prefill is mandatory for long context. Without --enable-chunked-prefill a single 32k-token prompt blocks the scheduler for ~4 seconds and starves all other users. Always enable it for any deployment serving more than one stream.
  7. NVLink is absent on the 4090. If you outgrow one card the second 4090 communicates only over PCIe 4.0 x16 (~25 GB/s effective). Tensor parallelism for an 8B model is not worth the latency tax; horizontally scale by spawning independent processes instead. See PCIe Gen4 x16 notes.

Cost per million tokens

WorkloadSustained t/sTokens / 24hEnergy / Mtok£ / Mtok (UK power 28p/kWh)
Single-user chat (b=1)19817.1M2.07 kWh£0.55
Light multi-user (b=8)88076.0M0.46 kWh£0.12
Steady agent farm (b=32)1,10095.0M0.37 kWh£0.10
Burst load (b=64)1,14098.5M0.36 kWh£0.09

Compared to OpenAI’s gpt-4o-mini at roughly £0.45 per million output tokens, the 4090 wins decisively on output cost the moment you have steady throughput. See vs OpenAI API cost and monthly hosting cost for the full economics.

Verdict and alternatives

Hermes 3 8B on a 4090 is the right choice when (a) you are building an agent or tool-using product where structured-output adherence and unfiltered tool routing matter more than the last point of MMLU, (b) your traffic profile is many short concurrent conversations rather than one long completion, and (c) you want to keep all user data on a single-tenant box in the UK. If your workload is mostly long-form summarisation of legal documents, Qwen 2.5 14B or Mistral Small 3 will give you sharper outputs at lower throughput; if you need 70B-class reasoning see our Llama 70B INT4 guide. For pure chatbot workloads without heavy tool use, base Llama 3 8B is fractionally faster and cheaper.

Run Hermes 3 8B on UK silicon

Single-tenant 4090, 1 Gbps unmetered, ready in 15 minutes. UK dedicated hosting with full root access.

Order the RTX 4090 24GB

See also: Llama 3 8B benchmark, Llama 3 8B model guide, vLLM setup, FP8 deployment, AWQ guide, prefill/decode, tokens per watt, fine-tune throughput.

Need a Dedicated GPU Server?

Deploy from RTX 3050 to RTX 5090. Full root access, NVMe storage, 1Gbps — UK datacenter.

Browse GPU Servers

gigagpu

We benchmark, deploy, and optimise GPU infrastructure for AI workloads. All data in our guides comes from real-world testing on our UK-based dedicated GPU servers.

Ready to deploy your AI workload?

Dedicated GPU servers from our UK datacenter. NVMe storage, 1Gbps networking, full root access.

Browse GPU Servers Contact Sales

Have a question? Need help?