DeepSeek V4 Flash 0731を RTX PRO 6000 Blackwell Max-Q 96GB 2枚で動かしました。custom vLLM の Gilded Gnosis r24、Tensor Parallel 2、DSpark K5、FP8 compressed MLA KV、native CPU KV offload を使っています。

Coding-agent workload の実行と生成物の確認を動画にしました。

動画リンク: https://www.youtube.com/watch?v=E7JroDgE9no

MAX_MODEL_LEN=262144 で起動し、GPU KV cache は285,336 tokens確保できました。262,144 tokensのリクエスト1本に対する理論concurrencyは1.09xです。生成速度は最大359.0 tok/s、single active request の中央値は230.9 tok/sでした。

結果

項目実測値
Modeldeepseek-ai/DeepSeek-V4-Flash-0731
RuntimevLLM Gilded Gnosis r24
GPURTX PRO 6000 Blackwell Max-Q 96GB x2
Tensor Parallel / DCP2 / 1
Expert pathmodel-native FP4 / B12X W4A8
KV cacheFP8 DeepSeek compressed MLA
Configured context262,144
Maximum sequences2
GPU KV capacity285,336 tokens
262K request concurrency1.09x
Peak GPU KV usage79.4%
Peak generation throughput359.0 tok/s
Single-active-request median230.9 tok/s
Single-active-request IQR167.9-279.3 tok/s
Nonzero-window mean205.6 tok/s
Peak prompt throughput5,790.1 tok/s
DSpark acceptance lengthmedian 5.12 / best 5.90
DSpark draft acceptancemedian 82.4% / best 98.1%
CPU KV offload8 GiB total across TP ranks
Observed KV copy rateapproximately 50-55 GB/s
Captured access-log results101 / 101 HTTP 200

Throughput と DSpark の統計は、Codex で vLLM server log を集計した値です。

既存のDeepSeek V4 Flash記事との違い

以前は DwarfStar 4 で Q2 GGUF を単一GPUに載せ、2台の compute node に分散した orchestrator も試しました。

今回は DeepSeek-V4-Flash-0731 を使い、次の点を変えました。

  • RuntimeはDwarfStar 4ではなくcustom vLLM
  • CheckpointはDeepSeek-V4-Flash-0731
  • Expert weightsはmodel-native FP4
  • GPUは1台ではなく、1ホスト内のRTX PRO 6000 x2
  • DSpark K5 speculative decodingを使用
  • GPU KVにFP8 compressed MLAを使用
  • /dev/shm上のnative CPU KV offloadを使用

検証環境

項目内容
Host CPUAMD EPYC 9175F
Host RAM768GB DDR5 ECC
GPUNVIDIA RTX PRO 6000 Blackwell Max-Q Workstation Edition x2
VRAM96GB x2
GPU linkPCIe 5.0 x16
OSUbuntu 24.04
ContainerPodman / Quadlet
Modeldeepseek-ai/DeepSeek-V4-Flash-0731
Model snapshot7872f01b1d1fe23eabc4c98b48bffcef5a386062
Image usedregistry.home.arpa/vllm:deepseek-v4
Base releaseGilded Gnosis v20 r24
Runtime versionv0.11.2.dev280 custom build

起動した vLLM version です。

  Aug 04 01:45:09 compute-server grandpa[415455]: (APIServer pid=52) INFO 08-04 01:45:09 [api_utils.py:345]  ▄▄ ▄█ █     █     █ ▀▄▀ █  version 0.11.2.dev280+gilded.gnosis.v20.vllmf5981f1.si2b9bf2a.fi801d57a.cu132.20260803.r24
Aug 04 01:45:09 compute-server grandpa[415455]: (APIServer pid=52) INFO 08-04 01:45:09 [api_utils.py:345]   █▄█▀ █     █     █     █  model   /models/snapshots/7872f01b1d1fe23eabc4c98b48bffcef5a386062
  

Private mirror の元の release image です。

  voipmonitor/vllm:gilded-gnosis-v20-vllmf5981f1-si2b9bf2a-fi801d57a-cu132-20260803-r24
Docker manifest: sha256:64b94299abdd3bcf5bb5050ca91b378f9ee4e0b0eff4748375b95352371d7cb2
Local image ID: sha256:dc0bc459b8c1d59f84e945a4b77f65ea474778b58f4a95d3e3d1c97632daeb1d
  

Model-native FP4 expertとB12X W4A8

