veloGB10 v0.4.0 RELEASE: Qwen 3.8-27b code sustained tok/s: 4x : 125 tok/s , 2x: 85/tok/s, 1x: 75tok/s

Hello ,

Quick question for someone that’s willing help , i followed the readme directory structure etc i’m trying to run this on a MSI box the result looks like this maybe im missing something

~/veloGB10$ ./gb10_inference --server   --model-dir ~/veloGB10/Qwen3.8-27B-NVFP4-FULL   --port 9000   --max-seq-len 262144   --max-batch 1   --max-tokens 65536   --prefix-cache on   --default-presence-penalty 1.5   --mtp=auto   --spec-source dflash2-auto   --draft-dir ~/veloGB10/Qwen3.8-27B-DFlash2
[mem-budget] Qwen3.8-27B-NVFP4-FULL (single node), max-seq-len 262144, batch 1, kv-cache bf16:
  weights (per rank)     ~0.0 GB
  KV cache (~2 slots)  ~32.0 GB
  calibration transient  ~8.0 GB (startup only, freed)
  pools/workspaces (est) ~3.0 GB
  ----------------------------------------------
  steady-state estimate  ~35.0 GB of 121.7 GB physical
  startup peak estimate  ~43.0 GB of 121.7 GB physical
  available NOW          ~117.9 GB (other load on this box already eats the rest)
Loading model from /home/sadi/veloGB10/Qwen3.8-27B-NVFP4-FULL (streaming bf16)...
memory allocation of 2336927755350992246 bytes failed
note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace
Aborted (core dumped)

Thanks in advance.

Copy and paste the messages into Gemini or ChatGpt, don’t need subscription. They will give you commands for doing the troubleshooting.

hey can you please run with RUST_BACKTRACE=1 so we can maybe see what's up?

I runned with RUST_BACKTRACE=full here is the output

./gb10_inference --server --model-dir ~/veloGB10/Qwen3.8-27B-NVFP4-FULL   --port 9000   --max-seq-len 262144   --max-batch 1   --max-tokens 65536   --prefix-cache on   --default-presence-penalty 1.5   --mtp=auto   --spec-source dflash2-auto   --draft-dir ~/veloGB10/Qwen3.8-27B-DFlash2
[mem-budget] Qwen3.8-27B-NVFP4-FULL (single node), max-seq-len 262144, batch 1, kv-cache bf16:
  weights (per rank)     ~0.0 GB
  KV cache (~2 slots)  ~32.0 GB
  calibration transient  ~8.0 GB (startup only, freed)
  pools/workspaces (est) ~3.0 GB
  ----------------------------------------------
  steady-state estimate  ~35.0 GB of 121.7 GB physical
  startup peak estimate  ~43.0 GB of 121.7 GB physical
  available NOW          ~118.1 GB (other load on this box already eats the rest)
Loading model from /home/sadi/veloGB10/Qwen3.8-27B-NVFP4-FULL (streaming bf16)...
memory allocation of 2336927755350992246 bytes failed
stack backtrace:
   0:     0xc91060cc1a50 - <std::sys::backtrace::BacktraceLock::print::DisplayBacktrace as core::fmt::Display>::fmt::he602e2e74f3e64dd
   1:     0xc91060cd5774 - core::fmt::write::h9daa14cc75b3e6de
   2:     0xc91060c9636c - std::io::Write::write_fmt::h564f2c1c03ac5025
   3:     0xc91060ca5a20 - std::alloc::default_alloc_error_hook::h7ae78fd9e8e5f50b
   4:     0xc91060488214 - std::alloc::rust_oom::{{closure}}::h7f50fc1109d4ec1f
   5:     0xc91060487f08 - std::sys::backtrace::__rust_end_short_backtrace::he77fa12acbe143f7
   6:     0xc910604881e4 - std::alloc::rust_oom::h1ab8c7b74f7f0d02
   7:     0xc91060487058 - __rustc[9e6a08e89e4b9111]::__rust_alloc_error_handler
   8:     0xc9106048c4ac - alloc::alloc::handle_alloc_error::haa6760b375939212
   9:     0xc9106048c4c0 - alloc::raw_vec::handle_error::h36c248164e914976
  10:     0xc9106067edb0 - gb10_inference::gpu::GpuModel::load_from_dir_impl::hc7f90f5b6d984a8b
  11:     0xc9106056f62c - gb10_inference::run_server::{{closure}}::h6566bbacd502989b
  12:     0xc9106058e300 - tokio::runtime::park::CachedParkThread::block_on::hb97906a5b416d0c0
  13:     0xc910605d0e6c - tokio::runtime::runtime::Runtime::block_on::h70f53ab3efab726c
  14:     0xc91060531c64 - gb10_inference::main::he9b2df7f3fc678fb
  15:     0xc910605c4a04 - std::sys::backtrace::__rust_begin_short_backtrace::h27b717228f5ab6f3
  16:     0xc910605c49ec - std::rt::lang_start::{{closure}}::h5f8400824d9f12c2
  17:     0xc91060c97cc4 - std::rt::lang_start_internal::h671536757adee0ce
  18:     0xc9106055236c - main
  19:     0xf65be80284c4 - __libc_start_call_main
                               at ./csu/../sysdeps/nptl/libc_start_call_main.h:58:16
  20:     0xf65be8028598 - __libc_start_main_impl
                               at ./csu/../csu/libc-start.c:360:3
  21:     0xc9106048cc30 - _start
  22:                0x0 - <unknown>
