Light Foundry Notes

146 posts

Light Foundry Notes banner
Light Foundry Notes

Light Foundry Notes

@light_foundry

Running a precision machining business. UV laser processing · CNC machining · local AI compute Personal notes. Not a company account.

Seoul Katılım November 2020
407 Takip Edilen699 Takipçiler

2026 Yıllık Özeti

@light_foundry hesabının Twitter yılını gör

Sabitlenmiş Tweet
Light Foundry Notes
Light Foundry Notes@light_foundry·
I run precision machining operations. Building toward an AI-native manufacturing company. head full of: → agents watching production lines → LLMs reading quality reports → models learning from every defect → workflows for dark factories Personal notes. Not a company account.
English
1
0
1
886
Light Foundry Notes
Light Foundry Notes@light_foundry·
Full recipe for the 8× GB10 setup: BUILD vLLM PR #41834 (SM121 sparse MLA + DSpark for GB10). Built from source on one node with: • TORCH_CUDA_ARCH_LIST=12.1a • FlashInfer 0.6.15.post1 (pinned) Then docker save/load to the other seven nodes. Build time: ~1 hour on a GB10. --- TOPOLOGY Native vLLM multi-node (no Ray). Each node runs: vllm serve --nnodes 8 --node-rank R --master-addr Ranks >0 use --headless. TP=8 across the nodes over 200G RoCE. --- KEY SETTINGS • FP8 KV cache • max-model-len 1048576 • max-num-seqs 64 • Prefix caching disabled • --speculative-config '{"method":"dspark","num_speculative_tokens":5,"draft_sample_method":"probabilistic"}' num_speculative_tokens must be 5 (the DSpark block size). --- THINGS THAT COST US TIME • GMU-based sizing didn't work reliably here. We reserve KV memory explicitly (40 GiB per node) instead. • NCCL_IB_PCI_RELAXED_ORDERING=0 is required. Otherwise RoCE silently falls back to TCP. • Raise ulimit -n for 8-node multiprocessing. • The max_num_seqs > 4 crash from my RTX PRO 6000 recipe does NOT exist in this branch. max_num_seqs=64 ran clean. --- Validation followed the same sanity ladder: Health → Deterministic text → Usage-metered throughput → Needle (128K / 384K) → Tool calling
English
0
0
0
109
Light Foundry Notes
Light Foundry Notes@light_foundry·
403 tok/s on an 8× DGX Spark cluster. DeepSeek-V4-Flash-0731 GB10 · 200G RoCE · TP=8 Measured (usage-metered): • 403 tok/s aggregate @ c32 • 88 tok/s single stream • 1M context • 4.17M-token KV pool • max_num_seqs 64 • Zero failures The interesting part wasn't the throughput. DSpark speculative decoding inverted under concurrency. At c1 it delivered a 2.4× speedup over the no-spec baseline. By c32 it was ~9% slower. Once the batch fills, the acceptance economics flip. My 2× RTX PRO 6000 workstation still wins single-stream latency (244 vs 88 tok/s). The Spark cluster wins throughput. Different tools for different workloads.
Light Foundry Notes tweet media
English
3
1
25
2K
Light Foundry Notes
Light Foundry Notes@light_foundry·
@alexellisuk @mjtechguy Threadripper 9975WX, 256GB DDR5, both cards on full x16 lanes. That's the main reason for the platform, AM5 runs out of lanes for two of these. Ubuntu, ~450W per card under load.
English
0
0
2
65
Takuya KAWATSU
Takuya KAWATSU@takuz0_·
8× DGX Spark (GB10, SM121, 200GbE RoCE v2 dual-rail) — DeepSeek-V4-Flash and GLM-5.2 both serving on a self-built #41834 github.com/vllm-project/v… Build: jasl/vllm @ tag sm120-pr-41834-stable-preview-20260727d ( d64074e6f0 ), docker/Dockerfile --target vllm-openai --build-arg torch_cuda_arch_list=12.1a . Resulting version 0.26.0+sm121.pr41834.d64074e ; torch 2.13.0+cu130, CUDA 13.0.3, FlashInfer 0.6.15.post1, nvidia-nccl-cu13 2.30.7. Built once, docker save → 7 peers. Backends selected: FLASHINFER_MLA_SPARSE_SM120 attention + fp8_ds_mla KV for both DeepSeek-V4 and GLM-5.2; FLASHINFER_CUTLASS NVFP4 MoE for GLM-5.2, MARLIN MXFP4 for DSV4. Notes that cost us time: • DSpark: num_speculative_tokens must equal dspark_block_size (5). The model card's 7 collapses draft acceptance from 34.7% to 4.4% — matching [at]kelnei 's report. • Speculative decoding inverts at high concurrency here: DSpark wins through C=8 (284 vs 197) but loses at C=16 (280 vs 354). • GB10 has no GPUDirect RDMA (unified memory → ibv_reg_mr_iova2 always fails). NCCL_IB_PCI_RELAXED_ORDERING=0 is required or RoCE silently degrades to TCP. Thanks to github.com/jasl for the branch.
Takuya KAWATSU tweet media
English
4
2
32
1.7K
Light Foundry Notes
Light Foundry Notes@light_foundry·
@takuz0_ Welcome to the 8x Spark club! Mine are humming along here too. Curious what you end up running on them.
English
0
0
2
131
Takuya KAWATSU
Takuya KAWATSU@takuz0_·
Testing 8x DGX Spark nodes in an open world setup :)
Takuya KAWATSU tweet mediaTakuya KAWATSU tweet mediaTakuya KAWATSU tweet media
English
36
14
363
46.9K
0xSero
0xSero@0xSero·
You are not alone We are not separate My daughter's shoulders are my shoulders My son's hands my hands My wife's heart my own heart
0xSero tweet media0xSero tweet media0xSero tweet media0xSero tweet media
English
15
0
214
7.9K
Light Foundry Notes
Light Foundry Notes@light_foundry·
@thatcofffeeguy Same here, day job keeps me honest. But when GLM 5.5 or a DeepSeek V4 Pro drops, I’ll be right back in the trenches with this community.
English
1
0
1
104
The coffee guy
The coffee guy@thatcofffeeguy·
It’s mind blowing I have had my head down last 2 weeks working on adding 2 new cafes to our business. I come back to dive into the world of AI and it seems like 20 new models have dropped tons of mods. The world is moving so fast I have warned my team when GLM 5.5 drops I’ll probably be incapacitated for a few days lol. I love the open source and spark community.
English
5
0
15
658
TechMD
TechMD@TechMDAI·
The world is slowly waking up to the DGX Spark. Will they sell out, or did Jensen plan appropriately?
English
7
1
33
2K
Light Foundry Notes
Light Foundry Notes@light_foundry·
@LocalAiCherry Here it is, full recipe with the launch config: x.com/light_foundry/…
Light Foundry Notes@light_foundry