Expert weights は model-native FP4 です。一般的な post-training Q4 conversion ではありません。起動ログでも FP4 expert、W4A8、compressed MLA KV、FP8 Lightning Indexer を確認しました。

  (Worker_TP0 pid=496) INFO [quant_config.py:75] DeepSeek V4 expert_dtype resolved to 'fp4'
(Worker_TP0 pid=496) INFO [attention.py:98] Using DeepSeek's fp8_ds_mla KV cache format.
(Worker_TP0 pid=496) INFO [mxfp4.py:426] Using 'B12X' Mxfp4 MoE backend.
(Worker_TP0 pid=496) INFO [attention.py:1023] Using FP8 indexer cache for Lightning Indexer.
(Worker_TP0 pid=496) WARNING [b12x_moe.py:810] B12X MoE force-A8 enabled: using quant_mode=w4a8_mx for E8M0 FP4 weights.
  

Model loading は InstantTensor の BUFFERED backend を使い、weights は各GPUで81.01 GiBを占めました。

DSpark K5

K5 は、1回の verification で5個の draft token を提案する fixed-depth profile です。

  Environment=MODE=dspark
Environment=DSPARK_DEPTH_MODE=fixed
Environment=DSPARK_TOKENS=5
  

MAX_NUM_BATCHED_TOKENS=8192 から speculative decoding の slot を差し引き、実効scheduled tokensは8,184になりました。

  Aug 04 02:44:37 compute-server grandpa[572062]: (EngineCore pid=179) WARNING 08-04 02:44:37 [vllm.py:1758] max_num_scheduled_tokens is set to 8184 based on the speculative decoding settings. This may lead to suboptimal performance. Consider increasing max_num_batched_tokens to accommodate the additional draft token slots, or decrease num_speculative_tokens or max_num_seqs.
  

Current speculative depth: 5 に対して acceptance length は最大5.90でした。5個の draft token に通常の target token も含める指標です。acceptance は prompt によって変わりました。

Quadlet

この image は標準の vllm-openai に引数を直接渡す形式ではありません。serve-ds4-flash.sh が環境変数から vLLM 引数、SparkInfer backend、DSpark 設定を組み立てます。

Quadlet の Exec は次の1行です。

  Exec=/usr/local/bin/serve-ds4-flash.sh
  

使用した Quadlet です。

  [Unit]
Description=DeepSeek V4 Flash 0731 / DSpark r24
After=network-online.target
Wants=network-online.target

[Container]
ContainerName=grandpa
Image=registry.home.arpa/vllm:deepseek-v4
Pull=always

Network=host
AddDevice=nvidia.com/gpu=0
AddDevice=nvidia.com/gpu=1
PodmanArgs=--ipc=host --privileged
RunInit=true

Volume=/mnt/data/hf/hub/models--deepseek-ai--DeepSeek-V4-Flash-0731:/models:ro
Volume=/mnt/data/hf/jit/ds4-v20-r24:/cache
Volume=/mnt/data/hf/tmp/ds4-v20-r24:/container-tmp

Environment=BACKEND=b12x-a8
Environment=CUDA_VISIBLE_DEVICES=0,1
Environment=DCP_SIZE=1
Environment=DSPARK_DEPTH_MODE=fixed
Environment=DSPARK_TOKENS=5
Environment=GPU_MEMORY_UTILIZATION=0.975
Environment=INSTANTTENSOR_BACKEND=BUFFERED
Environment=KV_OFFLOADING_SIZE=8
Environment=LOAD_FORMAT=instanttensor
Environment=MAX_MODEL_LEN=262144
Environment=MAX_NUM_BATCHED_TOKENS=8192
Environment=MAX_NUM_SEQS=2
Environment=MODE=dspark
Environment=MODEL_PATH=/models/snapshots/7872f01b1d1fe23eabc4c98b48bffcef5a386062
Environment=PORT=8000
Environment=SERVED_MODEL_NAME=grandpa
Environment=TP_SIZE=2

Ulimit=memlock=-1:-1
Ulimit=nofile=1048576:1048576
Ulimit=stack=67108864:67108864

Exec=/usr/local/bin/serve-ds4-flash.sh

[Service]
ExecStartPre=/usr/bin/mkdir -p /mnt/data/hf/jit/ds4-v20-r24 /mnt/data/hf/tmp/ds4-v20-r24
TimeoutStartSec=3600
TimeoutStopSec=120
Restart=on-failure
RestartSec=30
LimitMEMLOCK=infinity
LimitNOFILE=1048576
LimitSTACK=67108864
  

