Press "Enter" to skip to content

九数商业分析平台探索与创新实践

本站内容均来自兴趣收集,如不慎侵害的您的相关权益,请留言告知,我们将尽快删除.谢谢.

 

Tech

 

 

 

在传统产业生产中会生成海量的数据,这些数据中往往隐藏着大量的信息,人工智能算法正是可以从数据中挖掘知识,指导产业决策,提高产业数据智能化,从而提高产业效益的有力工具。同时,大数据和人工智能技术也正助推各个领域迅猛发展,零售领域各算法业务同样依赖更大的数据规模和模型复杂度来助推业务增长。在此背景下,京东零售业务也极大的受益于人工智能技术,在购物体验、营销提效、技术赋能等方面取得了不错的效果。

 

本文介绍京东零售九数商业分析平台如何面向业务痛点,通过各种技术创新来提高算法开发和业务迭代效率。

 

人工智能算法落地零售行业往往面临如下的一些问题:

 

(1)场景需求碎片化

 

推荐系统、广告投放、电商风控等领域都依赖不同的算法技术栈。

 

(2)算法落地门槛高

 

算法技术复杂度高,大规模分布式任务构建、管理门槛高。

 

(3)大规模应用难

 

算法往往面临海量数据,并且需要超大规模的算法模型来学习知识,这其中涉及到很多的技术难点 。

 

(4)成本高

 

需要大量并且成本高昂的人才、算力(比如GPU)以及存储资源。 那幺就需要一套业务友好,易于大规模扩展,并且能够高效利用资源的平台来解决以上问题。

 

01

 

九数商业分析平台介绍

 

目前,九数商业分析平台服务京东零售主要算法业务,支撑零售业务数智化迭代升级。针对以上问题,九数提供了从底层基础设施到业务算法层的全栈能力支撑。

 

 

(1)针对场景需求碎片化

 

九数针对多种场景研发多种框架,涵盖多种算法能力,包括深度学习框架(9N-Deep)、联邦学习框架(9N-FL)、强化学习框架(9N-)、在线学习框架(9N-OL),另外针对业界火热的图计算场景自研了超大规模图计算框架Galileo。

 

(2)针对算法落地门槛高

 

九数多种自研框架都尽力做到算法工程师友好,足够易用,提供一站式算法服务,全面的模型训练及在线服务能力,以及计划中的算法整体解决方案。

 

(3)针对大规模应用难

 

九数平台以及提供的自研框架都面向工业场景,并且有多种集群技术助力训练提效,另外针对TensorFlow复杂训练系统容易出错的问题,九数结合集群技术做到了训练的全组件容错,支持断点续训,提高训练成功率。

 

(4)针对成本高

 

九数各系统做到极致易用能够节约人力成本;针对硬件成本,也有一些资源利用率的解决方案。

 

下面从训练框架、集群技术等方面的几个案例来展开叙述。

 

1.     超大规模图计算框架Galileo

 

万物皆图,尤其是零售场景,图计算由于其丰富的表达能力和可解释性,已经处于燎原之势的前夕,学术界和工业界投入巨大。但在落地过程中仍然存在一些问题。

 

(1)数据规模大

 

大数据时代,工业级大图建模动辄千亿节点和边,如何高效计算、存储和管理图数据成为图计算落地业务的一大难点。

 

(2)建模门槛高

 

面临海量数据,如何抽象图数据并结合特定业务建模需要工程师很高的业务算法抽象能力。

 

(3)联合训练慢

 

模型学习中数据的传输经常是影响训练速度的关键因素,尤其在超大规模图数据的场景下,如何提高模型训练性能,提高模型迭代时效性,丞待解决。

 

(4)内存消耗大

 

图学习过程中往往为了提高学习速度,一般需要将图数据整个存放在内存中,大量消耗了硬件资源。

 

为解决以上问题,九数团队研发了支持千亿点边的超大规模分布式图表达、计算以及存储的Galileo图计算框架,详情可以查看京东零售技术的另外一篇文章。

 

2. 训练全组件容错

 

在分布式机器学习训练中一般存在如下痛点:

 

