一些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:用于存储大规模数据集,可选择云端或本地对象存储。
数据管理流程:
- 使用 DVC 进行数据集和标注文件的版本控制,确保可追踪性。
- 使用 Label Studio 进行数据标注,并导出合适的格式。
- 存储数据至 S3 或本地存储,提高数据的可访问性和安全性。
模型开发:高效迭代与实验管理
在开发阶段,重点是建立稳定的训练流程,并记录实验细节。
工具/技术:
- PyTorch:支持高效训练,包括混合精度和分布式训练。
- MLflow/W&B:用于超参数调优、模型指标记录和可视化。
- AWS SageMaker:提供云端训练能力,提高计算资源的利用率。
开发流程:
- 组织训练代码,确保模块化、可复用。
- 使用 MLflow 或 W&B 记录实验过程,便于复现。
- 在云端(如 AWS SageMaker)进行大规模训练,优化计算资源。
模型管理:存储、版本控制与优化
模型管理涉及模型的存储、版本控制、格式优化及性能提升。
工具/技术:
- MLflow Model Registry:用于存储和管理不同版本的模型。
- TensorBoard:可视化训练过程,分析模型收敛情况。
- ONNX/TensorRT:用于导出优化模型,提高推理性能。
- Quantization & TorchScript:优化模型大小与推理速度。
模型管理流程:
- 使用 MLflow Model Registry 进行模型版本控制,方便管理多个版本。
- 通过 TensorBoard 监测训练情况,及时调整超参数。
- 导出 ONNX 或 TensorRT 格式,提升推理效率。
- 使用量化或 TorchScript 进行优化,减少计算开销。
持续集成与测试 (CI/CD):自动化与部署
在生产环境中,部署和维护模型需要自动化测试与持续集成。
工具/技术:
- GitHub Actions:用于自动化代码验证和模型测试。
- AWS SageMaker:支持端到端的模型训练与部署。
- Docker + Kubernetes:实现容器化部署,确保可扩展性。
- TorchServe:官方 PyTorch 模型服务化方案。
- FastAPI + PyTorch:轻量级 API 方案。
- TensorFlow Serving:适用于 TensorFlow 生态。
CI/CD 方案:
- 使用 GitHub Actions 进行代码验证和测试,避免错误。
- Docker 容器化模型,确保一致的环境。
- Kubernetes 进行模型部署,支持高可用性。
- 使用 TorchServe 或 FastAPI 作为推理 API。
监控与持续优化
部署后,需要持续监控模型的表现,确保服务稳定运行。
工具/技术:
- TensorBoard:用于可视化训练过程。
- Prometheus + Grafana:监控 API 性能和系统状态。
监控与优化流程:
- TensorBoard 监控模型训练情况,及时调整策略。
- Prometheus 采集推理 API 性能指标,分析运行状况。
- Grafana 可视化系统状态,提高可观测性。
结语
MLOps 使机器学习工程更加高效、可复现,并能更顺利地从实验走向生产。
关键点总结:
- 数据管理要有版本控制,保障数据的稳定性。
- 实验管理要详细记录,提高复现性和对比分析能力。
- 模型管理要清晰优化,确保高效推理和维护。
- CI/CD 自动化流程,让模型上线更可靠。
- 持续监控与优化,确保模型长期稳定运行。