13
README.md
13
README.md
@@ -29,14 +29,6 @@ swr.cn-north-4.myhuaweicloud.com/inference-engines/llm:v2.1.1-pytorch2.11.0-ubun
|
||||
该版本也接受 `vllm serve ... --linear-backend marlin`,它会要求所有适用的量化 linear 使用 Marlin;如果某种层没有可用的 Marlin kernel,启动会直接报错。它**不是** `VLLM_DISABLED_KERNELS=PPUCutlassFp8BlockScaledMMKernel` 的等价替代,且本项目的完整模型成功验证没有使用该选项。`--quantization marlin` 是另一类量化配置,不能把当前 FP8 checkpoint 当作 Marlin 格式 checkpoint 来指定。
|
||||
|
||||
## 构建包含补丁的新镜像(推荐)
|
||||
|
||||
先将本目录放到有原始镜像的 PPU 主机上。例如,在本机 `/Users/4paradigm/projects` 下运行:
|
||||
|
||||
```sh
|
||||
scp -i llm_benchmark/bench-text_generation-tco/utils/id_rsa -r \
|
||||
ppu_deepseek_v4_pro_patch root@172.28.4.222:/tmp/
|
||||
```
|
||||
|
||||
在 PPU 主机上执行:
|
||||
|
||||
```sh
|
||||
@@ -60,7 +52,7 @@ nerdctl build --buildkit-host unix:///tmp/ppu-buildkit.sock \
|
||||
|
||||
构建时的 `RUN python .../scripts/apply.py --apply` 会先验证原始镜像内四个文件的 SHA-256,再替换源码。`nerdctl build` 成功即表示补丁已写入**新镜像**,原镜像标签不会被覆盖。构建失败若提示 `Installed source does not match this patch`,说明基础镜像中的 vLLM 源码与本项目的原始版本不同;应先比较源码,不要强行跳过校验。
|
||||
|
||||
创建服务容器时,沿用原容器的 PPU 设备映射、权限、共享内存和网络配置,改用 `deepseek-v4-pro:ppu-bf16-serial` 镜像,并将模型挂载到 `/model`。这台机器原容器的模型挂载源是 `/bmcp_lvm_fs/data/model/DeepSeek-V4-Pro`,容器目标是 `/model`,共享内存配置为 64 GiB。PPU 设备如何注入由机器的容器运行环境决定,应复用原容器的创建参数。新镜像默认设置 `VLLM_DISABLED_KERNELS`、`VLLM_PPU_BF16_O_PROJ`、`VLLM_PPU_SERIAL_ATTENTION`、`VLLM_MULTI_STREAM_GEMM_TOKEN_THRESHOLD` 和 `VLLM_ENGINE_READY_TIMEOUT_S=3600`。后者为权重加载与首次 JIT 编译留出时间;默认的 600 秒在本机使 API 进程提前退出。
|
||||
创建服务容器时,沿用原容器的 PPU 设备映射、权限、共享内存和网络配置,改用 `deepseek-v4-pro:ppu-bf16-serial` 镜像,并将模型挂载到 `/model`。这台机器原容器的模型挂载源是 `/bmcp_lvm_fs/data/model/DeepSeek-V4-Pro`,容器目标是 `/model`,共享内存配置为 64 GiB。PPU 设备如何注入由机器的容器运行环境决定,应复用原容器的创建参数。新镜像已经默认设置四个环境变量:`VLLM_DISABLED_KERNELS`、`VLLM_PPU_BF16_O_PROJ`、`VLLM_PPU_SERIAL_ATTENTION`、`VLLM_MULTI_STREAM_GEMM_TOKEN_THRESHOLD`。
|
||||
|
||||
在新容器里启动已验证的配置(把 `deepseek_v4_patched` 换成实际容器名):
|
||||
|
||||
@@ -71,7 +63,7 @@ nerdctl exec -d \
|
||||
python /opt/ppu-deepseek-v4-pro-patch/examples/launch.py serve.log
|
||||
```
|
||||
|
||||
启动器读取 `examples/command-serial.json`,将日志写到 `/opt/ppu-deepseek-v4-pro-patch/examples/serve.log`。它运行的核心命令如下;如果按原有编排系统直接运行 `vllm serve`,需同时传入镜像默认的五个环境变量,并明确指定全部 16 张卡:
|
||||
启动器读取 `examples/command-serial.json`,将日志写到 `/opt/ppu-deepseek-v4-pro-patch/examples/serve.log`。它运行的核心命令如下;如果按原有编排系统直接运行 `vllm serve`,需同时传入镜像默认的四个环境变量,并明确指定全部 16 张卡:
|
||||
|
||||
```sh
|
||||
vllm serve /model \
|
||||
@@ -120,4 +112,3 @@ nerdctl exec deepseek_v4_original python /opt/ppu-deepseek-v4-pro-patch/scripts/
|
||||
- 长上下文测试中,1037、3085、3853、4045 输入 token 的请求各生成 32 token,均成功。一个 3619 输入 token 的聊天请求正确返回文中预埋的“蓝色”。测试后日志没有 `ERROR`。
|
||||
- 已验证配置使用 `--enforce-eager` 和 `--max-model-len 4096`。超过 4096 token、较高并发、CUDA graph 模式以及生产性能尚未验证。原始未禁用辅助流的失败不能仅凭当前结果断定就是多流造成的。
|
||||
|
||||
历史排查细节与原始日志保存在同一工作区的 `llm_benchmark/bench-text_generation-tco/DEEPSEEK_V4_PPU_2026-10-20.md` 和 `ppu_debug_snapshot_2026-10-20/`。
|
||||
|
||||
Reference in New Issue
Block a user