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

Linux上将conda环境VLLM服务注册为开机自启

这里写目录标题

  • 一、Systemd服务方式
    • 1、编写启动脚本
    • 2、保存脚本并赋予权限
    • 3、创建 systemd 服务单元文件
    • 3、 启用并测试服务
    • 4、停止systemd服务
  • 二、Crontab方式
    • 1、编辑`crontab`文件
    • 2、添加开机启动任务
  • 参考链接

在这里插入图片描述

项目需要vllm进行模型支撑,所以需要做成开机自启保证现场部署,做了些调研,梳理了几种部署方式,例如docker部署、源码部署,脚本的不同自启方式,现在写下几种

一、Systemd服务方式

1、编写启动脚本

编写启动脚本,实现激活 conda 环境后启动 vllm服务。

#!/bin/shell# 检查是否已经安装了 conda
if ! command -v conda &> /dev/null
thenecho "conda not found. Please install Anaconda or Miniconda."exit 1
fi# 激活特定的 Conda 环境
source "$(conda info --base)/bin/activate" vllm# 检查激活的环境
current_env=$(conda info --envs | grep '*')
echo "Current active environment: $current_env"# 运行 app.py 并将输出重定向到日志文件
vllm serve Qwen/Qwen2.5-32B-Instruct  --dtype auto  --gpu-memory-utilization 0.95  --served-model-name Qwen2.5-32B-Instruct   --tensor-parallel-size 2 --host 0.0.0.0  --port 8000 > /home/ai-daosmos/vllm.log 2>&1  &# 将后台进程 disown 以防止 shell 退出时影响到它
disown# 输出成功信息
echo "Vllm has been started successfully."# 等待一段时间以确保应用启动完成
sleep 5# 检查应用是否成功启动
FLASK_PID=$(pgrep -f "flask run --host 0.0.0.0 --port=8000")
if [[ -n "$FLASK_PID" ]]; thenecho "Vllm is running with PID: $FLASK_PID"
elseecho "Failed to start Vllm."exit 1
fi

2、保存脚本并赋予权限

chmod +x /home/ai-daosmos/scripts/start_vllm.sh

3、创建 systemd 服务单元文件

创建服务配置文件/etc/systemd/system/vllm.service,内容如下:

[Unit]
Description=Application (Vllm)
After=network.target[Service]
Type=simple
User=<your_user>
WorkingDirectory=/home/ai-daosmos/
ExecStart=/bin/shell /home/ai-daosmos/scripts/start_vllm.sh
Restart=always
Environment="PATH=/root/anaconda3/envs/vllm/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin"[Install]
WantedBy=multi-user.target

参数说明 :

  • User: 替换为实际运行脚本的用户。
  • WorkingDirectory: Flask 应用的工作目录。
  • ExecStart: 脚本的完整路径。
  • Environment: 设置 Conda 环境的 PATH,确保 命令可用。

3、 启用并测试服务

重新加载 systemd 配置 :

sudo systemctl daemon-reexec
sudo systemctl daemon-reload

启用开机自启 :

sudo systemctl enable vllm

手动启动服务 :

sudo systemctl start vllm

查看服务状态 (检测是否部署成功):

sudo systemctl status vllm
journalctl -u dify.service -f

后续每次开机时,系统将自动进入您的 conda 环境并启动 vllm 服务。

4、停止systemd服务

后续如果想停止systemd相关服务。

停止服务:使用以下命令停止一个正在运行的服务:

sudo systemctl stop <service_name>

禁用服务‌:为了防止该服务在下次启动时自动运行,可以使用以下命令禁用服务:

sudo systemctl disable <service_name>

查看服务状态‌:如果你想要查看特定服务的状态,可以使用以下命令:

systemctl status <service_name>.service

二、Crontab方式

1、编辑crontab文件

打开当前用户的crontab文件:

crontab -e

2、添加开机启动任务

@reboot /path/to/your/vllm_server >> /home/ai-daosmos/vllm.log 2>&1 

这将在系统启动时执行VLLM服务器,并将输出重定向到/var/log/vllm.log文件中。

推荐使用systemd服务来管理VLLM的开机自启,因为它提供了更好的控制和灵活性。确保你的VLLM安装路径和用户权限设置正确,以避免权限或路径问题导致服务无法启动。

参考链接

https://blog.csdn.net/sunyuhua_keyboard/article/details/143528529
https://blog.csdn.net/su_xiao_wei/article/details/145779428

相关文章:

  • “430”“531”光伏政策变革下,安科瑞如何 “保驾护航”?
  • 热部署相关
  • Office365功能特点
  • 7. HTML 表格基础
  • MATLAB技巧——命令行输入的绘图,中文是正常的,到了脚本(m文件)里面就变成乱码的解决方法
  • default和delete final和override
  • 【fastadmin开发实战】财务数据快速导入系统(复制导入)
  • 力扣92.反转指定范围内的链表、25.k个一组反转链表
  • 学习黑客Linux 系统状态管理
  • 不同OS版本中的同一yum源yum list差异排查思路
  • Android Studio根目录下创建多个可运行的模块
  • PDF文档压缩攻略
  • 【PhysUnits】2 Scalar<T> 标量元组结构体(scalar/mod.rs)
  • ABC 403
  • MySQL的基本操作
  • vue3+ts的watch全解!
  • 案例分享 | 攻克ADAS开发测试难题,实现单元动态测试新突破
  • 【Python】让Selenium 像Beautifulsoup一样,用解析HTML 结构的方式提取元素!
  • 分布式爬虫去重:Python + Redis实现高效URL去重
  • 【网络编程】二、UDP网络套接字编程详解
  • 云南省安委会办公室:大理州安全生产形势比较严峻,事故总量一直居高不下
  • 中铁房地产24.7亿元竞得上海松江新城宅地,溢价率20.42%
  • 阿里CEO:将以饱和式投入打法,聚焦几大核心战役
  • 新买宝马竟是“维修车”,男子发视频维权被4S店索赔100万
  • 中华人民共和国和俄罗斯联邦关于全球战略稳定的联合声明
  • 多人称华为手机忽现拍照模糊疑存缺陷,售后回应:主摄像头故障