(1)训练易出错

 

算法工业落地一般面临庞大的数据量,训练时间长,而面向算法的平台大多依赖一些第三方服务,比如存储、网络等环境,这对训练成功率势必造成一定的影响。

 

(2)故障处理自动化程度低

 

训练出错后一般需要手工处理、不能自动处理可恢复性故障。

 

(3)做不到数据断点续训

 

通常没有数据的Checkpoint机制,手工处理某故障后大多从训练数据开始处继续训练,相当于前部数据权重增加,影响模型效果。TensorFlow提供的数据Checkpoint机制比较重,影响训练性能。

 

为了解决以上问题,九数团队早在TensorFlow1.+时代就进行了训练容错相关探索,基于TensorFlow进行了定制改造,并联合平台,形成了一整套解决方案。

 

首先是对训练数据实施统一管理。并且自研了数据Checkpoint,保证组件恢复后从数据断点处续训,加上原生TensorFlow支持的模型部分的Checkpoint,再结合K8S针对微服务的快速恢复特性,做到了训练所有组件异常的全自动处理。在不影响模型效果的基础上极大的提高了训练成功率,降低了算法工程师的时间成本和频繁训练失败的硬件成本。

 

后续,依托以上容错架构,可在统一层面对数据实施预处理性能优化,并且可实现训练健康度追踪,增量数据动态增加、训练进度展示等功能。另外在线学习这类主要是依托消费数据的及时性来提高算法决策效果的场景中,更加需要遇到问题时能够快速自动的处理,此时容错的场景非常的适合。此外在集群层面,也可以随时对训练组件进行重新调度,整理资源碎片,提高资源的利用效率。

 

3. 集群优化

 

平台化的工作通常避免不了面对繁琐的集群管理工作,九数平台管理多个集群,并基于K8S对CPU、GPU等异构资源统一池化管理,集群中多种任务类型混合部署,并且机器学习任务往往对环境要求极高,挑战重重:

 

(1)异构资源管理难度大

 

集群需要管理的对象往往包括存储、计算(CPU & GPU)、网络等诸多对象,管理难度大。而且机器学习任务,尤其离线分布式任务各组件对资源需求各有偏重,如何充分利用各种资源在集群管理中显得异常重要。

 

(2)资源共享程度低

 

某些硬件(比如GPU),一般为独占方式使用,难以进一步提高硬件利用效率。

 

(3)资源利用率与训练速度难平衡

 

集群利用率的提高往往意味着资源共享程度的提高,而这样又往往导致训练速度的下降。

 

(4)集群超卖与业务隔离难平衡

 

集群利用率的提升往往需要提高资源的超卖程度,但超卖往往会导致高峰情况下部分业务无资源可用。

 

针对以上问题,九数团队在集群层面上制定出一系列的创新解决方案。

 

 

3.1.调度优化

 

以主流的TensorFlow训练框架为例,分布式组件对于资源的倚重各不相同,最典型的例如偏重网络消耗的Parameter Server和偏重算力消耗的Worker。九数集群根据不同的分布式组件特性结合多种调度策略,追求极致的性能和资源利用效率。

 

 

(1)单任务亲和

 

单个分布式任务部署在尽量少的宿主机上,减少跨宿主机、交换机的网络交互,从而提高任务性能。

 

(2)单任务异构混合部署

 

高算力需求组件匹配高算力硬件(例如GPU),高IO低算力需求组件则匹配更低成本的CPU设备,单任务异构资源混合部署,充分利用服务器各项资源。

 

(3)热节点反亲和

 

机器学习训练任务除了对算力要求较高外,分布式组件之间的网络IO也往往很大,然而传统K8S在调度时并不会考虑到节点的IO负载,可能会造成集群中节点的IO瓶颈,从而影响到任务性能。在未来,针对该问题,九数集群会将节点的IO认为是一种可调度资源,当前的IO负载为该资源的使用值,从而在K8S层面上做一些调度的优化,从而达到避开IO High Load节点的目标。同样,在request < limit的超卖情况下,其他资源类型也可能导致某节点存在可调度资源,但负载较高的情况。此时该方案依然适用。

 