Aborted (core dumped)

Thanks

I see the above ^^^ which indicates the model files are not being read properly. I’ll check this more thoroughly and get back to you. Are you sure you downloaded my specific model?

Based on your stacktrace this verifies the problem is almost certainly:

Either:
Your downloaded model is stale or broken/corrupted.
Or:
You did not download my quantized version.

To resolve download the correct model:
delete this dir: Qwen3.8-27B-NVFP4-FULL in ~/veloGB10/
Then download th ecorrect model:
hf download --local-dir ~/veloGB10/Qwen3.8-27B-NVFP4-FULL doth4580/Qwen3.8-27B-NVFP4-FULL

This is the model:

Are you working on the Qwen/Qwen3.8-Flash-Next · Hugging Face ?

What do you think 😂

YES

Yes broken model,

Works fine thanks for the support

Hermes → Spark-1-> Qwen-3.8-27B+veloGB10-4.2+proxy

successfully installed

Qwen-3.8-27B+veloGB10-0.50 on Spark-2 .

Total time taken 1 hr 30 mins.

:-)

You managed to convince me :D
So I gave it a try, but I don’t see any improvement—in fact, it’s actually much slower. It almost feels like the Dflash isn’t even loaded; performance is worse in the tests and it feels sluggish too—each chunk comes out character by character. I’m probably missing a parameter, but I can’t figure out which one. Here’s my command:

./gb10_inference --server \
  --model-dir ~/.cache/huggingface/hub/models--doth4580--Qwen3.8-27B-NVFP4-FULL/snapshots/1b49c1e2ad0b7621e9a991bc4e2dd10380cfc175 \
  --model-name Acantic \
  --port 8002 \
  --max-seq-len 262144 \
  --max-batch 3 \
  --max-tokens 65536 \
  --prefix-cache on \
  --default-presence-penalty 1.5 \
  --mtp=auto \
  --spec-source dflash2-auto \
  --draft-dir ~/.cache/huggingface/hub/models--doth4580--Qwen3.8-27B-DFlash2/snapshots/91a59627d8e504687daf82dd341d1e1dcf33671b
[mem-budget] 1b49c1e2ad0b7621e9a991bc4e2dd10380cfc175 (single node), max-seq-len 262144, batch 3, kv-cache bf16:
  weights (per rank)     ~0.0 GB
  KV cache (~4 slots)  ~64.0 GB
  calibration transient  ~8.0 GB (startup only, freed)
  pools/workspaces (est) ~3.0 GB
  ----------------------------------------------
  steady-state estimate  ~67.0 GB of 121.6 GB physical
  startup peak estimate  ~75.0 GB of 121.6 GB physical
  available NOW          ~115.8 GB (other load on this box already eats the rest)
Loading model from /home/acantic/.cache/huggingface/hub/models--doth4580--Qwen3.8-27B-NVFP4-FULL/snapshots/1b49c1e2ad0b7621e9a991bc4e2dd10380cfc175 (streaming bf16)...
[mem] pre-shards: Some("VmRSS:\t  549384 kB") Some("MemAvailable:   120743956 kB")
Loading MTP head...
  QUANTIZED artifact: 506 NVFP4 + 0 FP8 tensors (kept packed; dequantized in-register by the fused GEMV)
[mem] post-draft: Some("VmRSS:\t  549384 kB") Some("MemAvailable:   120743956 kB")
  Shard 1/2: model-00001.safetensors
  Shard 2/2: model-00002.safetensors
