84 lines
4.8 KiB
Markdown
84 lines
4.8 KiB
Markdown
# Qwen3.8 Flash-Next on RTX 6000D
|
||
|
||
2026-09-18 已完成部署和验收。保留文字、图片、视频能力;采用 NVIDIA NVFP4 权重、原生 FP8 PLE 主机内存卸载、FP8 KV、128K 上下文及 FULL CUDA Graph。单个活动请求,**MTP 2 已通过扩展配对验证并启用**,GPU 预算为 0.985。
|
||
|
||
社区代码经过审计后仅作为参考,没有执行社区启动脚本或使用社区镜像。审计范围和取舍见 [源码审计](audit/source-review.md),实测数据见 [验收结果](audit/results.md)。
|
||
|
||
## 仓库导航
|
||
|
||
- [参数筛选结果](docs/mtp-tuning.md):已比较 MTP 1/2/3 和 prefill batch 1024,继续保留 MTP 2+2048。
|
||
|
||
- `compose.yaml`、`Dockerfile`:已验收部署配置与固定镜像。
|
||
- `patches/`:最小补丁、精确源码保护及许可证。
|
||
- [MTP 完整验证](docs/mtp-qualification.md):长解码提升约 58%–67%,98 个负载请求及两组各 7 个质量任务通过;包含缓存延迟取舍。
|
||
- [MTP 初测记录](docs/mtp-test.md):历史短测试和当时的暂缓决定,已由完整验证更新。
|
||
- [部署心得](docs/lessons.md):取舍、踩坑、优化方向及升级方法。
|
||
- `scripts/`:功能、上下文、速度和资源验证工具。
|
||
- `audit/runtime/`:2026-09-18 历史原始回执,不代表实时状态。
|
||
|
||
本仓库不保存 SSH 密码、API key、私有代理配置、模型权重或运行缓存。
|
||
|
||
## 调用
|
||
|
||
- OpenAI 兼容 Base URL:`http://172.16.104.92:8000/v1`
|
||
- 模型名:`qwen3.8-flash-next`
|
||
- API key:服务器 `/data/flash-next/project/secrets/api-key`,不纳入项目。
|
||
- 健康接口:`/health`;业务接口需要 Bearer API key。
|
||
- 131072 token 是输入、思考和最终输出的总预算。图片和视频也消耗上下文和计算资源。
|
||
|
||
在服务器执行以下示例,不会将密钥写进脚本:
|
||
|
||
```bash
|
||
cd /data/flash-next/project
|
||
python3 - <<'PY'
|
||
import json, urllib.request
|
||
from pathlib import Path
|
||
body = {'model': 'qwen3.8-flash-next', 'messages': [{'role': 'user', 'content': '你好,请介绍一下自己。'}], 'max_tokens': 1024, 'reasoning_effort': 'medium'}
|
||
req = urllib.request.Request('http://127.0.0.1:8000/v1/chat/completions', data=json.dumps(body).encode(), headers={'Content-Type': 'application/json', 'Authorization': 'Bearer '+Path('secrets/api-key').read_text().strip()})
|
||
print(json.load(urllib.request.urlopen(req, timeout=180)))
|
||
PY
|
||
```
|
||
|
||
图片和视频请求示例见 `scripts/multimodal.py`,使用 `image_url` 和 `video_url` 内容块。
|
||
|
||
## 固定版本
|
||
|
||
- 官方 vLLM commit:`0bfc7a15d095fe83ecc82b50561a93c177fece2d`,镜像 digest 写在 Dockerfile。
|
||
- NVIDIA 模型 revision:`fc694b54fb0174e0913e6adf86691ef85a4ead47`。
|
||
- 11 个 safetensors 文件全部通过 SHA256 校验。
|
||
- PLE 保留原生 FP8 数据及缩放,常驻锁页 CPU 内存,通过 UVA 查表;本配置不使用磁盘 mmap PLE。
|
||
- 额外补丁仅两处 Mamba prefix block alignment 修复;修改前核对精确源码哈希,保留出处和许可证。
|
||
|
||
不要换成浮动 nightly 后继续沿用本项目的验收结论。
|
||
|
||
## 运维
|
||
|
||
服务器目录 `/data/flash-next/` 下,`project/` 是部署项目,`models/` 为权重,`cache/` 为缓存,`audit/` 和 `logs/` 保存验证证据。
|
||
|
||
```bash
|
||
cd /data/flash-next/project
|
||
docker compose build
|
||
docker compose up -d
|
||
docker compose logs --tail 100 -f
|
||
# 主动停止;unless-stopped 会尊重手动停止
|
||
# docker compose stop
|
||
```
|
||
|
||
Compose 默认绑定回环地址;服务器 `.env` 设置 `BIND_ADDRESS=0.0.0.0` 提供内网访问。API key 文件必须存在。新环境可参考 `.env.example`,在 `secrets/` 生成随机密钥,目录权限 0700、文件权限 0600。镜像和模型下载代理属于机器私有配置,不写入项目。
|
||
|
||
已移除本机旧 MinerU、旧 27B 容器、相关旧镜像和模型目录。保留操作系统、SSH、网络和已修复的 NVIDIA 驱动。DGX Spark 服务配置未改动。
|
||
|
||
## 复测
|
||
|
||
```bash
|
||
python3 scripts/acceptance.py --output /data/flash-next/audit/acceptance-new.jsonl
|
||
python3 scripts/long_context.py --tokens 128000 --output /data/flash-next/audit/context-new.jsonl
|
||
python3 scripts/benchmark.py --output /data/flash-next/audit/benchmark-new.jsonl
|
||
```
|
||
|
||
脚本拒绝覆盖同名结果。长上下文验证为固定位置检索及前缀复用;多模态验证为合成图片和短视频;不代表综合质量评测或长期压力测试。当前基线优先单请求和多模态能力,额外并发、更大或更长的视频应另行测试。
|
||
|
||
## 默认配置与回退
|
||
|
||
当前 `compose.yaml` 为 MTP 2,实际运行器使用 FULL_DECODE_ONLY Graph。`compose.baseline.yaml` 保留无 MTP 的 0.96 GPU 预算配置。长生成优先使用 MTP;大上下文反复短问答可能更适合无 MTP,因为可复用 KV 容量更大。切换方法和完整证据见 [MTP 完整验证](docs/mtp-qualification.md)。
|