当前位置: 首页 > news >正文

【模型部署】如何在Linux中通过脚本文件部署模型

在 Linux 中,你可以将部署命令保存为可执行脚本文件,并通过终端直接调用。以下是几种常见且实用的方法:


方法 1:Shell 脚本(推荐)

步骤
  1. 创建一个 .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
    
  2. 赋予执行权限:
    chmod +x start_vllm.sh
    
  3. 直接运行:
    ./start_vllm.sh
    
优点
  • 简单直接,适合快速部署
  • 可扩展性高(可在脚本中添加环境变量、日志记录等)

方法 2:Systemd 服务(生产环境推荐)

步骤
  1. 创建服务文件 /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
    
  2. 启用并启动服务:
    sudo systemctl daemon-reload
    sudo systemctl enable vllm
    sudo systemctl start vllm
    
优点
  • 支持开机自启
  • 自动崩溃重启
  • 集中管理日志(通过 journalctl -u vllm 查看)

方法 3:Python 脚本封装

步骤
  1. 创建 start_vllm.py
    import subprocessdef 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()
    
  2. 赋予执行权限并运行:
    chmod +x start_vllm.py
    python start_vllm.py
    
优点
  • 适合需要预处理逻辑的场景(如动态加载配置)
  • 可与其他Python代码集成

方法 4:Makefile(适合复杂流程)

步骤
  1. 创建 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
    
  2. 运行:
    make start
    
优点
  • 适合多步骤部署(如先下载模型再启动)
  • 开发者友好

方法 5:Docker 容器化

步骤
  1. 创建 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"]
    
  2. 构建并运行:
    docker build -t vllm-server .
    docker run --gpus all -e CUDA_VISIBLE_DEVICES=7 -p 20000:20000 vllm-server
    
优点
  • 环境隔离
  • 便于分发和版本控制

最佳实践建议

场景推荐方案关键优势
快速测试Shell脚本简单易用
生产环境长期运行Systemd服务高可靠性,自动恢复
需要复杂逻辑控制Python脚本封装灵活集成其他功能
团队协作/持续集成Docker容器环境一致性

权限与路径注意事项

  1. 确保脚本和模型路径对执行用户可读
    chmod -R 755 /home/courseteam/models
    
  2. 如果使用非标准Python环境,建议在脚本中指定绝对路径:
    /opt/conda/bin/python -m vllm.entrypoints...
    

通过以上任一方法,均可实现一键部署调用。

相关文章:

  • Prompt Depth Anything:以提示方式驱动的Depth Anything用于实现4K分辨率下的精确米制深度估计
  • RabbitMQ中,basicAck、basicNack和basicReject是三种核心的消息确认机制
  • 网络安全碎碎恋
  • Elasticsearch 集群升级实战指引—7.x 升级到 8.x
  • SRS流媒体服务器之本地测试rtc推流bug
  • 【HuggingFace】模型下载至本地访问
  • 【硬核数学】8. AI的“想象力”:概率深度学习与生成模型《从零构建机器学习、深度学习到LLM的数学认知》
  • 人工智能-基础篇-7-什么是大语言模型LLM(NLP重要分支、Transformer架构、预训练和微调等)
  • java:如何用 JDBC 连接 TDSQL 数据库
  • 【电路笔记 TMS320F28335DSP】TI SCI (增强型的UART) 点对点异步串行通信接口
  • 如何通过自动化减少重复性工作
  • Dify私有化知识库搭建并通过ChatFlow智能机器人使用知识库的详细操作步骤
  • Day46 通道注意力(SE注意力)
  • 第三次课:实验室安全用电
  • 【linux】文件与目录命令 - csplit
  • 将iso镜像文件格式转换为云平台支持的镜像文件格式
  • JavaScript基础pink[3]-函数/作用域/预解析
  • 【硬核数学】3. AI如何应对不确定性?概率论为模型注入“灵魂”《从零构建机器学习、深度学习到LLM的数学认知》
  • MCU、LIN收发器与LIN总线是如何进行交互的?
  • 设计模式(五)