windows vllm docker 部署

模型与算力

讲清在 Windows 上用 Docker 跑 vLLM 的可行路径、前置条件和起服务后该怎么验证,重点是 WSL2 与显卡直通这两道坎。

在 Windows 上直接装 vLLM 基本会卡在编译和 CUDA 依赖上,绕开它的稳妥办法是把 Docker 跑在 WSL2 里。这篇按「先确认环境能不能成——再决定镜像和挂载怎么选——最后起服务并验证」的顺序走一遍,每一段都给你可核对的动作,也标了哪些机器和场景其实不该走这条路。

在 Windows 上直接 pip 装 vLLM,十有八九会卡在编译和 CUDA 依赖上,报错还不太好懂。绕开它的稳妥办法,是把 Docker 跑在 WSL2 里,让容器直接吃到显卡。这篇按「先确认环境能不能成——再定镜像和挂载——最后起服务并验证」的顺序走一遍,每段都给你能核对的动作。

先说清适用范围:这条路适合有一张能用的独显、愿意折腾一次 WSL2 和 Docker 的机器。如果只是偶尔跑个小模型、或者机器本身没有独显,用别的方式更省心。另外本文所有涉及型号档位、显存开销的数字,都请到站内对应页面核对当时的数值,别照抄别人的配置。

先确认这条路在你机器上走得通

这一步不通过,后面全是白折腾。核心就三件事:Windows 侧的显卡驱动是否正常、WSL2 里能不能看到这张卡、Docker 用的是不是 WSL2 后端。三者缺一个,容器里就会报找不到设备或者驱动版本不匹配。

  • 在 WSL2 里执行 nvidia-smi 这类命令,确认能看到显卡和显存;看不到就先修驱动和 WSL 的对接,别往下走
  • 确认 Docker Desktop 的后端是 WSL2 而不是旧版 Hyper-V,否则容器拿不到显卡设备
  • 把模型规模先算一遍:按参数量和量化档位去 /compute/sizing 估显存,再对照 /models/deploy 看部署方式,算完再动手拉镜像

镜像、挂载和启动参数怎么定

镜像优先用官方发布的那一类,别自己在 Windows 里从头编,编译环境一旦不匹配,排查成本比换镜像高得多。关键是对齐三样东西:镜像自带的 CUDA 运行时、宿主机驱动支持的版本、你的显卡架构。对不上时,典型表现是加载权重阶段直接报错。

要定的事推荐做法对不上的症状
镜像来源用官方发布的那一类,别自编启动即报 CUDA/驱动相关错误
模型权重用挂载卷挂进去,别拷进镜像换模型要重建镜像,浪费时间和磁盘
挂载路径放在 Linux 文件系统下,别用 Windows 盘符加载慢、权限报错、偶尔读不到文件
启动参数先定端口、张量并行度、上下文长度和显存上限连不上、放不下、或一并发就崩
  1. 拉镜像选与驱动和显卡架构匹配的官方镜像,拉完先在无模型的情况下起一个空容器,确认容器里也能看到显卡。
  2. 挂权重把模型目录挂进容器,路径尽量落在 Linux 文件系统里;挂好后进容器 ls 一下,确认文件确实可见、权限可读。
  3. 配参数按你要跑的模型规模设定监听端口、张量并行度和上下文长度、显存占用上限;这几项先保守一点,跑通再往上调。

起服务、连通、跑通第一条请求

服务起来不等于能用。按固定顺序排查连通性,卡在哪一步就查哪一步,别跳步,否则容易在错误的方向上改配置。

  1. 看容器状态确认容器在运行而不是起来就退出;退出的去看日志最后几行,通常是权重路径或显存分配的问题。
  2. 看显卡可见性进容器执行显卡查询命令,看不到卡说明是 WSL2 直通或 Docker 后端的问题,回到上一节处理。
  3. 看端口连通从宿主机访问服务端口,通不了就查端口映射和监听地址,别先怀疑模型。
  4. 发一条请求用一条最短的对话请求验证它真的在推理,而不是只看到端口开着;超时先分清是权重还在加载,还是显存不够导致排队。

日志里最该盯的是三类信息:权重加载进度、显存分配结果、端口绑定地址。这三类信息基本能直接告诉你是配置问题还是环境问题。遇到不认识的报错术语,可以去 /stacks/atlas 对照查一遍再改。

下一步想知道这台机器大概能跑多大模型、以及同档次机器的实际表现,先去站内把尺寸估算和速度数据核对一遍再决定要不要继续折腾。

常见问题

Windows 上不装 WSL2,直接用 Docker Desktop 跑 vLLM 行不行?

基本不行。vLLM 依赖的 CUDA 环境在 Windows 原生容器里跑不通,Docker Desktop 的 Windows 容器模式也拿不到显卡。稳妥做法就是把 Docker 切到 WSL2 后端,让容器跑在 Linux 子系统里,这一步是前提不是优化。

部署好了以后,怎么判断瓶颈在显卡还是配置?

先看显存占用和日志里的显存分配信息:如果权重加载阶段就报显存不足,那是模型规模和量化档位不匹配;如果加载正常但请求很慢,多半是上下文长度或并发配置偏大。两个方向都可以去 /models/deploy 重新算一遍再改参数。

这套部署适合直接放到生产环境对外提供服务吗?

要谨慎。Windows + WSL2 + Docker 这条链路更适合自用、验证和内部试用,稳定性和资源隔离都不如直接跑在 Linux 服务器上。如果是要长期对外服务,建议把同一份镜像和参数搬到一个干净的 Linux 主机上再压测。

本文依据各平台公开文档与官方公告整理,只做中文归纳;具体做法、参数与限制以官方文档为准。