Line通过MLOps设计了一套标准化的AI开发流程,其中涵盖了从模型实验、Pipeline的持续部署与交付、自动化创建Pipeline,以及模型的持续训练、持续部署、持续监测等流程,若模型发生衰变就会回到模型实验的环节,重复先前的循环。
为了实现这个开发流程,Line创建起一套加速AI开发的协作平台ML Universe(简称MLU),在平台中集成多种开源或自建的工具,让用户在MLU平台中,能直接调用开发工具来使用,而不用担心个别软件的开发环境设置;同时,通过各种开发工具在不同环节的应用,也能作为沟通凭借,让不同角色成员更容易介入协作。
“我们希望通过MLU平台,可以让开发者更轻松创造出许多有价值的AI应用。”Line台湾研发工程部资深资料工程师孙韵如表示,借由MLU平台,Line要在维持模型开发品质的同时,也消除不同角色之间的知识壁垒。
Line通过MLOps设计了一套标准化的AI开发工作流,其中涵盖了从模型实验、Pipeline的持续部署与交付、自动化创建Pipeline,以及模型持续训练、持续部署、持续监控等流程。若模型发生衰变,就会回到模型实验的环节,重复先前的循环。(图片来源/Line台湾)
资料准备与探索阶段工具
重点功能:特征商店(Feature Store)
资料工程师在进行特征工程时,由于这项工作需经过反复的试验,团队创建了用来管理特征资料的特征商店(Feature Store),让资料工程师能将处理后的资料,通过一个统一的接口输入特征商店,将特征资料以标准化的方式来存储。
如此一来,ML工程师与资料分析师,也能通过同一个接口来查找所需资料,不用再耗时处理资料,借此达到重复利用特征资料的目的。
模型开发与训练阶段工具
重点功能:程序代码开发工具Jupyter Notebook
团队集成了Jupyter Notebook作为协作开发的工具,让开发者能直接在MLU平台中打开Notebook接口来使用,Line也已经预安装好AI开发常用语言及框架,如Python、Tensorflow、PyTorch、Keras、OpenCV,还有NFS、CephFS、S3FS等文件系统,以及能提供分布式任务调度、调度和基本的I/O功能的PySpark核心,让开发者不用一一自行安装,只要点击就能打开。
Line也同步绑定内部的账号权限,让开发者只能打开权限许可的项目,借此来进行项目管理。
Line台湾资料工程部资深经理蔡景祥指出,Jupyter Notebook是现行在开发AI应用时,最常使用的工具之一,这个介于编辑器与IDE之间的开发工具,能较清楚的定义开发流程中的不同阶段,有助于厘清不同开发者的业务,且因Jupyter Notebook是创建于Web之上的应用,也能较轻易的在团队中共享、查看程序代码。
重点功能:程序代码审查工具Jupyter NB viewer、ReviewNB
Line自行开发了Jupyter NB viewer,让项目程序代码能被共享与浏览,来确保每一份程序代码,都至少有两个人以增至过。Line也采购了Jupyter Notebook的协同作业工具ReviewNB,来与Jupyter NB viewer交互使用,让程序开发的协作与程序代码查看工作都更流畅。
ML流程编辑工具Pipeline Editor
为了减少ML开发者与工程人员的沟通成本,Line自建了一个可视化ML工作流编辑工具Pipeline Editor,让开发者在开发完模型后,能直接通过拖拉设置的方式来创建ML工作流程,来取代过去需要手动程序开发的做法。(图片来源/Line台湾)
为了减少ML开发者与工程人员的沟通成本,Line自建了一个可视化的编辑工具Pipeline Editor,让ML开发者在开发完模型后,能直接通过拖拉设置的方式来创建ML流程。Line更在每一个开发步骤,都设计了编辑器功能,让开发者从接口设置参数,就能配置每一阶段中介产物的来源与存储位置,进而串起整个开发流程达到自动化。
孙韵如进一步解释,比如在开发ML模型时,在每个环节都必需要指定中介产物存储的路径、命名格式与访问权限,完成后才会依照设置存储到相应位置,但以往,这些设置必须写程序去定义,这对ML开发者来说具有一定的开发门槛,通常要靠工程运维的角色将ML流程串起来。
“Pipeline Editor的好处,就是当资料科学家开发完模型,将服务部署上线时,不用从头到尾写程序来串起流程上的每个作业,只要通过可视化的接口,来完成相关设置就好。”孙韵如说。
蔡景祥也回忆,最初在开发ML模型时,全团队还只有自己一个人,从熟悉的模型开发工作,到流程串联,包括文件如何放、如何取,全都要靠自己写程序来配置,“而且只适用这个项目,完全是一个定制化的工程。”直到构建了MLU平台,将定制化开发转变为通用性的设置,才让每个人的ML项目都能快速实现。
工作流管理平台Airflow
开发者在编辑完Pipeline之后,能通过开源工作流管理平台Airflow,将Pipeline能自动转换为Airflow的脚本,来进行后续的部署、CI/CD的工作流程,并能从MLU平台进行版本管控,让开发者不需要从零开始学习Airflow工作流的创建,只需进行简单设置,就能在几秒钟内创建一个Airflow实例。
针对Airflow的管理,Line也在Airflow中配置了K8s执行器,来更有效率地管理工作流调度,开发者也能从MLU平台来监控Logs或是重启Airflow。
云计算ML平台NSML
在模型训练的环节,Line台湾通过由上百颗GPU支持的NSML平台来训练模型,满足大量的运算需求,并通过可视化的方式来监控所使用的资源量,且NSML平台也提供了AutoML的功能,能自动进行超参数调校,来节省部分ML模型需要反复调校超参数的时间。
模型训练与测试通用工具
版本管理平台MLFlow
针对持续训练时产生的不同模型版本,开源ML平台MLFlow,能记录或查询每一次实验的程序代码、训练资料、参数配置及训练结果,让开发者能更容易进行版本管控,还能在后续模型测试的阶段,进行简单的分析验证。
模型部署与监控工具
ML模型部署平台BentoML
在模型经过验证后,由于资料科学家要将预测服务产品化,具有一定的开发门槛,Line通过开源ML模型部署平台BentoML,让开发者能将选定的模型访问下来,通过简易的设置,手动或由系统自动打包成Docker Image,再部署到Docker Hub中。接着,通过自动扩展的模型部署工具搭配K8s,就能根据流量来自动扩展计算资源量。
Prometheus Grafana、BI
在上线后的模型成效监控环节,需监控的面向包括服务本身的健康程度,以及模型是否因环境的变化而衰退,前者可以通过普罗米修斯(Prometheus)搭配Grafana来监控,后者则需要根据业务逻辑来设置监控指标,并通过BI仪表板来监控。若发生模型衰变情形,也将触发重新训练来维持模型预测表现。
从实例看MLU平台如何加速AI开发
在MLU平台中集成了多项ML开发常用工具后,Line在开发ML项目时,就能根据ML项目的特性,选择不同的工具来加速ML开发。
比如说,Line的关键字搜索推荐模型,是根据用户查询的历史记录,来创建词与句子的嵌入模型,进而在搜索字段推荐用户关键字。Line台湾研发工程部资深资料工程师孙韵如指出,由于用户搜索的关键字,会跟着每天的潮流或趋势而改变,这类模型对于输入资料的变化特别敏感,需要频繁的迭代更新,甚至每天都需要重新训练,才能维持模型的推荐表现。
因此,在这个模型的运维上,Line台湾通过MLU平台集成的仪表板工具,来监控模型服务端的健康指标,自动触发模型进行重新训练与迭代更新;而且,为了保障模型品质,团队也运用MLFlow来进行版本管控与模型验证,若更新后的模型表现低于设置指标,就会自动舍弃更新后的模型,直接采用前一个版本的模型来进行预测,确保模型品质在一定水准之上,“整个流程都已经自动化。”
除了模型本身的监控,团队也通过用户端的监测机制(如点击率),来分析用户对于Line所推荐的关键字是否买单,进而去判断,除了模型自动迭代更新,ML工程师是否需要手动重新开发模型,“因为当模型劣化到一定程度,就需要从根本上重新调整。”
另一个同样运用了MLU平台的模型,是文章内容推荐模型,比如Line的内容服务就是运用这个模型,推荐用户相同类型的文章来阅读。这个ML模型是以ELECTRA框架为基础来开发,在训练这类模型时,由于资料集庞大、模型复杂度高,会需要针对超参数进行大量反复的试验。
因此,团队运用MLU平台中,AutoML自动调整参数的功能,来更有效率的筛选出表现较佳的模型,同时也通过BentoML,来提供服务端可直接调用的API,节省部署上线的时间。
除了上述两个在线上提供预测服务的模型,Line台湾也开发了线下服务的模型,比如目标群众锁定(User Targeting)模型,目的要在最小成本下找到最容易被吸引的用户群,来生成一份目标群众的名单,提供后续活动推送时使用。这个ML应用与上述两者的最大不同,是该模型不是将预测服务打包成API,通过线上调用API来取得预测结果,而是线上下生成用户名单,这类部署方式也能通过MLU平台来快速交付。
完整系列报道在这里