0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

机器学习模型部署到ML项目的过程

汽车玩家 来源:AI公园 作者:Rahul Agarwal 2020-05-04 11:56 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

导读

为什么我们的机器学习项目会失败?

创造一个大的机器学习系统是一门艺术。

在构建一个大的机器学习系统时,有很多事情需要考虑。但作为数据科学家,我们常常只担心项目的某些部分。

但是我们是否考虑过一旦我们拥有了模型,我们将如何部署它们?

我见过许多 ML 项目,其中许多项目注定要失败,因为它们从一开始就没有一个固定的生产计划。

这篇文章是关于一个成功的 ML 项目的过程需求 —— 一个进入生产的项目。

1. 在开始的时候建立基线

你并不需要用模型来获得基线结果。

假设我们将使用 RMSE 作为我们的时间序列模型的评估指标。我们在测试集上对模型进行了评估,RMSE 为 3.64。

3.64 是个好 RMSE 吗?我们怎么知道?我们需要一个基线 RMSE。

这可能来自当前使用的用于相同任务的模型。或者使用一些非常简单的启发式。对于时间序列模型,需要打败的基线是最后一天的预测。即,预测前一天的数字。

如果是图像分类任务,取 1000 个有标签的样本。而人类的准确性可以作为你的基线。如果一个人不能在任务中获得 70%的预测精度,那么如果你的模型达到类似的水平,你总是可以考虑将流程自动化。

学习:在你创建模型之前,试着了解你将要得到的结果。设定一些不切实际的期望只会让你和你的客户失望。

2. 持续集成是前进的方向

你现在已经创建了你的模型。它在本地测试数据集上的性能比基线/当前模型要好。我们应该继续前进吗?

我们有两个选择:

进一步改进我们的模型,这是一个无止境的循环。

在生产环境中测试我们的模型,得到更多关于可能出错的信息,然后使用持续集成来改进我们的模型。

我支持第二种方法。Andrew Ng 在 Coursera 上的第三门课,“Deep Learning Specialization”中的“Structuring Machine learning”中说:

“不要一开始就试图设计和构建完美的系统。相反,应该快速地建立和训练一个基本的系统 —— 也许只需要几天的时间。即使基本的系统远远不是你能建立的“最好”的系统,检查基本的系统是有价值的:你会很快找到一些线索,告诉你在哪些方面最值得投入你的时间。

完成比完美更好。

学习:如果你的新模型比当前生产中的模型更好,或者你的新模型比基线更好,那么等待投入生产是没有意义的。

3. 你的模型可能会进入生产

你的模型是否优于基线?它在本地测试数据集上表现得更好,但是它真的能在整体上工作得很好吗?

为了测试你的模型优于现有模型的假设的有效性,你可以设置一个A/B 测试。一些用户(测试组)看到来自你的模型的预测,而一些用户(控制组)看到来自前一个模型的预测。

事实上,这是部署模型的正确方式。你可能会发现你的模型并没有看起来那么好。

错了并不是真的错,错的是没有预料到我们可能会错。

很难指出你的模型在生产环境中表现不佳的真正原因,但一些原因可能是:

你可能会看到实时的数据与训练数据有很大的不同。

或者你没有正确地完成预处理 pipeline。

或者你没有正确地衡量 performance。

或者你的实现中有一个 bug。

学习:不要全面投入生产。A/B 测试永远是前进的好方法。准备一些可以依靠的东西(可能是一个更老的模型)。总有一些东西会出问题,这是你无法预料的。

4. 你的模型可能不会投入生产中

我创建了这个令人印象深刻的 ML 模型,它提供了 90%的准确性,但它需要大约 10 秒钟来获取预测。

**这样可接受吗?**对于某些用例可能是,但实际上不是。

在过去,有许多 Kaggle 竞赛的获胜者最终创造了非常大的模型集成,占据了排行榜的榜首。下面是一个例子模型,它曾在 Kaggle 上赢得 Otto 分类挑战:

在Level1上用了33个模型和8种特征工程