[mem] up#0: Some("VmRSS:\t12434696 kB") Some("MemAvailable:   107374132 kB") dev=0.0GB
[mem] up#8: Some("VmRSS:\t12590292 kB") Some("MemAvailable:   106469004 kB") dev=0.0GB
[mem] up#16: Some("VmRSS:\t12890148 kB") Some("MemAvailable:   105996152 kB") dev=0.0GB
[mem] up#24: Some("VmRSS:\t12976948 kB") Some("MemAvailable:   105437880 kB") dev=0.0GB
[mem] up#32: Some("VmRSS:\t13128384 kB") Some("MemAvailable:   105000536 kB") dev=0.0GB
[mem] up#40: Some("VmRSS:\t11708008 kB") Some("MemAvailable:   105178480 kB") dev=0.0GB
[mem] up#48: Some("VmRSS:\t11351808 kB") Some("MemAvailable:   105528432 kB") dev=0.0GB
[mem] up#56: Some("VmRSS:\t10526216 kB") Some("MemAvailable:   105245728 kB") dev=0.0GB
[mem] up#64: Some("VmRSS:\t10530764 kB") Some("MemAvailable:   104974844 kB") dev=0.0GB
[mem] up#72: Some("VmRSS:\t10348964 kB") Some("MemAvailable:   104642084 kB") dev=0.0GB
[mem] up#80: Some("VmRSS:\t 9331308 kB") Some("MemAvailable:   105237488 kB") dev=0.0GB
[mem] up#88: Some("VmRSS:\t 9672948 kB") Some("MemAvailable:   104926088 kB") dev=0.0GB
[mem] up#96: Some("VmRSS:\t 9420088 kB") Some("MemAvailable:   104632552 kB") dev=0.0GB
[mem] up#104: Some("VmRSS:\t 9229084 kB") Some("MemAvailable:   104474428 kB") dev=0.0GB
[mem] up#112: Some("VmRSS:\t 9116432 kB") Some("MemAvailable:   104276860 kB") dev=0.0GB
[mem] up#120: Some("VmRSS:\t 8072468 kB") Some("MemAvailable:   104923788 kB") dev=0.0GB
[mem] up#128: Some("VmRSS:\t 7874704 kB") Some("MemAvailable:   104742080 kB") dev=0.0GB
[mem] up#136: Some("VmRSS:\t 7976344 kB") Some("MemAvailable:   104420440 kB") dev=0.0GB
[mem] up#144: Some("VmRSS:\t 7812936 kB") Some("MemAvailable:   104145492 kB") dev=0.0GB
[mem] up#152: Some("VmRSS:\t 6718176 kB") Some("MemAvailable:   104805032 kB") dev=0.0GB
[mem] up#160: Some("VmRSS:\t 6561000 kB") Some("MemAvailable:   104724792 kB") dev=0.0GB
[mem] up#168: Some("VmRSS:\t 6535464 kB") Some("MemAvailable:   104482336 kB") dev=0.0GB
[mem] up#176: Some("VmRSS:\t 6455056 kB") Some("MemAvailable:   104228364 kB") dev=0.0GB
[mem] up#184: Some("VmRSS:\t 6505344 kB") Some("MemAvailable:   103938864 kB") dev=0.0GB
[mem] up#192: Some("VmRSS:\t 5312620 kB") Some("MemAvailable:   104637784 kB") dev=0.0GB
[mem] up#200: Some("VmRSS:\t 5327968 kB") Some("MemAvailable:   104429808 kB") dev=0.0GB
[mem] up#208: Some("VmRSS:\t 5183004 kB") Some("MemAvailable:   104220760 kB") dev=0.0GB
[mem] up#216: Some("VmRSS:\t 5293280 kB") Some("MemAvailable:   104011552 kB") dev=0.0GB
[mem] up#224: Some("VmRSS:\t 3964700 kB") Some("MemAvailable:   104689548 kB") dev=0.0GB
[mem] up#232: Some("VmRSS:\t 4105584 kB") Some("MemAvailable:   104445376 kB") dev=0.0GB
[mem] up#240: Some("VmRSS:\t 3899524 kB") Some("MemAvailable:   104234428 kB") dev=0.0GB
[mem] up#248: Some("VmRSS:\t 3913780 kB") Some("MemAvailable:   103902276 kB") dev=0.0GB
[mem] up#256: Some("VmRSS:\t 2763032 kB") Some("MemAvailable:   104533192 kB") dev=0.0GB
[mem] up#264: Some("VmRSS:\t 5511972 kB") Some("MemAvailable:   101276904 kB") dev=0.0GB
[mem] up#272: Some("VmRSS:\t 5693652 kB") Some("MemAvailable:   100958136 kB") dev=0.0GB
[mem] up#280: Some("VmRSS:\t 5991780 kB") Some("MemAvailable:   100595792 kB") dev=0.0GB
[mem] up#288: Some("VmRSS:\t 6061104 kB") Some("MemAvailable:   100035712 kB") dev=0.0GB
[mem] up#296: Some("VmRSS:\t 5555600 kB") Some("MemAvailable:   100163320 kB") dev=0.0GB
[mem] up#304: Some("VmRSS:\t 5793188 kB") Some("MemAvailable:   99732728 kB") dev=0.0GB
[mem] up#312: Some("VmRSS:\t 4429000 kB") Some("MemAvailable:   99850408 kB") dev=0.0GB
[mem] up#320: Some("VmRSS:\t 3052180 kB") Some("MemAvailable:   100219704 kB") dev=0.0GB
Loading MTP head...
[load] total 29.4s | ptx+jit 5.1s rope 0.1s | shards: read 17.0s cpu 3.4s repack-inline 0.0s upload 0.1s | assemble 23.9s (draft 0.0s fuse 20.3s repack 12.4s host-shard 0.0s upload 6.1s gwn-cpu 0.0s omma-repack 0.0s) | other 0.0s
[mem] post-pipeline: Some("VmRSS:\t 1970024 kB") Some("MemAvailable:   100984792 kB")
[mem] post-mxfp4-build: Some("VmRSS:\t 1970280 kB") Some("MemAvailable:   100984792 kB")
Context: --max-seq-len 262144 (model max 262144). KV cache ~51.5 GB at batch 3.
Loading tokenizer from /home/acantic/.cache/huggingface/hub/models--doth4580--Qwen3.8-27B-NVFP4-FULL/snapshots/1b49c1e2ad0b7621e9a991bc4e2dd10380cfc175/tokenizer.json...
[tokenizer] loaded chat template from /home/acantic/.cache/huggingface/hub/models--doth4580--Qwen3.8-27B-NVFP4-FULL/snapshots/1b49c1e2ad0b7621e9a991bc4e2dd10380cfc175/chat_template.jinja
Stop tokens: [248044, 248046]  (config.json advertises 248044)
Calibrating MTP cost per depth, per context bucket...
    ctx   2048 depth 2: a step costs 1.13x a decode  (pays if it emits > 1.13 tok)
    ctx   2048 depth 3: a step costs 1.19x a decode  (pays if it emits > 1.19 tok)
    ctx   2048 depth 4: a step costs 1.27x a decode  (pays if it emits > 1.27 tok)
    ctx   2048 depth 5: a step costs 1.34x a decode  (pays if it emits > 1.34 tok)
    ctx   2048 depth 6: a step costs 1.43x a decode  (pays if it emits > 1.43 tok)
    ctx   2048 depth 8: a step costs 1.58x a decode  (pays if it emits > 1.58 tok)
    ctx   8192 depth 2: a step costs 1.13x a decode  (pays if it emits > 1.13 tok)
    ctx   8192 depth 3: a step costs 1.21x a decode  (pays if it emits > 1.21 tok)
    ctx   8192 depth 4: a step costs 1.31x a decode  (pays if it emits > 1.31 tok)
    ctx   8192 depth 5: a step costs 1.39x a decode  (pays if it emits > 1.39 tok)
    ctx   8192 depth 6: a step costs 1.47x a decode  (pays if it emits > 1.47 tok)
    ctx   8192 depth 8: a step costs 1.64x a decode  (pays if it emits > 1.64 tok)
    ctx  32768 depth 2: a step costs 1.15x a decode  (pays if it emits > 1.15 tok)
    ctx  32768 depth 3: a step costs 1.26x a decode  (pays if it emits > 1.26 tok)
    ctx  32768 depth 4: a step costs 1.38x a decode  (pays if it emits > 1.38 tok)
    ctx  32768 depth 5: a step costs 1.50x a decode  (pays if it emits > 1.50 tok)
    ctx  32768 depth 6: a step costs 1.62x a decode  (pays if it emits > 1.62 tok)
    ctx  32768 depth 8: a step costs 1.87x a decode  (pays if it emits > 1.87 tok)
    ctx 131072 depth 2: a step costs 1.17x a decode  (pays if it emits > 1.17 tok)
    ctx 131072 depth 3: a step costs 1.34x a decode  (pays if it emits > 1.34 tok)
    ctx 131072 depth 4: a step costs 1.56x a decode  (pays if it emits > 1.56 tok)
    ctx 131072 depth 5: a step costs 1.79x a decode  (pays if it emits > 1.79 tok)
    ctx 131072 depth 6: a step costs 1.97x a decode  (pays if it emits > 1.97 tok)
    ctx 131072 depth 8: a step costs 2.41x a decode  (pays if it emits > 2.41 tok)
