Views
No views yet
Runtime: available. A complete, self-contained vLLM runtime for 2× DGX Spark (GB10,sm_121) is published and validated — see Runtime. GitHub: https://github.com/jjang-ai/dots3-note-gb10-vllm · Image:ghcr.io/jjang-ai/dots3-note-gb10-vllm:sm121-cu130.
dots-studio/dots3-note-prev,
targeted at NVIDIA Blackwell (RTX 50, GB10 / DGX Spark) via vLLM's native
modelopt_fp4 path.hf_quant_config.json: quant_algo=NVFP4, 10 exclude patterns (attention / shared / dense-0 / MTP / vision / audio / lm_head).| Property | Value |
|---|---|
| Base | dots-studio/dots3-note-prev (Apache-2.0) |
| Total / active params | 280B / 16B |
| Experts | 256 routed + 1 shared, top-8 |
| Attention | 13 DSA (top-2048) + 33 SWA |
| MTP / DSpark | 1 shared NEXTN head, 1.13B (layer 46) — kept BF16 |
| Vision / Audio | MoE-ViT 7B (1.2B act) / dense 800M — kept BF16 |
| Context | up to 512K (DSA-native fp8_ds_mla paged KV) |
| Expert precision | NVFP4 (E2M1, g16) |
| Input / Output | text · image · video · audio / text |
1from openai import OpenAI
2client = OpenAI(base_url="http://127.0.0.1:8001/v1", api_key="EMPTY")
3
4resp = client.chat.completions.create(
5 model="dots3-note",
6 messages=[{"role": "user", "content": "Refactor this module and add tests."}],
7 temperature=1.0, # upstream-recommended sampling
8 top_p=0.95,
9 max_tokens=8192, # give agentic/coding turns room
10 extra_body={
11 # Reasoning control (dots3 is a boolean thinking toggle, not tiered effort):
12 # enable_thinking=True → deliberate multi-step reasoning (hard reasoning / agent planning)
13 # enable_thinking=False → direct answer (low latency, simple tools)
14 "chat_template_kwargs": {"enable_thinking": True},
15 },
16)| Setting | Recommended | Notes |
|---|---|---|
temperature | 1.0 | upstream default; lower (0.2–0.6) for deterministic code edits |
top_p | 0.95 | |
enable_thinking | True for agents/hard reasoning, False for simple/latency-sensitive | dots3 has no separate low/med/high tiers — this boolean is the reasoning switch |
max_tokens | ≥4096 (8192 for coding) | thinking + tool loops need headroom |
| repetition penalty | none | not recommended for this model |
--enable-auto-tool-choice --tool-call-parser dots; the chat template emits/parses <tool_call> blocks. Pass your tools=[...] schema as usual — no custom system prompt needed.1messages = [{"role": "user", "content": [
2 {"type": "video_url", "video_url": {"url": "https://.../clip.mp4"}},
3 {"type": "text", "text": "Describe the performance and what can be heard."},
4]}]preprocessor_config.json for vision/video/audio is included.sm_121, CUDA 13, aarch64) over TP2:ghcr.io/jjang-ai/dots3-note-gb10-vllm:sm121-cu130torch.topk on sm_121 (the fused kernel needs ≥128 KB shared memory; GB10 exposes ~99 KB,
so it crashes for any large max_model_len). Mirrors upstream vLLM PR #49897.FULL_AND_PIECEWISE) for ~1.8–2× decode; NCCL 2.30.4 preload to fix a dual-Spark
deadlock; --skip-mm-profiling so multimodal and a large KV pool coexist.docs/GB10_FIXES.md.| Metric | Value |
|---|---|
| Decode (MTP + CUDA graphs) | ~24–25 tok/s (vs ~14 eager) |
| Prefill | >1000 tok/s past ~330k ctx (prefix reuse); decode ~flat in context length |
| Max coherent context | 428,671 tokens — single conversation, 0 errors (KV-pool bound) |
| Multimodal | image · video · audio all verified |
| Reasoning | default on; enable_thinking toggle per request |
1docker pull ghcr.io/jjang-ai/dots3-note-gb10-vllm:sm121-cu130
2# worker on spark2 FIRST, then head on spark1 (host networking; set your node IPs + RoCE iface)
3IMAGE=ghcr.io/jjang-ai/dots3-note-gb10-vllm:sm121-cu130 MODEL_DIR=/path/to/dots3-note-prev-NVFP4 \
4 HEAD_IP=10.99.0.1 WORKER_IP=10.99.0.2 bash docker/run_worker.sh # spark2
5IMAGE=ghcr.io/jjang-ai/dots3-note-gb10-vllm:sm121-cu130 MODEL_DIR=/path/to/dots3-note-prev-NVFP4 \
6 HEAD_IP=10.99.0.1 WORKER_IP=10.99.0.2 bash docker/run_head.sh # spark1patches/apply.sh, no image needed) are documented in the GitHub repo.dots-studio/dots3-note-prev.dots3-note-prev.