--ipc=host と ShmSize= は同時に指定できません。Podman が起動時に拒否するため、どちらかを選びます。

今回の --privileged は、起動を優先した検証時の設定です。最小権限の構成ではありません。

GPU memoryとKV capacity

Graph capture 後の各GPUの内訳です。

項目1 GPUあたり
Model weights81.01 GiB
Peak activation2.45 GiB
Non-torch memory0.20 GiB
CUDA graph0.14 GiB
GPU KV cache8.59 GiB

生ログでは同じ startup sequence に memory 内訳と KV capacity が出ています。

  Aug 04 02:44:21 compute-server grandpa[572062]: (Worker_TP0 pid=264) INFO 08-04 02:44:21 [gpu_worker.py:617] Available KV cache memory: 8.59 GiB
Aug 04 02:44:21 compute-server grandpa[572062]: (EngineCore pid=179) INFO 08-04 02:44:21 [kv_cache_utils.py:2428] GPU KV cache size: 285,336 tokens
Aug 04 02:44:21 compute-server grandpa[572062]: (EngineCore pid=179) INFO 08-04 02:44:21 [kv_cache_utils.py:2429] Maximum concurrency for 262,144 tokens per request: 1.09x
Aug 04 02:44:27 compute-server grandpa[572062]: (Worker_TP0 pid=264) INFO 08-04 02:44:27 [gpu_worker.py:918] Free memory on device (93.73/94.97 GiB) on startup. Desired GPU memory utilization is (0.975, 92.59 GiB). Actual usage is 81.01 GiB for weight, 2.45 GiB for peak activation, 0.2 GiB for non-torch memory, and 0.14 GiB for CUDAGraph memory. Replace gpu_memory_utilization config with `--kv-cache-memory-bytes=9288604570` (8.65 GiB) to fit into requested memory, or `--kv-cache-memory-bytes=10511114752` (9.79 GiB) to fully utilize gpu memory. Current kv cache memory in use is 8.59 GiB.
Aug 04 02:44:36 compute-server grandpa[572062]: (EngineCore pid=179) INFO 08-04 02:44:36 [core.py:345] init engine (profile, create kv cache, warmup model) took 47.53 s (compilation: 12.64 s)
  

Active sequenceの割り振り

GPU KV を約256Kの active working set として管理する案です。

Active sequences1 sequenceあたりの総token目安
1256K
2128K
464K

総tokenは prompt と生成済みoutput の合計です。64K input に32K生成すると、その sequence は96Kを使います。

MAX_MODEL_LEN=262144 のまま MAX_NUM_SEQS を4に増やし、agent-loop / orchestrator で active sequence の総tokenを制限する方法が考えられます。

  sum(active prompt tokens + generated tokens + output headroom) <= approximately 256K
  

Native CPU KV offload

KV_OFFLOADING_SIZE=8 は、TP0とTP1で共有する8 GiBの host RAM pool です。

  Aug 04 02:44:22 compute-server grandpa[572062]: (Worker_TP0 pid=264) INFO 08-04 02:44:22 [shared_offload_region.py:85] Created mmap file /dev/shm/vllm_offload_f5388900-1119-46b2-b2eb-178e4b7e21c5.mmap (8.59 GB)
Aug 04 02:44:22 compute-server grandpa[572062]: (Worker_TP1 pid=265) INFO 08-04 02:44:22 [shared_offload_region.py:93] Opened existing mmap file /dev/shm/vllm_offload_f5388900-1119-46b2-b2eb-178e4b7e21c5.mmap
Aug 04 02:44:22 compute-server grandpa[572062]: (Worker_TP0 pid=264) INFO 08-04 02:44:22 [shared_offload_region.py:176] Unlinked mmap file /dev/shm/vllm_offload_f5388900-1119-46b2-b2eb-178e4b7e21c5.mmap after 2 workers mapped it
  

mmap file は SSD ではなく、通常 tmpfs の /dev/shm に置きます。実体は host DRAM で、GPUとの転送はPCIe 5.0 x16を通ります。

bytes / recorded copy time の加重平均は、store が54.38 GB/s、load が51.46 GB/sでした。

DirectionWeighted rateObserved range
GPU to host RAM (store)54.38 GB/s52.09-55.56 GB/s
Host RAM to GPU (load)51.46 GB/s48.02-54.91 GB/s

