问题 / #2825

#2825 Report: Qwen3.8-Flash-Next IQ3_S works on dual V100-SXM2-16GB (sm_70) with driver 550 / CUDA 12.6 (0.1.44.1)

open · @atollerus-tm · 0 评论 · 去 GitHub 看

BenchmarksSetup & installServer & APIMulti-GPUNVIDIA / CUDAModels & quantsDocumentation

说明

This is a separate report from #971 (that one covers L40S vGPU on driver 550). Here: **dual Volta (sm_70)**, which I don't think has been reported working with 0.1.44.1 yet.

### Hardware

| | |
|---|---|
| GPU | 2× Tesla V100-SXM2-16GB (sm_70, 16 GB each, bare metal) |
| Driver | 550.144.03 (exposes CUDA 12.4, intentionally not upgraded) |
| CUDA toolkit | 12.6 (installed alongside 12.1, only the toolkit — driver untouched) |
| CPU | 2× Intel Xeon E5-2640 v4 (2 sockets, 24 threads total) |
| RAM | 64 GB |
| OS | Ubuntu 22.04 |
| Strata | upstream 0.1.44.1 |
| Model | Qwen3.8-Flash-Next IQ3_S (GSQ-RCO, 78 GB, 2 shards) |
| MTP | fetched from original Qwen checkpoint (~5 GB) |

### Setup command

```bash
STRATA_EXPERIMENTAL_SM60=1 \
./setup.sh --setup --family qwen --model IQ3_S --gpus 0,1 \
  --port 8085 --api-key test-v100 \
  --gguf-dir <repo>/IQ3_S \
  --cuda 12 --vision gpu --build --no-start --yes
### Ref

#971 — driver 550 / CUDA 12 on L40S vGPU. Same `--cuda 12` mechanism, different hardware.
Notes:

STRATA_EXPERIMENTAL_SM60=1 is required for sm_70 (engine built with -DSTRATA_EXPERIMENTAL_SM60=ON).

System cmake is 3.22.1, CMakeLists requires ≥ 3.24. Used the venv's cmake 4.4.3 via PATH=<repo>/.venv/bin:$PATH.

--cuda 12 picked /usr/local/cuda-12.6/bin/nvcc (the 12.6 toolkit, not the driver's 12.4 ceiling) and lowered the driver floor to 525, as documented.

Results
Layer split across GPUs [0, 1] works; both V100 busy, one strata process per card.

VRAM (text only): ~15.5–15.8 GB used on each V100.

VRAM (with --vision gpu):

GPU 0: 1428 MiB (strata-vision) + 14128 MiB (strata) = 15556 MiB

GPU 1: 306 MiB (strata-vision) + 15376 MiB (strata) = 15682 MiB

RAM: ~46.8 GiB experts loaded.

Expert cache: 94–98% hit rate on long agent runs.

Decode: 50–71 tok/s (text), 75–80 tok/s on 1700-token generations with vision.

Prompt eval: 69–86 tok/s on short prompts; ~3 s for a 10K-token prompt (~3300 tok/s prefill).

MTP: acceptance rate 69–71%.

KV int8, context 65536.

Calibration results (./setup.sh --calibrate)
Median of 3 rounds for each value:

PCIe share (--pcie-frac):

Value	tok/s
0	70.5
0.2	70.6 (best)
0.32	69.2
0.55	67.4
1.0	56.3
Draft floor (--spec-min-p):

Value	tok/s
0.3	67.5
0.5	69.7
0.7	71.2 (best)
CPU workers:

Workers	tok/s
3	60.2
5	63.3
6	64.4
7	62.0
11	67.7 (best of tested)
Expert tier (adaptive):

default: 66.8

every 1, 80 swaps, decay 0.97: 73.9 (best)

every 1, 160 swaps, decay 0.97: 72.0

Final: 73.9 tok/s (vs 70.5 before calibration).

Real workload (agent use)
After calibration, ran an agent with tool calling (ask_user, search_web, write_note, update_memory) over the OpenAI API. Context grew from ~10K to ~17K tokens.

Tokens generated	tok/s
2526	68.6
2841	64.7
3656	74.3
1721	66.6
Average ~69 tok/s. Expert cache hit rate 94–98%.

Tool calling, streaming, multi-step agent loops all work on 2× V100-SXM2-16GB.

Vision
After adding --vision gpu, the encoder (strata-vision) loads on both cards (see VRAM numbers above). A screenshot of a Russian-localized Total Commander was correctly described. Decode with vision: 75–80 tok/s on ~1700-token generations.

Pitfalls worth knowing for other Volta users
Fork Hardin22/Strata-DualGPU (Strata 0.1.38) does NOT build on CUDA 12. Its src/core/mtp.cpp uses CUDA 13 API signatures (cudaGraphAddNode with edge data, cudaStreamGetCaptureInfo with 7 args). Error is cannot convert cudaGraphEdgeData** to size_t*. This is an API mismatch, not "Volta unsupported".

In 0.1.38 MIN_DRIVER = 580 blocked startup even with STRATA_EXPERIMENTAL_SM60=1 — there is no --cuda flag and no conditional floor. Upstream 0.1.39+ fixed this with --cuda 12. Confirms what's written here.

Installing CUDA 12.6 via apt flips the update-alternatives cuda symlink to 12.6. If another service (e.g. llama.cpp) relies on /usr/local/cuda → 12.1, restore it: update-alternatives --set cuda /usr/local/cuda-12.1. Otherwise a restart of that service may load the wrong runtime.

--pool-workers 5 tip from setup is not universal. On this machine (2× Xeon E5-2640 v4, equal cores per socket), 5 workers is worse than 11 or even 6:

3 → 60.2

5 → 63.3

6 → 64.4

7 → 62.0

11 → 67.7

Calibration picked 11 as the best of the tested set. Worth mentioning in docs/OLDER_GPUS.md that the "fewer workers on dual-socket" tip is hardware-specific and can hurt on equal-core systems.

Prompt > context is rejected, not truncated. With --max-context 65536, a 77 187-token prompt returns 400: request exceeds the context window: ... requests are never truncated. That is by design, but worth documenting for users with long histories — they either trim the client-side history or rebuild with a larger context.

Thanks
--cuda 12 works out of the box on Volta with 0.1.44.1, including vision and agent tool calls. Great work on the older-GPU path.

Ref
#971 — driver 550 / CUDA 12 on L40S vGPU. Same --cuda 12 mechanism, different hardware.

本站相关内容

相关页面的快捷入口。