零基础实战机器学习
黄佳
新加坡科研局首席研究员
19489 人已学习
新⼈⾸单¥59
登录后,你可以任选4讲全文学习
课程目录
已完结/共 24 讲
零基础实战机器学习
15
15
1.0x
00:00/00:00
登录|注册

20 | 模型部署:怎么发布训练好的机器学习模型?

你好,我是黄佳。欢迎来到零基础实战机器学习。
截止到现在,我们这个课程一直都是在本机上跑模型、分析和预测数据。但实际上,机器学习技术并不局限于离线应用,它也可以被部署到生产系统中发挥作用。
在具体部署时,出于对灵活性或者运行速度的需要,开发人员有可能会用 Java、C 或者 C++ 等语言重写模型。当然,重写模型是非常耗时耗力的,也不一定总是要这样做。像 Tensorflow、PyTorch、Sklearn 这些机器学习框架都会提供相应的工具,把数据科学家调试成功的机器学习模型直接发布为 Web 服务,或是部署到移动设备中。
在这一讲中,我们会通过一个非常简单的示例,来看看怎么把我们之前做过的预测微信文章浏览量的机器学习模型嵌入到 Web 应用中,让模型从数据中学习,同时实时接收用户的输入,并返回预测结果。由于移动设备上的部署,还需要一些额外的步骤和工具,如 Tensorflow Lite 等,我这里不做展示,你有兴趣的话可以阅读相关文档
我先给你看看搞定后的页面:
在进入具体的部署之前,我带你先整体了解一下,要搭建这个基于 Web 的机器学习应用,我们需要构建哪些模块。

整个项目需要构建哪些模块?

在这个项目中,我们实际上要构建的模块有三个:
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 中文繁体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
    • 阿拉伯语
  • 解释
  • 总结

本文详细介绍了如何将训练好的机器学习模型部署到生产系统中发挥作用。作者首先介绍了机器学习模型的部署需求和可能的重写模型的方式,然后详细讲解了通过Tensorflow、PyTorch、Sklearn等机器学习框架提供的工具,将数据科学家调试成功的机器学习模型直接发布为Web服务或部署到移动设备的方法。接着,作者通过一个简单的示例,展示了如何将机器学习模型部署为基于Web的应用程序。在示例中,作者介绍了需要构建的模块,包括机器学习模型、用Flask开发的Web应用和HTML页面模板,并解释了它们之间的协作流程。此外,作者还提供了项目的目录结构和HTML页面模板的创建过程。整体而言,本文通过实例详细介绍了机器学习模型部署的流程和相关技术细节,对读者了解模型部署提供了有益的指导和参考。文章内容涵盖了机器学习模型的创建、序列化和反序列化,以及Web应用的开发和模型调用过程,为读者提供了全面的技术指导。

仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《零基础实战机器学习》
新⼈⾸单¥59
立即购买
登录 后留言

全部留言(2)

  • 最新
  • 精选
  • 明远
    佳哥你好,请问模型部署后,需要如何持续迭代?模型本身能够持续自学习更新吗?还是要每天定时用全量或者增量数据重新训练? 另外,考虑到像搜索引擎这样的,如果基于存量数据训练出了一个分词器,随着新的网络用语出现,分词器就需要再度训练更新。那么庞大的历史数据都需要重新训练一次吗?

    作者回复: 是的,模型的持续迭代和更新是机器学习工程中的一个重要主题。正如其它同学提到的,可以进行持续学习与在线学习: 在线学习:模型可以在新数据上进行增量训练,而不是重新使用全量数据。这种方法适用于数据流模型或数据持续增长的情境。 批量更新:定期(例如每天、每周或每月)用最近的数据(或增量数据)重新训练模型。 模型验证与监控: 部署后,持续监控模型的性能指标。如果性能下降到某个阈值以下,则触发模型的重新训练或调整。 使用A/B测试策略在实际环境中对比新模型和旧模型的性能。 数据的滑动窗口策略:对于一些模型,你不需要使用全部的历史数据,而是只用最近的数据。例如,你可以使用过去三个月的数据而不是使用过去三年的数据。 转移学习与增量学习: 转移学习:使用预训练模型作为起点,并在特定任务的新数据上进行微调。 增量学习:只使用新数据对模型进行更新。 考虑存储与计算成本:全量数据的重新训练可能需要大量的存储和计算资源。在实际部署中,可能需要权衡重新训练的好处和成本。 对于你提到的搜索引擎分词器的情况:当新的网络用语出现时,确实需要更新分词器以提高其性能。但这并不意味着每次都需要使用全部的历史数据来重新训练。可以采用增量训练、在线学习或者使用近期的数据进行滑动窗口训练。 值得注意的是,一些老的数据可能在某些情境下变得不太相关。例如,十年前的网络用语可能与现在的环境有很大的不同。 总体而言,持续的模型迭代和更新策略取决于具体的应用场景、数据属性以及业务需求。适当的策略可以确保模型在面对新的数据时仍然保持良好的性能,同时又能控制计算和存储的成本。

    2022-03-04
    2
    3
  • 高绥凯
    自己运行app.py函数的时候,经常会出现报错,不知道是哪里错误了? runfile('D:/PycharmProjects/FirstWeb/app.py', wdir='D:/PycharmProjects/FirstWeb') Traceback (most recent call last): File "<ipython-input-33-aedc2d900ec7>", line 1, in <module> runfile('D:/PycharmProjects/FirstWeb/app.py', wdir='D:/PycharmProjects/FirstWeb') File "D:\Anaconda\lib\site-packages\spyder\utils\site\sitecustomize.py", line 705, in runfile execfile(filename, namespace) File "D:\Anaconda\lib\site-packages\spyder\utils\site\sitecustomize.py", line 102, in execfile exec(compile(f.read(), filename, 'exec'), namespace) File "D:/PycharmProjects/FirstWeb/app.py", line 34, in <module> app.run(debug=True) File "D:\Anaconda\lib\site-packages\flask\app.py", line 938, in run cli.show_server_banner(self.env, self.debug, self.name, False) File "D:\Anaconda\lib\site-packages\flask\cli.py", line 629, in show_server_banner click.echo(message) File "D:\Anaconda\lib\site-packages\click\utils.py", line 259, in echo file.write(message) UnsupportedOperation: not writable

    作者回复: UnsupportedOperation: not writable,通常是在写入只读文件的时候报错。看一看是否对所有文件有写权限,是不是有一些文件是只读文件。这只是猜测,我没有遇到过同样错误。 我们看看其它同学是否遇到了类似的问题呢?

    2021-10-13
    1
收起评论
显示
设置
留言
2
收藏
沉浸
阅读
分享
手机端
快捷键
回顶部