乐趣区

关于机器学习:vivo互联网机器学习平台的建设与实践

vivo 互联网产品团队 – Wang xiao

随着广告和内容等举荐场景的扩大,算法模型也在一直演进迭代中。业务的一直增长,模型的训练、产出迫切需要进行平台化治理。vivo 互联网机器学习平台次要业务场景包含游戏散发、商店、商城、内容散发等。本文将从业务场景、平台性能实现两个方面介绍 vivo 外部的机器学习平台在建设与实际中的思考和优化思路。

一、写在后面

随着互联网畛域的疾速倒退,数据体量的成倍增长以及算力的继续晋升,行业内都在鼎力研发 AI 技术,实现业务赋能。算法业务往往专一于模型和调参,而工程畛域是绝对单薄的一个环节。建设一个弱小的分布式平台,整合各个资源池,提供对立的机器学习框架,将能大大放慢训练速度,晋升效率,带来更多的可能性,此外还有助于晋升资源利用率。心愿通过此文章,初学者能对机器学习平台,以及生产环境的复杂性有肯定的意识。

二、业务背景

截止 2022 年 8 月份,vivo 在网用户 2.8 亿,利用商店日沉闷用户数 7000 万 +。AI 利用场景丰盛,从语音辨认、图像算法优化、以及互联网常见场景,围绕着利用商店、浏览器、游戏核心等业务场景的广告和举荐诉求持续上升。

如何让举荐零碎的模型迭代更高效,用户体验更好,让业务场景的成果更佳,是机器学习平台的一大挑战,如何在老本、效率和体验上达到均衡。

从下图能够理解到,整个模型加工使用的场景是串行可闭环的,对于用户的反馈须要及时进行特色更新,一直晋升模型的成果,基于这个链路关系的根底去做效率的优化,建设一个通用高效的平台是要害。

三、vivo 机器学习平台的设计思路

3.1 功能模块

基于上图业务场景的链路关系,咱们能够对业务场景进行归类,依据性能不同,通用的算法平台可划分为三步骤:数据处理「对应通用的特色平台,提供特色和样本的数据撑持」、模型训练「对应通用的机器学习平台,用于提供模型的训练产出」、模型服务「对应通用的模型服务部署,用于提供在线模型预估」,三个步骤都可自成体系,成为一个独立的平台。

本文将 重点论述模型训练局部,在建设 vivo 机器学习平台过程中遇到的挑战以及优化思路。

1. 数据处理,围绕数据相干的工作,包含采集、加工、标记和存储。

其中,采集、加工、存储与大数据平台的场景相吻合,标记场景是算法平台所独有的。

  • 数据采集,即从内部零碎取得数据,应用 Bees{vivo 数据采集平台}来采集数据。
  • 数据加工,行将数据在不同的数据源间导入导出,并对数据进行聚合、荡涤等操作。
  • 数据标记,是将人类的常识附加到数据上,产生样本数据,以便训练出模型能对新数据推理预测。
  • 数据存储,依据存取的特点找到适合的存储形式。

2. 模型训练,即创立模型的过程,包含特色工程、试验、训练及评估模型。

  • 特色工程,即通过算法工程师的常识来挖掘出数据更多的特色,将数据进行相应的转换后,作为模型的输出。
  • 试验,即尝试各种算法、网络结构及超参,来找到可能解决以后问题的最好的模型。
  • 模型训练,次要是平台的计算过程,平台可能无效利用计算资源,进步生产力并节省成本。

3. 模型部署,是将模型部署到生产环境中进行推理利用,真正施展模型的价值。

通过一直迭代演进,解决遇到的各种新问题,从而放弃在较高的服务水平。

4. 对平台的通用要求,如扩大能力,运维反对,易用性,安全性等方面。

因为机器学习从钻研到生产利用处于疾速倒退变动的阶段,所以框架、硬件、业务上灵便的扩大能力显得十分重要。任何团队都须要或多或少的运维工作,杰出的运维能力能帮忙团队无效的治理服务质量,晋升生产效率。

