开发者学堂课程【机器学习实战:模型部署与应用】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/530/detail/7135
模型部署与应用
内容介绍:
一、 在线部署
二、 离线部署
三、A/B 测试及灰度发布
四、 模型生命周期
一、在线部署
1、什么叫在线部署
最终训练完成的模型如何去部署应用,部署通常有在线部署和离线部署两种方式,在线部署通常会由 API 进行在线预测,因为在实际应用中,有时候需要对一些实时的模型进行调用来进行处理,这个时候需要进行一个在线部署。
第一个要求首先就是时间要短,数据过来之后,要马上进行一个预测,然后对预测的数据实时应用到业务流中,此类数据的特点是一直产生,但是数据量不会太大。此类数据一般通过 API 的方式来提供服务,首先生成一个标准 API,然后通过生成的 API,将待处理的数据以请求的方式发送出来。API 得到数据之后会返回一个结果,之后将返回的结果嵌入到业务流中就完成。
优势是可以简单的使用这个服务,不用关注源码和内部的服务。
针对实时数据需要调用模型的情况,可进行在线部署。通常要求响应时间要短,此类数据会持续产生,且每次要求处理的数据量不大。
在线部署通常是以 API 的方式提供服务,通过调用 API 发送待处理请求,并获得调用结果。API 的优势是用户可以简单的使用服务,而不必去了解源码或者其内部构造。
2、例子
这是使用计算机Π计算机部署得以一个例子。
训练模型完成后,要进行模型部署,在页面栏的下面有个部署按钮,可以选择在线或者离线。选择在线项目部署,之后要选择要部署的项目空间。
设置当前模型的 instance 数量,当前用户是每个提供 30 个 instance 数量。
接下来就可以进行在线部署,部署完成之后,可以查看到返回格式是 JSON/XML,最下面有个接口的样例。
同时有一个 API 的调试功能,接口名字:prediction。
可以将请求的 body 输入框中,进行测试,测试接口得到一个返回结果,测试成功之后就可以将接口释放出来提供业务使用。
二、离线处理:批量处理
对于数据量较大且对时效性要求不强的场景,可以采用离线部署的方式,对数据进行批量处理。批量处理通常是预先知道调用的条件,比如清楚调用的频率和时间点,定义成按时触发的任务,可以根据资源情况合理安排调度窗口。
这种批量出来一般都是定时的,从用户出发的,比如定时的,例如每天晚上两点钟会对一批数据进行预测等等,所以你需要倾出调用到频率和时间点,然后定义生成这种按时出发的任务。
例子;计算机Π的实验。
需要在部署按钮中点击实验离线调度,然后选择机器学习实验,就会出现一个节点,会嵌置到正常的任务的任务流里面去。
同时可以设置调度属性,比如依赖于哪个任务,在预测前还有可能有一些其他的任务,任务完成之后,会调度继续学习的任务。
还可以设置一些跨周期的依赖,设置其调度周期是按照天,可以设置具体的时间,因为·阿里云的终端服务提供的是完整的几个方案,继续学习也可以作为整个业务流中的一个节点,使用 dataworks 可以进行任务运维,测试等等,使用比较方便。
三、A/B 测试及灰度发布
接下来简单介绍一下 A/B 测试及灰度发布
A/B 测试( A/B Testing,又被称做拆分测试或水桶测试)通过两个不同版本方案进行比较,来确定一个性能更好的方案。A/B 测试提升了确定性。
灰度发布(又名金丝雀发布)是指平滑过渡的一种发布方式,针对不同版本进行A/B 测试,即让部分用户继续用 A 版本,一部分用户开始用 B 版本,如果 B 版本运行结果符合预期,则逐步扩大范围,把所有用户都迁移到 B 上来。灰度发布可以保证整体系统的稳定,在初始灰度的时候就可以发现、调整问题,以保证其影响度。
假如现在所有的用户都在使用 A 方案,此时研发一个 B 方案。可以从原有的 A 方案中切除一部分用户来使用 B 方案,此时 A、B 方案并行。
此时可以比较 A、B 方案,观察哪个方案运行效果更好,假如 B 方案运行效果更好,就可以将所有用户都迁移到 B 上来。
四、 模型生命周期
模型上线后,需要监控模型的运行效果,进行生命周期管理︰
当预测因素发生变化或者数据、业务发生明显变化时,需要定期重复进行模型管理测性能往往会随着时间而下降。
当性能下降到某一阈值时,应进行模型更新或者更换
当模型上线之后,需要不断监控模型的运行效果,其中有几种情况,需要不断对模型进行优化。第一个是业务模式发生变化时,需要定期重复进行模型管理;第二个是性能可能会随着时间下降,当性能下降到一个阈值的时候,就要进行模型更新。
上图中主要看从右往左的箭头,从第六步模型应用返回到第一步需求分析,这实际上就是模型生命周期管理的重要一步,也就是迭代更新,要保证这个模型对当前业务,或者当前业务产生的数据,能够持续有效的带来期望的结果。