《阿里云:MetaApp:基于DeepRec的稀疏模型训练实践(12页).pdf》由会员分享,可在线阅读,更多相关《阿里云:MetaApp:基于DeepRec的稀疏模型训练实践(12页).pdf(12页珍藏版)》请在三个皮匠报告上搜索。
1、MetaApp:基于DeepRec的稀疏模型训练实践臧若舟行业背景推广搜场景,早就使用了大规模稀疏模型,其特点是稀疏特征的数量能达到十亿级别,模型的大小也是tb级别。随着TensorFlow的流行,各家都落地了基于TensorFlow二次定制结合自研分布式parameter server的方案。这种方案存在一些弊端,比如对特征输入格式要求高、算法工程师二次定制开发比较困难等。团队介绍我们是MetaApp的AI研发部,主要负责C端产品233乐园的上海品茶信息流的推荐和广告系统,是比较传统的推广搜组。DeepRec支持了淘宝搜索、猜你喜欢、定向、直通车等核心业务,支撑着迁移特征、万亿样本超大规模的稀疏
2、模型训练。积累了核心的稀疏场景的功能及性能优化。针对稀疏场景在分布式、图优化、算子、Runtime等方面进行了深度的性能优化,同时提供了稀疏场景下特有的动态弹性特征,动态弹性维度,多Hash Embedding,自适应EmbeddingVariable、增量模型导出及加载等一系列功能。稀疏模型训练EmbeddingVariable 多机存储基于gpu的分布式训练多级存储的性能问题多级存储,基于ssd的存储选择了rocksdb方案,在compaction时会遇到严重的写放大问题,导致读取速度变慢,ps成为训练速度的瓶颈。DeepRec早期的多级存储的ssd存储也是基于leveldb,遇到了类似的
3、问题。DeepRec的解决方案在新版本上推出了ssdhash的存储方案,大大提高了compaction时的读取性能,整体训练速度不再受困于ps端。后续基于ssdhash推出了同步和异步方案,异步方案可以让向ssd写入数据和compaction使用不同的线程。模型压缩由于模型大小主要来自于uid的embedding,如果能缩小这部分的大小可以根本上进一步提升ps的性能。采用了binary code的方式实现了embedding的multihash方案,可以将模型大小从800g压缩到40g以下。通过优化序列建模,大大降低了multihash对于模型性能的损伤,线上指标几乎无差异。基于gpu的训练随
4、着近几年搜广推模型技术的发展,模型里矩阵计算的复杂度大大增加了(比如序列模型中各种transfomer的使用),使用gpu代替传统的多cpu worker的训练方案,无论是训练速度还是性价比都有巨大的优势。阿里云PAI平台开源的HybridBackend支持基于gpu的分布式训练方案,而新版本的DeepRec已经集成了HybridBackend模块。完全基于显存训练由于之前提到的模型压缩,把模型所有参数全部放入显存变成了可以实现的方案,这种方案大大减少了cpu和gpu之间的数据拷贝,能最大化提升训练速度。经过测试,使用这种方案单张v100的训练速度可以超过20台40core worker节点。HybridBackend也提供了分级存储,可以自定义的把部分embedding放在显存里,其余放在内存/ssd等。模型inference上图是我们自研的模型inference方案的简单架构图。方案的细节单机器运行所有模型。使用DeepRec的sessiongroup方案,使用多instance的方式,避免了大量模型内存的重复使用。使用DeepRec的Processer库。