易用性 对于小团队上手、大团队中新人学习都十分有价值,良好的用户界面也有利于深刻了解数据的意义。

安全性 则是任何软件产品的重中之重,须要在开发过程中尽可能躲避。

3.2 模型训练相干

模型训练包含了两个次要局部,一是算法工程师进行试验,找到对应场景的最佳模型及参数,称之为“模型试验 ”,二是计算机训练模型的过程,次要偏重平台反对的能力,称之为“ 训练模型”。

建模是算法工程师的外围工作之一。建模过程波及到很多数据工作,称为特色工程,次要是调整、转换数据。次要工作是要让数据施展出最大的价值,满足业务诉求。

3.2.1 模型试验

特色工作和超参调整是建模过程中的外围工作。特色工作次要对数据进行预处理,便于这部分输出模型的数据更好的表白信息,从而晋升模型输入后果的品质。

数据和特色工程决定模型品质的下限,而算法和超参是有限迫近这个下限。

超参调整包含抉择算法、确认网络结构、初始参数,这些依赖于算法工程师丰盛的教训,同时须要平台反对试验来测试成果。

特色工程和超参调整是相辅相成的过程。加工完特色后,须要通过超参的组合来验证成果。成果不现实时,须要从特色工程、超参两个方面进行考虑、改良,重复迭代后,能力达到现实的成果。

3.2.2 训练模型

可通过标准化数据接口来进步疾速试验的速度,也能进行试验成果的比拟。底层反对 docker 操作系统级的虚拟化计划,部署速度快,同时能将模型间接部署上线。用户无需对训练模型进行更多定制化的操作,批量提交工作能节约使用者的工夫,平台能够将一组参数组合的试验进行比拟,提供更敌对的应用界面。

其次,因为训练的方向较多,须要算力治理主动布局工作和节点的调配,甚至能够依据负载状况,正当利用闲暇资源。

四、vivo 机器学习平台实际

后面咱们介绍了机器学习平台的背景和倒退方向,当初咱们来介绍下,平台在解决用户问题局部的困扰和解决思路。

4.1 平台能力矩阵

机器学习平台次要指标是围绕模型训练进行深耕,并辅助用户进行模型决策,更快的进行模型部署。

以此为指标分为两个方向,训练框架的优化可能撑持大规模模型的分布式计算,调度能力优化可能反对批次模型的执行。

在调度能力上,平台由原生 k8s 调度,单个训练调度的效率较低,降级为 kube-batch 批量调度,到以混合云精细化编排为指标,以后次要处于灵活性调度策略的模式。

在训练框架上,从原生 Tensorflow 模型,随着特色和样本规模的扩充,自研了超大规模的训练框架 vlps,以后处于 TensorFlow+vlps 联合的新框架状态。

4.2 平台能力介绍

平台能力建设次要围绕模型试验和训练模型的使用,使用过程中遇到的痛点和难点如何解决,是咱们在实践中的要害。同时,训练框架也是平台要害能力的体验,基于业务的复杂度,继续对框架进行优化。

已笼罩公司外部算法工程师模型调试的工作,已达到亿级样本,百亿特色的规模。

4.2.1 资源管理

痛点:

机器学习平台属于计算密集型的平台。

  • 业务场景不同,是否齐全依照业务分组进行资源划分;
  • 资源池划分过小,会导致资源利用率低且没方法满足业务激增的资源诉求;
  • 资源不足以满足业务诉求时,会存在排队状况导致模型更新不及时;
  • 如何治理好算力,提效与降本的均衡,是平台资源管理的一个外围问题。

解决思路:

资源管理的基本思路是将所有计算资源集中起来,按需分配,让资源使用率尽量靠近 100%。任何规模的资源都是有价值的。

比方,一个用户,只有一个计算节点,有多条计算工作时,资源管理通过队列可缩小工作轮换间的闲暇工夫,比手工启动每条计算工作要高效很多。多计算节点的状况,资源管理能主动布局工作和节点的调配,让计算节点尽量都在应用中,而不须要人为布局资源,并启动工作。多用户的状况下,资源管理能够依据负载状况,正当利用其它用户或组的闲暇资源。随着节点数量的减少,基于无限算力提供更多业务反对是必经之路。