另一个例子是 Netflix 百万美元推荐引擎挑战。由于涉及的工程成本,Netflix 团队最终没有使用获奖解决方案。

那么,如何让你的模型在机器上既准确又简单呢?

机器学习模型部署到ML项目的过程

Teacher — Student模型

这就引出了 Teacher-Student 模型或“知识蒸馏”的概念。在知识蒸馏中,我们在一个更大的已经训练好的教师模型上训练一个更小的学生模型。

这里我们使用来自教师模型的软标签/概率,并将其作为学生模型的训练数据。

关键是,老师输出类别概率 —— “软标签”而不是“硬标签”。例如,一个水果分类器可能会说“Apple 0.9, Pear 0.1”而不是“Apple 1.0, Pear 0.0”。为什么要这样呢?因为这些“软标签”比原来的标签信息更丰富——告诉学生,是的,这个苹果确实有点像梨。学生模型通常可以非常接近教师水平的表现,即使参数少了 1-2 个数量级!

学习:有时,我们的预测时间很有限,所以我们想要一个更轻的模型。我们可以尝试构建更简单的模型,或者尝试对这样的用例使用知识蒸馏。

5. 周期性的维护和反馈

世界不是恒定的,你的模型权重也不是恒定的

我们周围的世界正在迅速变化,两个月前可能适用的东西现在可能已经不适用了。在某种程度上,我们建立的模型是对世界的反映,如果世界在变化,我们的模型应该能够反映这种变化。

机器学习模型部署到ML项目的过程

模型性能通常随时间而下降。

由于这个原因,我们必须在一开始就考虑将我们的模型升级作为维护的一部分

维护周期的频率完全取决于你试图解决的业务问题。在一个广告预测系统中,用户往往变化无常,购买模式不断出现,需要相当高的频率。而在评论情绪分析系统中,由于语言本身的结构变化不是很大,所以频率不需要那么高。

机器学习模型部署到ML项目的过程

我还必须要承认反馈回路在机器学习系统中的重要性。假设你用猫狗分类器预测了一个的图像是狗,但是概率很低。我们能从这些低置信度的例子中学到什么吗?你可以将其发送到手动检查,以检查它是否可以用于重新训练模型。通过这种方式,我们可以在它不确定的样本上训练分类器。

学习:在考虑生产时,提出使用反馈来维护和改进模型的计划。

总结

在考虑将模型投入生产之前,我发现这些事情是很重要的。

