“卖货”疯狂增长的背后,京东疯狂搞技术,废话不多说,快上车,故事开始了。
坐标北京潘家园,古玩市场人群熙熙攘攘。地摊上,玉器、书画、钱币、木器、古币散摆了一地,客人一屁股稳坐在摊口的破皮子小马扎上,粗糙的手指反复盘弄一个炭黑色“老底子”铅酒壶,把玩将近20分钟了,摊主无动于衷。
这位摊主,难道要等客人摸到“铅中毒”了才看出来“购买意愿”吗?计算机里的人工智能可明白着呢,每当用户点商品,加购物车,翻详情页,读评论……它就一通忙活。因为这些用户的动作,可太重要了,这可是人工智能眼里宝贵的“用户实时反馈”,用于准确判断用户兴趣。假如一位京东APP用户也选购商品20分钟,人工智能过了三天三夜才懵懵懂懂反应过来“用(购)户(买)兴(意)趣(愿)”。发现兴趣是第一层功力,还要发现兴趣是变化的。剁手党总是善变,一会爱这个,一会爱那个,兴趣变,品味变,潮流变。如果推荐商品的时候,用户看了20分钟鞋子,兴趣已然消耗殆尽,APP还在一(傻)味(傻)推荐鞋子,APP离被卸载的悲剧,也不远了。
总而言之,卖货,要反应快。体现在计算机里的人工智能身上,就是实时性。反应越快,越能“做成买卖”,所以,实时性是人工智能做零售这门生意的时候的IQ水平。打分标准很简单,效果好,IQ高。延时多,效果差,IQ低,俗称傻呼呼。京东618和双十一大促的时候,压力排山倒海,逛APP就像逛春节的庙会,在线用户多,用户行为更多。在平时,京东日常处理几十亿商品和五亿用户,如此大的数据,想要处理好,不仅是一个技术问题,还是一个见识问题。更别说,用户在京东APP里不是静止的,买买买,逛逛逛,就会产生海量行为数据。新数据像雪片一样飞来。人工智能要有边下雪边扫雪的能力。
在这个“动不动就一个亿”的玩法里,增量信息就是用户兴趣、用户意图的增量,好比把积雪(数据增量)及时扫掉(模型更新)。想要精准抓住用户特点,人工智能就需要特大(百GB级别)的模型参数。模型参数是什么呢?就是商品和用户的特征,简单理解,就是人工智能抓住的特点。综艺节目里的模仿秀惟妙惟肖,这就是演员在表演中抓住了“神特征”。陈奕迅轻唱,谁能凭爱意将富士山私有?人工智能说,唱得好,打断一下,在下认为,能抓住富士山雪顶特点,那才是真爱。目前,整个科技界公认的做法分两步。第一步,把AI模型做得很大。足够大,才能在这么大规模的群体中精准刻画用户特(兴)点(趣)。第二步,在这个大体量压力下,性能还要好。说白了,就是在山崩雪啸中清理雪道,难度可想而知。当AI模型超大(TB级别)的时候,传输,更新,就好比把富士山的雪块,全部搬到北海道去。那应该怎么办呢?答案不是搬雪,而是扫雪。“扫雪”的水平要高,及时又精准。假如你和我都用京东APP,这些海量参数里,有一批参数表达了你,有一批参数表达了我。你点击了,就是你的用户行为有反馈了,及时更新你的参数(特点)。一大堆雪,要能区分,是谁家门口积雪。扫错了门前雪就是错误地更新了别人家的参数(特点)。时间往往是最大的敌人,实时性是最难的问题。虽然难,但是业务很受益。所以,京东零售对实时性的要求十分之苛刻。世人常说,昨天之不可能,今日之极限,明日之平常。在京东零售推荐系统(召回过程)里,2020年做到了30分钟级的实时性,2021年做到了1分钟级别。那么问题来了,如何办到的?这得从一个人谈起。他就是现任京东集团副总裁、京东零售技术委员会主席、京东零售技术与数据中心负责人、京东零售云总裁颜伟鹏。在来京东之前,他曾担任谷歌中国工程研究院副院长,英文名字是Paul,发音简短上口,所以,大家日常称呼,Paul总。
2013年,Paul总初到京东,看到这样一番景象,场景多,需求多,研发团队忙得脚打后脑勺。谈创新?谁也顾不上。Paul总说,这样不行,京东研发体系是采销体系的坚强后盾。他在一张神秘蓝图的留白处,批了八个字:标准、自动、规范、智能。那些年,虽然生意亮眼,但是技术欠些火候。Paul总在谷歌公司的时候,曾经穿越谷歌与必应搜索世纪大战的硝烟,战绩斐然。在他心里,无论业务是什么,技术实力要对标硅谷。顶尖人才需要愿景驱动。于是,Paul总用这张神秘蓝图招揽人才。2014年春,Paul总面试了一位年轻人,包勇军,他身形挺拔清瘦,对技术的热情像白色水蒸气一样往外冒,简历里写满全球顶尖项目,反而很少有人提他是北京大学毕业的。据说,包勇军看过那张神秘蓝图后,转身就入职了,带广告算法团队。有一件事,大家都知道。Paul总倾听汇报的时候,要么不说话,要么只问一个问题便能抓住要害。而那些从Paul总办公室里结束汇报,走出来的算法工程师,心底都只有一句话:“你哪里有问题,他一眼就能看穿。”另一件事,只有几位专业的博士同事才知道。语音识别是典型的人工智能赛道,在语音识别技术试水初期,一个小众语音识别工具需要选型,多位资深专家举旗不定。Paul总亲自参加多场选型会后,定下了结果(kaldi )。一段时间后,其中一名研发人员机缘巧合地请教了一家科研院所专攻此方向的教授,吃惊地发现教授实验室的同方向的组里也用同款工具。想不通Paul总是怎么定下来的。Paul总的身上,没有时差,一直过着中美两个时区,电话会议开到深夜,一觉睡醒,京东ME里总有Paul总的指导性留言。次日清晨的技术选型会上,又见Paul总的身影。团队在Paul总的领导下,避大坑,绕雷区,躲弹片,不恋战,从不为了技术而技术。只为速穿火线,荡平山头,拥兵破阵,策应业务,用技术驱动零售。北京的窗外,西北风横扫一切,窗内“从严治军之风”横扫一切。京东零售的代码质量被史无前例地提升,技术在业务场景里加速创新。时光流转,Paul总当初定下的目标没有变,标准、自动、规范、智能。想做到这几点,绝对少不了一个强大的算法底座。算法和算法底座虽为两件事,但又密不可分,刚柔并济。干的活完全不同,还又要彼此理解。一般来说,一个业务场景,由一个算法团队负责,一个算法底座团队来打配合。表面合理,本质错误。若是日后业务场景里的算法数量翻10倍,算法底座团队数量是不是也翻10倍?一路放任,无法无天。这打法又俗称“堆人战术”,明显是错的,来一个工单,堆一波人。这就好比下雪了,派人扫雪,下大雪了,派更多的人扫雪。可是效率呢?技术研发很少讲绝对,但是“研发人效低了”绝对不行。认错很难,尤其是错了很久之后。所以,早期判断,弥足珍贵。他把队伍分成两路,上路纵队专攻算法,下路纵队专攻算法底座。上路猛冲狠打,下路火线支援。算法冲锋,算法底座支援。战场上,增援和冲锋同样重要。否则一味冲锋,孤军惜败。软件开发是一个创造性的过程,但也有许多重复性的工作。尤其是工程越大,重复性的工作越多,还容易引起混乱。得有个“以一顶百”的东西,这个“顶”有顶住、支撑之意,这个东西就是“算法底座”,也有人管这个叫“中台”。
你用,他用,都要用,有一种公共属性。所以,“算法底座”让所有团队共用,从人力角度,整支部队就能“缩编减冗”“效率大增”。更重要的是,无论是堆机器、堆人力,都无法在数据的快速膨胀、业务的高速增长和平台的稳定易用高效上取得比较好的平衡。理论上讲,线上业务离不开人工智能算法,几亿用户,几十亿量级商品,没有算法,京东“停摆”。事实上讲,更是如此。如果你不信,那得先了解一下,那些人工智能算法是什么样的。全世界所有电商公司的人工智能算法,都是为了提高购买率(点击率CTR和转化率CVR)。不搞技术就不用记这个,请记住“点击”这个动作。这个动作可是网购界的“最骚操作”。谁网上购物都得用手指头点击,光用眼睛瞅,买不了东西。“点”就是兴趣,“点”就是关注,说到底,一场关于“点与不点”的游戏,点击就是好朋友,不点击就拜拜了您呐,慢走不送。点击才是正面战场,点击才是王道,有了点击量,支付、物流等后勤部队,才有资格冲上战场。于是,就像微信朋友圈收集点赞一样,攒了很多“点击”之后,再用黑科技来“猜你喜欢”“找你喜欢”。京东零售,算法三强是广告、搜索和推荐,相当于三台大发动机。这三个算法一停,购物APP就基本是“静止画面”了,买个东西,全靠手动翻商品目录了,可劲找吧。比如,预测每个商品被用户点击的可能性,预测用户点还是不点,点的可能性大的排在前面。网红奶茶店门口,人排队。反过来了,货排队,人不排队。当然,这是推测出来的,换一拨人,这个思路可能完全不对。时间对推荐技术也有很大影响。十年前,你为了凹造型,染五颜六色的杀马特发型;十年后,推测你买防脱生发产品。再比如周星驰喜欢的《演员的自我修养》,买过了,推测应该不会重复买,没有排队的资格了。(小声讲,京东零售推荐系统里面有个大漏斗,一堆好玩的硬核技术,涉及商业机密,不能多说。)除了多(广)撒(告)网(费)之外,广告尽量做到谁喜欢,投放给谁。人无我有,人有我吹,人吹我换。比如搜索一个13香手机(Iphone13 ProMax),破算法搜出来一堆手机壳、充电线,或者型号也搞不对,出来一堆淘汰款。好算法就能找到脑中所想。算法和算法底座,兵分两路,“上路纵队”有多个,“下路纵队”只有一个。先分工灭敌,再火力合并。集中火力是指把重复使用的功能都“拿”出来,以组件的形式放在软件系统里。难度挺大,既照顾共性,又包容差异。高铁车头始终一个,拉动的车厢从8节,扩大到16节,丝毫不影响前进速度。往大里说,这是一种“新思路”。Paul总的要求是,这是思路,也是纪律。2021年的时候,有人不经意间向包勇军提及一件事。作为京东零售的“算法大户”,广告算法团队理应最大。奇怪的是,虽然算法团队在不断扩大,但是算法底座的团队规模始终都在二三十人左右,并且丝毫没有壮大的迹象。按道理,日均千万级广告收入,就这么几个人,不太可能吧?包勇军的答案,再次验证当初Paul总的想法是对的。这个想法总结成一句话,就是“用平台,提升研发效率的意识”。这里的平台,就是算法平台。它不仅需要“山盟海誓”的技术决心,更需要“海枯石不烂”地遵守纪律。数据,多模态,组织越来越复杂,应用越来越灵活。底层技术,又难又累,算法底座里的底层技术,更难更累,简直是一个让人挣扎的泥潭。2015年,包勇军在AI框架(Theano)上进行适合京东零售业务的定制化开发,这个框架是加拿大蒙特利尔大学实验室的开源软件。那时候很多人都没把AI用起来,更别说定制化开发AI框架。这么说吧,算法跑在算法底座上,算法底座跑在AI框架上。所以,很好理解,AI框架是底座中的底座,属兵家必争之地。这好比,AI是一辆汽车,AI框架则是汽车的发动机。AI是手机,AI框架就是手机操作系统。技术风向总在变化,兵贵神速,2016年,包勇军带着团队迅速切入AI框架(TensorFlow)的内核。2017年初,朱小坤入职了,专门负责算法底座,带着团队逢山开道,遇水搭桥。他们的口号可能是八个红漆大字,“稳如泰山”“保障有力”。2018年左右,京东的GMV(16768亿元),比2013年翻了13倍,业务的压力分分秒秒传导给技术。每当任务激增,资源的消耗必然水涨船高。这时候,每个人都以为会有好的资源助攻。然而,Paul总提出:“技术能力满足所有团队对于算法和算力的需求,但是,一不能堆人,二不能堆机器。”那一年,AI江湖笃信“计算资源大力出奇迹”。计算资源不够,就好比出去逛街,满世界好东西,兜里钱不够。那一年,AI算法创新多红利,算法不够,一脸尴尬,这就像出去比武,你拿了一根破木棍,人家打出一套降龙十八掌,顺带九阴真经、弹指神通、六脉神剑……王者荣耀打大龙,每一次攻击都在耗血。AI算法跑起来,每秒都在消耗计算资源。一台很(英)著(伟)名(达)公司的计算设备,动不动就卖到几十万、上百万。高档货这么贵,用起来精打细算,底层物理计算机的资源调度立马提上最高日程了。调度就是一种管理,就是为了用好资源。想攻下这个“山头”,一连上了好几个八块腹肌、技术勇猛的精神小伙,可惜,皆是铩羽而归。只要问起,小伙们就满脸不高兴地甩一句:“帅哥的事,你少管。”实际上,底层涉及的技术面比较广,跨多个技术领域。资源调度也是基础设施,在算法底座的下面,是算法底座的油箱。核心是智慧集群的管理调度,但是,镜像管理、多集群管理、日志管理、监控等每一样都要管好。朱小坤有了一些白发,但每一根头发都倔强地摆出造型,有一种行事低调的艺术家风范。桌面上总摆着纸质的学术论文,脸上总挂着和蔼可亲的笑容,办公桌前伏案的他,更像大学里一位教高等数学的老教授。618团队统一发的黑色帽衫,看样子是要穿到来年。下班,刷一辆共享单车,路灯下车轮的影子拉得老长。他编程的时候,帽衫上的京东吉祥物Joy似乎也在安静地微笑。想不到的是,这样一位气质上“宁静致远”的人,别人对他的评价都很激烈,“别人都搞不定,坤哥搞定了”,还有同事说他工作起来动不动就“连夜突击”。 熬夜加班这事,他一听就否认三连,偶尔,偶尔,偶尔。渊源有自来,京东哪个团队不在角落里塞着几张行军床呢。别人想想要上班编程一整天,心痛不已。朱小坤想想要编程一整天,快乐星球。他是有一些功夫在身上的,这个功夫就是“20多年大型计算机系统软件的架构经验”。
从此以后,资源就不用你争我抢了,有的分配计算密集型的机器,有的分配高存储的机器。人有忙有闲,机器工作节奏也有潮有汐,统一的资源管理平台,大大提高计算机利用率,把计算机压榨到底,节约了不少真金白银。如今,这个平台就是现在九数算法底座的底座(资源池化和基础设施层)。九数这个响当当的算法底座,内部有个代号“9N”。2018年,九数上岗,一年内,京东零售团队将GPU的利用率翻了三倍。九数上岗,连续两年,没有采购任何昂贵的计算机。计算资源被打服了,而另一个难以攻下的“山头”还一脸傲慢——AI的量(深)体(度)裁(定)衣(制)。从2019年第三季度到2021年第二季度,京东连续八个季度大步增长,活跃用户数增长2000万。以这个体量,想把AI用好,只有以大工程的姿态示人。人工智能这个软件,可以很小,仅在一台笔记本电脑上运行。比如,拿笔记本电脑写一个猫脸识别的算法,门口安个摄像头,猫殿下迈着猫步一脸傲娇“刷脸”进门。可以很大,全世界的猫同时刷脸进门。这时候,笔记本电脑下线了,请上一条龙的服务。当“大系统”和“一条龙”报错的时候,麻烦大了。研发同事高举大大的纸牌子刷出亮眼的存在感:“为什么我的任务没能跑起来?”科技公司里,时刻都会面对工(痛)程(苦)问题,关键在于拿什么心态面对,公司的企业文化又鼓励员工用什么心态面对。没有工程文化的科技公司,是没有灵魂的躯壳。Paul总常谈的工匠精神,在这里是一种对“痛苦”的恪守。把痛苦留给自己,把简单留给业务。朱小坤说:“做大型计算机系统软件不出名,技术别人也听不懂,唯一期待就是业务出效果。”朱小坤提到的大型计算机系统软件,为什么京东非要自己搞?因为没有现成的软件,配得上京东庞大的生意体量,配得上京东策马奔腾的算法,配得上京东供应链流星赶月的数智化。关键是,AI这个东西。开源的AI软件在工业级的场景里不够用,非得自建流水线,量(深)体(度)裁(定)衣(制)。有人笑谈,这是艺术,而不是科学,在复杂和简单之间散步,设计决定需要依据科学和艺术。回想起朱小坤的发型,让人似乎读懂了什么。朱小坤常说:“没什么诀窍,我也是学的。大型人工智能软件对基础设施的依赖非常强,而基础设施的稳定性特别难做,慢慢来,急躁不得。找到一个问题,解决一个问题。”智商是天生的,一个技术极客水滴石穿的匠人精神,不是“天生的”。有了匠人精神,不靠颠覆式创新,那些又大又复杂的问题,也会被解决。这就好比,古代没有水泥,长城就不建了吗?深度定制是个大工程,“规模”和“性能”都让人头疼。大厂家家都要干,且都揣着绝活。京东的深度定制,不只是定制一部分,是定制一个大全套(流水线从模型开发、模型训练,到模型服务)。
如此这般,最硬核的来了。人工智能没日没夜训练模型,好比部队要军训,一批算法模型上了战场。训练得好,聪明能干。训练不好,人工智障。有人对着手机屏幕大骂:“啥破玩意,APP里给我推荐的啥东(垃)西(圾)。”为此,京东零售对不同黑科技,推出不同的AI框架,比如,强化学习框架,图深度学习框架伽利略(Galileo),在线学习框架,而且都是“9N”开头的代号。例如,图深度学习框架伽利略,解决大规模图算法在工业级场景落地问题。虽然深度学习算法的生产流程的整条链路改动大,但也不能放任自流。一百个模型,有一百个生产方法,这是灾难。在京东零售,就有标准的生产方法,比如著名的BERT模型。还有统一的超大规模深度学习框架擎天柱(Optimus),支撑几十个业务场景,每天都能生产数千个增量和全量的AI模型,解决规模问题的标准化。在京东,“重复使用”是人人皆有的意识,无论是产品,还是功能。不追求个人牛逼,而是追求平台牛逼。在电话会议上,朱小坤听到一些做法不太对,从不急躁,反复耐心地说:“注意要复用。”“不能这样做,不能复用是要挨骂的。”对图深度学习来说,只有前一部分(样本生成,图存储、采样)不同,所以,底座可以重复使用。这样,图深度学习和在线学习用了同一套底座。时至今日,京东零售算法底座用同一套系统,同一套代码,支持了集团的一大帮兄弟公司,京东物流、京东健康、京喜,将“复用”发挥到了极致。Paul总说:“AI技术的高速发展无疑颠覆了我们的想象,目前AI技术的应用已经贯穿于京东零售整个商业流程。”
商业和技术无法分割,京东零售谈100次技术,就会谈101次商业。代码里有生意,算法里有业务,处处都有人货场。技术最终瞄准的都是优化成本、效率和体验。Paul总说:“有了京东零售云做对外的窗口,北极星做零售云的引擎,我们可以就业务、数据、用户等板块,为企业复杂业务提供技术输出,通过运营赋能创造更多的商业价值,同时开放京东自有生态,不断为整个赋能过程注入活力。”星辰大海中,不是看到希望才去坚持,而是坚持了才看到希望。
京东零售的全部技术实力和对商业的全部理解都毫无保留地沉淀于一个产品,Paul总的神秘蓝图也实现为这个产品,名叫“北极星”,全称是京东零售北极星商业操作系统(简称JNOS)。这里需要留意两个重点:“北极星=商业+操作系统”。北极星商业操作系统蕴含两种极不易获得的能力。“商业”从一路狂飚的成交额和活跃用户数量中总结而来,积累京东服务品牌商的商业方法论、业务能力和商业经验。“操作系统”有服务五亿用户和几十亿商品的技术能力,有九数平台的能力,有积累多年的全链路线上交易展示、浏览、加购、结算、履约、售后等等能力。除此之外,还有AR与VR平台、移动技术平台、风控、安全、营销、运营等能力,如此全面,才能谓之“全套”。曾经,Paul总的每一天都思考:威胁在哪里?什么变化会让业务死掉?保持竞争力该怎么做?在京东零售,Paul总的每一天都在准备把花重金打造的技术,加之零售方法论,用于商业化产品全流程高效运转。八年后,表面上,京东只是一家“卖货”公司。暗地里,京东是一家构建在供应链基石之上的数智化公司。这八年,恰逢中国数智化转型承前启后的黄金时段,京东在摸索中成功开创。Paul总说:“过去的二十多年中,京东零售已经建立了一个令人印象深刻的零售科技基础设施,北极星商业操作系统的机会很大,我们用同一套系统赋能行业客户,这种将京东实践验证后再输出的打法,已经得到很多客户的认可,我们很有信心打造出一个生态。”只要一个地方足够大,就有人容易迷路。只要一个软件系统足够大,就有工程师苦苦挣扎。算法工程师说:“为找错误,我三天三夜熬红了眼,全程手动写程序,行行好,给一条活路吧。”找什么样的错误呢?你随手在京东APP搜“连衣裙”,搜出来一个穿着连衣裙的洋娃娃。还愣着干嘛?排查错误原因呀。算法工程师一听,连夜扛着绿皮火车跑了。因为一方面在复杂系统里排查要横跨多个IT系统,牵扯多个业务系统。疑难杂症肯定得专家医生会诊出结果,找错误难不成惊动所有人?另一方面,在复杂服务集群里排查,难如登天,海量服务挤在一起,可能一个服务就需要成百上千台的物理计算机协同工作,一旦某一台计算机的服务出现了问题,开发人员想定位问题,犹如海底寻针。我这样理解,“观星”是位摄影师,非常会抓拍的那种,咔擦捕捉精彩瞬间,再用照(日)片(志)分析所有。难点在于,以每次请求的唯一标识为脉络,忠实可靠地记录了该次用户请求在经历了推荐广告中所需的所有流转环节的数据,以数据为骨,勾勒出一次请求。只消半年,“观星”做到了帮助开发人员在极短的时间内(排除运行着相同服务的计算机的干扰,在每秒钟都要收到上百万条请求的海量数据中),快速定位问题,直捣错误“老巢”。这里说的“极短时间”,一位京东算法工程师是这样形容的:“原来排查一个错误情况,可能得三四天,现在一个小时就可以了。”他还强调:“有了观星,就可以查看AI模型的实际使用效果,因为早就对AI模型的出入口(输入和输出)咔咔拍了快照,所以,欢迎随时来诊。”·················END·················