在 Linux 中,你可以将部署命令保存为可执行脚本文件,并通过终端直接调用。以下是几种常见且实用的方法:
方法 1:Shell 脚本(推荐)
步骤
- 创建一个
.sh
文件(例如start_vllm.sh
):#!/bin/bash CUDA_VISIBLE_DEVICES=7 \ python -m vllm.entrypoints.openai.api_server \ --served-model-name Qwen2-7B-Instruct \ --model /home/courseteam/models/models/Qwen2-7B \ --port 20000
- 赋予执行权限:
chmod +x start_vllm.sh
- 直接运行:
./start_vllm.sh
优点
- 简单直接,适合快速部署
- 可扩展性高(可在脚本中添加环境变量、日志记录等)
方法 2:Systemd 服务(生产环境推荐)
步骤
- 创建服务文件
/etc/systemd/system/vllm.service
:[Unit] Description=vLLM API Server After=network.target [Service] User=your_username WorkingDirectory=/path/to/your/dir ExecStart=/usr/bin/python -m vllm.entrypoints.openai.api_server \ --served-model-name Qwen2-7B-Instruct \ --model /home/courseteam/models/models/Qwen2-7B \ --port 20000 Environment="CUDA_VISIBLE_DEVICES=7" Restart=always [Install] WantedBy=multi-user.target
- 启用并启动服务:
sudo systemctl daemon-reload sudo systemctl enable vllm sudo systemctl start vllm
优点
- 支持开机自启
- 自动崩溃重启
- 集中管理日志(通过
journalctl -u vllm
查看)
方法 3:Python 脚本封装
步骤
- 创建
start_vllm.py
:import subprocess def start_server(): cmd = [ "python", "-m", "vllm.entrypoints.openai.api_server", "--served-model-name", "Qwen2-7B-Instruct", "--model", "/home/courseteam/models/models/Qwen2-7B", "--port", "20000" ] env = {"CUDA_VISIBLE_DEVICES": "7"} subprocess.Popen(cmd, env=env) if __name__ == "__main__": start_server()
- 赋予执行权限并运行:
chmod +x start_vllm.py python start_vllm.py
优点
- 适合需要预处理逻辑的场景(如动态加载配置)
- 可与其他Python代码集成
方法 4:Makefile(适合复杂流程)
步骤
- 创建
Makefile
:.PHONY: start start: CUDA_VISIBLE_DEVICES=7 \ python -m vllm.entrypoints.openai.api_server \ --served-model-name Qwen2-7B-Instruct \ --model /home/courseteam/models/models/Qwen2-7B \ --port 20000
- 运行:
make start
优点
- 适合多步骤部署(如先下载模型再启动)
- 开发者友好
方法 5:Docker 容器化
步骤
- 创建
Dockerfile
:FROM python:3.9 RUN pip install vllm CMD ["python", "-m", "vllm.entrypoints.openai.api_server", \ "--served-model-name", "Qwen2-7B-Instruct", \ "--model", "/models/Qwen2-7B", \ "--port", "20000"]
- 构建并运行:
docker build -t vllm-server . docker run --gpus all -e CUDA_VISIBLE_DEVICES=7 -p 20000:20000 vllm-server
优点
- 环境隔离
- 便于分发和版本控制
最佳实践建议
场景 | 推荐方案 | 关键优势 |
---|---|---|
快速测试 | Shell脚本 | 简单易用 |
生产环境长期运行 | Systemd服务 | 高可靠性,自动恢复 |
需要复杂逻辑控制 | Python脚本封装 | 灵活集成其他功能 |
团队协作/持续集成 | Docker容器 | 环境一致性 |
权限与路径注意事项
- 确保脚本和模型路径对执行用户可读
chmod -R 755 /home/courseteam/models
- 如果使用非标准Python环境,建议在脚本中指定绝对路径:
/opt/conda/bin/python -m vllm.entrypoints...
通过以上任一方法,均可实现一键部署调用。