Full recipe: DeepSeek-V4-Flash-0731 + DSpark on 2× RTX PRO 6000 Blackwell (SM120) Several people asked for the exact setup. Everything below is measured on my own system. ## MODEL Official deepseek-ai/DeepSeek-V4-Flash-0731 (HF) • FP8, ~167 GB • Fits in 2×96 GB VRAM as-is • No requantization required • The DSpark draft model ships in the same repository One small tip: downloading individual files with curl was much more reliable than the HF CLI, which repeatedly stalled for us. --- ## ENGINE Current upstream vLLM and SGLang do not support this model. You'll need a community vLLM build with: • SM120 sparse kernels • DSpark speculative decoding • Built after Jul 31 The Jul 31 release introduced a new MTP norm layout. Older builds fail during weight loading with: KeyError: ...mtp_block.main_norm.weight I'm intentionally not naming the image publicly to avoid sending everyone to the maintainer. Happy to share via DM. --- ## LAUNCH (working configuration) --tensor-parallel-size 2 --max-model-len 524288 --max-num-seqs 4 --gpu-memory-utilization 0.94 --kv-cache-dtype fp8 --speculative-config '{"method":"dspark","num_speculative_tokens":5}' --tokenizer-mode deepseek_v4 --tool-call-parser deepseek_v4 --enable-auto-tool-choice --reasoning-parser deepseek_v4 --block-size 256 --max-num-batched-tokens 2048 --disable-custom-all-reduce --trust-remote-code (prefix caching disabled) num_speculative_tokens must be >= 5 (the DSpark block size). Anything lower is rejected during config validation before CUDA is even initialized. --- ## THE max_num_seqs LIMIT max_num_seqs > 4 deterministically fails on the first request: cannot reshape tensor of 0 elements Root cause: A hardcoded prefill chunk size (4) feeds an empty padding slice into the sparse MLA kernel. Confirmed on both community builds we tested. Cap max_num_seqs at 4. Additional requests simply queue instead of crashing. --- ## WHAT TO EXPECT Measured on this setup. Code generation (temp=0) • 235-246 tok/s single stream General prose • 130-145 tok/s Aggregate throughput • c2 ~300 tok/s • c4 ~400 tok/s Other numbers • Prefill: 5-6K tok/s • 384K needle retrieval: ~80 s • KV pool: ~988K tokens Why the spread? The engine runs at roughly 50 verification steps/s. Throughput is approximately: tok/s = 50 × (1 + accepted draft tokens per step) Acceptance depends heavily on workload: • Code (temp=0): ~73% • Prose: ~33% Don't estimate throughput from SSE delta counts. Those measure verification steps, not generated tokens. --- ## SANITY LADDER 1. Health check 2. Deterministic text 3. Usage-metered throughput 4. Needle (128K to 384K) 5. Tool calling 6. Confirm the max_num_seqs > 4 signature If all six pass, you should have essentially the same environment I do. Questions welcome.

