本文档介绍如何从下载模型到使用 API 的完整流程。
- Python 3.10+
- CUDA 12.1+
- WSL2 (Ubuntu 22.04)
- NVIDIA 显卡 (至少 6GB 显存)
# 创建虚拟环境(推荐) python -m venv venv source venv/bin/activate # 安装 vllm(会自动安装 PyTorch) pip install vllm>=0.6.0 # 安装 ModelScope(用于下载模型) pip install modelscope # 安装 OpenAI SDK(用于 API 测试) pip install openai使用 ModelScope 下载 Qwen3.5-0.8B 模型:
python download_model.py输出示例:
正在下载模型: Qwen/Qwen3.5-0.8B 保存目录: /home/mingt/projects/models 下载完成! 模型路径: ./models/Qwen/Qwen3___5-0___8B 注意:ModelScope 下载的模型路径中
/会被替换为___,最终路径为./models/Qwen/Qwen3___5-0___8B
直接调用 vLLM 进行单次推理:
python run_model.py输出示例:
Response: 大模型(Large Language Model,简称 LLM)是一种基于深度学习技术的人工智能模型... | 参数 | 默认值 | 说明 |
|---|---|---|
MODEL_PATH | ./models/Qwen/Qwen3___5-0___8B | 模型路径 |
MAX_MODEL_LEN | 2048 | 最大模型长度 |
MAX_TOKENS | 512 | 生成的最大 token 数 |
temperature | 0.6 | 采样温度 |
top_p | 0.95 | nucleus 采样 |
top_k | 20 | top-k 采样 |
启动 vLLM OpenAI 兼容 API 服务:
python serve_model.py服务启动后会显示:
启动命令: vllm serve ./models/Qwen/Qwen3___5-0___8B ... API 地址: http://localhost:8000 文档地址: http://localhost:8000/docs | 参数 | 默认值 | 说明 |
|---|---|---|
MODEL_PATH | ./models/Qwen/Qwen3___5-0___8B | 模型路径 |
HOST | 0.0.0.0 | 监听地址 |
PORT | 8000 | 监听端口 |
DTYPE | half | 数据类型 (half=float16) |
GPU_MEMORY_UTILIZATION | 0.8 | GPU 显存利用率 |
MAX_MODEL_LEN | 2048 | 最大模型长度 |
服务启动后保持运行,不要关闭终端。
# 检查模型列表 curl -s http://localhost:8000/v1/models # 发送聊天请求 curl -s http://localhost:8000/v1/chat/completions \ -H "Content-Type: application/json" \ -d '{ "model": "./models/Qwen/Qwen3___5-0___8B", "messages": [{"role": "user", "content": "你好,请用一句话介绍自己"}], "max_tokens": 100 }'python client_model.py| 参数 | 默认值 | 说明 |
|---|---|---|
BASE_URL | http://192.168.0.15:8000/v1 | API 地址 |
API_KEY | dummy | 认证密钥(vLLM 不需要真实 key) |
MODEL_NAME | ./models/Qwen/Qwen3___5-0___8B | 模型名称 |
注意:如果是本机 WSL 内测试,把
BASE_URL改成http://localhost:8000/v1如果是从 Windows 主机访问 WSL,保持默认的
192.168.0.15(需要改成你实际的 Windows IP)
| 端点 | 方法 | 说明 |
|---|---|---|
/v1/models | GET | 获取可用模型列表 |
/v1/chat/completions | POST | 聊天补全 |
/v1/completions | POST | 文本补全 |
/docs | GET | OpenAPI 文档 |
如果遇到 OOM 错误,降低 gpu_memory_utilization:
# run_model.py / serve_model.py gpu_memory_utilization = 0.5 # 降低到 50%- 先获取 WSL 的 IP:
hostname -I | awk '{print $1}'- 在 Windows 端修改
client_model.py:
BASE_URL = "http://<WSL_IP>:8000/v1"- 确保 Windows 防火墙允许 8000 端口
如果 ModelScope 下载慢,可以使用 HuggingFace:
# 修改 download_model.py from transformers import AutoModelForCausalLM, AutoTokenizer model_id = "Qwen/Qwen2.5-0.5B-Instruct" # 使用 HuggingFace 下载 tokenizer = AutoTokenizer.from_pretrained(model_id, trust_remote_code=True) model = AutoModelForCausalLM.from_pretrained(model_id, trust_remote_code=True)/home/mingt/projects/ ├── download_model.py # 下载模型脚本 ├── run_model.py # 单次运行脚本 ├── serve_model.py # API 服务脚本 ├── client_model.py # API 客户端测试 ├── models/ │ └── Qwen/ │ └── Qwen3___5-0___8B/ # 模型文件 └── README.md # 本文档