# Qwen3.8 Flash Next NVFP4 on DGX Spark 在单台 NVIDIA DGX Spark(GB10 / ARM64 / 128 GB 统一内存)上部署 `nvidia/Qwen3.8-Flash-Next-NVFP4` 的可复现配置。 当前基线:131072 tokens 总上下文上限(输入 + 输出)、MTP 2 tokens、OpenAI 兼容 API。 由 2026-09-17 至 18 日的实测选定;262K 已因主机 OOM 从默认配置撤下。 优化版启用经验证的前缀缓存,保持 eager 执行;32K 重复前缀首个 token 约从 14.05 秒降至 1.34 秒。 这里的首个 token 包括思考内容,完整回答不会因此保证快 10 倍。详见 [优化报告](docs/optimization-results.md)。 PLE 查找表通过磁盘映射按需读取;原始模型权重未重新量化。 > 这是针对固定 nightly 的社区适配,非 NVIDIA/vLLM 官方支持方案。 > 已验证短问答、工具调用及有限的 128K 单请求检索;接近 260K 已触发主机 OOM。仅适用于此模型、单 GPU / ETP=1。 ## 快速开始 需要 Linux ARM64、GB10、Docker Compose(支持 `gpus: all`)、NVIDIA Container Toolkit, 以及至少约 150 GiB 的模型下载空间,另留 Docker 镜像和缓存空间。 实测驱动为 580.173.02。首次启动约需 10–13 分钟。 ```bash cp .env.example .env # 编辑 .env:模型缓存目录、现有 API Key 文件、代理和端口 # API_KEY_FILE 指向非空的纯文本密钥文件,不把密钥写入 .env。 ./scripts/download.sh ./scripts/build.sh ./scripts/start.sh ./scripts/wait.sh ./scripts/test.sh ``` 已有 Hugging Face 缓存时,`HF_CACHE_DIR` 应指向包含 `hub/` 的目录。 下载脚本固定模型 revision,支持断点续传;服务离线读取该快照。 已有本项目所固定的基础镜像时,可在 `.env` 设置 `BASE_IMAGE=local/vllm-base:0bfc7a15`。 请先核实本地 tag 对应 [版本清单](docs/provenance.md) 中的 digest,不能用任意 nightly 替代。 API 地址:`http://:8000/v1`;模型名:`qwen3.8-flash-next`。 使用 `Authorization: Bearer <已有密钥>`。代理仅供模型下载/容器出网使用。 ## 当前配置 | 参数 | 设置 | |---|---| | 上下文上限 | 131072 tokens,输入与输出合计 | | MTP | 2 speculative tokens | | 同时调度请求数 | 4 | | 批处理 token 上限 | 2048 | | GPU 内存比例 | 0.80 | | KV 精度 | auto(本配置为 BF16) | | 执行 | eager,未启用 CUDA Graph | | Prefix caching | 开启,含 Mamba 块对齐修正 | | API | 8000,启用密钥、reasoning parser、工具调用 | | 自动重启 | unless-stopped | 0.80 留出的内存供系统和 PLE 文件缓存使用,并非浪费。 增加 KV 分配会挤占页缓存,不一定提高响应速度,见 [内存说明](docs/architecture.md)。 `mem_limit: 112g` 沿用实测配置;统一内存/CUDA 占用不能只用 Docker stats 判断,需结合主机内存。 ## 运维与回退 ```bash docker compose logs -f vllm docker compose ps docker compose stop vllm # 切换为已验证的 32K、不启用 MTP 的基础配置(会重建服务) ./scripts/start.sh baseline ./scripts/wait.sh ./scripts/test.sh # 保持 128K + MTP,只关闭前缀缓存 ./scripts/start.sh no-prefix # 恢复默认 128K + MTP + 前缀缓存 ./scripts/start.sh ``` 首次迁移到本项目时,先停止旧部署中占用同一端口/模型内存的服务;不要并行启动两份。 项目脚本不会自动停止 MinerU 或其他业务容器。原部署的容器与回退配置可以保留。 `tests/test_disk_adapter.py` 验证 FP8 字节、边界/重复索引、缩放、原始哈希和 torch.compile。 可用 `scripts/test-adapter.sh` 单独执行,需要真实 CUDA GPU 和额外内存。 该测试通过不代表完整模型的 CUDA Graph 已验证。 ## 长上下文实测边界 64K、128K 的单请求合成检索在 eager 和 CUDA Graph 下均通过;接近 260K 时两组均发生主机 OOM, 即使 eager 返回正确答案也不能视为稳定通过。默认已限制为 131072;这仍不是多路满长并发或长期稳定性的保证。 详见 [长上下文测试报告](docs/context262k-results.md),其中包含资源证据、受影响服务和恢复记录。 ## 文件说明 - `Dockerfile`:固定基础镜像,安装 PLE 适配、两项 GB10 FLA 修改及 Mamba 缓存块对齐修正。 - `patches/`:针对当前 nightly 的适配层。 - `vendor/`:保持原样的社区 mmap 代码及许可证。 - `configs/baseline-32k.yaml`:基础配置的 Compose override。 - `docs/optimization-results.md`:基准比较、缓存正确性与未采用的图执行实验。 - `docs/cuda-graph-retest.md`:2048 输出预算下的图执行复测、失败样本及验证边界。 - `experiments/graph/`:通过有限复测但未采用为默认的图执行实现与复现说明。 - `docs/validation.md`:实测结果和未验证边界。 - `docs/troubleshooting.md`:故障依据、上游修复与排查步骤。 - `docs/provenance.md`:模型/镜像/第三方源码的固定版本和校验值。 `.env`、密钥、权重、日志、运行缓存均不提交。仓库不包含模型权重;模型使用条件以 [NVIDIA 模型页](https://huggingface.co/nvidia/Qwen3.8-Flash-Next-NVFP4) 为准。 第三方代码按其原许可证使用,见 [第三方声明](THIRD_PARTY_NOTICES.md)。 ## 复测优化 ```bash ./scripts/benchmark.sh current > benchmark.jsonl python3 scripts/summarize-benchmark.py benchmark.jsonl ./scripts/test-prefix.sh ``` 测试只使用合成输入。方法、首字时间口径与小样本限制见 docs/benchmark-method.md。 ## CUDA Graph 性能剖析 Nsight 已确认图重放生效,短回答约提升 4.5%;长输入预填充未被当前小尺寸图覆盖, GPU 活动本已接近连续。详见 [性能剖析报告](docs/cuda-graph-profile.md),包括 PLE 等待/查表区分及原始证据摘要。 ## 运维与证据入口 [当前基线与文档索引](docs/README.md) · [Spark 目录、归档与更新流程](docs/operations.md)。 历史报告保留测试当时的 262K 参数;它们不覆盖当前默认配置。