From 757bc9a8f33ef0cc2d6cd022123ed44ca035d6a9 Mon Sep 17 00:00:00 2001 From: Sun Ruoxi Date: Wed, 21 Oct 2026 18:48:44 +0800 Subject: [PATCH] update examples/launch.py Signed-off-by: Sun Ruoxi --- README.md | 4 ++-- examples/launch.py | 7 ++++--- 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/README.md b/README.md index db58aaf..627bf4d 100644 --- a/README.md +++ b/README.md @@ -52,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`。 +创建服务容器时,沿用原容器的 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 进程提前退出。 在新容器里启动已验证的配置(把 `deepseek_v4_patched` 换成实际容器名): @@ -63,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`。传入文件名时将日志写到 `examples/` 目录下该文件;不传文件名时,vLLM 的输出直接进入启动器的 stdout,例如在容器内前台运行 `python /opt/ppu-deepseek-v4-pro-patch/examples/launch.py`。它运行的核心命令如下;如果按原有编排系统直接运行 `vllm serve`,需同时传入镜像默认的五个环境变量,并明确指定全部 16 张卡: ```sh vllm serve /model \ diff --git a/examples/launch.py b/examples/launch.py index 34d8a34..af10f7a 100644 --- a/examples/launch.py +++ b/examples/launch.py @@ -1,14 +1,15 @@ import os,sys,json,resource,subprocess,signal,time +from contextlib import nullcontext from pathlib import Path base=Path(__file__).parent resource.setrlimit(resource.RLIMIT_MEMLOCK,(resource.RLIM_INFINITY,resource.RLIM_INFINITY)) cfg=json.loads((base/"command-serial.json").read_text()) env=os.environ.copy();env.update(cfg["env"]) -log=base/(sys.argv[1] if len(sys.argv)>1 else "serve-fixed.log") -with log.open("w") as f: +log=base/sys.argv[1] if len(sys.argv)>1 else None +with log.open("w") if log else nullcontext(None) as f: p=subprocess.Popen(cfg["args"],env=env,stdout=f,stderr=subprocess.STDOUT,start_new_session=True,cwd="/workspace/pytorch") (base/"serve.pid").write_text(str(p.pid)) -print("SERVER_PID",p.pid,"LOG",log,flush=True) +print("SERVER_PID",p.pid,"LOG",log if log else "stdout",flush=True) rc=p.wait() print("SERVER_EXIT",rc,flush=True) if rc: