千问3.5-2B生产环境部署:supervisor自启+端口监听+日志分级管理实操指南
1. 千问3.5-2B模型简介
千问3.5-2B是Qwen系列的小型视觉语言模型,具备图片理解与文本生成能力。这个模型特别适合需要视觉理解的应用场景,比如:
- 图片内容描述
- 主体识别与定位
- 简单OCR文字识别
- 场景问答与交互
与纯文本模型不同,千问3.5-2B能够同时处理图片和文本输入,理解图片内容后生成相应的文字描述或回答相关问题。
2. 生产环境部署准备
2.1 硬件要求
- GPU:推荐RTX 4090 D 24GB或同等性能显卡
- 显存:至少8GB,推荐16GB以上
- 内存:32GB以上
- 存储:SSD硬盘,至少20GB可用空间
2.2 软件依赖
# 基础依赖 sudo apt-get update sudo apt-get install -y python3-pip supervisor nginx # Python环境 python3 -m pip install --upgrade pip python3 -m pip install torch torchvision torchaudio3. Supervisor自启动配置
3.1 安装与基础配置
Supervisor是一个进程控制系统,可以确保我们的服务在意外退出后自动重启。
# 安装supervisor sudo apt-get install -y supervisor # 检查服务状态 sudo systemctl status supervisor3.2 创建服务配置文件
在/etc/supervisor/conf.d/目录下创建qwen35-2b.conf文件:
[program:qwen35-2b] command=/usr/bin/python3 /path/to/your/app.py directory=/path/to/your/app user=your_user autostart=true autorestart=true startretries=3 stderr_logfile=/var/log/qwen35-2b.err.log stdout_logfile=/var/log/qwen35-2b.out.log environment=PYTHONUNBUFFERED="1"3.3 应用配置并启动
# 重新加载supervisor配置 sudo supervisorctl reread sudo supervisorctl update # 启动服务 sudo supervisorctl start qwen35-2b # 检查状态 sudo supervisorctl status qwen35-2b4. 端口监听与管理
4.1 检查端口占用情况
# 查看7860端口是否被监听 ss -ltnp | grep 7860 # 如果端口被占用,可以终止占用进程 sudo kill -9 $(sudo lsof -t -i:7860)4.2 配置Nginx反向代理(可选)
如果需要通过域名访问服务,可以配置Nginx反向代理:
server { listen 80; server_name your_domain.com; location / { proxy_pass http://127.0.0.1:7860; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; } }5. 日志分级管理
5.1 日志级别设置
在Python应用中配置日志级别:
import logging logging.basicConfig( level=logging.INFO, format='%(asctime)s - %(name)s - %(levelname)s - %(message)s', handlers=[ logging.FileHandler('/var/log/qwen35-2b.log'), logging.StreamHandler() ] )5.2 日志轮转配置
创建日志轮转配置文件/etc/logrotate.d/qwen35-2b:
/var/log/qwen35-2b.log { daily missingok rotate 7 compress delaycompress notifempty create 0640 your_user your_group sharedscripts postrotate /usr/bin/supervisorctl restart qwen35-2b >/dev/null 2>&1 || true endscript }5.3 日志查看命令
# 查看实时日志 tail -f /var/log/qwen35-2b.log # 查看错误日志 tail -n 100 /var/log/qwen35-2b.err.log # 按级别过滤日志 grep "ERROR" /var/log/qwen35-2b.log6. 健康检查与监控
6.1 健康检查接口
建议在应用中添加健康检查端点:
from flask import Flask, jsonify app = Flask(__name__) @app.route('/health') def health_check(): return jsonify({"status": "healthy"}), 2006.2 监控命令
# 检查服务状态 curl http://127.0.0.1:7860/health # 检查GPU使用情况 nvidia-smi # 检查内存使用 free -h7. 总结与最佳实践
通过以上步骤,我们已经完成了千问3.5-2B模型的生产环境部署,实现了:
- Supervisor自启动:确保服务意外退出后自动恢复
- 端口监听管理:正确处理端口冲突和访问控制
- 日志分级管理:便于问题排查和系统监控
生产环境最佳实践建议:
- 定期检查日志文件,设置日志轮转防止磁盘空间耗尽
- 配置监控告警,当服务异常时及时通知
- 定期备份重要数据和模型权重
- 保持系统更新,及时安装安全补丁
获取更多AI镜像
想探索更多AI镜像和应用场景?访问 CSDN星图镜像广场,提供丰富的预置镜像,覆盖大模型推理、图像生成、视频生成、模型微调等多个领域,支持一键部署。