草台班子的 MLOps

72 阅读1分钟

背景

30 人的机器人公司,5 人的算法团队,传统的视觉模型需要迭代,缺乏工程化的流程

什么是 MLOps

Image from Feishu.png

MLOps 是位于 ML、DevOps &数据工程之间的交叉点的一套实践,其目的是在生产中可靠有效地部署和维护 ML 系统从而提供模型迭代的效率

目标

集成开源工具,工程化模型迭代流程,提高效率

业务流程

Whiteboard Exported Image.png

系统架构

WhiteboardImage.png

组件

Label Studio

github.com/HumanSignal…

标注平台

FiftyOne

github.com/voxel51/fif…

数据集管理工具,最常用的功能是将多个数据集合并

MLflow

github.com/mlflow/mlfl…

用来做模型训练的管理,查看训练相关指标

Code-server

github.com/coder/code-…

VS Code in the browser,用来做配置文件的编辑,省去了大量的前端开发量

Glusterfs

github.com/gluster/glu…

分布式文件系统,存放数据集、训练配置、模型、任务日志、训练产物等

/mnt/glusterfs
  ├── config/
  ├── datasets/
  ├── models/
  └── tasks/
        └── {taskId}/
                ├── config/
                ├── logs/
                └── artifacts/

docker-py

github.com/docker/dock…

Docker SDK,用来管理训练容器

不同类型的训练任务触发不同的训练容器,容器里的训练脚本集成了 MLflow,训练日志会存到 /mnt/glusterfs/tasks/{taskId}/logs 目录下,通过 MLOps server 提供给用户查看

飞书 SDK

github.com/larksuite/o…

用来在流程的关键节点发送通知,如训练任务开始,训练任务完成

MLOps server

待捯饬好后放到 github 上

基于 github.com/fastapi/fas… 构建

通过 Label Studio, FiftyOne, MLflow 等SDK,将流程串联起来,提供 API 给前端

扩展

  • 引入 DVC 进行数据集版本管理
  • 支持模型部署,将目标模型转成 engine,推送至目标设备