MTP cost/depth: cached to /home/acantic/velogb10/mtp_calib/1b49c1e2ad0b7621e9a991bc4e2dd10380cfc175.json
[df2] DFlash2 round RESIDENT (spec-source=dflash2-auto) — serving via the S4F integrated round (b==1 lanes); MTP remains the fallback (standing directive)
MTP: auto (disables itself if no depth beats plain decode); depth starts at 4, re-picked from live acceptance; greedy requests verify by argmax (bitwise lossless), temp>0 requests by rejection sampling (distribution-exact).
Prefix cache: ON — a conversation's history is reused instead of re-prefilled (~3x faster follow-up turns). Cached turns are NOT bit-identical to cold ones: reuse re-chunks the prefill and cuBLAS picks a kernel per shape.
Attempting CUDA graph capture for batch sizes 1..=3... captured (smem 18 KB).
captured 3 GPU-sample graph(s).
[df2] draft-round CUDA graph captured (eager fallback via GB10_NO_DF2_GRAPH)
OpenAI-compatible server running on http://0.0.0.0:8002
Serving model: Acantic  (GET /v1/models)
POST /v1/chat/completions   max_batch=3  default max_tokens=65536
[req] params  temp=0.7 top_p=0.8 top_k=20 max_tok=Some(1) rep_pen=None presence=None freq=None stream=false
[req] sync   prompt_tokens=72 max_tokens=1 stop=[]
[req] ttft=1046.8ms plen=72
[req] done   tok=2 (1.7 tok/s wall) finish=length
[req] params  temp=0.7 top_p=0.8 top_k=20 max_tok=Some(1) rep_pen=None presence=None freq=None stream=false
[req] sync   prompt_tokens=74 max_tokens=1 stop=[]
[req] ttft=760.1ms plen=74
[req] done   tok=2 (2.2 tok/s wall) finish=length
[req] params  temp=0.7 top_p=0.8 top_k=20 max_tok=Some(100) rep_pen=None presence=None freq=None stream=false
[req] sync   prompt_tokens=65 max_tokens=100 stop=[]
[req] ttft=761.1ms plen=65
[req] done   tok=37 (23.7 tok/s wall) finish=stop
[req] params  temp=0.7 top_p=0.8 top_k=20 max_tok=Some(1) rep_pen=None presence=None freq=None stream=true
[req] stream  prompt_tokens=53 max_tokens=1 stop=[]
[req] ttft=914.7ms plen=53
[req] done   tok=2 (1.9 tok/s wall) finish=length stop_hit=false
[req] params  temp=0.7 top_p=0.8 top_k=20 max_tok=Some(1) rep_pen=None presence=None freq=None stream=true
[req] stream  prompt_tokens=53 max_tokens=1 stop=[]
[req] prefix hit (prompt checkpoint): 48/53 tokens cached, prefilling 5 (91% skipped)
[req] ttft=271.4ms plen=53
[req] done   tok=2 (5.3 tok/s wall) finish=length stop_hit=false
[req] params  temp=0.7 top_p=0.8 top_k=20 max_tok=Some(1) rep_pen=None presence=None freq=None stream=true
[req] stream  prompt_tokens=53 max_tokens=1 stop=[]
[req] ttft=897.4ms plen=53
[req] done   tok=2 (1.9 tok/s wall) finish=length stop_hit=false
[req] params  temp=0.7 top_p=0.8 top_k=20 max_tok=Some(1) rep_pen=None presence=None freq=None stream=true
[req] stream  prompt_tokens=53 max_tokens=1 stop=[]
[req] prefix hit (prompt checkpoint): 48/53 tokens cached, prefilling 5 (91% skipped)
[req] ttft=253.0ms plen=53
[req] done   tok=2 (5.6 tok/s wall) finish=length stop_hit=false
...

