Skip to content

XDL1.2 Release Notes

Latest
Compare
Choose a tag to compare
@songyue1104 songyue1104 released this 12 Aug 03:40
· 7 commits to master since this release

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