最大store intervalは1.415 GB / 27.17 ms、最大load intervalは185.3 MB / 3.37 msでした。

  Aug 04 02:49:49 compute-server grandpa[572062]: (APIServer pid=53) INFO 08-04 02:49:49 [metrics.py:103] KV Transfer metrics: vllm:kv_offload_store_bytes=1415335680, vllm:kv_offload_store_time=0.027173248052597042, vllm:kv_offload_store_size_count=18, vllm:kv_offload_store_size_sum=1415335680, vllm:kv_offload_cpu_cache_usage_perc=0.0, vllm:kv_offload_cpu_allocation_size_count=7, vllm:kv_offload_cpu_allocation_size_sum=503, vllm:kv_offload_cpu_cache_write_usage_perc=0.0, vllm:kv_offload_cpu_cache_read_usage_perc=0.0
Aug 04 02:49:59 compute-server grandpa[572062]: (APIServer pid=53) INFO 08-04 02:49:59 [metrics.py:103] KV Transfer metrics: vllm:kv_offload_cpu_cache_usage_perc=0.0, vllm:kv_offload_cpu_cache_write_usage_perc=0.0, vllm:kv_offload_cpu_cache_read_usage_perc=0.0, vllm:kv_offload_lookup_sync_delay_seconds_count=5, vllm:kv_offload_lookup_sync_delay_seconds_sum=9.603999751561787e-05, vllm:kv_offload_load_bytes=185264640, vllm:kv_offload_load_time=0.0033739200830459597, vllm:kv_offload_load_size_count=2, vllm:kv_offload_load_size_sum=185264640, vllm:kv_offload_cpu_allocation_size_count=5, vllm:kv_offload_cpu_allocation_size_sum=139, vllm:kv_offload_store_bytes=299439360, vllm:kv_offload_store_time=0.005468831906095147, vllm:kv_offload_store_size_count=10, vllm:kv_offload_store_size_sum=299439360
  

PCIe 5.0x16 の片方向raw帯域は約64 GB/sなので、50-55 GB/sはその範囲内です。

kv_offload_cpu_cache_usage_perc は最大約3.86%でした。8 GiB pool を使い切る負荷ではなく、offload の動作確認までです。巨大な CPU tier の容量は評価していません。

768GB RAMで増えるのはKVの保管量

768GB RAMを CPU KV offload に使っても、1 request の最大contextやGPU上の同時処理量は増えません。増えるのは、後続requestで再利用する prefix KV の保存量です。

TP2全体のGPU KV 17.18 GiBが285,336 logical tokensに相当しました。CPUでも同じ block layout を保つと仮定すると、512 GiB pool の換算は次のとおりです。

  285,336 tokens x (512 GiB / 17.18 GiB)
  = approximately 8.5 million token-block equivalents
  

262,144-token の履歴で約32本分ですが、同時実行数ではありません。再利用時は PCIe 経由でGPUへ戻します。保存量は block rounding、metadata、eviction、shared prefix でも変わります。

native offload は未使用の prefix KV をCPUへ退避する cache です。実行中requestをCPUだけで継続しません。KV_OFFLOADING_SIZE を512 GiBへ増やしても、次の値は変わりません。

  • MAX_MODEL_LEN
  • GPU KV cacheの285,336 tokens
  • GPU上のactive working set
  • 設定済みのMAX_NUM_SEQS

512 GiBの shared mmap には、十分な /dev/shm、空きRAM、memlock、CUDA host registration が必要です。

  df -h /dev/shm
  

8 GiB run からの上限換算です。512 GiBでの起動、latency、実効capacityは未検証です。

Generation throughputとDSpark acceptance

vLLM の10秒ごとの metrics window を集計しました。

  • Running: 1の22 windowsからmedianとTukey IQRを算出
  • Generation throughputがnonzeroの34 windowsからmeanを算出
  • DSpark metricsがある34 windowsからacceptance統計を算出
  • CPU KV bandwidthはsum(bytes) / sum(recorded transfer time)で算出
MetricValue
Peak generation throughput359.0 tok/s
Single-active-request median230.9 tok/s
Single-active-request IQR167.9-279.3 tok/s
Mean across nonzero windows205.6 tok/s
Peak prompt throughput5,790.1 tok/s
Acceptance length median5.12
Acceptance length mean4.86
Acceptance length best5.90
Draft acceptance median82.4%
Draft acceptance mean77.2%
Draft acceptance best98.1%
Draft acceptance range41.9-98.1%
Accepted speculative throughput median161.2 tok/s
Accepted speculative throughput best298.2 tok/s