English
0
0
0
183
Local Ai Cherry
Local Ai Cherry@LocalAiCherry·
Loving the 240+ tok/s results on dual RTX PRO 6000 with DeepSeek-V4-Flash-0731 + DSpark. Any chance you could drop the exact commands / docker setup / flags you’re using for SM120? Stock vLLM still breaks for most of us. Would be super helpful if you shared the working recipe, can make a new post about it
English
1
0
6
191
Light Foundry Notes
Light Foundry Notes@light_foundry·
Light Foundry Notes@light_foundry

Full recipe: DeepSeek-V4-Flash-0731 + DSpark on 2× RTX PRO 6000 Blackwell (SM120) Several people asked for the exact setup. Everything below is measured on my own system. ## MODEL Official deepseek-ai/DeepSeek-V4-Flash-0731 (HF) • FP8, ~167 GB • Fits in 2×96 GB VRAM as-is • No requantization required • The DSpark draft model ships in the same repository One small tip: downloading individual files with curl was much more reliable than the HF CLI, which repeatedly stalled for us. --- ## ENGINE Current upstream vLLM and SGLang do not support this model. You'll need a community vLLM build with: • SM120 sparse kernels • DSpark speculative decoding • Built after Jul 31 The Jul 31 release introduced a new MTP norm layout. Older builds fail during weight loading with: KeyError: ...mtp_block.main_norm.weight I'm intentionally not naming the image publicly to avoid sending everyone to the maintainer. Happy to share via DM. --- ## LAUNCH (working configuration) --tensor-parallel-size 2 --max-model-len 524288 --max-num-seqs 4 --gpu-memory-utilization 0.94 --kv-cache-dtype fp8 --speculative-config '{"method":"dspark","num_speculative_tokens":5}' --tokenizer-mode deepseek_v4 --tool-call-parser deepseek_v4 --enable-auto-tool-choice --reasoning-parser deepseek_v4 --block-size 256 --max-num-batched-tokens 2048 --disable-custom-all-reduce --trust-remote-code (prefix caching disabled) num_speculative_tokens must be >= 5 (the DSpark block size). Anything lower is rejected during config validation before CUDA is even initialized. --- ## THE max_num_seqs LIMIT max_num_seqs > 4 deterministically fails on the first request: cannot reshape tensor of 0 elements Root cause: A hardcoded prefill chunk size (4) feeds an empty padding slice into the sparse MLA kernel. Confirmed on both community builds we tested. Cap max_num_seqs at 4. Additional requests simply queue instead of crashing. --- ## WHAT TO EXPECT Measured on this setup. Code generation (temp=0) • 235-246 tok/s single stream General prose • 130-145 tok/s Aggregate throughput • c2 ~300 tok/s • c4 ~400 tok/s Other numbers • Prefill: 5-6K tok/s • 384K needle retrieval: ~80 s • KV pool: ~988K tokens Why the spread? The engine runs at roughly 50 verification steps/s. Throughput is approximately: tok/s = 50 × (1 + accepted draft tokens per step) Acceptance depends heavily on workload: • Code (temp=0): ~73% • Prose: ~33% Don't estimate throughput from SSE delta counts. Those measure verification steps, not generated tokens. --- ## SANITY LADDER 1. Health check 2. Deterministic text 3. Usage-metered throughput 4. Needle (128K to 384K) 5. Tool calling 6. Confirm the max_num_seqs > 4 signature If all six pass, you should have essentially the same environment I do. Questions welcome.