以上其实是一种贪婪的策略,因为只考虑到了节点当前的各类负载,任务同机部署以后还需要面临负载的变化。对此,九数团队随后会利用算法对节点的任务负载进行一些预测,更好的兼容节点未来时间的负载从而实现更合理化的调度。

 

(4)单任务多种策略混合

 

单个任务智能搭配多种策略,在集群利用率和任务速度之间寻找最佳平衡点。

 

以上的策略对于平台所有任务适用,在京东零售内部场景下最高能够达到57%的训练提速。

 

3.2.自适应Quota

 

试想这样的一个场景:某个集群总共有100C(以CPU为例)的实际物理资源,服务三个业务组A、B、C,他们各自有50C的Quota,也就是为了保证集群资源被充分利用一般会有一定程度的超分。那幺在三个业务平时错峰使用还好,但如果A、B业务高峰将集群的100C用完了,那幺就会导致业务C无资源可用。

 

为了解决这个问题,九数团队引入了一个在任务创建时的准入控制算法,根据当前集群的整体资源使用情况和该业务的资源使用情况,对请求进行一个打分,来决定是否接受本次任务创建请求。这样在集群中各个业务相当于有了一个自适应的Quota去保证集群的利用率与业务公平。通过这个方法,达到了控制的目的:(1)集群整体空闲时,现有业务可以充分利用本Quota资源,集群被合理利用。(2)集群整体繁忙时,能够保证业务有基础的Quota控制,也就是指A、B和C各有33C可用,兼顾业务公平和集群资源的合理利用。

 

平台当前使用的这个算法版本还比较简单,后续会融入业务实际资源利用率,集群碎片化程度等数据指标。

 

另外,平台还会在利用率层面以业务为单位进行管控,来督促业务的资源合理化使用。

 

3.3.面向大规模机器学习训练的HostNetwork网络模式

 

传统的K8S平台常用虚拟容器网络插件,比如calico。但在大规模的分布式训练场景下,这种模式往往导致我们无法充分利用宿主机带宽资源,影响训练性能。

 

为了解决该问题,九数在训练场景中引入了HostNetwork网络模式,即直接使用宿主机网络通信,从而突破容器虚拟网络瓶颈。这种方案首要解决的问题就是端口分配的问题,同一个宿主机上往往部署很多不同的训练进程,不同的端口。平台需要管理好这些端口,不能造成冲突。

 

 

所以我们在自定义aijob的operator中开发了端口免冲突的随机分配算法,来解决该问题。经过benchmark以及真实业务测试,HostNetwork大概会有20%的性能优势。

 

02

 

九数商业分析平台未来规划

 

据京东零售数据算法通道委员会会长包勇军介绍,九数商业分析平台承接京东零售全部工业级算法业务,包括搜索、推荐、广告、反作弊等,并且基于平台,业务也在持续拓展和迭代。

 

未来,九数团队会不断推动平台迭代升级。

 

(1)算法解决方案

 

依托平台打造通用算法能力,建设业务数智化改造整体解决方案。

 

(2)集群智能化升级

 

算法反哺集群管理,使集群管理、任务调度更加智能化,合理化。

 

(3)极致性能

 

持续跟进业界领先技术,结合业务提出更多创新性能提升解决方案。

 

(4)提升易用性

 

关注算法开发痛点,提升业务算法开发效率。

 

九数商业分析平台依赖了京东云很多产品,算法任务对于性能的极致要求,也助力京东云进一步打磨产品性能与稳定性,使得京东云更加值得信赖。

 

京东九数智能引擎由京东零售数据与智能部荣誉出 品,同时感谢京东零售数据算法通道给予的支持。核心研发团队注重技术沉淀及行业影响,积极参与学术 交流,鼓励前瞻性项目探索,勇于挑战业界难题。京东九数智能引擎团队也非常欢迎志同道合的优秀人才的加入,有意者请与 [email protected] 联系。

Be First to Comment

发表评论

您的电子邮箱地址不会被公开。 必填项已用*标注