1. 以配额限资源滥用:

新增配额组和集体配额,缩小业务之间的互相烦扰,尽可能满足各组的资源须要,并且配额组反对长期扩容和共享,解决偶发性激增的资源诉求;限额后用户仅反对在无限资源下应用,让用户自我调节高优先级训练。

2. 以调度促资源优化:

新增生产环境,确认模型曾经失常迭代,在正当利用率的状况下切换至高优环境,提供更高性能的资源池;同时提供调度打分机制,围绕资源颗粒度、配置合理性等维度,让正当的训练资源更快的拉起,缩小调度卡住状况;

上线多维度调度打分机制后,平台不合理训练任务有大幅度降落,资源效率晋升。

围绕并不限于以下维度:最大运行时长、排队时长、cpu& 内存 &gpu 颗粒度和总需求量等。

4.2.2 框架自研

痛点:

随着样本和特色规模减少后,框架的性能瓶颈凸显,须要晋升推理计算的效率。

倒退门路:

每一次的倒退门路次要基于业务量的倒退,寻求最佳的训练框架,框架的每一次版本升级都打包为镜像,反对更多模型训练。

以后成果:

4.2.3 训练治理

痛点:

如何反对多种分布式训练框架,满足算法工程师的业务诉求,让用户无需关怀底层机器调度和运维;如何让算法工程师疾速新建训练,执行训练,可查看训练状态,是训练治理的要害。

解决思路:

上传代码至平台的文件服务器和 git 都能够进行读取,同时在平台填写适量的参数即可疾速发动分布式训练任务。同时还反对通过 OpenAPI,便于开发者在脱离控制台的状况下也能实现机器学习业务。

围绕训练模型相干的配置信息,分为根底信息设置、资源信息设置、调度依赖设置、告警信息设置和高级设置。在试验超参的过程中,常常须要对一组参数组合进行试验。

批量提交工作能节约使用者工夫。平台也能够将这组后果间接进行比拟,提供更敌对的界面。训练读取文件服务器或 git 的脚本,即可疾速执行训练。

1. 可视化高效创立训练

2. 精确化疾速批改脚本

3. 实时化监控训练变动

4.2.4 交互式开发

痛点:

算法工程师调试脚本老本较高,算法工程师和大数据工程师有在线调试脚本的诉求,可间接通过浏览器运行代码,同时在代码块下方展现运行后果。

解决思路:

在交互式工具中进行试验、开发,如:jupyter notebook,提供所见即所得的交互式体验,对调试代码的过程十分不便。

在交互试验的场景下,须要独占计算资源。机器学习平台须要提供能为用户保留计算资源的性能。如果计算资源无限,可对每个用户申请的计算资源总量进行限度,并设定超时工夫。

例如,若一周内用户没有进行资源应用后,就发出保留资源。在发出资源后,可持续保留用户的数据。从新申请资源后,可能还原上次的工作内容。在小团队中,尽管每人保留一台机器本人决定如何应用更不便,然而用机器学习平台来对立治理,资源的利用率能够更高。团队能够聚焦于解决业务问题,不用解决计算机的操作系统、硬件等呈现的与业务无关的问题。

五、总结

目前 vivo 机器学习平台撑持了互联网畛域的算法离线训练,使算法工程师更关注于模型策略的迭代优化,从而实现为业务赋能。将来咱们会在以下方面持续摸索:

1. 实现平台能力的贯通

  • 以后特色、样本还是模型的读取都是通过 hdfs 实现的,在平台上的告警、日志信息都未关联上,后续能够进行平台能力贯通;
  • 平台的数据和模型还有标准化的空间,升高学习老本,晋升模型开发的效率。

2. 增强框架层面的预研

  • 钻研不同分布式训练框架对模型成果的影响,适配不同的业务场景;
  • 提供预置的参数,实现算法、工程、平台的解耦,升高用户的应用门槛。
退出移动版