I’ve tested with a real harness :

[req] params  temp=0.1 top_p=0.8 top_k=20 max_tok=None rep_pen=None presence=None freq=None stream=true
[req] tools   86 offered: ["create_directory", "create_file", "create_new_jupyter_notebook", "create_new_workspace", "edit_notebook_file", "fetch_webpage", "file_search", "grep_search", "get_errors", "copilot_getNotebookSummary", "get_vscode_api", "github_repo", "github_text_search", "install_extension", "list_dir", "memory", "multi_replace_string_in_file", "read_file", "read_notebook_cell_output", "replace_string_in_file", "resolve_memory_file_uri", "run_notebook_cell", "run_vscode_command", "session_store_sql", "view_image", "vscode_askQuestions", "vscode_listCodeUsages", "vscode_renameSymbol", "vscode_searchExtensions_internal", "click_element", "create_and_run_task", "drag_element", "get_task_output", "get_terminal_output", "handle_dialog", "hover_element", "kill_terminal", "manage_todo_list", "navigate_page", "open_browser_page", "read_page", "run_in_terminal", "run_playwright_code", "runSubagent", "screenshot_page", "send_to_terminal", "terminal_last_command", "terminal_selection", "testFailure", "type_in_page", "activate_notebook_package_management", "configure_notebook", "configure_python_environment", "get_python_environment_details", "get_python_executable_details", "install_python_packages", "container-tools_get-config", "activate_dotnet_sdk_management_tools", "activate_dotnet_version_listing_tools", "find_dotnet_executable_path", "get_settings_info_for_dotnet_installation_management", "uninstall_vscode_owned_dotnet_runtime", "activate_git_commit_management_tools", "activate_branch_and_worktree_management", "activate_remote_repository_interaction", "activate_git_workflow_and_pr_management", "activate_pull_request_management_and_review", "mcp_gitkraken_cli_git_stash", "mcp_gitkraken_cli_issues_add_comment", "mcp_gitkraken_cli_issues_assigned_to_me", "mcp_gitkraken_cli_issues_create", "mcp_gitkraken_cli_issues_get_detail", "mcp_gitkraken_cli_repository_get_file_content", "mcp_pylance_mcp_s_pylanceAnalyze", "mcp_pylance_mcp_s_pylanceCheckSignatureCompatibility", "mcp_pylance_mcp_s_pylanceDocuments", "mcp_pylance_mcp_s_pylanceFileSyntaxErrors", "mcp_pylance_mcp_s_pylanceImports", "mcp_pylance_mcp_s_pylanceInstalledTopLevelModules", "mcp_pylance_mcp_s_pylanceInvokeRefactoring", "activate_fallback_mcp_pylance_mcp_s_pylanceLSP_1", "mcp_pylance_mcp_s_pylancePythonProfileExplorer", "mcp_gitkraken_cli_git_commit_composer", "mcp_gitkraken_cli_git_branch", "mcp_gitkraken_cli_gitkraken_workspace_list", "mcp_pylance_mcp_s_pylanceLSP"] tool_choice=None
[req] ttft=2035.1ms plen=314
[req] stream  prompt_tokens=29936 max_tokens=65536 stop=[]
[req] ttft=42649.4ms plen=29936
[req] raw model output (74 chars): "Bonjour ! Je suis GitHub Copilot. Comment puis-je vous aider aujourd'hui ?"
[req] done   tok=74 (1.5 tok/s wall) finish=stop stop_hit=false
[req] params  temp=0.1 top_p=0.8 top_k=20 max_tok=None rep_pen=None presence=None freq=None stream=true
[req] tools   86 offered: ["create_directory", "create_file", "create_new_jupyter_notebook", "create_new_workspace", "edit_notebook_file", "fetch_webpage", "file_search", "grep_search", "get_errors", "copilot_getNotebookSummary", "get_vscode_api", "github_repo", "github_text_search", "install_extension", "list_dir", "memory", "multi_replace_string_in_file", "read_file", "read_notebook_cell_output", "replace_string_in_file", "resolve_memory_file_uri", "run_notebook_cell", "run_vscode_command", "session_store_sql", "view_image", "vscode_askQuestions", "vscode_listCodeUsages", "vscode_renameSymbol", "vscode_searchExtensions_internal", "click_element", "create_and_run_task", "drag_element", "get_task_output", "get_terminal_output", "handle_dialog", "hover_element", "kill_terminal", "manage_todo_list", "navigate_page", "open_browser_page", "read_page", "run_in_terminal", "run_playwright_code", "runSubagent", "screenshot_page", "send_to_terminal", "terminal_last_command", "terminal_selection", "testFailure", "type_in_page", "activate_notebook_package_management", "configure_notebook", "configure_python_environment", "get_python_environment_details", "get_python_executable_details", "install_python_packages", "container-tools_get-config", "activate_dotnet_sdk_management_tools", "activate_dotnet_version_listing_tools", "find_dotnet_executable_path", "get_settings_info_for_dotnet_installation_management", "uninstall_vscode_owned_dotnet_runtime", "activate_git_commit_management_tools", "activate_branch_and_worktree_management", "activate_remote_repository_interaction", "activate_git_workflow_and_pr_management", "activate_pull_request_management_and_review", "mcp_gitkraken_cli_git_stash", "mcp_gitkraken_cli_issues_add_comment", "mcp_gitkraken_cli_issues_assigned_to_me", "mcp_gitkraken_cli_issues_create", "mcp_gitkraken_cli_issues_get_detail", "mcp_gitkraken_cli_repository_get_file_content", "mcp_pylance_mcp_s_pylanceAnalyze", "mcp_pylance_mcp_s_pylanceCheckSignatureCompatibility", "mcp_pylance_mcp_s_pylanceDocuments", "mcp_pylance_mcp_s_pylanceFileSyntaxErrors", "mcp_pylance_mcp_s_pylanceImports", "mcp_pylance_mcp_s_pylanceInstalledTopLevelModules", "mcp_pylance_mcp_s_pylanceInvokeRefactoring", "activate_fallback_mcp_pylance_mcp_s_pylanceLSP_1", "mcp_pylance_mcp_s_pylancePythonProfileExplorer", "mcp_gitkraken_cli_git_commit_composer", "mcp_gitkraken_cli_git_branch", "mcp_gitkraken_cli_gitkraken_workspace_list", "mcp_pylance_mcp_s_pylanceLSP"] tool_choice=None
[req] stream  prompt_tokens=30198 max_tokens=65536 stop=[]
[pool] trimmed 4.6 GB -> 3.0 GB of idle buffers
[req] prefix hit (prompt checkpoint): 29931/30198 tokens cached, prefilling 267 (99% skipped)
[req] ttft=1668.9ms plen=30198
[req] tool_call  call_0 run_in_terminal({"command":"date","explanation":"Affiche la date et l'heure courantes.","goal":"Connaître l'heure actuelle","mode":"sync"})
[req] done   tok=135 (9.8 tok/s wall) finish=tool_calls stop_hit=false
[req] params  temp=0.1 top_p=0.8 top_k=20 max_tok=None rep_pen=None presence=None freq=None stream=true
[req] tools   86 offered: ["create_directory", "create_file", "create_new_jupyter_notebook", "create_new_workspace", "edit_notebook_file", "fetch_webpage", "file_search", "grep_search", "get_errors", "copilot_getNotebookSummary", "get_vscode_api", "github_repo", "github_text_search", "install_extension", "list_dir", "memory", "multi_replace_string_in_file", "read_file", "read_notebook_cell_output", "replace_string_in_file", "resolve_memory_file_uri", "run_notebook_cell", "run_vscode_command", "session_store_sql", "view_image", "vscode_askQuestions", "vscode_listCodeUsages", "vscode_renameSymbol", "vscode_searchExtensions_internal", "click_element", "create_and_run_task", "drag_element", "get_task_output", "get_terminal_output", "handle_dialog", "hover_element", "kill_terminal", "manage_todo_list", "navigate_page", "open_browser_page", "read_page", "run_in_terminal", "run_playwright_code", "runSubagent", "screenshot_page", "send_to_terminal", "terminal_last_command", "terminal_selection", "testFailure", "type_in_page", "activate_notebook_package_management", "configure_notebook", "configure_python_environment", "get_python_environment_details", "get_python_executable_details", "install_python_packages", "container-tools_get-config", "activate_dotnet_sdk_management_tools", "activate_dotnet_version_listing_tools", "find_dotnet_executable_path", "get_settings_info_for_dotnet_installation_management", "uninstall_vscode_owned_dotnet_runtime", "activate_git_commit_management_tools", "activate_branch_and_worktree_management", "activate_remote_repository_interaction", "activate_git_workflow_and_pr_management", "activate_pull_request_management_and_review", "mcp_gitkraken_cli_git_stash", "mcp_gitkraken_cli_issues_add_comment", "mcp_gitkraken_cli_issues_assigned_to_me", "mcp_gitkraken_cli_issues_create", "mcp_gitkraken_cli_issues_get_detail", "mcp_gitkraken_cli_repository_get_file_content", "mcp_pylance_mcp_s_pylanceAnalyze", "mcp_pylance_mcp_s_pylanceCheckSignatureCompatibility", "mcp_pylance_mcp_s_pylanceDocuments", "mcp_pylance_mcp_s_pylanceFileSyntaxErrors", "mcp_pylance_mcp_s_pylanceImports", "mcp_pylance_mcp_s_pylanceInstalledTopLevelModules", "mcp_pylance_mcp_s_pylanceInvokeRefactoring", "activate_fallback_mcp_pylance_mcp_s_pylanceLSP_1", "mcp_pylance_mcp_s_pylancePythonProfileExplorer", "mcp_gitkraken_cli_git_commit_composer", "mcp_gitkraken_cli_git_branch", "mcp_gitkraken_cli_gitkraken_workspace_list", "mcp_pylance_mcp_s_pylanceLSP"] tool_choice=None
[req] stream  prompt_tokens=30340 max_tokens=65536 stop=[]
[req] prefix hit (prompt checkpoint): 30193/30340 tokens cached, prefilling 147 (100% skipped)
[req] ttft=1574.1ms plen=30340
[req] raw model output (80 chars): "Il est **21h08** (heure d'été centrale européenne, CEST), mercredi 26 août 2026."
[req] done   tok=79 (9.1 tok/s wall) finish=stop stop_hit=false
[req] done   tok=726 (6.6 tok/s wall) finish=stop stop_hit=false
[req] done   tok=880 (7.2 tok/s wall) finish=stop stop_hit=false

