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

    文章

    8418

    浏览量

    132628
收藏 人收藏

    评论

    相关推荐

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

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

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

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

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

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

    AI大模型与深度学习的关系

    AI大模型与深度学习之间存在着密不可分的关系,它们互为促进,相辅相成。以下是对两者关系的介绍: 一、深度学习是AI大模型的基础 技术支撑 :深度学习
    的头像 发表于 10-23 15:25 727次阅读

    AI大模型与传统机器学习的区别

    多个神经网络层组成,每个层都包含大量的神经元和权重参数。 传统机器学习模型规模相对较小,参数数量通常只有几千几百万个,模型结构相对简单
    的头像 发表于 10-23 15:01 623次阅读

    构建语音控制机器人 - 线性模型机器学习

    2024-07-31 |Annabel Ng 在该项目的[上一篇博客文章]中,我介绍了运行机器人电机、处理音频信号和调节电压所需的电路的基础知识。然而,机器人还没有完全完成!尽管机器
    的头像 发表于 10-02 16:31 213次阅读
    构建语音控制<b class='flag-5'>机器</b>人 - 线性<b class='flag-5'>模型</b>和<b class='flag-5'>机器</b><b class='flag-5'>学习</b>

    深度学习模型量化方法

    深度学习模型量化是一种重要的模型轻量化技术,旨在通过减少网络参数的比特宽度来减小模型大小和加速推理过程,同时尽量保持
    的头像 发表于 07-15 11:01 495次阅读
    深度<b class='flag-5'>学习</b><b class='flag-5'>模型</b>量化方法

    PyTorch神经网络模型构建过程

    PyTorch,作为一个广泛使用的开源深度学习库,提供了丰富的工具和模块,帮助开发者构建、训练和部署神经网络模型。在神经网络模型中,输出层是尤为关键的部分,它负责将
    的头像 发表于 07-10 14:57 502次阅读

    深度学习模型训练过程详解

    深度学习模型训练是一个复杂且关键的过程,它涉及大量的数据、计算资源和精心设计的算法。训练一个深度学习模型,本质上是通过优化算法调整
    的头像 发表于 07-01 16:13 1268次阅读

    深入探讨机器学习的可视化技术

    机器学习可视化(简称ML可视化)一般是指通过图形或交互方式表示机器学习模型、数据及其关系的
    发表于 04-25 11:17 418次阅读
    深入探讨<b class='flag-5'>机器</b><b class='flag-5'>学习</b>的可视化技术

    基于 Renesas 的 RA8M1 实现 AI 和 ML 部署

    作者:Kenton Williston 人工智能 (AI)、机器学习 (ML) 和其他计算密集型工作负载在物联网 (IoT) 网络边缘的兴起,给微控制器 (MCU) 带来了额外的处理负载。处理这些
    的头像 发表于 04-23 15:04 1226次阅读
    基于 Renesas 的 RA8M1 实现 AI 和 <b class='flag-5'>ML</b> <b class='flag-5'>部署</b>

    机器学习ML)推理主要计算之存内计算芯片

    机器学习ML)应用已经在汽车、医疗保健、金融和技术等各个领域变得无处不在。这导致对高性能、高能效 ML 硬件解决方案的需求不断增加。
    发表于 04-07 10:48 1184次阅读
    <b class='flag-5'>机器</b><b class='flag-5'>学习</b>(<b class='flag-5'>ML</b>)推理主要计算之存内计算芯片

    使用CUBEAI部署tflite模型STM32F0中,模型创建失败怎么解决?

    看到CUBE_AI已经支持STM32F0系列芯片,就想拿来入门嵌入式AI。 生成的模型很小,是可以部署F0上的,但是一直无法创建成功。 查阅CUBE AI文档说在调用create
    发表于 03-15 08:10

    英特尔CPU部署Qwen 1.8B模型过程

    本文介绍了在英特尔 13 代酷睿 CPU i5 - 13490F 设备上部署 Qwen 1.8B 模型过程,你需要至少 16GB 内存的机器来完成这项任务,我们将使用英特尔的大
    的头像 发表于 01-12 10:28 2629次阅读

    如何使用TensorFlow构建机器学习模型

    在这篇文章中,我将逐步讲解如何使用 TensorFlow 创建一个简单的机器学习模型
    的头像 发表于 01-08 09:25 989次阅读
    如何使用TensorFlow构建<b class='flag-5'>机器</b><b class='flag-5'>学习</b><b class='flag-5'>模型</b>