APP下载

【K8s台湾企业实战经验谈:露天拍卖】K8s解决机器学习复杂的工作流程痛点,撑起电商AI服务

消息来源:baojiabao.com 作者: 发布时间:2024-05-18

报价宝综合消息【K8s台湾企业实战经验谈:露天拍卖】K8s解决机器学习复杂的工作流程痛点,撑起电商AI服务

“Kubernetes的组合性、可携性和扩展性等三大特点,可以解决机器学习工作流程的复杂问题,”露天研发创新部主任张家棠指出,这也满足了企业中不同团队的作业环境要求。

“机器学习工作流程不只是清理资料、训练模型,还包括模型部署、转换为线上服务、维持服务不中断,甚至还有GPU资源调度等问题。”露天拍卖研发创新部主任张家棠指出,能解决机器学习(ML)工作流程痛点的帮手,就是容器管理平台Kubernetes(K8s)。

K8s三大特点优化ML工作流程

Kubernetes拥有三大特点,分别是组合性(Composability)、可携性(Portability)和扩展性(Scalability)。就第一点来说,机器学习工作流程包括资料前处理、模型训练、部署和维运等数十个阶段。而Kubernetes提供了可组合的控制流程,让使用者依其需求,透过模组化来完成这些步骤,也不须要集中式控制流程。

再来,可携性能解决模型训练问题,比如开发环境。举例来说,相同的程式码由不同工程师执行,可不一定每次都成功,“这就是环境问题。”张家棠指出,Kubernetes微服务可将环境内容标准化,解决开发环境问题,而且“不管是透过笔电还是本机开发,只要将内容封装好,就能轻松在正式环境执行。”

接下来则是扩展性。Kubernetes扩展性优点包括对CPU、GPU和内存资源的调度,但在张家棠眼中,扩展性真正的价值,在于能应付企业中不同团队所需的作业环境要求。

专属套件降低K8s与ML工作流程执行门槛

不过,要真正驾驭Kubernetes,并非易事。为了让开发者更快上手,张家棠点名Kubeflow,也就是一套开源机器学习工具,“有如一个组合包,内含许多机器学习套件,供使用者安装,”简化了在Kubernetes上执行机器学习任务的流程。再加上Kubeflow以Kubernetes为基础,因此只要在Kubernetes环境中,就能执行Kubeflow,达到简单、可携且可扩充的目的。

然而,Kubeflow并非适用于所有机器学习工作,它的强项在于模型建置、训练,以及平行处理和模型部署(Serving)等流程。

其中,就平行处理来说,由于机器学习工作并非只是资料搜集、训练模型、模型部署等如此直线进行的流程,而是由多个任务(Task)组成,有些任务必须要按照事先定义的顺序来执行,有些任务则会依赖其他任务,还有些任务则是要同时执行。这个现象,就有如点状发散的有向无环图(DAG)般复杂,需要平行处理才能应付。

而Kubernetes CRD原生套件Argo Workflow,能够解决这个问题。Argo Workflow是一套工作流程任务调度工具,可针对多步骤(Step)的工作流程来建模,使之成为一序列任务,也能利用DAG来找出不同任务间的相依性。它的特点包括跨程式语言、能即时更新日志(Log),方便工程师随时掌握工作流程状态,此外还提供视觉化的使用者界面,方便监控作业动态。

在Argo Workflow提供的多种工作流程功能中,张家棠最推荐Loop、DAG-Diamond-step和Daemon-nginx。他指出,有别于一次只能执行一个步骤的传统程式化脚本(Shell script),Loop可一次平行执行两个以上的步骤,而DAG-Diamond-step则更进一步,专门锁定如DAG般复杂的流程,使用者可根据自身需求,来弹性设计任务执行的架构。再来,Daemon-nginx让使用者在执行批次工作排程时,先设置一个Daemon,之后排程的内容照着Daemon即可。