最も acceptance が高い window は98.1%、generation throughputは359.0 tok/sでした。

  Aug 04 02:46:09 compute-server grandpa[572062]: (APIServer pid=53) INFO 08-04 02:46:09 [loggers.py:314] Engine 000: Avg prompt throughput: 0.0 tokens/s, Avg generation throughput: 359.0 tokens/s, Running: 1 reqs, Waiting: 0 reqs, GPU KV cache usage: 1.9%, Prefix cache hit rate: 88.1%, External prefix cache hit rate: 0.8%
Aug 04 02:46:09 compute-server grandpa[572062]: (APIServer pid=53) INFO 08-04 02:46:09 [metrics.py:125] SpecDecoding metrics: Mean acceptance length: 5.90, Current speculative depth: 5, Accepted throughput: 298.18 tokens/s, Drafted throughput: 303.98 tokens/s, Accepted: 2982 tokens, Drafted: 3040 tokens, Per-position acceptance rate: 1.000, 0.998, 0.993, 0.972, 0.941, Avg Draft acceptance rate: 98.1%
  

prompt によって acceptance は41.9%まで下がりました。

  Aug 04 02:47:59 compute-server grandpa[572062]: (APIServer pid=53) INFO 08-04 02:47:59 [loggers.py:314] Engine 000: Avg prompt throughput: 0.0 tokens/s, Avg generation throughput: 193.9 tokens/s, Running: 1 reqs, Waiting: 0 reqs, GPU KV cache usage: 3.3%, Prefix cache hit rate: 95.2%, External prefix cache hit rate: 9.3%
Aug 04 02:47:59 compute-server grandpa[572062]: (APIServer pid=53) INFO 08-04 02:47:59 [metrics.py:125] SpecDecoding metrics: Mean acceptance length: 3.09, Current speculative depth: 5, Accepted throughput: 131.19 tokens/s, Drafted throughput: 313.47 tokens/s, Accepted: 1312 tokens, Drafted: 3135 tokens, Per-position acceptance rate: 0.789, 0.542, 0.362, 0.247, 0.152, Avg Draft acceptance rate: 41.9%
  

Peakの359 tok/sから速度は acceptance によって変わります。今回の中心値は single-active-request median の約231 tok/sです。

Prompt throughput 5,790.1 tok/sは mixed long-context workload の window peak です。固定長の独立した prefill benchmark ではありません。

  Aug 04 02:49:39 compute-server grandpa[572062]: (APIServer pid=53) INFO 08-04 02:49:39 [loggers.py:314] Engine 000: Avg prompt throughput: 2649.6 tokens/s, Avg generation throughput: 107.1 tokens/s, Running: 1 reqs, Waiting: 0 reqs, GPU KV cache usage: 79.4%, Prefix cache hit rate: 95.9%, External prefix cache hit rate: 3.7%
Aug 04 02:49:49 compute-server grandpa[572062]: (APIServer pid=53) INFO 08-04 02:49:49 [loggers.py:314] Engine 000: Avg prompt throughput: 5790.1 tokens/s, Avg generation throughput: 115.7 tokens/s, Running: 1 reqs, Waiting: 0 reqs, GPU KV cache usage: 4.2%, Prefix cache hit rate: 95.9%, External prefix cache hit rate: 3.7%
  

GPU KV usage は最大79.4%でした。285,336 slotsの単純換算で約226Kですが、複数request、shared prefix、block allocation を含むため、単一prompt長ではありません。

Prefix cache

Prefix cache hit rate は最大97.4%、external prefix cache は最大11.4%でした。

  Aug 04 02:49:29 compute-server grandpa[572062]: (APIServer pid=53) INFO 08-04 02:49:29 [loggers.py:314] Engine 000: Avg prompt throughput: 293.2 tokens/s, Avg generation throughput: 136.6 tokens/s, Running: 0 reqs, Waiting: 0 reqs, GPU KV cache usage: 0.0%, Prefix cache hit rate: 97.4%, External prefix cache hit rate: 6.7%
Aug 04 02:50:39 compute-server grandpa[572062]: (APIServer pid=53) INFO 08-04 02:50:39 [loggers.py:314] Engine 000: Avg prompt throughput: 250.6 tokens/s, Avg generation throughput: 166.5 tokens/s, Running: 1 reqs, Waiting: 0 reqs, GPU KV cache usage: 2.1%, Prefix cache hit rate: 95.5%, External prefix cache hit rate: 11.4%
  

External prefix cache と native CPU KV offload は別の機能です。Gilded Gnosis r24 の runbook は native offload を qualified host-cache path、DS4の LMCache を experimental としています。

Coding-agent workload

