eugr/spark-vllm-docker
Docker configuration for running VLLM on dual DGX Sparks
它是什么
spark‑vllm‑docker 是一套 Dockerfile、辅助脚本和现成的 recipes,让您可以在 NVIDIA DGX Spark 集群(或单个 DGX Spark 节点)上运行 vLLM 推理引擎。它自动化了构建包含 vLLM(以及可选的实验性 B12X 内核)的 Docker 镜像的过程,从 Hugging Face 拉取模型权重,并使用 Ray 或 vLLM 原生的 PyTorch‑distributed 后端在一个或多个 Spark 节点上启动 vLLM 服务器。
适用对象
- 拥有 DGX Spark 硬件访问权限,并希望以高吞吐量服务大型 LLM(例如 Qwen‑3.8、DeepSeek‑V4、GLM‑5.x、Nemotron 3.5)的工程师。
- 需要通过 InfiniBand/RDMA、KV‑cache FP8、推测解码以及通过 InstantTensor 或实验性 B12X 加载器进行快速模型加载来进行多节点推理的团队。
- 偏好可重现的 Docker 工作流程,而非在每个节点上手动构建 vLLM 的用户。
核心功能(如 README 所述)
| 功能 | 详细信息 |
|---|---|
| Docker 镜像 | eugr/spark-vllm:latest(常规)或 eugr/spark-vllm-b12x:latest(实验性 B12X 内核)。镜像由每日 vLLM wheels 或源代码构建,并可选用 --use-wheels、--rebuild-vllm、--rebuild-flashinfer 标志。 |
| 多节点支持 | 启动脚本(launch‑cluster.sh、run‑recipe.sh)可自动发现 Spark 节点、设置无密码 SSH,并启动通过 InfiniBand/RoCE 使用 NCCL 的 vLLM 工作节点。 |
| 模型加载 | 支持标准 safetensors、InstantTensor 零拷贝,以及用于更快、更低内存占用加载的 B12X 加载器。 |
| 推测解码 | 内置 DFlash、MTP、DSpark 等配置,允许每步最多 8 个推测 token。 |
| 内存技巧 | FP8 KV‑cache、VLLM_WSL2_ENABLE_PIN_MEMORY、早期 OOM 监控、CPU 堆内存修剪,以及可选的 PLE‑table 磁盘卸载。 |
| 便捷的 recipes | 针对热门模型(Qwen‑3.8‑27B、DeepSeek‑V4‑Flash‑Vision、GLM‑5.3、Nemotron‑3.5 等)的 YAML 文件,预先配置了模型 ID、并行处理、分词器和性能标志。 |
| 可扩展性 | --apply‑vllm‑pr 可在启动时拉取上游 vLLM 的 PR diff;mods/ 目录存放自定义加载器补丁。 |
| 健康检查 | 简单的 curl http://localhost:8000/health 和 OpenAI 兼容的 /v1/models 端点。 |
如何开始(快速入门摘要)
- Clone 仓库到 Spark 头节点。
- 构建并复制 Docker 镜像:
./build-and-copy.sh(加入--exp-b12x以获取实验性镜像)。 - 下载 模型权重:
./hf-download.sh <model‑repo>。 - 启动 服务器:
(将./launch-cluster.sh --solo -t vllm-node \ exec vllm serve <model> \ --host 0.0.0.0 --port 8000 \ --kv-cache-dtype fp8 ...vllm-node替换为vllm-node-b12x并加入 README 中显示的许多额外标志以使用 B12X 相关 recipes。) - 测试 端点:使用
curl并将您的客户端指向http://<head‑node-ip>:8000/v1。
为何重要
在单个 GPU 上运行 vLLM 很简单,但将推理扩展到多个 DGX Spark 节点同时保持低延迟,需要谨慎的网络、内存管理和内核选择。此仓库将所有这些调整选项打包成可重现的 Docker 镜像和脚本,让从业人员能专注于模型本身,而非底层的集群配置。
以上所有信息均直接取自仓库的 README;未推断任何额外功能。
相关
- 项目
- Dispatch
- 项目
- 项目
- 项目