Here is the llama-benchy test :

| model   |           test |                  t/s |     peak t/s |     ttfr (ms) |   est_ppt (ms) |    e2e_ttft (ms) |
|:--------|---------------:|---------------------:|-------------:|--------------:|---------------:|-----------------:|
| Acantic |         pp2048 |  97576.46 ± 29790.27 |              | 189.61 ± 8.52 |   22.07 ± 8.52 |  2854.62 ± 30.20 |
| Acantic |           tg32 |         33.48 ± 7.83 | 34.33 ± 8.39 |               |                |                  |
| Acantic |         pp2048 | 210146.88 ± 58732.71 |              | 177.75 ± 3.31 |   10.21 ± 3.31 |   2863.68 ± 5.27 |
| Acantic |          tg128 |         29.08 ± 3.20 | 29.33 ± 3.40 |               |                |                  |
| Acantic | pp2048 @ d4096 | 302042.62 ± 56542.04 |              | 186.88 ± 4.11 |   19.33 ± 4.11 | 6857.66 ± 119.69 |
| Acantic |   tg32 @ d4096 |         29.37 ± 7.50 | 29.96 ± 7.99 |               |                |                  |
| Acantic | pp2048 @ d4096 | 302316.57 ± 68002.24 |              | 186.66 ± 4.80 |   19.12 ± 4.80 |  6687.26 ± 69.92 |
| Acantic |  tg128 @ d4096 |         23.54 ± 1.12 | 24.00 ± 0.82 |               |                |                  |