English
0
0
1
217
Kevin King
Kevin King@JAKEVIN16·
@light_foundry This speed is insane, how much is the 2× RTX PRO 6000 Blackwell on your end?
English
1
0
2
663
Light Foundry Notes
Light Foundry Notes@light_foundry·
@nrtawari Full recipe here, launch config included: x.com/light_foundry/…
Light Foundry Notes@light_foundry

Full recipe: DeepSeek-V4-Flash-0731 + DSpark on 2× RTX PRO 6000 Blackwell (SM120) Several people asked for the exact setup. Everything below is measured on my own system. ## MODEL Official deepseek-ai/DeepSeek-V4-Flash-0731 (HF) • FP8, ~167 GB • Fits in 2×96 GB VRAM as-is • No requantization required • The DSpark draft model ships in the same repository One small tip: downloading individual files with curl was much more reliable than the HF CLI, which repeatedly stalled for us. --- ## ENGINE Current upstream vLLM and SGLang do not support this model. You'll need a community vLLM build with: • SM120 sparse kernels • DSpark speculative decoding • Built after Jul 31 The Jul 31 release introduced a new MTP norm layout. Older builds fail during weight loading with: KeyError: ...mtp_block.main_norm.weight I'm intentionally not naming the image publicly to avoid sending everyone to the maintainer. Happy to share via DM. --- ## LAUNCH (working configuration) --tensor-parallel-size 2 --max-model-len 524288 --max-num-seqs 4 --gpu-memory-utilization 0.94 --kv-cache-dtype fp8 --speculative-config '{"method":"dspark","num_speculative_tokens":5}' --tokenizer-mode deepseek_v4 --tool-call-parser deepseek_v4 --enable-auto-tool-choice --reasoning-parser deepseek_v4 --block-size 256 --max-num-batched-tokens 2048 --disable-custom-all-reduce --trust-remote-code (prefix caching disabled) num_speculative_tokens must be >= 5 (the DSpark block size). Anything lower is rejected during config validation before CUDA is even initialized. --- ## THE max_num_seqs LIMIT max_num_seqs > 4 deterministically fails on the first request: cannot reshape tensor of 0 elements Root cause: A hardcoded prefill chunk size (4) feeds an empty padding slice into the sparse MLA kernel. Confirmed on both community builds we tested. Cap max_num_seqs at 4. Additional requests simply queue instead of crashing. --- ## WHAT TO EXPECT Measured on this setup. Code generation (temp=0) • 235-246 tok/s single stream General prose • 130-145 tok/s Aggregate throughput • c2 ~300 tok/s • c4 ~400 tok/s Other numbers • Prefill: 5-6K tok/s • 384K needle retrieval: ~80 s • KV pool: ~988K tokens Why the spread? The engine runs at roughly 50 verification steps/s. Throughput is approximately: tok/s = 50 × (1 + accepted draft tokens per step) Acceptance depends heavily on workload: • Code (temp=0): ~73% • Prose: ~33% Don't estimate throughput from SSE delta counts. Those measure verification steps, not generated tokens. --- ## SANITY LADDER 1. Health check 2. Deterministic text 3. Usage-metered throughput 4. Needle (128K to 384K) 5. Tool calling 6. Confirm the max_num_seqs > 4 signature If all six pass, you should have essentially the same environment I do. Questions welcome.

