机器学习(ML)的持续培训和部署

在靠近数据生成位置的Edge设备上运行机器学习(ML)推理,与在云中远程运行推理相比,具有几个重要优势。这些优势包括实时处理、更低的成本、在没有连接的情况下工作的能力以及增强的隐私性。然而,今天,在分布式边缘设备中实现端到端ML系统用于边缘推断和模型的持续部署可能非常麻烦,而且比集中式环境要困难得多。
与任何现实生活中的生产ML系统一样,最终目标是重复迭代和部署模型的连续循环。
这篇博文描述并展示了一个现实生活中的例子,我们如何创建一个完整的ML系统,不断地改进自己瓦洛海MLOps平台,JFrog Artifactory存储库管理器和JFrog连接IoT边缘设备管理平台。
实际用例:建筑工地安全应用
对于我们的用例示例,我们选择了一个突出边缘推断优势的实际应用程序:工地安全监控。
大多数法规要求施工现场的每个人都使用所需的安全设备,比如安全帽。这对工作场所管理者来说很重要,因为不遵守安全法规可能会导致伤害增加,保险费率提高,甚至罚款和罚款。

为了监控站点,我们在树莓派4设备上设置了智能摄像头,运行物体检测ML模型,可以识别被捕获的人是否戴着安全帽。
在这样的用例中,边推理的好处是显而易见的。建筑工地经常有不可靠的连接,检测必须在接近实时的情况下进行。在现场智能摄像头上运行模型,而不是在上游云中运行,确保正常运行时间,最大限度地减少连接问题或需求,同时解决可能的隐私和合规性问题。
下面描述了我们如何实现这个解决方案的细节。
解决方案概述:连续的ML培训管道
我们对边缘设备的持续培训管道设置包括两个主要元素:
- 瓦洛海MLOps平台负责对模型进行训练和再训练
- JFrog Artifactory和JFrog Connect负责将该模型部署到建筑工地的智能摄像机上。
培训和部署管道
解决方案组件
| 层 | hth华体会最新官方网站 | 函数 |
| 数据存储 | AWS S3 | 存储培训数据(图片和标签) 存储模型权重 |
| MLOps平台 | Valohai | 与S3和Git集成 在GPU实例上编排训练 用于推理的包模型 从舰队收集新的训练数据 |
| 构件库 | JFrog Artifactory | 存储和管理模型包的生命周期 服务Edge设备的下载请求 |
| 设备管理器 | JFrog连接 | 管理、监控和排除边缘设备故障 部署和安装模型到舰队的设备 |
| 边缘设备(年代) | 树莓派4 | 运行模型推断 |
训练和部署模型
在Valohai MLOps平台中,我们定义了一个典型的深度训练管道,分为三个步骤:
- 预处理
- 火车
- 部署
预处理和训练步骤是你从深度学习机器视觉管道中所期望的。我们主要在预处理中调整图像的大小,训练步骤使用强大的GPU云实例重新训练YOLOv5s模型。
更有趣的步骤是部署步骤,我们将Valohai平台与JFrog DevOps平台.的valohai.yaml是一个配置文件,它定义各个步骤和连接这些步骤的管道。下面是我们的示例deployment-jfrog在YAML中定义的步骤。
代码片段:valohai.yaml
-步骤:名称:deployment-jfrog形象:python: 3.9命令:- cp / valohai /输入/模型/ weights.pt / valohai /仓库/模型/ yolov5s.pt - zip - r / tmp / model.zip / valohai /仓库/模型——旋度> - h " X-JFrog-Art-Api: $ JFROG_API_KEY " > - t / tmp / model.zip“$ JFROG_REPOSITORY / model.zip”——python jfrog-connect.py >——flow_id = f - c4e4 - 0733 > app_name = default_app >——项目= valohaitest >——组=生产输入:-名称:模型默认值:基准:/ / 017 f799a-dc58-ea83-bd7f-c977798f3b26可选:—name: JFROG_REPOSITORY optional: true—name: JFROG_API_KEY optional: true
让我们看看部署步骤是如何工作的。
首先,部署步骤构建一个包含模型+权重的zip存档,然后将其上传到JFrog Artifactory。Valohai为该步骤提供了来自前一个训练步骤的权重作为输入文件和所需的JFROG_API_KEY而且JFROG_REPOSITORY秘密作为环境变量。
下一步启动更新流程,通过调用将新模型交付给所有智能相机JFrog连接API.
我们已经建立了一个Valohai管道,该管道将模型上传到JFrog Artifactory,并在JFrog连接服务,该服务提供了整个智能相机车队的新模型。
瓦洛海的培训管道
模型部署过程表示为JFrog连接更新流。更新流是需要在边缘设备中发生的一系列动作。使用JFrog连接的拖放界面,我们创建了一个更新流程,其中包括更新智能相机中模型所需的步骤。这些步骤是:
- 从JFrog Artifactory下载模型,
- 运行脚本来安装模型,以及
- 重新启动设备。
如果其中一步失败了,JFrog连接将设备回滚到其先前的状态,因此设备总是以已知状态结束。了解更多JFrog连接更新流.
使用JFrog Connect创建更新流
开始使用JFrog Connect免费
持续的培训
一旦模型部署到整个边缘设备群,我们的工作还没有完成。摄像头全天候收集潜在的训练数据,并遇到有趣的边缘情况。
在这个阶段,我们需要创建一个管道,每周从智能相机中收集标记的图像,并将它们上传到S3桶中,以便手动重新标记,并最终用于重新训练模型。
数据采集管道
计划管道如何工作:
- 使用AWS STS创建临时凭证,并对S3桶进行只写访问
- 用临时密钥在JFrog Artifactory中升级上传脚本
- 触发JFrog连接更新流,在设备群中运行上传脚本
- 每个设备上传一批新的镜像到S3桶中
由设备群上传的新训练数据是由人类使用Sama或Labelbox等平台手动标记的,这些平台使用我们的上传S3桶作为源,一旦数据被标记,另一个S3桶作为目标。
注意:庞大的机群会产生太多的数据,无法手动标记,而且设备本身可能很快就会耗尽空间。幸运的是,像YOLOv5这样的机器视觉模型通常有一个置信度指标和预测标签。我们过滤设备上存储的训练数据,使用一个置信度阈值,优先考虑边缘情况。
结论
总之,我们展示了如何在生产中跨一系列边缘设备反复迭代和部署ML模型的连续循环。瓦洛海MLOps平台,结合JFrog DevOps平台的Artifactory和Connect,使我们能够实现这一目标,并创建一个不断自我改进的ML系统。
准备好自己试试了吗?开始免费或书的演示瓦洛海MLOps平台而且JFrog连接在边缘设备中持续训练和部署您的ML模型!
