一些MLOps的学习笔记

2025-02-10

前言:说实话之前一直是 PyTorch + FastAPI 快速落地,还没有真正接触过 MLOps 的概念。
从美团的朋友那知道他们数据分析的时候用 TorchScript,把模型导出成 TorchScript 格式,然后用 C++部署,以达到很快的推理速度。
之前做研究生课题的时候,也看过一些 tensorflow lite,然后最近看了些 transformer.js 这类边缘计算的东西。
好像最近很流行 Serving 的概念,也是我一直想接触的。

MLOps 入门指南

MLOps(Machine Learning Operations)是将机器学习模型应用于生产环境的一整套实践,涉及数据管理、模型开发、模型管理、持续集成与测试(CI/CD)以及监控与优化。


数据管理:构建可靠的数据基础

数据质量直接影响模型表现,因此需要对数据进行版本控制、存储管理和标注。

工具/技术:

  • DVC (Data Version Control):用于数据集和标注文件的版本管理,与 Git 配合使用。
  • Label Studio:支持多种格式的数据标注工具(COCO/YOLO 等)。
  • S3:用于存储大规模数据集,可选择云端或本地对象存储。

数据管理流程:

  1. 使用 DVC 进行数据集和标注文件的版本控制,确保可追踪性。
  2. 使用 Label Studio 进行数据标注,并导出合适的格式。
  3. 存储数据至 S3 或本地存储,提高数据的可访问性和安全性。

模型开发:高效迭代与实验管理

在开发阶段,重点是建立稳定的训练流程,并记录实验细节。

工具/技术:

  • PyTorch:支持高效训练,包括混合精度和分布式训练。
  • MLflow/W&B:用于超参数调优、模型指标记录和可视化。
  • AWS SageMaker:提供云端训练能力,提高计算资源的利用率。

开发流程:

  1. 组织训练代码,确保模块化、可复用。
  2. 使用 MLflow 或 W&B 记录实验过程,便于复现。
  3. 在云端(如 AWS SageMaker)进行大规模训练,优化计算资源。

模型管理:存储、版本控制与优化

模型管理涉及模型的存储、版本控制、格式优化及性能提升。

工具/技术:

  • MLflow Model Registry:用于存储和管理不同版本的模型。
  • TensorBoard:可视化训练过程,分析模型收敛情况。
  • ONNX/TensorRT:用于导出优化模型,提高推理性能。
  • Quantization & TorchScript:优化模型大小与推理速度。

模型管理流程:

  1. 使用 MLflow Model Registry 进行模型版本控制,方便管理多个版本。
  2. 通过 TensorBoard 监测训练情况,及时调整超参数。
  3. 导出 ONNX 或 TensorRT 格式,提升推理效率。
  4. 使用量化或 TorchScript 进行优化,减少计算开销。

持续集成与测试 (CI/CD):自动化与部署

在生产环境中,部署和维护模型需要自动化测试与持续集成。

工具/技术:

  • GitHub Actions:用于自动化代码验证和模型测试。
  • AWS SageMaker:支持端到端的模型训练与部署。
  • Docker + Kubernetes:实现容器化部署,确保可扩展性。
  • TorchServe:官方 PyTorch 模型服务化方案。
  • FastAPI + PyTorch:轻量级 API 方案。
  • TensorFlow Serving:适用于 TensorFlow 生态。

CI/CD 方案:

  1. 使用 GitHub Actions 进行代码验证和测试,避免错误。
  2. Docker 容器化模型,确保一致的环境。
  3. Kubernetes 进行模型部署,支持高可用性。
  4. 使用 TorchServe 或 FastAPI 作为推理 API

监控与持续优化

部署后,需要持续监控模型的表现,确保服务稳定运行。

工具/技术:

  • TensorBoard:用于可视化训练过程。
  • Prometheus + Grafana:监控 API 性能和系统状态。

监控与优化流程:

  1. TensorBoard 监控模型训练情况,及时调整策略。
  2. Prometheus 采集推理 API 性能指标,分析运行状况。
  3. Grafana 可视化系统状态,提高可观测性。

结语

MLOps 使机器学习工程更加高效、可复现,并能更顺利地从实验走向生产。

关键点总结:

  1. 数据管理要有版本控制,保障数据的稳定性。
  2. 实验管理要详细记录,提高复现性和对比分析能力。
  3. 模型管理要清晰优化,确保高效推理和维护。
  4. CI/CD 自动化流程,让模型上线更可靠。
  5. 持续监控与优化,确保模型长期稳定运行。