1、张颖、刘露/算法工程师Alink、Tensorflow on Flink在京东的应用京东搜索推荐机器学习场景基于Alink实现在线学习#1#2Tensorflow on Flink 应用#3规划#4#1京东搜索推荐机器学习场景京东搜索推荐业务场景猜你喜欢秒杀推荐直播推荐新品推荐导购助手为你发现订单搜索优惠券搜索店铺搜索关键字搜索垂直站海外站京喜京东主站线下业务下拉发现商品画像智能运营用户画像知识图谱反作弊风控AB分析排序展示意图识别召回生态业务穿插筛选探索相关性京东搜索推荐机器学习场景#1长期画像、知识图谱离线场景,模型时效要求低商品召回、排序、用户意图识别在线场景,对响应时间要求极高实时用户
2、画像、风控近线场景,对模型有时效要求#2#3京东搜推模型服务架构MergerMain SearcherExtend SearcherVector SearcherBlenderQPPredictorTrainPSModelHubFeatureTag IndexBehavior Index推荐服务BroadwayVector IndexSample PipelineIOSPERanking基础业务底层数据Item DetailUser DetailUser FeedbackFeatureLog搜索服务User&Item ProfileIndex PipelineKPI Analysis京东搜索推
3、荐模型形态小模型分布式训练大规模分布式训练Horovod+all reduce 通讯加速方案自研PSUser/Item eg.Embedding storage、Adam/GradientDescent优化器自定义custom op算子加速兼容pytorch/tensorflow基于Alink 的在线/离线统一架构自研PS多scope、多版本管理数据并行基于Flink 的多种数据并行方式训练/预估一体化在离线分离的模型系统形态GPU PredictorCPU PredictorTableFeatureLogUser FeedbackSample GenSample ETLEmbedding S
4、erverControlerFeatureServerFeatureOPDistributed TrainerParameter ServerSingle TrainerUniform Feature AccessModelHubStreamDFSRemote StoreLocal Store高时效场景模型迭代形态训练流式训练很难实现failover、pretrain、分布式化(小模型)等功能离线批数据训练出Basic Model,实时流数据在其基础上持续训练训练/预估架构不同,数据模型、特征处理、模型训练、模型推理等需要分别维护不同的系统和代码结构预估不足#2基于Alink实现在线学习在线学
5、习系统痛点离线/流式训练架构难以统一技术架构一份数据需要多种代码解析,多次校验,准确性难以保证数据模型训练出来的模型如何应用于预估服务?预估服务如何解决模型版本升级带来的参数丢失?模型升级Alink是如何解决架构统一问题的?kafkahdfsLoad model info and parampsoffline train将model info 和param 写入psWarm start感谢社区品一、品七等人的帮助与支持实时学习模型如何服务于在线预估场景?离线PS在线PSinference数据同步Alink离线PS在线PS方案APS Controller离线PS在线PS方案BAlink目标模型版
6、本升级带来的参数丢失28 dayLost 1h28 dayParameterServer1 day 1h增量覆盖模型迭代的时候,由于离线训练完成需要一定时间,如果直接覆盖的话,会造成这段时间的参数丢失为何模型版本升级会带来参数丢失模型训练PS冷启动/热切换策略Offline train(冷启动)Version 0Version 0Version 0Version 1Warm startpredictWarm startOffline train(热切换)Warm startVersion 0Version 0Version 0Version 1Version 1predictPs old sc
7、opetaskmanagerPs new scope缺少1h参数Parameter Server 多scope 多version模型训练冷启动之后模型暂时不可用,等待第一次warm start之后模型进入可用状态模型热切换的时候只更新ps new scope,warm start 的时候更新所有scope训练/预估一体化,每次predict的时候只用old scope里面的数据流式训练痛点流式学习持续训练的保证failover提高训练速度,降低PS压力pretrain单机模型如何实现分布式?distributed流式训练failover策略parameterserverAlink taskta
8、sk fail实时持续训练Single task recoveryGlobalrecoverypull/push网络异常等单点重部署异常load checkpoint dataload/save感谢京东付海涛、裴周宇等人的帮助与支持当任务训练过程中出现网络异常、container被驱逐等异常时,可以先走single task recovery策略,如果单点重部署异常之后,会走全局恢复流式训练模型pretrain策略模型训练pretrainsingle task recoveryglobal recoverycold startinit scopesave model恢复超参不需要pull超参,
9、降低ps qps继续训练save 超参(状态后端)reload 参数single recoveryallow parameters losspull 超参ListState MapState ValueStateinit version 持续训练quick recovery冷启动:实时任务首先pull 超参,然后初始化状态后端,同时将scope 和 version 信息写入状态后端全局恢复:当训练不允许参数丢失的时候,走Flink Failover 的策略单点恢复:当训练允许参数丢失时,走快速恢复策略数据并行下的模型分布式打通Alink 模式下分布式调用python方法的通路train 和up
10、date model variable 批流一体化#3Tensorflow on Flink 应用Tensorflow on Flink 预估服务现状区别于在线预估,实时/离线预估不需要服务一直存在,且load到tm内部可以大幅节约人力维护和资源成本架构不同导致数据模型、数据处理、模型训练、模型推理等需要分别维护不同的系统和代码结构不足Tensorflow on Flink预估服务模型rpc serverhttp server方案A模型方案BFlink TMloadflink taskloadinference感谢社区子懿、仲卓等人的帮助与支持#4规划规划批流一体化实现Alink任务,使模型训练更加方便批流一体Tensorflow Inference on Flink实现支持大模型大模型支持实现Tensorflow模型的流式训练Tensorflow流式训练鸣谢#1感谢阿里云计算平台事业部Flink生态技术团队所有同事的帮助与支持感谢京东数据与智能部数据时效Flink优化团队的所有同事的帮助与支持感谢Alink社区全部同事的帮助与支持#2#3Alink社区https:/