机器学习工作流中存在多个痛点:
首先,追踪机器学习实验非常困难。由于机器学习算法中有许多可配置参数,因此在进行实验时,很难追踪到哪些参数、代码版本及数据版本会导致特定的结果。
其次,机器学习实验的结果难以复现。没有统一的方法来打包实验环境,即使使用相同的代码、参数和数据,也很难重现实验结果,因为结果还受到代码库的影响。
最后,缺乏标准化的方式来管理模型的整个生命周期。算法团队通常会创建大量的模型,这些模型需要一个中央平台来进行管理,包括模型版本的阶段、注释等元数据信息,以及模型由哪些代码、数据和参数生成,还有模型的性能指标。同时,部署这些模型也没有统一的标准方法。
MIflow正是为了应对上述机器学习工作流中的痛点而设计的。它通过简单的API实现了实验参数追踪、环境打包、模型管理和模型部署等功能。
MIflow追踪功能可以帮助记录实验参数、模型性能指标以及各种相关文件。在进行机器学习实验时,通常需要记录一些参数配置和模型性能指标,MIflow可以自动化这个过程。它不仅能够记录参数,还能记录任意文件,包括模型、图片和源代码等。
例如,使用MIflow的startrun函数可以开启一次实验;logparam函数可以记录模型的参数配置;logmetric函数可以记录模型的性能指标,包括标量和向量的性能指标;logmodel函数可以记录训练好的模型;log_artifact函数可以记录任何想要记录的文件。
MIflow项目管理功能可以根据代码规范打包训练代码,并指定执行环境、入口和参数等信息,以便复现实验结果。这种规范化的打包方式有助于代码的共享和平台迁移。
MIflow项目包含两个重要的文件:content.yaml和MLproject。content.yaml文件指定了项目的运行环境,包括所有依赖的代码库及其版本;MLproject文件则指定了运行环境,例如conda.yaml,它指定了运行的入口以及相应的参数,如alpha和l1_ratio。
此外,MIflow还提供了命令行工具,使用户可以轻松运行MIflow项目。例如,打包好项目并上传到git仓库后,用户只需使用mIflow run命令即可执行项目,并通过-P传入参数。
MIflow支持以统一的方式打包、记录和部署多种算法框架的模型。训练完成后,可以使用MIflow的log_model函数将模型记录下来,MIflow会自动将模型存储到本地或OSS上。用户可以在MIflow WebUI上查看模型与代码版本、参数和性能指标之间的关系,以及模型的存储路径。
另外,MIflow还提供了API用于部署模型。使用mIflow models serve命令部署模型后,用户可以通过rest API调用模型并获得预测结果。
MIflow不仅可以存储模型,还提供了WebUI来管理模型。WebUI界面上展示了模型的版本和所处的阶段,模型的详情页显示了模型的描述、标签和schema。模型的标签可用于检索和标记模型,schema用于表示模型输入和输出的格式。此外,MIflow还建立了模型与其运行环境、代码和参数之间的关系,即模型的血缘。
MIflow的四个核心功能有效地解决了机器学习工作流中的痛点,具体来说:
接下来将介绍如何使用MIflow和DDI搭建机器学习平台来管理机器学习的生命周期。
在架构图中可以看到,主要组件包括DDI集群、OSS和ECS。DDI集群负责机器学习训练任务,需要启动一台ECS来搭建MIflow的跟踪服务器,以提供UI界面。此外,还需要在ECS上安装MySQL来存储训练参数、性能指标和标签等元数据。OSS用于存储训练数据和模型源代码等。
部署要点请参考演示视频:https://developer.aliyun.com/live/248988
希望这些内容对你有所帮助。