{"slug": "can-a-2-8t-model-run-on-a-single-node-of-nvidia-b300-x8", "title": "Can a 2.8T Model Run on a Single Node of Nvidia B300 X8?", "summary": "Moonshot AI released the 2.8-trillion-parameter Kimi-K3 open-weight model on July 27, 2026, and Fixstars successfully ran inference on a single-node NVIDIA B300 x8 system using SGLang's DCP support, achieving a memory footprint of about 1.57TB across 8 GPUs with MXFP4 weights. The model, which uses a hybrid MoE architecture with 104B active parameters and 1M-token context length, is the largest open-weight model to date and approaches the performance of proprietary models like Claude Fable 5 and GPT 5.6 Sol.", "body_md": "## Introduction\n\nOn July 27, 2026, Moonshot AI released the model weights for [Kimi-K3](https://huggingface.co/moonshotai/Kimi-K3). Ever since the model was announced on July 16, it had generated significant buzz as “the largest open-weight model in history.”\n\nAt Fixstars, we deployed the model to a single-node NVIDIA B300 x8 environment on the very day the weights were released and ran an inference performance benchmark. This article is our first-look report. From the start of the download through the completion of the benchmark, we managed to run through the whole process on release day.\n\n## What Is Kimi-K3?\n\nKimi-K3 is a frontier-class MoE (Mixture of Experts) model developed by Moonshot AI. The main specifications published in its model card are as follows.\n\n| Item | Specification |\n|---|---|\n| Total parameters | 2.8T (2.8 trillion) |\n| Active parameters | 104B |\n| Expert configuration | 16 of 896 experts activated per token (+ 2 shared experts) |\n| Number of layers | 93 (69 KDA layers + 24 Gated MLA layers) |\n| Precision of released weights | MXFP4 weights / MXFP8 activations (quantization-aware training) |\n| Context length | 1M tokens (1,048,576) |\n| Multimodal | Native visual understanding supported (MoonViT-V2, 401M) |\n| Reasoning mode | Thinking mode always on (intensity configurable: low / high / max) |\n| License | Kimi K3 License (custom license) |\n\nOn the architecture side, Kimi-K3 adopts two proprietary techniques: Kimi Delta Attention (KDA), a hybrid linear attention, and Attention Residuals, a replacement for residual connections. The majority of the attention layers (69 of 93) are KDA, with only 24 conventional (Gated MLA) attention layers. As discussed later, this hybrid configuration directly affects memory management on the inference server.\n\nAnother important point is that the model is distributed as MXFP4 weights that underwent quantization-aware training (QAT) starting from the SFT stage. Rather than being quantized after training, it was designed from the outset to be used in MXFP4, so it can be deployed as-is without any additional quantization work.\n\nIn the various evaluations published at announcement, Kimi-K3 is rated as delivering the highest performance ever for an open-weight model, coming close to top-tier proprietary models such as Claude Fable 5 and GPT 5.6 Sol. Its strength on coding and agent tasks has drawn particular attention.\n\n## Test Environment\n\n| Item | Details |\n|---|---|\n| GPU | NVIDIA B300 SXM6 x8 (single node) |\n| GPU memory | 288GB HBM3e x8 = 2,304GB total |\n| CPU | Intel Xeon 6767P × 2 sockets (64 cores/socket, 128 cores total, 1 thread/core) |\n| System memory | 3.0 TiB DDR5 |\n| Interconnect | NVLink 5.0, 18 links/GPU, 53.125 GB/s/link = 956 GB/s/GPU (unidirectional) |\n| OS / Driver | Ubuntu 24.04.4 LTS (kernel 6.8.0-71-generic), CUDA 13.0, Driver 580.105.08 |\n| Inference engine | SGLang 0.5.16 (Docker container sglang-kimi-k3) |\n\n## Why SGLang?\n\nAt release, both vLLM and SGLang supported Kimi-K3, but we chose SGLang. The reason is its support for DCP (Decode Context Parallelism).\n\nFor a hybrid model like Kimi-K3, the memory efficiency of the KV cache determines the effective context length. At release, vLLM did not support DCP, so the KV cache is replicated across all GPUs. SGLang, on the other hand, supports DCP and can distribute the MLA KV cache across 8 GPUs, allowing it to achieve 8x the effective context capacity with the same amount of memory.\n\n## Considering the Memory Footprint\n\nA model with 2.8T total parameters would require roughly 2.8TB just for the weights even in FP8, which would not fit within this environment’s total GPU memory (about 2.2TB). However, Kimi-K3’s released weights are provided in MXFP4, and in our measurements the weights came to about 196GB per GPU, or about 1.57TB across 8 GPUs. This works out to fit as-is on a single B300 x8 node — a design that, despite the model’s enormous scale, was clearly built with running “on a single node” in mind. The measured memory breakdown is described later.\n\n## Deployment\n\n### Downloading the Weights\n\nThe MXFP4 weights total about 1.6TB. The download completed in about 1 hour. Partway through, some files got stuck downloading; killing the process and rerunning it completed without issue. Access is heavily concentrated right after release, so if you run into the same phenomenon, we recommend retrying.\n\n### Launch Command\n\n```\ndocker run --gpus all \\\n--shm-size 32g \\\n--network host \\\n-v /data/hf_cache:/root/.cache/huggingface \\\n--ipc=host \\\nlmsysorg/sglang:kimi-k3 \\\nsglang serve \\\n--trust-remote-code \\\n--model-path moonshotai/Kimi-K3 \\\n--tp-size 8 \\\n--dcp-size 8 \\\n--disable-custom-all-reduce \\\n--mem-fraction-static 0.85 \\\n--reasoning-parser kimi_k3 \\\n--tool-call-parser kimi_k3 \\\n--mamba-full-memory-ratio 5 \\\n--speculative-algorithm DSPARK \\\n--speculative-draft-model-path RadixArk/Kimi-K3-DSpark \\\n--speculative-dspark-block-size 7 \\\n--enable-linear-replayssm-spec \\\n--host 0.0.0.0 \\\n--port 8001\n```\n\nA few notes on the key options:\n\n`--mamba-full-memory-ratio`\n\nsets the memory allocation ratio between the KDA state pool and the MLA KV pool. A larger value grows the KDA state pool (suited to short-text workloads with many concurrent requests), while a smaller value grows the MLA KV pool (suited to long-text workloads). You can compute it by entering the average request length into the [Mamba ratio calculator](https://docs.sglang.io/cookbook/autoregressive/Moonshotai/Kimi-K3#hw=b300&pdMode=unified&strategy=low-latency&spec=dspark&hicache=off) in the SGLang cookbook. This time we first launched with 5, which — as noted below — became a point of reflection.\n\n`--speculative-algorithm DSPARK`\n\nconfigures speculative decoding. It is combined with the publicly available draft model RadixArk/Kimi-K3-DSpark.\n\n### Launch Time: About 89 Minutes Total\n\nThe total time to complete launch was about 88.8 minutes, of which model loading took about 81.4 minutes. Loading a 1.6TB-class set of weights makes this unavoidable, but taking an hour and a half every time you restart with a changed setting will really add up during future tuning work.\n\nOne gotcha: `docker logs`\n\ndoes not show loading progress during model load, and it goes completely silent for over 20 minutes. It’s unnerving — you wonder if it has hung — but `docker logs -f`\n\nor `docker attach`\n\ndoes let you see the progress display.\n\n### GPU Memory Breakdown and KV Cache\n\nHere is the breakdown of GPU memory usage in steady state after launch. The figures are per-rank (i.e., for a single GPU), taken from rank TP0 as a representative example; “× DCP8” below means a value is distributed across the 8 GPUs of the Decode Context Parallelism group, so the whole-cluster total is 8× the per-rank figure.\n\n| Item | Size (GB) | Notes |\n|---|---|---|\n| Total GPU memory | 275.04 | B300 SXM6 |\n| In use (nvidia-smi) | 248.02 | steady state after launch |\n| Free | 26.09 | |\n| └ Model weights (main) | 195.86 | MXFP4 (compressed-tensors) |\n| └ Model weights (DSPARK draft) | 0.56 | |\n| └ Mamba Cache (KDA state pool) | 17.13 | conv 0.56 + ssm 15.87 + conv_window 0.70 |\n| └ MLA KV Cache | 1.70 | 65,984 tokens (per-rank, bf16) |\n| └ KDA KV (K+V) | 1.26 | 527,872 tokens (per-rank, bf16) |\n| └ Other (NCCL / CUDA context / MM IPC, etc.) | ~31.5 |\n\nSince Kimi-K3 is an MLA + KDA hybrid model, three pools equivalent to the KV cache are allocated.\n\n| Pool | Per-rank tokens | Total | Purpose |\n|---|---|---|---|\n| MLA KV | 65,984 | 527,872 (× DCP8) | Multi-Head Latent Attention. The primary metric for context length |\n| KDA KV (K+V) | 527,872 | 527,872 (replica) | Kimi Delta Attention |\n| Mamba state | 313 requests | 313 | Concurrent-request cap for KDA |\n\nThe effective context capacity is 527,872 tokens (MLA KV per-rank 65,984 × DCP8).\n\n### Reflection: `--mamba-full-memory-ratio=5`\n\nWas Too Large\n\nWe realized after launch that the default value of `--mamba-full-memory-ratio`\n\nis 0.9. A value of 5 leans too heavily toward the KDA state pool, and as a result the KV cache’s token capacity was limited to about 0.5M. For coding-agent use cases, context tends to get long, so this value should have been made much smaller to allocate more memory to the KV cache. The right approach is to compute it with the cookbook calculator to match your workload.\n\n## Benchmark Results\n\nWe measured throughput and latency under two types of load. The metric abbreviations used in the tables are: **ISL** = input sequence length, **OSL** = output sequence length, **out_tput** = output throughput, **total_tput** = total (input + output) throughput, **TTFT** = time to first token, **ITL** = inter-token latency, and **med/p90/p99** = median / 90th-percentile / 99th-percentile.\n\n### Random (ISL=8K, OSL=1K, num-prompts 200)\n\n| Concurrency | duration (s) | out_tput (tok/s) | total_tput (tok/s) | TTFT med/p90/p99 (ms) | ITL med/p90/p99 (ms) | failed |\n|---|---|---|---|---|---|---|\n| 10 | 543.4 | 376.9 | 3,391.9 | 624 / 1,137 / 5,180 | 37.9 / 39 / 509 | 0 |\n| 20 | 397.0 | 515.8 | 4,642.6 | 675 / 1,902 / 10,772 | 50.9 / 52 / 654 | 0 |\n| 30 | 338.3 | 605.4 | 5,448.2 | 746 / 6,250 / 16,784 | 60.4 / 63 / 797 | 0 |\n| 40 | 315.2 | 649.7 | 5,847.6 | 1,170 / 12,368 / 22,238 | 70.5 / 76 / 825 | 0 |\n| 50 | 225.9 | 367.2 | 3,305.1 | 10,934 / 46,651 / 55,621 | 71.7 / 76 / 810 | 119 |\n\nEach row processes 1,638,400 input tokens and 204,800 output tokens (the concurrency-50 row is lower — 663,552 input and 82,944 output — because of the failed requests).\n\n### Internal Real-World Coding-Agent Dataset (max-duration 300, multi-turn)\n\n| Concurrency | duration (s) | out_tput (tok/s) | total_tput (tok/s) | TTFT med/p90/p99 (ms) | ITL med/p90/p99 (ms) | failed |\n|---|---|---|---|---|---|---|\n| 10 | 396.4 | 481.6 | 2,477.6 | 370 / 670 / 731 | 38.7 / 39 / 87 | 0 |\n| 20 | 405.4 | 672.0 | 3,787.7 | 393 / 986 / 2,469 | 51.7 / 54 / 341 | 0 |\n| 30 | 458.4 | 754.2 | 3,879.6 | 409 / 1,422 / 2,410 | 61.1 / 62 / 359 | 0 |\n| 40 | 686.8 | 629.4 | 2,925.8 | 452 / 2,073 / 3,400 | 70.6 / 73 / 392 | 0 |\n| 50 | 726.6 | 791.9 | 3,276.7 | 4,454 / 9,135 / 14,245 | 74.6 / 76 / 458 | 0 |\n\n### Throughput Scaling\n\nFigure — Kimi-K3 on NVIDIA B300 x8: throughput vs. concurrency.The left chart shows total throughput (input + output) and the right chart shows output throughput, both plotted against the number of concurrent requests.\n\nAs the figure shows, the Random workload plateaus around concurrency 40, and the real-world dataset around concurrency 30. At concurrency 50 on the Random workload, 119 of 200 requests failed and throughput collapsed.\n\n### Observations\n\nOur candid impression: it’s fast. Given the 2.8T scale, we were braced for it to be slower, but it achieves speed on par with GLM-5.2 (in a B300 x4 configuration), which we have benchmarked previously. We attribute this to the combination of a highly sparse MoE with active parameters held to 104B, native MXFP4 weights, and speculative decoding via DSPARK.\n\nLooking at the scaling characteristics, total throughput plateaus at concurrency 40 for the Random workload and at concurrency 30 for the real-world dataset. At concurrency 50 on the Random workload, the median TTFT exceeded 10 seconds, and 119 of 200 requests failed. On the real-world dataset as well, the degradation in ITL and TTFT becomes conspicuous beyond concurrency 40. With the current settings, it seems reasonable to view around 30 concurrent requests as the practical upper limit for simultaneous processing.\n\n## Coding Performance Assessment (Subjective)\n\nBeyond throughput, we also wanted to verify output quality, so as a task close to real-world work we had it implement an “A* pathfinding visualization tool” as a single HTML file. The prompt deliberately packed in requirements that tend to expose sloppy implementations: a hand-written binary heap, re-open handling when the g-score improves, explicit tie-breaking rules with the reasoning commented, a two-pane comparison mode, and so on.\n\n(The original article includes the full prompt text at this point.)\n\nKimi-K3 implemented this prompt correctly in one shot in about 15 minutes, and it worked simply by opening it in a browser. For comparison, we gave the same prompt to GLM-5.2 (NVFP4) and put the two outputs side by side and used them. This is purely subjective, but we felt the appearance and usability were better with Kimi-K3.\n\nFigure — Kimi-K3’s output.Two heuristics running simultaneously in comparison mode. The legend/controls panel and keyboard shortcuts are extra polish beyond the requirements.\n\nFigure — GLM-5.2 (NVFP4)’s output.It largely satisfies the requirements, but a gap shows in the overall polish of layout and color scheme.\n\nHere are a few things we noticed from reading the generated code:\n\nBoth hand-implemented the priority queue as a binary heap (a MinHeap class) as required, rather than cheating with an array sort.\n\nFor tie-breaking, Kimi-K3 used a three-tier scheme (“f equal → h ascending → g descending → LIFO”), explaining the reason for each tier in comments and also spelling out the rule in the UI legend. GLM-5.2 used only a single tier (h ascending) — also with a reasoning comment.\n\nKimi-K3 spontaneously added keyboard shortcuts not requested in the prompt (Space to play / → to step / V for comparison mode) and a legend/controls panel.\n\nGLM-5.2 also had its own touches, such as a random-wall-generation button, but the overall polish including layout and color scheme was in Kimi-K3’s favor.\n\nSince this is not a quantitative benchmark, take it as a reference only, but in terms of the perceived quality as an inference backend for a coding agent, it made a good impression alongside its speed.\n\n## Discussion\n\nThe biggest achievement is that a 2.8T model ran at practical speeds on a single node. Thanks to native distribution in MXFP4 (with QAT already done), you can download it and launch it as-is with no additional quantization work, and it fits on a B300 x8. This is a distribution format that takes advantage of the FP4 compute performance of the B300 (Blackwell Ultra).\n\nOperational challenges also came into view. Because launch (model loading) takes about an hour and a half, you need to factor launch time into trial-and-error over settings and into failover design. In addition, because of the KDA + MLA hybrid configuration, there are model-specific memory-allocation parameters like `--mamba-full-memory-ratio`\n\n, and tuning them to your workload (short-text high-concurrency vs. long-text agents) governs the real-world performance. Our settings this time leaned too heavily toward the KDA state pool, so if you’re targeting coding-agent use cases, the next step is to lower the ratio to expand the KV cache and verify behavior at long context.\n\n## Summary\n\nOn the day Kimi-K3’s weights were released, we completed deployment to a single-node NVIDIA B300 x8 and ran benchmarks. Thanks to native MXFP4 distribution, the weights fit in about 1.6TB and can be launched on a single node with no additional quantization. Throughput scaled to roughly 30 concurrent requests, and for a 2.8T model the speed was practical, exceeding our expectations. On output quality as well, it handled the A* visualization implementation task in one shot and even showed thoughtful extra polish beyond the requirements.\n\nThis evaluation is more than just a first look at a new model — it ties directly into our own products.\n\nFixstars offers “[Fixstars Vega](https://www.fixstars.com/en/products-services/vega),” an on-premises AI appliance that combines open-weight LLMs with our proprietary performance-engineering harness. In Vega, we continuously evaluate the latest open-weight models, and this Kimi-K3 evaluation is part of that effort.\n\nFrom the day a new model is released, you can safely put the latest open-weight models to use in a secure local environment. That is the vision Vega aims for. If you’re interested in applying AI to embedded software development, please take a look at the product page.\n\n## Reference Links\n\n[Kimi-K3](https://huggingface.co/moonshotai/Kimi-K3)(Hugging Face)[Kimi K3 Tech Blog](https://www.kimi.com/blog/kimi-k3)(Moonshot AI)[Kimi K3 Technical Report](https://github.com/MoonshotAI/Kimi-K3/blob/main/k3_tech_report.pdf)[SGLang cookbook: Kimi-K3](https://docs.sglang.io/cookbook/autoregressive/Moonshotai/Kimi-K3#hw=b300&pdMode=unified&strategy=low-latency&spec=dspark&hicache=off)", "url": "https://wpnews.pro/news/can-a-2-8t-model-run-on-a-single-node-of-nvidia-b300-x8", "canonical_source": "https://blog.us.fixstars.com/deploying-kimi-k3-on-day-0-can-a-2-8t-model-run-on-a-single-node-of-nvidia-b300-x8/", "published_at": "2026-07-29 09:21:34+00:00", "updated_at": "2026-07-29 09:53:16.331492+00:00", "lang": "en", "topics": ["large-language-models", "artificial-intelligence", "ai-infrastructure", "ai-research"], "entities": ["Moonshot AI", "Kimi-K3", "Fixstars", "NVIDIA B300", "SGLang", "Claude Fable 5", "GPT 5.6 Sol"], "alternates": {"html": "https://wpnews.pro/news/can-a-2-8t-model-run-on-a-single-node-of-nvidia-b300-x8", "markdown": "https://wpnews.pro/news/can-a-2-8t-model-run-on-a-single-node-of-nvidia-b300-x8.md", "text": "https://wpnews.pro/news/can-a-2-8t-model-run-on-a-single-node-of-nvidia-b300-x8.txt", "jsonld": "https://wpnews.pro/news/can-a-2-8t-model-run-on-a-single-node-of-nvidia-b300-x8.jsonld"}}