リクエストは自作 agent-loop の Familiar を通しました。tool-call correction と telemetry を適用しており、vLLMへの直接送信ではありません。

代表requestは44 messages、10 tools、41,230 prompt tokens、800 completion tokensでした。

  {"time":"2026-08-04T11:49:58.642929+09:00","level":"INFO","msg":"backend POST","url":"http://compute.home.arpa:8000/v1/chat/completions","model":"grandpa","stream":true,"req_stream_arg":true,"payload_bytes":180640,"total_content_chars":136124,"n_messages":44,"tools":10,"max_tokens":32768,"max_completion_tokens":32768,"reasoning_format":null,"reasoning_effort":null,"temperature":0.7}
{"time":"2026-08-04T11:50:02.952783+09:00","level":"INFO","msg":"http request","method":"POST","path":"/v1/chat/completions","status":200,"duration":4317612500,"model":"familiar","message_count":44,"prompt_tokens":41230,"completion_tokens":800}
  

記録した access log には HTTP 200 が101件あり、同じ範囲の non-200、CUDA OOM、fatal CUDA error、traceback は0件でした。

  Aug 04 02:50:28 compute-server grandpa[572062]: (APIServer pid=53) INFO:     10.10.10.2:52922 - "POST /v1/chat/completions HTTP/1.1" 200 OK
Aug 04 02:50:30 compute-server grandpa[572062]: (APIServer pid=53) INFO:     10.10.10.2:52922 - "POST /v1/chat/completions HTTP/1.1" 200 OK
Aug 04 02:50:34 compute-server grandpa[572062]: (APIServer pid=53) INFO:     10.10.10.2:52922 - "POST /v1/chat/completions HTTP/1.1" 200 OK
Aug 04 02:50:36 compute-server grandpa[572062]: (APIServer pid=53) INFO:     10.10.10.2:52922 - "POST /v1/chat/completions HTTP/1.1" 200 OK
Aug 04 02:50:38 compute-server grandpa[572062]: (APIServer pid=53) INFO:     10.10.10.2:52922 - "POST /v1/chat/completions HTTP/1.1" 200 OK
  

業務システム開発の例として、Django の restaurant reservation system を生成しました。25 domain models、9 public service methods、12 API endpoints、Django Admin、seed dataを含み、52 testsがすべて通りました。

  uv run --frozen --offline python manage.py test --verbosity 2
  
  Ran 52 tests in 0.419s
OK
  

Seed data 投入後、Django Admin で Lakeside Bistro の Private Event、Maintenance、Holiday の3件の exceptional closure を確認しました。

DeepSeek V4 Flash 0731で生成したrestaurant reservation systemのseed dataを表示するDjango Admin画面
生成物へseed dataを投入したDjango Admin。Lakeside Bistroのexceptional closureとしてPrivate Event、Maintenance、Holidayの3件が登録されている。

別途レビューでは、timezone-aware availability calculation、waitlist / hold の expiry enforcement、invalid foreign key handling に問題が残りました。生成物は scaffold より大きいものの、まだ prototype です。

注意点

256K capacityと256K correctnessは別

確認できたのは、262,144 context 設定で起動し、285,336 GPU KV tokens を確保し、mixed long-context workload が安定して完走したことです。

CPU offload APIはexperimental

起動ログでは CPUOffloadingSpec API は experimental です。r24 の runtime test は通っていますが、API contract は今後変わる可能性があります。

  Aug 04 02:44:21 compute-server grandpa[572062]: (Worker_TP0 pid=264) WARNING 08-04 02:44:21 [base.py:493] Initializing OffloadingSpec. This API is experimental and subject to change in the future as we iterate the design.
  

First-run JIT

初回は SparkInfer、TileLang、CUDA graph artifact を compile します。engine initialization は47.53秒、そのうち compilation は12.64秒でした。JIT cache volume を再利用すると、この処理を省けます。

Tool Call

Familiar は tool-call recovery と Vector への telemetry 送出を行います。エディタでの使用では大きく変わらないと考えていますが、direct vLLM の tool calling と同じ結果かは未確認です。

Throughput と DSpark の数値は vLLM server-side metrics log から取得しています。

次に調整する構成

terminal での出力は良いと感じました。長く使っていた stepfun から、ds4 で再調整する予定です。

次は、agent-loop で1 x 256K、2 x 128K、4 x 64Kの総tokenを管理する案を考えています。GPUの active working set を約256Kに保ち、host RAM は再利用可能な prefix KV の保存に使います。

References