English
0
0
3
764
Light Foundry Notes
Light Foundry Notes@light_foundry·
Full recipe: DeepSeek-V4-Flash-0731 + DSpark on 2× RTX PRO 6000 Blackwell (SM120) Several people asked for the exact setup. Everything below is measured on my own system. ## MODEL Official deepseek-ai/DeepSeek-V4-Flash-0731 (HF) • FP8, ~167 GB • Fits in 2×96 GB VRAM as-is • No requantization required • The DSpark draft model ships in the same repository One small tip: downloading individual files with curl was much more reliable than the HF CLI, which repeatedly stalled for us. --- ## ENGINE Current upstream vLLM and SGLang do not support this model. You'll need a community vLLM build with: • SM120 sparse kernels • DSpark speculative decoding • Built after Jul 31 The Jul 31 release introduced a new MTP norm layout. Older builds fail during weight loading with: KeyError: ...mtp_block.main_norm.weight I'm intentionally not naming the image publicly to avoid sending everyone to the maintainer. Happy to share via DM. --- ## LAUNCH (working configuration) --tensor-parallel-size 2 --max-model-len 524288 --max-num-seqs 4 --gpu-memory-utilization 0.94 --kv-cache-dtype fp8 --speculative-config '{"method":"dspark","num_speculative_tokens":5}' --tokenizer-mode deepseek_v4 --tool-call-parser deepseek_v4 --enable-auto-tool-choice --reasoning-parser deepseek_v4 --block-size 256 --max-num-batched-tokens 2048 --disable-custom-all-reduce --trust-remote-code (prefix caching disabled) num_speculative_tokens must be >= 5 (the DSpark block size). Anything lower is rejected during config validation before CUDA is even initialized. --- ## THE max_num_seqs LIMIT max_num_seqs > 4 deterministically fails on the first request: cannot reshape tensor of 0 elements Root cause: A hardcoded prefill chunk size (4) feeds an empty padding slice into the sparse MLA kernel. Confirmed on both community builds we tested. Cap max_num_seqs at 4. Additional requests simply queue instead of crashing. --- ## WHAT TO EXPECT Measured on this setup. Code generation (temp=0) • 235-246 tok/s single stream General prose • 130-145 tok/s Aggregate throughput • c2 ~300 tok/s • c4 ~400 tok/s Other numbers • Prefill: 5-6K tok/s • 384K needle retrieval: ~80 s • KV pool: ~988K tokens Why the spread? The engine runs at roughly 50 verification steps/s. Throughput is approximately: tok/s = 50 × (1 + accepted draft tokens per step) Acceptance depends heavily on workload: • Code (temp=0): ~73% • Prose: ~33% Don't estimate throughput from SSE delta counts. Those measure verification steps, not generated tokens. --- ## SANITY LADDER 1. Health check 2. Deterministic text 3. Usage-metered throughput 4. Needle (128K to 384K) 5. Tool calling 6. Confirm the max_num_seqs > 4 signature If all six pass, you should have essentially the same environment I do. Questions welcome.
Light Foundry Notes@light_foundry

DeepSeek-V4-Flash-0731 + DSpark speculative decoding 2× RTX PRO 6000 Blackwell (TP=2, official FP8, 524K maxlen) Results (median): • 243 tok/s single stream — 3.1× over the no-spec baseline • Aggregate throughput: c2 299 · c4 403 tok/s • Draft accept: 74–76%, zero failures I expected an SM120 kernel wall. Never hit one. The real bottleneck: max_num_seqs > 4 fails deterministically on the first request. A hardcoded prefill chunk size feeds an empty slice into the sparse kernel. Capped at 4, it held a 3-hour mixed-load soak at 237–245 tok/s. Looks like this will be my daily driver for now.

English
9
10
45
7K