露天研发创新部主任张家棠推荐Kubernetes CRD原生机器学习任务调度工具Argo Workflow中的DAG-Diamond-step功能,可以处理如DAG般复杂的机器学习工作流程,让使用者自行设计任务执行的架构。(图片来源/张家棠)

事件管理器弹性触发和执行工作流程,露天靠它打造Chabot服务

设计完工作流程后,开发者还需要触发(Trigger)和执行这些事件(Event),而Kubernetes事件管理器Argo Event则能弹性完成这两项动作。

这个管理器主要由3个元素构成,分别是Event Source、Gateway和Sensor。Event Source是用来定义事件内容,再透过Gateway来处理事件,之后由Sensor定义事件相依性,并触发Argo Workflow或Kubernetes资源,来执行事件。此外,Argo Event还拥有多项功能,像是网站订阅通知(Webhook)、排程(Schedule)等。

露天也实际利用这些工具,来开发自家的客服机器人。张家棠指出,露天参考许多坊间聊天机器人,特别是Google的Chabot平台Dialogflow,并以此为蓝图,开发出自家的客服机器人熊咩。

熊咩为任务型聊天机器人,只针对露天平台提供问题选项与回答,而非由顾客输入字句来进行开放式对话。也因此,模型训练原理就像训练分类器,目的是要将问题对应到正确解答。

于是,露天先建置了一个后台,让客服人员来处理资料前置工作,比如分类问题等。之后,团队再设置一个按钮,当客服人员处理完前置工作后,就可点击来触发重新训练聊天机器人。“这个触发就是Argo Event中的Webhook功能,可以连结Argo Workflow来取得资料、重新训练模型。”

但是,机器学习模型经过不断重新训练、YAML设定档不断更新时,Argo Workflow也就变得复杂了。为解决这个问题,Kubeflow Pipline释出一款软件开发套件,不只大幅简化撰写复杂度,还附加了Metadata的设定,方便开发者在工作执行完后,来检视工作内容。张家棠表示,这一点,对机器学习开发者来说特别有帮助,因为有利于比较两套模型的差异和表现。

善用模型部署利器,露天以此建置点击转换率指标

模型训练完成后,接下来,就是要将模型转换为服务(Serving)。张家棠指出,这时有两个工具可选择,一个是TensorFlow Serving,另一个是Seldon。

首先,如果开发者利用TensorFlow开发模型,就可直接透过TensorFlow Serving来部署模型。TensorFlow Serving有几个优点,包括只要将新训练好的模型档,存放于旧模型档的资料夹,就能直接切换为新模型;再来则是加速机器学习模型训练效果,透过批次功能,可一次输入数百个样本给机器,有效利用GPU资源。这一点,也能用来提高AI推论效率,也就是透过累积请求(Request)数量,到达设定时间后,再全部送往GPU处理。

另一方面,除了TensorFlow Serving,如果开发者使用TensorFlow以外的框架来开发模型,比如PyTorch、MLflow、XGBoost等,就可透过Seldon平台来部署模型。

而露天的商品点击转换率指标,就是透过TensorFlow Serving来运行。张家棠解释,点击转换率指标,是要来了解不同消费者对哪些产品有兴趣;要做到这一点,首先要收集露天平台上所有使用者的Log,将这些资料整理、标注之后来训练模型,并利用每天更新的Log来重复训练。最后,再透过TensorFlow Serving整合这些结果,交给后端API来呈现点击率与转换率的效果。

另一个应用案例则是商品个人化搜寻,露天透过个别使用者的搜寻历史,来训练AI模型、预测商品搜寻结果的排名。张家棠举例,比如用关键字搜寻“三国”,就可能出现电视剧、游戏等不同类型的商品,但根据使用者搜寻历史,就能找出使用者的兴趣领域,进而提升相关商品的搜寻排名。

张家棠也揭露,露天目前也正利用K8s进行以图搜图的AI专案,目标是要“跟上国际电商的脚步。”

 相关报导  企业K8s实战在台湾 

2019-10-02 10:49:00

相关文章