DeepRec(PAI-TF)是阿里巴巴集团(https://github.com/alibaba/DeepRec)统一开源的推荐引擎,主要用于稀疏模型的训练和预测,可支持千亿特征、万亿样本的超大规模稀疏训练,在训练性能和效果上具有明显优势;目前DeepRec已支持淘宝搜索、推荐、广告等场景,广泛应用于淘宝、天天猫、阿里妈妈、高德等业务。自2019年以来,英特尔一直与阿里巴巴的PAI团队密切合作,将英特尔的人工智能(AI)技术应用于DeepRec,优化算子、子图、运行时、框架层和模型等多个层。充分发挥英特尔软硬件优势,助力阿里巴巴加速内外部AI业务落地。DeepRec的主要优势目前主流的开源引擎在支持超大规模稀疏训练场景方面还存在一定的局限性,例如不支持在线训练、无法动态加载特征、在线部署迭代不便等.,尤其是当性能难以满足业务需求时,问题尤为明显。为了解决以上问题,DeepRec基于TensorFlow1.15对稀疏模型场景进行了深度定制和优化。主要措施包括以下三类:模型效果:优化主要通过增加EmbeddingVariable(EV)动态弹性特征函数和改进AdagradOptimizer来实现。EV函数解决了原有变量大小难以预测和特征冲突的问题,提供了丰富的特征接纳和淘汰策略等高级特征;同时,它根据特征出现的频率自动配置冷热特征维度,增加高频特征的表达能力,缓解过拟合,可以显着改善稀疏模型的效果;训练和推理性能:针对稀疏场景,DeepRec在分布、子图、算子、运行时等方面进行了深度性能优化,包括分布Formula策略优化、自动pipelineSmartStage、自动图融合、Embedding和等图优化Attention、commonsparseoperator优化、内存管理优化,大幅降低内存占用,显着加速端到端训练和推理性能;deploymentandServing:DeepRec支持增量模型导出和加载,实现10TB级超大模型分钟级在线训练和更新,满足业务对时效性的高要求;针对稀疏模型冷热偏斜的特点,DeepRec提供了多级混合存储的能力(最多四级混合存储,即HBM+DRAM+PMem+SSD),可以降低成本同时提高大型模型的性能。英特尔技术帮助DeepRec实现高性能。英特尔与阿里巴巴PAI团队的紧密合作,为上述三大独特优势的实现发挥了重要作用。DeepRec的三大优势也充分体现了Intel技术的巨大价值:在性能优化方面,Intel超大规模云软件团队与阿里巴巴紧密合作,从operator、subgraph、frameworks等多个层面对CPU平台进行优化,和运行时,充分利用英特尔?至强?可扩展的各种新特性,最大限度地发挥硬件的优势;为了提高DeepRec在CPU平台上的易用性,还内置了modelzoo以支持大多数主流推荐模型,并将DeepRec独有的EV功能应用到这些模型上,实现开箱即用的用户体验。同时,针对超大规模稀疏训练模型EV对存储和KV查找操作的特殊要求,英特尔傲腾创新中心团队提供了基于英特尔?傲腾?持久内存的内存管理和存储解决方案("PMem”简称),支持配合DeepRec多级混合存储方案,满足大内存、低成本的需求;ProgrammableSolutionsDivision团队使用FPGA实现了Embedding的KV搜索功能,大大提升了Embedding的查询能力,释放了更多的CPU资源。结合CPU、PMem、FPGA的不同硬件特性,从系统角度出发,充分发挥英特尔的软硬件优势,满足不同需求,加速DeepRec在阿里巴巴AI业务的落地,为阿里AI业务提供更全面的解决方案。整个稀疏场景的商业生态。优秀的解决方案。Intel?DLBoost为DeepRec提供关键性能加速Intel?DLBoost(Intel?DeepLearningAcceleration)对DeepRec进行了优化,主要在框架优化、算子优化、子图优化、模型优化四个层面。Intelx86平台AI能力演进——Intel?DLBoost自Intel?Xeon?Scalable处理器问世以来,通过从AVX256升级到AVX-512,Intel将AVX的能力提升了一倍,大大提升了深度学习的训练和推理能力;DLBoost_VNNI在第二代Intel?Xeon?Scalable处理器中被引入,大大提升了INT8乘加运算的性能;从第三代英特尔?至强?可扩展处理器开始,英特尔推出支持BFloat16(BF16)数据类型的指令集,进一步提升深度学习训练和推理的性能。随着硬件技术的不断创新和发展,英特尔将在下一代至强?可扩展处理器中引入全新的AI处理技术,进一步提升VNNI和BF16从1D-vector到2D-matrix的能力。上述硬件指令集技术已经应用到DeepRec的优化中,可以针对不同的计算需求使用不同的硬件特性,同时也验证了Intel?AVX-512和BF16非常适合训练和训练稀疏场景中的推理加速。图1Intelx86平台AI能力演进图框架优化DeepRec集成了Intel开源的跨平台深度学习性能加速库oneDNN(oneAPIDeepNeuralNetworkLibrary),并对oneDNN原有的线程池进行修改,统一为DeepRec的Eigen线程池,减少线程池切换开销,避免不同线程池之间竞争导致的性能下降。oneDNN对大量主流算子实现了性能优化,包括MatMul、BiasAdd、LeakyReLU等稀疏场景常用算子,可为搜索、推广和推广模型提供强大的性能支持,oneDNN中的算子还支持BF16Data类型,与配备BF16指令集的第三代英特尔?至强?可扩展处理器一起使用,可以显着提高模型训练和推理性能。在DeepRec编译选项中,只需添加“--config=mkl_threadpool”即可轻松启用oneDNN优化。算子优化虽然oneDNN可以用来大幅提升计算密集型算子的性能,但是搜索广告推荐模型中存在大量的稀疏算子,如Select、DynamicStitch、Transpose、Tile、SparseSegmentMean等,大部分原生这些算子的实现都有一定的内存访问优化空间,可以通过针对性的方案来实现额外的优化。本次优化调用AVX-512指令,只需在编译命令中添加“--copt=-march=skylake-avx512”即可启用。下面是两个优化案例。案例一:Select算子的实现原理是根据条件选择元素。这时可以使用Intel?AVX-512的掩码加载方式,如图2左图所示,减少if条件带来的大量判断。由此产生的时间开销,再通过批量选择提高数据读写效率。最后上线测试,性能明显提升;优化转置算子,即通过小块的方式对矩阵进行转置,如图2右图所示。最后通过在线测试,性能提升也非常显着。子图优化图优化是当前AI性能优化的主要有效手段之一。同样,DeepRec应用于大规模稀疏场景时,通常会有大量以embedding特征为主的特征信息处理,embedding包含大量的小算子;为了实现总体性能的提升,优化措施是在DeepRec中加入fused_embedding_lookup函数对embedding子图进行融合,减少了大量的冗余操作。同时配合Intel?AVX-512指令加速计算,最终显着提升嵌入子图的性能。通过在tf.feature_column.embedding_column(...,do_fusion=True)API中将do_fusion设置为True,可以启用嵌入子图优化功能。模型优化基于CPU平台。Intel在DeepRec中构建了独有的推荐模型合集,涵盖WDL、DeepFM、DLRM、DIEN、DIN、DSSM、BST、MMoE、DBMTL、ESMM等主流模型,涉及召回、排序、多目标等诸多常见场景;以及针对硬件平台的性能优化,与其他框架相比,这些基于Criteo等开源数据集的模型在CPU平台上带来了很大的性能提升。其中,表现最突出的是混合精度BF16和Float32的优化实现。通过在DeepRec中加入自定义DNN层数据类型的功能,满足稀疏场景的高性能和高精度需求;启用优化的方式如图3所示,通过keep_weights将当前变量的数据类型保持为Float32,用于防止梯度累积导致的精度下降,然后使用两次cast操作将DNN操作转换为BF16运算,依托第三代英特尔?至强?可扩展处理器的BF16硬件运算单元,大幅提升DNN运算性能,同时通过图融合投射运算进一步提升性能。图3混合精度优化使能方法为了论证BF16对模型精度AUC(AreaUnderCurve)和性能Gsteps/s的影响,将上述混合精度优化方法应用于现有的modelzoo模型。阿里巴巴PAI团队在阿里云平台上使用DeepRec的评估表明[1],基于Criteo数据集,使用BF16优化后,模型的WDL精度或AUC可以接近FP32,BF16模型的训练性能有提高了1.4倍,效果显着。未来,为了最大限度地发挥CPU平台硬件的优势,尤其是为了最大限度地发挥硬件新特性的效果,DeepRec将从不同角度进一步优化,包括optimizeroperators、attentionsubgraphs、增加多目标模型等,从而为稀疏场景创建更高性能的CPU解决方案。使用PMem实现embedding存储对于超大规模稀疏模型训练和预测引擎(千亿特征、万亿样本、模型10TB级别),如果都使用动态随机存取存储器(Dynamic?Random~Access~Memory,DRAM)来存储,则将大大提高总拥有成本‰(Total‰Cost‰of‰Ownership,TCO)也给企业的IT运营管理带来巨大压力,使得AI解决方案的实施遇到挑战。PMem具有更高的存储密度和数据持久化优势,I/O性能接近于DRAM,成本更实惠,完全可以满足超大规模稀疏训练和预测在高性能方面的需求和大容量。PMem支持两种运行模式,内存模式(MemoryMode)和应用程序直接访问模式(AppDirectMode)。在内存模式下,它与普通的易失性(非持久性)系统内存相同,但成本更低,在保持系统预算的同时实现更高的容量,并在单个服务器中提供TB级的内存总容量;与内存模式相比,应用直接访问模式可以利用PMem的持久化特性。在应用程序直接访问模式下,PMem及其相邻的DRAM内存将被识别为字节可寻址内存,操作系统可以将PMem硬件用作两种不同的设备,一种是FSDAX模式,并将PMem配置为块设备,以及用户可以将其格式化成文件系统使用;另一种是DEVDAX模式,PMem作为单字符设备驱动,依赖于内核(5.1以上)提供的KMEMDAX特性,使用PMem作为volatile永久内存使用,连接到内存管理系统,作为类似于DRAM的速度较慢且内存较大的NUMA节点,应用程序可以透明地访问它。在超大规模的特征训练中,Embedding变量存储占据了90%以上的内存,内存容量将成为其瓶颈之一。将EV保存到PMem可以打破这个瓶颈,创造多重价值,比如提高大规模分布式训练的内存存储能力,支持更大模型的训练和预测,减少多台机器之间的通信,提高模型训练性能,同时降低TCO.在Embeddingmulti-levelhybridstorage上,PMem也是打破DRAM瓶颈的绝佳选择。目前,在PMem中存储EV的方式有3种,分别通过以下三种方式运行micro-benchmark、WDL模型和WDL-proxy模型,性能非常接近于在DRAM中存储EV,这无疑使得其TCO获得巨大优势:配置PMem为内存模式,节省EV;配置PMem为应用程序直接访问FSDAX模式,并使用基于Libpmem库的分配器来保存EV;将PMem配置为NUMA节点,并使用基于Memkind库的分配器来保存EV。阿里巴巴PAI团队在阿里云内存增强型实例ecs.re7p.16xlarge上使用三种方式保存EV,在Modelzoo[2]中进行了WDL单机模型对比测试。保存到DRAM,使用基于Libpmem库的分配器存储EV,使用基于Memkind库的分配器存储EV,测试结果表明,将EV存储到PMem的性能与将EV存储到DRAM的性能非常接近。图4Embeddingmulti-levelhybridstorage因此,接下来的优化方案将使用PMem来保存模型,将稀疏模型checkpoint文件保存在持久内存中,实现多个数量级的性能提升。很长一段时间,以及这段时间训练预测会被打断的窘境。FPGA加速EmbeddingLookup大规模稀疏训练和预测,涵盖分布式训练、单机和分布式预测、异构计算训练等多种场景。与传统的卷积神经网络(ConvolutionalNeuralNetwork,CNN)或循环神经网络(RecurrentNeuralNetworks,RNN)相比,它们有一个关键的区别,就是对embedding表的处理,以及对Embedding表的处理要求这些场景都面临着新的挑战:巨大的存储容量需求(高达10TB以上);计算密度相对较低;不规则的内存访问模式。DeepRec通过PS-worker架构支持超大规模的任务场景。在PS-worker架构中,存储和计算分离,Embedding表以Key-Value的形式存储在(几十个,几百个)ParameterServer中。这些PS提供访问(成百上千)个Worker,更新模型参数的服务,其关键指标是流通量和访问时延。面对大规模的稀疏模型训练和预测,PS-worker在现有框架中的实现暴露了它的瓶颈:软件通过多线程实现的KV引擎成为了循环的瓶颈;基于TCP/RDMA的rpc所产生的开销使得ParameterServer成为分布式扩展时明显的延迟和性能瓶颈。为了解决流量瓶颈和延迟问题,在优化中引入了支持CXL(ComputeExpressLink)的Intel?AgilexTMI系列FPGA,实现路径如图5所示:图5引入了Intel?AgilexTMI系列FPGA通过FPGA硬件实现的KV引擎实现优化,可以饱和内存或网络带宽,解决流量瓶颈问题;通过定制支持可靠传输的传输层协议,KV引擎和网络协议在同一个FPGA中处理,主机CPU根据key值直接处理,极低的延迟和抖动,消除延迟和性能瓶颈分布式扩容时ParameterServer的使用;CXL提供的缓存一致性连接支持HDM(HostManagedDeviceMemory)访问,设备端(FPGA卡)采用DDR4支持热数据访问的高性能需求,主机端使用PMem支持冷数据存储,大大降低了TCO;FPGA可以进一步实现嵌入表的在线处理,例如张量运算,或者实现压缩和解压的网络带宽限制的突破。基于Intel?AgilexTMI系列FPGA的加速解决方案可以在一个硬件平台上支持上述所有场景,在提供更低访问延迟的同时显着提升吞吐量。总结上一篇文章介绍了DeepRec在CPU、PMem、FPGA等不同硬件上的优化实现,并成功部署到阿里内外多个业务场景。在实际业务中,也实现了明显的端到端性能加速。角度解决了超大规模稀疏场景所面临的问题和挑战。众所周知,英特尔为AI应用提供了多种硬件选择,让客户可以选择更具性价比的AI解决方案;同时,英特尔、阿里巴巴和客户也在基于多元化的硬件进行软硬件融合创新。协作和优化以充分利用英特尔技术和平台。英特尔也期待继续与产业伙伴展开更深入的合作,继续为AI技术的部署贡献力量。法律声明英特尔不控制或审计第三方数据。请查看此内容,咨询其他来源,并确认所提及的数据准确无误。性能测试结果基于2022年4月27日和2022年5月23日进行的测试,可能无法反映所有公开可用的安全更新。详情请参见配置信息泄露。没有任何产品或组件是绝对安全的。所描述的成本降低方案旨在说明特定英特尔产品在特定情况和配置下如何影响未来成本并提供成本节约。每种情况都不同。英特尔不保证任何成本或成本降低。英特尔技术的特性和优势取决于系统配置,可能需要启用硬件、软件或服务才能激活。产品性能可能因系统配置而异。没有任何产品或组件是绝对安全的。可以从原始设备制造商或零售商处获得更多信息,或者访问intel.com。英特尔、英特尔标识和其他英特尔商标是英特尔公司或其子公司在美国和/或其他国家/地区的商标。?CopyrightbyIntelCorporation[1]有关性能测试的更多详细信息,请访问https://github.com/alibaba/DeepRec/tree/main/modelzoo/WDL[2]了解更多详细信息关于性能测试,请访问https://help.aliyun.com/document_detail/25378.html?spm=5176.2020520101.0.0.787c4df5FgibRE#re7p
