奇技 · 指南
TensorNet是什么?
TensorNet是一个构建在TensorFlow之上针对广告推荐等大规模稀疏场景优化的分布式训练框架。TensorNet的目标是让所有使用TensorFlow的开发者可以快速的、方便的训练出稀疏参数超过百亿的超大模型。
训练带有大规模稀疏特征模型的主要挑战
在广告、搜索、推荐等场景下的深度模型都会存在大量的高维离散稀疏特征,训练带有高维稀疏特征的模型主要有两个问题:
训练样本规模大。比如对于360广告场景会有超过100TB的训练数据。
模型参数多。比如对于360广告场景会有超过100亿的参数。
使用单机模式训练模型速度慢,耗时长,严重制约了模型的迭代速度,使用分布式训练已经成为业界标准。
使用TensorFlow训练稀疏特征模型的主要问题
TensorFlow是最受开发者欢迎的深度学习训练框架,但是TensorFlow对训练带有大规模稀疏特征的模型不太友好,主要问题有:
TensorFlow支持的特征维度有限。一般的,TensorFlow需要对每一个特征定义一个矩阵,这个矩阵受限于内存,往往不能太大。
TensorFlow分布式训练时需要同步所有的参数,这导致速度过慢。由于带有稀疏特征的模型参数多,同步开销非常大,会严重制约训练的速度。
TensorNet——基于TensorFlow的专为大规模稀疏特征模型优化的分布式训练框架
TensorNet在复用TensorFlow的所有功能的基础之上,专门定制使其支持大规模稀疏特征模型的训练。TensorNet的主要提升包括:
使TensorFlow支持的稀疏特征的维度接近于无限。
使TensorFlow分布式训练时同步的参数规模减小到原来的万分之一,乃至十万分之一,从而极大的提升了训练速度。在360真实业务场景下我们将原来的离线训练时间由3.5小时提升到了25分钟。
配合TensorNet通过split graph的方法可以对在线推理的性能进行优化。在360真实场景测试中我们发现有近 35% 的性能提升。
TensorNet分布式训练架构
TensorNet支持异步和同步模式训练。异步模式在仅有CPU的集群中速度提升十分显著,同步模式在网卡速度超过100GbE的GPU集群中表现突出。
TensorNet异步训练架构
在仅有CPU的集群中使用参数服务器的异步训练模式是训练模型