Community Report: Q4_XS on Multi-GPU NVIDIA
Maintainer thường phản hồi trong vòng 1 ngày
Chưa có ai nhận issue này.
Đánh giá
- Độ khó
- 1/5
- Thời gian dự kiến
- Dưới một giờ
- Mức phù hợp với người mới
- 68/100
- Loại issue
- Tài liệu
- Độ rõ ràng
- Đặc tả rõ ràng
- Mức độ hoạt động
- Sôi nổi
- Công nghệ
- cpp
- Lĩnh vực
- backend, performance
Hướng nghiên cứu
Đây là báo cáo hiệu năng chi tiết cho Strata 0.1.43 tại commit 7695859a. Hãy bắt đầu bằng cách kiểm tra tài liệu benchmark của dự án và tools/strata_bench.py --long, được sử dụng trong báo cáo. So sánh các kết quả xử lý prompt được báo cáo với UD-IQ4_XS và IQ3_XXS trên cùng cấu hình bốn GPU, đồng thời ghi lại các phát hiện nếu dự án theo dõi báo cáo phần cứng. Issue có các kết quả benchmark nhưng không yêu cầu thay đổi mã cụ thể.
Do mô hình lập chỉ mục viết ra từ nội dung của issue.
Mô tả
Field report: UD-IQ4_XS on NVIDIA (first NVIDIA run, I think) — 4x RTX (5060 Ti + 2x 3090 + 3060), 262K context, mapped mode, 55 GiB RAM budget
Headline: it runs, it is stable, decode is fine (91-96 tok/s), and prompt processing is 2.4-2.9x slower than the same
rig's IQ3_XXS arm (520 / 926 / 1,270 tok/s at 4K / 16K / 32K vs 1,296 / 2,690 / 3,228). For an agent client that
resends a 90-130k-token conversation every turn, that is the whole decision and we are keeping IQ3_XXS. Two full
tools/strata_bench.py --long runs, 3 runs per test, medians below; run 1 and run 2 agree within 0.3% on every prompt
arm. No correctness suite was run.
Hardware and software
- GPUs: RTX 5060 Ti 16 GB + RTX 3090 24 GB + RTX 3090 24 GB + RTX 3060 12 GB = 76 GiB VRAM, all four selected
- PCIe: the 5060 Ti probes 13.9 GB/s (x8); both 3090s and the 3060 probe 3.1 GB/s (an Oculink/x4 riser and a
x4-shaped slot). The engine prices an expert miss at x6.35 on three of the four cards. - Power: both 3090s capped at 225 W, the 3060 at 125 W (the cap binds during generation).
- CPU / RAM / disk: Xeon W-1350 @ 3.30 GHz (6C/12T), 123.3 GiB RAM, NVMe.
- Linux, driver 595.91.07, CUDA 13.2. Strata project 0.1.43, commit
7695859a, engine 0.1.43. - Model:
unsloth/Qwen3.8-Flash-Next-GGUFUD-IQ4_XS, revision38bb39e, three shards 93.7 GB, all three SHA-256
match the table indocs/UNSLOTH_Q4.md.
Configuration
strata --serve --pack packs/ud-iq4_xs
--native .../Qwen3.8-Flash-Next-UD-IQ4_XS-00001-of-00003.gguf
--resident-budget-gib 55 --expert-profile data/expert-profile.bin --expert-cache auto
--prefill auto --spec 4 --mtp mtp/rt --max-context 262144 --kv q4_0 --vision
--vram-reserve-mib 700 --spec-min-p 0.5 --layer-split auto
STRATA_PF_FUSED=1, one parallel slot, thinking off, temperature 0, loading not timed. No --ple-gguf: shard 1 holds
0 tensors and shard 2 holds per_layer_token_embd.weight (IQ4_NL, [160, 320001536]), which the engine found by name,
as documented. Vision encoder on the 5060 Ti; no image was sent (the doc says images are untested on this pack).
Pack built with tools/iq_pack.py --compat-bf16: 1,079 tensors, 303 served natively, arena 1.38 GiB, 460
conversions (264 exact, 196 rounded, max |err| 0.0144), native_experts.txt v4 with the per-role
gate,up,down shard column on 14 rows, expert arena 59,519,795,200 bytes (55.4 GiB). tools/test_iq_pack.py
24/24 OK. The --compat-bf16 rounding is on, so the 6-9% PPL penalty the doc notes on Strix Halo applies to this arm too.
What the engine chose (this is where the story is)
| this pack | our IQ3_XXS arm, same four cards | |
|---|---|---|
| split chosen by auto | K=3,11,30 (5060 Ti takes layers 3-10, 3,715 slots) | K=3,6,30 (5060 Ti takes 3 layers) |
| measured decode — chat / agent tok/s | 90.9 / 96.1 (11.0 / 10.4 ms per token) | 111.3 / 109.8 (9.0 / 9.1 ms) |
| expert pairs cached | 20,132 of 24,576 (~99.2% of the routed mass) | 24,387 of 24,576 |
| experts resident | 81% | 98% |
| RAM tier | 24.23 GiB page-locked + mapped in 16 s; 18,388 experts left on the mmap fallback | none (plain mode) |
| prompt chunk | 7,424 tokens, 96-slot ring, 5,566 cache slots borrowed | 4,096 tokens |
| decode cache hit | 98.0-99.8%, 0 blob reads from the file | 99.9-100.0% |
So decode was in good shape: 81% resident, ~99% hit rate, nothing read from the SSD while generating. The prompt path
is the one that suffers, and it is not a chunk clamp (this arm got a bigger chunk than IQ3_XXS). Reading a prompt
streams every expert once per chunk, and 19% of them are not in VRAM on three cards whose links probe 3.1 GB/s.
Results — run 2 (medians, range over 3 runs; 9 requests for the chat arm)
| test | prompt tokens | reused | generated | prompt tok/s | decode tok/s | TTFT (s) |
|---|---|---|---|---|---|---|
| short chat | 46 (43-51) | 0 | 100 | — | 90.9 (84.4-121.3) | 0.30 (0.28-0.34) |
| 4K prompt, fresh | 4,019 | 0 | 24 cap | 519.8 (519.7-519.8) | — | 7.75 |
| 16K prompt, fresh | 16,058 | 0 | 24 cap | 925.5 (925.3-925.7) | — | 17.38 |
| 32K prompt, fresh | 32,049 | 0 | 24 cap | 1,269.5 (1,268.9-1,269.9) | — | 25.28 |
| agent session, follow-up turns | 14,494 at the last turn | see below | ≤ 64 | see below | 96.1 (77.0-115.5) | 6.88 (5.52-7.32) |
Agent cache hit 68.8% (68.8-68.9), earlier-turn tokens re-read per session 2 (2-4), first turn (nothing cached)
TTFT 3.27 s. Suite total 292 s.
Run 1 vs run 2
| metric | run 1 | run 2 |
|---|---|---|
| 4K prompt tok/s | 518.1 | 519.8 |
| 16K prompt tok/s | 923.9 | 925.5 |
| 32K prompt tok/s | 1,268.3 | 1,269.5 |
| chat decode tok/s | 87.3 (61.8-129.6) | 90.9 (84.4-121.3) |
| chat first token (s) | 0.35 | 0.30 |
| agent decode tok/s | 88.1 | 96.1 |
| agent turn TTFT (s) | 6.88 | 6.88 |
Prefill is reproducible to 0.3%. Decode wanders ±8% run to run, same as our other arms on this box.
Head to head with the same rig's IQ3_XXS arm (same suite, same day, both at layer_split auto's own optimum)
| IQ3_XXS (plain) | UD-IQ4_XS (mapped, 55 GiB) | delta | |
|---|---|---|---|
| 4K prompt tok/s | 1,295.9 | 519.8 | -60% |
| 16K prompt tok/s | 2,689.9 | 925.5 | -66% |
| 32K prompt tok/s | 3,227.8 | 1,269.5 | -61% |
| chat decode tok/s | 111.3 | 90.9 | -18% |
| agent decode tok/s | 109.8 | 96.1 | -12% |
| TTFT at 32K | 9.96 s | 25.28 s | +154% |
| agent turn TTFT | 2.61 s | 6.88 s | +164% |
| chat TTFT | 0.30 s | 0.30 s | 0 |
A 100k-token agent turn with a 1k-token answer goes from ~40 s to ~80 s. The +39% of expert bytes
(42.9 → 55.4 GiB) does not fit in 76 GiB of VRAM next to a 262K q4_0 KV cache, and on this box a miss costs 6.4x
what the engine's default pcie_frac assumes.
Not measured
Correctness (speed suite only; needle probes not run on this pack), prompts past 32K, --clients concurrency (one
slot), images, sampled decoding, and any comparison against llama.cpp on the same file. --compat-bf16 rounding is on,
so quality is the pack's, not the GGUF's. Storage model and CPU temperature not recorded.
- Ngôn ngữ chính
- C++
- Star
- 11.6k
- Fork
- 1k
- Chỉ số merge pull request
- Không có pull request nào được merge trong 30 ngày
Chuẩn bị môi trường
Dự án này không cung cấp dev container, Dockerfile hay hướng dẫn đóng góp, nên bạn cần tự thiết lập môi trường: hãy bắt đầu từ README và xem hướng dẫn đóng góp lần đầu của chúng tôi để biết các bước chung.
Bắt đầu từ đâu
- Đọc hết issue, rồi đọc hướng dẫn đóng góp của dự án.
- Bình luận trên issue rằng bạn sẽ nhận — tránh hai người làm cùng một việc.
- Fork repository và làm thay đổi trên một nhánh.
- Mở pull request có tham chiếu số hiệu của issue.
Issue khác của Niko1221/Strata
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 78/100
Maintainer thường phản hồi trong vòng 1 ngày
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 62/100
Maintainer thường phản hồi trong vòng 1 ngày
-
BENCH.bat crashes on Japanese-locale Windows: UnicodeDecodeError (cp932) reading CMakeLists.txtĐang mở
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 80/100
Maintainer thường phản hồi trong vòng 1 ngày
-
IPv6 not supportedĐang mở
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 62/100
Niko1221/Strata#2592 · 1 bình luận ·
Maintainer thường phản hồi trong vòng 1 ngày
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 70/100
Maintainer thường phản hồi trong vòng 1 ngày
Tất cả issue của Niko1221/Strata
Issue tương tự
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 66/100
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 62/100
NVIDIA-RTX/NRI#277 ·
Maintainer thường phản hồi trong vòng 1 ngày
-
os:Linux
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 72/100
Maintainer thường phản hồi trong vòng 1 ngày
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 76/100
-
acceptable_buffer_backends: unknown backend names are silently ignoredCó thể đã có người làm @mini-1235 đã nhận hôm nay. Đang mở
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 70/100
ros2/rmw_fastrtps#945 ·
Maintainer thường phản hồi trong vòng 1 ngày