Releases
v1.2
New Features
1.性能优化
1.1 大batch/单样本海量特征场景性能优化
背景:XDL1.0侧重吞吐优化,采用one request per thread处理模型,能显著提高超高并发下的极限吞吐。但是在某些低并发/单个batch含有超多特征的场景下,这种单线程的处理方式会显著增加延迟。
优化方法:XDL1.2采用one request per thread及独立工作线程池两种处理模式,通过识别请求的特征数量自动选择合适的处理模式,达到吞吐和延迟兼顾的效果。
效果:在大batch/单样本海量特征场景性能提升超过100%
1.2 参数分配及通信优化
背景:XDL1.0采用动态rebalance参数分配策略保证了每个server io及cpu负载的均衡,从而使系统整体可以达到最高的性能。但是由于1.0中每个参数是独立存储,为了达到最高的通信和计算效率,内存分配难以在每个server保持均衡。随着参数规模的不断扩张,内存浪费的问题会越来越严重。
优化方法:
参数统一存储和平均分配:保证计算,通信,内存三者在所有server上的平均分布
请求合并:自动分析计算图中无依赖的通信节点,进行合并,减少通信次数,提高通信效率
效果:
简化用户使用成本,不再需要提供embedding参数大小的预估值,不再需要定期做rebalance
模型加载和保存速度提高4倍
ps动态扩容支持
在海量特征的场景下,性能及扩展能力进一步提高
1.3 计算优化
优化embedding计算中unique,ksum,kmean等算子,单个算子性能提升3-5倍
优化XDL到Backend(TF)的内存拷贝,变为zerocopy
优化cpu和gpu之间的数据拷贝
2. 流式学习特性
XDL1.2提供一套完整的流式训练(包括实时和增量训练)解决方案,包含众多流式训练的核心特性,包括:
特征准入 :XDL1.2提供按照概率过滤和基于CBF(counting bloomfilter)精确过滤两种方式
模型增量导出 :XDL1.2支持模型增量导出,能有效减轻IO压力,更好的满足在线学习对模型更新时效性的要求
自动稠密特征学习 :XDL1.2支持在训练阶段进行特征级别的counting统计,比如pv/click,从而大幅简化离线特征处理流程
特征淘汰 :XDL1.2内置基于访问时间的淘汰策略,用户也可基于python接口进行个性化定制
3. 其他
Hash64特征 :XDL1.0只支持128位的hash特征,其实在多数应用场景下64位hash已可满足冲突率的需求,因此XDL在1.2版本里增加了对hash64的原生支持
Trace :XDL1.2提供通用的trace api,可将xdl及tf/mxnet中的任意tensor输出到文件,方便进行后续分析或者debug
You can’t perform that action at this time.