M2LOrder情感分析DevOps:GitHub Actions自动构建镜像+推送到私有Registry
1. 项目概述
M2LOrder是一个基于.opt模型文件的情绪识别与情感分析服务,提供HTTP API和轻量级WebUI两种访问方式。该系统能够分析文本中的情感倾向,识别happy、sad、angry等多种情感状态,并给出置信度评分。
2. 服务架构与配置
2.1 基础服务信息
| 配置项 | 默认值 | 说明 |
|---|---|---|
| 项目路径 | /root/m2lorder | 主程序目录 |
| 模型目录 | /root/ai-models/buffing6517/m2lorder | 模型存储位置 |
| API端口 | 8001 | RESTful API服务端口 |
| WebUI端口 | 7861 | 图形界面服务端口 |
| 服务器IP | 0.0.0.0 | 监听地址 |
2.2 技术栈组成
- 核心框架:FastAPI + Uvicorn
- Web界面:Gradio构建
- 进程管理:Supervisor
- 模型解析:自定义.opt文件解析器
- 环境管理:Miniconda
3. 自动化部署方案
3.1 GitHub Actions工作流配置
name: Build and Push M2LOrder Docker Image on: push: branches: [ main ] paths: - 'docker/**' - 'app/**' - 'requirements.txt' jobs: build-and-push: runs-on: ubuntu-latest steps: - uses: actions/checkout@v3 - name: Log in to private registry uses: docker/login-action@v2 with: registry: your.private.registry username: ${{ secrets.REGISTRY_USER }} password: ${{ secrets.REGISTRY_PASSWORD }} - name: Build and push uses: docker/build-push-action@v4 with: context: . file: ./docker/Dockerfile push: true tags: | your.private.registry/m2lorder:latest your.private.registry/m2lorder:${{ github.sha }}3.2 Dockerfile示例
FROM python:3.11-slim WORKDIR /app # 安装系统依赖 RUN apt-get update && apt-get install -y \ supervisor \ && rm -rf /var/lib/apt/lists/* # 复制项目文件 COPY . . # 安装Python依赖 RUN pip install --no-cache-dir -r requirements.txt # 配置Supervisor COPY supervisor/ /etc/supervisor/conf.d/ # 暴露端口 EXPOSE 8001 7861 # 启动命令 CMD ["supervisord", "-n", "-c", "/etc/supervisor/supervisord.conf"]4. 服务部署与管理
4.1 启动方式对比
| 方式 | 命令 | 适用场景 |
|---|---|---|
| 启动脚本 | ./start.sh | 快速测试 |
| Supervisor | supervisord -c supervisor/supervisord.conf | 生产环境 |
| 手动启动 | 分别启动API和WebUI | 开发调试 |
4.2 服务监控命令
# 查看服务状态 supervisorctl -c /root/m2lorder/supervisor/supervisord.conf status # 查看API日志 tail -f /root/m2lorder/logs/supervisor/api.log # 查看WebUI日志 tail -f /root/m2lorder/logs/supervisor/webui.log5. 模型管理与优化
5.1 模型分类策略
| 模型类型 | 大小范围 | 数量 | 特点 |
|---|---|---|---|
| 轻量级 | 3-8MB | 17个 | 快速响应 |
| 中等 | 15-113MB | 11个 | 平衡性能 |
| 大型 | 114-771MB | 5个 | 高精度 |
| 超大 | 619-716MB | 61个 | 专业场景 |
| 巨型 | 1.9GB | 1个 | 最高精度 |
5.2 模型选择建议
# 示例:根据场景自动选择模型 def select_model(priority='speed'): if priority == 'speed': return 'A001' # 3MB轻量模型 elif priority == 'balance': return 'A021' # 7MB平衡模型 else: return 'A204' # 619MB高精度模型6. API开发指南
6.1 核心API端点
| 端点 | 方法 | 描述 |
|---|---|---|
/health | GET | 服务健康检查 |
/models | GET | 获取模型列表 |
/predict | POST | 单条情感预测 |
/predict/batch | POST | 批量情感预测 |
/stats | GET | 服务统计信息 |
6.2 请求示例
# 单条预测请求 curl -X POST http://localhost:8001/predict \ -H "Content-Type: application/json" \ -d '{ "model_id": "A001", "input_data": "I'm excited about the new project!" }'7. WebUI使用指南
7.1 主要功能区域
- 模型选择区:下拉选择不同大小的模型
- 单条分析区:输入文本获取即时分析结果
- 批量分析区:处理多行文本输入
- 结果展示区:彩色标签显示情感分类
7.2 情感颜色编码
| 情感 | 颜色 | HEX值 |
|---|---|---|
| happy | 绿色 | #4CAF50 |
| sad | 蓝色 | #2196F3 |
| angry | 红色 | #F44336 |
| neutral | 灰色 | #9E9E9E |
| excited | 橙色 | #FF9800 |
| anxious | 紫色 | #9C27B0 |
8. 性能优化建议
8.1 缓存策略配置
# 在config/settings.py中配置 CACHE_TTL = 3600 # 1小时缓存 CACHE_MAX_SIZE = 1000 # 最大缓存条目8.2 并发处理设置
# Uvicorn启动参数优化 uvicorn.run( app, host="0.0.0.0", port=8001, workers=4, # 根据CPU核心数调整 limit_concurrency=100 )9. 总结与后续规划
通过GitHub Actions实现M2LOrder服务的自动化镜像构建和私有Registry推送,我们建立了一套完整的DevOps流程。这套方案具有以下优势:
- 自动化:代码变更自动触发构建流程
- 可追溯:每个镜像都有唯一标签
- 一致性:消除环境差异导致的问题
- 高效部署:镜像可快速部署到生产环境
未来计划增加:
- 模型版本管理功能
- 自动扩缩容机制
- 更详细的使用分析报表
获取更多AI镜像
想探索更多AI镜像和应用场景?访问 CSDN星图镜像广场,提供丰富的预置镜像,覆盖大模型推理、图像生成、视频生成、模型微调等多个领域,支持一键部署。