随着数字化和计算能力的发展,机器学习(Machine Learning)技术在提高企业生产力方面所涌现的潜力越来越被大家所重视,然而很多机器学习的模型及应用在实际的生产环境并未达到预期,大量的ML项目被证明是失败的。从机器学习的发展历程来看,早期ML社区广泛关注的是ML模型的构建,确保模型能在预定义的测试数据集上取得较好的表现,但对于如何让模型从实验室走向用户的桌面,并未大家所关注。
机器学习的生命周期涉及众多的流程,如数据的获取、数据准备、模型训练、模型的调整、模型的部署、模型监控、模型的可解释性等,不同的流程涉及不同的流程工具和人员,需要跨团队的协作和交接,从数据工程到数据科学再到ML工程。在此背景下,如何保障生产中以下诸多目标是我们亟待解决的。譬如实现更快的模型开发、交付更高质量的 ML 模型以及更快的部署和生产;同时监督、控制、管理和监视数千个模型,以实现持续集成、持续交付和持续部署;加强对模型的监管审查,提高模型透明度,确保更好地遵守组织或行业的政策。
尤其是LLM模型时代,伴随着AGI的到来,机器学习模型的规模和复杂性也在不断增加。这意味着将这些模型部署到生产环境的难度也在上升,需要更加专业化的工具和方法来管理和监控。
什么是MLOps?
MLOps(Machine Learning Operations)是一种将机器学习(ML)模型整合到生产环境中的实践,目的是确保模型在生产过程中的有效性和可靠性。通过采用 MLOps 方法,数据科学家和机器学习工程师可以协作并加快模型开发和生产的步伐,方法是实施持续集成和部署 (CI/CD) 实践,并对 ML 模型进行适当的监控、验证和治理。使得机器学习模型从实验室走向生产环境,加速了机器学习的落地和商业化。
与DevOps的区别
MLOps 是一组特定于机器学习项目的工程实践,借鉴了软件工程中更广泛采用的 DevOps 原则。 DevOps 为交付应用程序带来了一种快速、持续迭代的方法,而 MLOps 则借用了相同的原则将机器学习模型投入生产。 在这两种情况下,结果都是更高的软件质量、更快的补丁和发布以及更高的客户满意度。
MLOps 和 DevOps 都是旨在简化和自动化软件应用程序开发和部署的方法。 DevOps 专注于一般软件开发流程和 IT 运营,但 MLOps 专门针对机器学习应用程序的独特挑战和复杂性。 但这两种方法都旨在提高软件应用程序开发、部署和管理中的协作、自动化和效率。
MLOps工作流程
数据准备和特征工程 - 通过创建可重现、可编辑和可共享的数据集、表格和可视化,为机器学习生命周期迭代探索、共享和准备数据。迭代地转换、聚合和删除重复数据以创建改进的特征。 重要的是,利用特征存储,使特征在数据团队之间可见和共享。
模型训练和调优 - 使用流行的开源库来训练和提高模型性能。 作为一种更简单的替代方法,使用自动化机器学习工具(例如 AutoML)自动执行试运行并创建可审查和可部署的代码。
模型管理 - 跟踪模型沿袭、模型版本,并管理模型工件和整个生命周期的转换。 借助 MLflow 等开源 MLOps 平台,跨 ML 模型发现、共享和协作。
模型推理和服务 - 管理模型刷新频率、推理请求时间以及测试和 QA 中的类似生产细节。 使用 repos 和 orchestrators(借用 devops 原则)等 CI/CD 工具来自动化预生产管道。
模型部署和监控 - 自动化权限和集群创建以生产注册模型。 启用 REST API 模型端点。
自动模型重训练 - 收集模型监控的指标信息针对性对模型进行重新训练
MLOps基础设施和工具
MLOps(机器学习运维)是一种方法,旨在加速机器学习应用程序的开发、部署和维护。为了实现这一目标,MLOps使用了许多基础设施和工具。
数据管道管理:用于整理、清洗和转换数据的工具,如 Apache NiFi, Luigi 和 Apache Airflow。
版本控制:用于跟踪代码、数据和模型变化的工具,如 Git, DVC (Data Version Control) 和 MLflow。
模型训练:用于在多种硬件环境下训练模型的工具和平台,如 TensorFlow, PyTorch, Keras 和 Apache MXNet。
模型验证和测试:用于评估模型性能和准确性的工具,如 TensorFlow Extended (TFX) 和 MLflow。
模型部署:用于将模型部署到生产环境的工具和平台,如 TensorFlow Serving, NVIDIA Triton Inference Server, AWS SageMaker 和 Microsoft Azure Machine Learning。
模型监控:用于实时跟踪模型性能和健康状况的工具,如 Grafana, Prometheus 和 ELK Stack (Elasticsearch, Logstash, Kibana)。
自动化和持续集成/持续部署(CI/CD):用于自动化机器学习工作流程的工具,如 Jenkins, GitLab CI/CD 和 GitHub Actions。
容器化和编排:用于简化部署和管理的容器技术,如 Docker 和 Kubernetes。
云服务提供商:提供各种机器学习服务和基础设施的云平台,如 Amazon Web Services (AWS), Microsoft Azure 和 Google Cloud Platform (GCP)。
这些基础设施和工具的目标是帮助数据科学家、机器学习工程师和运维团队更有效地协作,以便更快地开发、部署和维护机器学习应用程序。
为什么要使用星鲸科技(starwhale.ai)这样的专业MLOps平台来进行机器学习实践。
Starwhale是一个服务于模型训练师和机器学习研发人员的开源MLOps平台,可以非常容易的构建、部署和维护ML系统,提高AI从业者、团队和企业的合作和工作效率,
模型评估
Starwhale 从模型评估开始 MLOps 之旅,模型评估在机器学习中起着重要作用。模型评估量化了模型在测试数据集上的性能。评估指标有助于数据科学家了解机器学习模型的性能。因此,模型的弱点和优点是众所周知的。通过比较模型的指标,可以选择并发布表现最佳的模型。
Starwhale支持多种类型的模型评估,评测结果可视化,简化模型评估过程。
1、多评估结果并行对比,提示指标变化情况,辅助模型调优。
2、可视化的评估结果,支持自定义图标可视化展示评测结果
3、Starwhale拥有组件化的可视化工具,支持嵌入页面,满足多种模型评测场景的需求。
4、搜索和筛选直观易用,同时支持SQL式高级搜索,符合研发人员习惯,提升搜索体验。
数据管理
Starwhale的数据集管理功能十分强大,支持多种格式数据可视化和版本管理,关注数据理解和洞察,提升标注效率。
1、主流视觉、音视频、NLP等数据及标注信息在线可视化
2、线性记录数据集版本,支持自定义版本标签,支持版本回退。
3、通过SDK批量管理数据标签,提高标注效率。
模型管理
Starwhale关注模型迭代和调试过程管理,解决复现和追溯痛点。
1、灵活性:Starwhale 模型可以剥离冗余信息以获得更小的包,支持与生产团队的协作,而无需显示 python 推理代码以避免危害。
2、评测结果可视化:通过组件化的可视化工具,更显性的展示评测结果,便于理解和分析数据
3、版本差异可视化:支持不同版本模型对比,洞察代码变化和影响,辅助调试。
4、在线预测快:用小批量数据验证或调试模型,操作方便,效果直观。
环境管理
Starwhale关注模型开发和评测体验,降低开发和调试门槛
支持一键将运行时环境共享给他人使用,支持将运行时环境保存为镜像,方便分享和使用。
支持多种主流环境,关注模型开发和评测体验,降低开发和调试门槛。