在nvidia笔记本显卡上如何用vllm拉起qwen3-0.6b(含WSL2: RuntimeError: UVA is not available解决办法)

发布时间:2026/7/6 3:17:58

在nvidia笔记本显卡上如何用vllm拉起qwen3-0.6b(含WSL2: RuntimeError: UVA is not available解决办法) 文章目录搭建vllm环境配置一览拉取官方vllm镜像创建容器启动vllm服务并测试启动vllm服务测试附录WSL2: RuntimeError: UVA is not available原因及解决办法kvcache占用计算方法本文记录如何在搭载nvidia显卡的笔记本上使用wsl2 docker方法创建的vllm环境拉起qwen3-0.6b,并且实现流畅推理搭建vllm环境配置一览博主使用的配置:显卡:rtx5070ti笔记本版本,12g显存(理论上4G显存也能拉起来,只是上下文长度短一点)环境:WSL2的Ubuntu2404docker desktop磁盘:留出50G以上拉取官方vllm镜像首先连接wsl2的Ubuntu系统,然后在终端中输入:docker pull vllm/vllm-openai:latestvllm环境较大,约20G左右,确保空间充足,如果拉取失败,尝试换源拉取拉取完成后,检查本地是否已经存在vllm镜像:docker images如果能看到以下镜像,代表成功拉取:创建容器为了能够复用容器,以便加载不同路径的模型或者启用多节点部署,这一步仅创建一个支持vllm运行的容器,在下一步启动大模型节点创建一个docker.sh文件,添加以下内容进去:#!/bin/bash# 启动交互式容器并进入 bash 终端VLLM_WSL2_ENABLE_PIN_MEMORY1# 添加此行来允许wsl2使用UVASCRIPT_DIR$(cd $(dirname$0)pwd) IMAGE_ID4091d5593f77 # 局部变量值等于上一步输出的ID docker run -it \ --runtime nvidia --gpus all \ -v /home/huggingface:/root/.cache/huggingface \ -v $SCRIPT_DIR/qwen3_workspace:/workspace \ -e VLLM_WSL2_ENABLE_PIN_MEMORY1 \ -w /workspace\ --env HF_TOKEN$HF_TOKEN\-p8000:8000\--ipchost\--pullnever\--entrypoint/bin/bash\$IMAGE_ID然后在home路径下,创建huggingface文件夹,把qwen3-0.6b的权重放进去;在docker.sh相同的路径里,创建一个qwen3_workspace文件夹,作为启动后的初始路径然后使用bash docker.sh运行脚本,进入容器,如果你的终端前面开头出现rootXXXX:/workspace代表成功进入容器,如下图所示:启动vllm服务并测试启动vllm服务在上一步创建的qwen3_workspace目录下,新建一个文件名字叫start_node.sh的文件用来启动节点,添加以下内容进去:#!/bin/bash# 在容器 /workspace 目录下执行此脚本启动服务MODEL${1:-/root/.cache/huggingface/Qwen3-0.6B}echoStarting vLLM with model:$MODELvllm serve$MODEL\--served-model-name Qwen3-0.6B\--seed1024\--max-model-len8k\--dtypeauto\--trust-remote-code\--host0.0.0.0\--port8000\--gpu-memory-utilization0.85\--max-num-seqs1\--tensor-parallel-size1\--reasoning-parser qwen3echosuccessfully started vLLM server with model:$MODELmax-model-lenxx是上下文长度,可以根据显存大小动态调整,每token上下文长度约为224 KB(计算方法见附录),我这里设置了8k上下文,kvcache约占0.8G左右显存gpu-memory-utilizationGPU最大占用率,如果显存不够用可以调整到0.9~0.95然后bash start_node.sh运行脚本,等待5~10分钟,出现以下标志说明成功:测试新建一个终端,然后输入:curlhttp://localhost:8080/v1/chat/completions\-HContent-Type: application/json\-d{ model: Qwen3-0.6B, messages: [{role: user, content: 你好}], extra_body: { enable_thinking: true, max_tokens: 200, temperature: 0.7 } }等待一会,若有输出,代表成功拉起模型:恭喜,接下来可以对大模型进行提问了!附录WSL2: RuntimeError: UVA is not available原因及解决办法原因:vllm在检测到所在环境为wsl2时,默认关闭UVA功能,但是vllm2以后,默认在启动时使用该功能,所以会报错解决办法:start_node.sh脚本里添加VLLM_WSL2_ENABLE_PIN_MEMORY1kvcache占用计算方法首先看大模型的数据类型:如果是BF16,每个参数占2字节,BF32,每个参数占4字节,qwen3-0.6b为BF16,每个参数占2字节然后根据 Qwen3-0.6B 的官方配置层数 (Layers): 28KV 头数 (KV Heads): 8头维度 (Head Dim): 128那么kvcache每token占用显存大小:2 × 8 × 128 × 2 × 28 112 KB假设上下文长度为n,总共占用显存大小为: 112 × n KB序列长度 1,024: 112 KB × 1024 112 MB序列长度 2,048: 112 KB × 2048 224 MB序列长度 4,096: 112 KB × 4096 448 MB序列长度 8,192: 112 KB × 8192 896 MB

相关新闻