虽然这并不是你需要考虑的事情和可能出错的事情的详尽列表,但它无疑可以作为你下次创建机器学习系统时的思想食粮。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 机器学习
    +关注

    关注

    66

    文章

    8541

    浏览量

    136236
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    RA8P1部署ai模型指南:从训练模型部署 | 本周六

    在嵌入式边缘AI中,如何把“训练好的模型”稳定地“跑在板子上”,决定了项目能否落地。我们带你基于RA8P1平台,跑通从数据准备、模型训练、量化转换,工程
    的头像 发表于 11-20 18:06 1639次阅读
    RA8P1<b class='flag-5'>部署</b>ai<b class='flag-5'>模型</b>指南:从训练<b class='flag-5'>模型</b><b class='flag-5'>到</b><b class='flag-5'>部署</b> | 本周六

    vision board部署模型openmv的代码导致连接超时怎么解决?

    在env终端中勾选了tiflte support后烧录mdk板子上后就开始显示连接不到 无法部署模型
    发表于 09-19 07:59

    使用aicube进行目标检测识别数字项目的时候,在评估环节卡住了,怎么解决?

    使用aicube进行目标检测识别数字项目的时候,前面一切正常 但是在评估环节卡住了,一直显示正在测试,但是完全没有测试结果, 在部署模型后在k230上运行也没有任何识别结果 期待结果和实际结果
    发表于 08-13 06:45

    3Dfindit 提供的数字立方体模型为研究项目的可视化提供了支持

    作为学习项目的一部分,罗伊特林根教育大学的学生们在比辛根集中营纪念地的博物馆中使用 3Dfindit 动画立方体模型进行了学习。作为历史教学研讨会的一部分,学生们研究了巴登-符腾堡州
    发表于 08-01 14:36

    超小型Neuton机器学习模型, 在任何系统级芯片(SoC)上解锁边缘人工智能应用.

    Neuton 是一家边缘AI 公司,致力于让机器 学习模型更易于使用。它创建的模型比竞争对手的框架小10 倍,速度也快10 倍,甚至可以在最先进的边缘设备上进行人工智能处理。在这篇博文
    发表于 07-31 11:38

    边缘计算中的机器学习:基于 Linux 系统的实时推理模型部署与工业集成!

    你好,旅行者!欢迎来到Medium的这一角落。在本文中,我们将把一个机器学习模型(神经网络)部署边缘设备上,利用从ModbusTCP寄存器
    的头像 发表于 06-11 17:22 783次阅读
    边缘计算中的<b class='flag-5'>机器</b><b class='flag-5'>学习</b>:基于 Linux 系统的实时推理<b class='flag-5'>模型</b><b class='flag-5'>部署</b>与工业集成!

    如何使用Docker部署模型

    随着深度学习和大模型的快速发展,如何高效地部署这些模型成为了一个重要的挑战。Docker 作为一种轻量级的容器化技术,能够将模型及其依赖环境
    的头像 发表于 05-24 16:39 801次阅读

    NanoEdge AI Studio 面向STM32开发人员机器学习ML)技术

    NanoEdge™ AI Studio*(NanoEdgeAIStudio)是一种新型机器学习ML)技术,可以让终端用户轻松享有真正的创新成果。只需几步,开发人员便可基于最少量的数据为其项目
    的头像 发表于 04-22 11:09 981次阅读
    NanoEdge AI Studio 面向STM32开发人员<b class='flag-5'>机器</b><b class='flag-5'>学习</b>(<b class='flag-5'>ML</b>)技术

    Raspberry Pi Pico 2 上实现:实时机器学习ML)音频噪音抑制功能

    程序的开发方式。应用程序开发人员现在可以为所需系统整理包含大量输入和输出示例的数据集,然后使用这些数据集来训练ML模型。在训练过程中,ML模型
    的头像 发表于 03-25 09:46 946次阅读
    Raspberry Pi Pico 2 上实现:实时<b class='flag-5'>机器</b><b class='flag-5'>学习</b>(<b class='flag-5'>ML</b>)音频噪音抑制功能

    请问STM32部署机器学习算法硬件至少要使用哪个系列的芯片?

    STM32部署机器学习算法硬件至少要使用哪个系列的芯片?
    发表于 03-13 07:34

    K230D部署模型失败的原因?

    MicroPython部署的无法正常运行,采用C++版本的无法实现部署 尝试解决过程 1.考虑可能是固件不匹配的问题,重新烧录了流程(生成模型
    发表于 03-11 06:19

    机器学习模型市场前景如何

    当今,随着算法的不断优化、数据量的爆炸式增长以及计算能力的飞速提升,机器学习模型的市场前景愈发广阔。下面,AI部落小编将探讨机器学习
    的头像 发表于 02-13 09:39 624次阅读

    《具身智能机器人系统》第7-9章阅读心得之具身智能机器人与大模型

    将自然语言理解与运动规划融为一体。这种端端的方法使机器人能够直接从人类指令生成动作序列,大幅简化了控制流程。该项目的工作流程包含设计并封装一个人机器人函数库、编写清晰地描述提示词、在
    发表于 12-24 15:03

    AI模型部署边缘设备的奇妙之旅:目标检测模型

    可能在训练数据上表现良好,但在遇到未曾见过的数据(例如不同环境、光照条件、角度等)时性能可能会下降。 对异常值敏感:如果训练集中包含异常值或者噪声数据,这可能导致模型学习不正确的模式,从而影响其
    发表于 12-19 14:33

    构建云原生机器学习平台流程

    构建云原生机器学习平台是一个复杂而系统的过程,涉及数据收集、处理、特征提取、模型训练、评估、部署和监控等多个环节。
    的头像 发表于 12-14 10:34 676次阅读