llama-benchy (0.4.1.dev1+ge9be34457)
date: 2026-08-26 21:00:27 | latency mode: generation

I’ve tested with an other benchmark :

Workload matrix v1 — endpoint http://127.0.0.1:8002 (model id: Acantic)
greedy, fresh single-turn prompts, decode net of prefill (two-call delta)

  code (EN)               :  23.5 tok/s
  code (DE)               :  28.9 tok/s
  technical explain (FR)  :  23.3 tok/s
  reasoning (FR)          :  32.0 tok/s
  free prose (EN)         :  18.6 tok/s
  free prose (FR)         :  20.1 tok/s
  free prose (DE)         :  19.8 tok/s

But the main issue bothering me is that it makes the case run really hot; as soon as I start a benchmark, the temperature shoots up to 85°C—I’ve never experienced that before :

nvidia-smi --query-gpu=power.draw,temperature.gpu,utilization.gpu,clocks.sm --format=csv,noheader
89.67 W, 84, 96 %, 2392 MHz

That said, bravo for the simplicity, no need to clone an entire repository, a tiny binary and a folder, simple settings, it’s good :)

I ll have a look at this in the next few days. Many many thanks gor this!!!

The problem s that we have soo many new models now to test… Regardless I ll check this and get back to you as it sure looks as if something is wrong here.

LOL.. 0.4.2 was working for me with my self-healing proxy to repair the bug.. I upgraded my primary node to 0.5.0 as well and I’m already regretting it… something is broken and I’m not sure what. Maybe it’s my self-healing proxy or the 9Router. It’s 5am, not going to troubleshoot anymore..

noted!

0.5.0 was hanging every couple of messages. Reverting to 0.4.2 fixes the hangs..,

I finally did a bench, and was hitting 25 token/s , much closer to the vllm numbers and also what the math would support. The issues I encounter was due to 9Router interaction but quite difficult to justify restricting myself to the inferences engine with it’s quants and that I would be limited to 256k context and batch of 4 on a single spark.

Fresh run on the fully-warm server (single RTX PRO 6000, Qwen3.8-27B NVFP4 + DFlash2 via SGLang, pp2048 + tg128):

Bench results
Concurrency
Sustained decode tok/s
1× 167.5
2× 159.3 (aggregate ~79.7/lane)
4× 142.7 (aggregate ~35.7/lane)
And the code-content variant (peak/sustained):

Concurrency
Code max
Code sustained mean
1× 189.7 168.8
2× 205.9 184.9
4× 175.4 128.6
Headline: ~167 tok/s single-stream sustained decode on one RTX PRO 6000 — roughly 2× veloGB10’s single-node code-sustained figure (~75 tok/s) on DGX Spark, and in range of the repo’s claimed 240+ peak on this GPU.

📊 GSM8K Quality Result
GSM8K accuracy = 87.04% (1148 / 1319) on rex — Qwen3.8-27B NVFP4 + DFlash2 (SGLang), full 1319-example test split, thinking mode on, model-default sampling.

This run (rex)
Model card (4×GB300)
GSM8K 87.04% (1148/1319) 96.13% (1268/1319)
stderr ±0.92% —
mean completion tokens 390 (thinking) —
mean latency 1.9 s/example —
Notable: the NVFP4 quantized model on a single RTX PRO 6000 scores ~87%, about 9 points below the card’s 96.13% (which was ran on 4×GB300 with the same BF16-lm_head checkpoint).

Why the gap — likely factors (honest assessment):

The card’s 96.13% was a single temperature-1.0 run reported as best-of, and our run is also temp 1.0; sampling variance at this scale is typically small (±0.5%) — so the ~9pt delta is real, not noise.
temperature=1.0, top_p=0.95 — the card noted thinking wants these, but my implementation sends raw GSM8K questions with no few-shot / no answer-formatting instruction, and extracts the last number from potentially long thinking traces. The card used sgl-eval’s stricter final-answer handling.
Generation capped at 2048 tokens — some long-thinking problems may get truncated before the final numeric answer, hurting exact-match.
Single GPU + DFlash2 draft shouldn’t change quality (spec-decode is lossless), so the delta is protocol/formatting, not the quantization.
So ~87% is a credible, reproducible GSM8K figure for this deployment, though not directly comparable to the card’s 96.13% due to harness differences (my lightweight last-number scorer vs. sgl-eval’s protocol).

🧠🏎️ exciting ! Lets see if it can figure out how to setup Kimi 3 on 16 Nvidia’s DGX spark’s .

@JW2026 @jbourny

Could you guys please let me know the following:

  1. What benches you usually use to test (and sources)
  2. What the best sustained, mixed/practical use, ttft / decode speeds are to your knowledge ( also at large contexts ). And what ttft / tok/s would make you think “wow this is great”,
  3. What concurrency you usually need and at what kind of performance would you expect.
  4. If you intend to use Single mode for this only. My goal really was to provide best performance for TP=2 & especially TP=4 which I achieved, but it seems that most people care about single mode.
  5. Any other missing things that you would like to see in general or performance wise.

I’ll then take it away and go back to improving this dramatically.

I would appreciate your feedback, you have no idea how much this helps me!

benchmark for speed would usually be llama-benchy, and tool-eval-bench for tool calling

For reference, right now on that benchmark with sglang I get around 2000-2100 tks for pp2048 and around 32-38tks for tg128. Currently this works but if I’m being honest, I was hoping for at least 3000 on prefill and around 40-50 on decode. That would very much be acceptable for my agentic use case. But then again, the more the merrier.

I think for this particular size model, most people would be running it on a single spark since using more than one (if ever the person does have more than one) would be somewhat overkill.