在 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 盘符 | 加载慢、权限报错、偶尔读不到文件 |
| 启动参数 | 先定端口、张量并行度、上下文长度和显存上限 | 连不上、放不下、或一并发就崩 |
- 拉镜像选与驱动和显卡架构匹配的官方镜像,拉完先在无模型的情况下起一个空容器,确认容器里也能看到显卡。
- 挂权重把模型目录挂进容器,路径尽量落在 Linux 文件系统里;挂好后进容器 ls 一下,确认文件确实可见、权限可读。
- 配参数按你要跑的模型规模设定监听端口、张量并行度和上下文长度、显存占用上限;这几项先保守一点,跑通再往上调。
起服务、连通、跑通第一条请求
服务起来不等于能用。按固定顺序排查连通性,卡在哪一步就查哪一步,别跳步,否则容易在错误的方向上改配置。
- 看容器状态确认容器在运行而不是起来就退出;退出的去看日志最后几行,通常是权重路径或显存分配的问题。
- 看显卡可见性进容器执行显卡查询命令,看不到卡说明是 WSL2 直通或 Docker 后端的问题,回到上一节处理。
- 看端口连通从宿主机访问服务端口,通不了就查端口映射和监听地址,别先怀疑模型。
- 发一条请求用一条最短的对话请求验证它真的在推理,而不是只看到端口开着;超时先分清是权重还在加载,还是显存不够导致排队。
日志里最该盯的是三类信息:权重加载进度、显存分配结果、端口绑定地址。这三类信息基本能直接告诉你是配置问题还是环境问题。遇到不认识的报错术语,可以去 /stacks/atlas 对照查一遍再改。
下一步想知道这台机器大概能跑多大模型、以及同档次机器的实际表现,先去站内把尺寸估算和速度数据核对一遍再决定要不要继续折腾。→常见问题
Windows 上不装 WSL2,直接用 Docker Desktop 跑 vLLM 行不行?
基本不行。vLLM 依赖的 CUDA 环境在 Windows 原生容器里跑不通,Docker Desktop 的 Windows 容器模式也拿不到显卡。稳妥做法就是把 Docker 切到 WSL2 后端,让容器跑在 Linux 子系统里,这一步是前提不是优化。
部署好了以后,怎么判断瓶颈在显卡还是配置?
先看显存占用和日志里的显存分配信息:如果权重加载阶段就报显存不足,那是模型规模和量化档位不匹配;如果加载正常但请求很慢,多半是上下文长度或并发配置偏大。两个方向都可以去 /models/deploy 重新算一遍再改参数。
这套部署适合直接放到生产环境对外提供服务吗?
要谨慎。Windows + WSL2 + Docker 这条链路更适合自用、验证和内部试用,稳定性和资源隔离都不如直接跑在 Linux 服务器上。如果是要长期对外服务,建议把同一份镜像和参数搬到一个干净的 Linux 主机上再压测。