推特将内部机器学习平台底层框架转至TensorFlow

有鉴于原本使用的机器学习框架Lua Torch社群支持度降低,推特负责机器学习的团队Cortex决定,把内部使用的深度学习平台Deepbird,其底层机器学习框架从Lua Torch转移到TensorFlow上。不只工程师有更丰富的可视化工具,帮助训练机器学习模型,在x86-64系统架构上执行的也更加快速。

推特在2014年并购了Madbits,获取该公司的深度学习技术,用于理解推特的图片内容,而该公司在2015年中,转为内部团队Cortex。 Cortex一开始的任务是为推特的产品加入人工智能功能,但在2016年中开始,团队目标转为服务推特工程师,提供更好且一致性人工智能使用体验,因此他们创建了机器学习平台DeepBird。

DeepBird主要用于时间轴的排序上,而随着机器学习应用的规模扩大,Cortex团队也随之成长,加入了TellApart、Gnip以及Magic Pony等并购的公司。 DeepBird原本是基于开源机器学习函数库Lua Torch,但是由于Torch社群慢慢把项目重心从Lua转移到了Python,并开始降低对Lua Torch的支持,Cortex只好开始另寻替代方案,经过比较PyTorch和TensorFlow,他们认为TensorFlow对生产阶段的模型支持度更好,而TensorFlow支持HDFS,原本就有许多文件以及大型社群参与贡献,有更完整的开发生态系统。因此在2017年中,他们毅然决然的转换DeepBird的机器学习框架。

要将DeepBird从第一版的Lua Torch转移到第二版的TensorFlow上,Cortex花了不少心力,早期团队为了让原本就存在的机器学习框架,方便过渡到DeepBird上,因此其配置也同样使用YAML,但就在Cortex决定转移DeepBird的机器学习框架后,随即放弃了YAML,不过,大多数数据存储格式仍然沿用推特内部自定义的DataRecord,而训练脚本则使用TensorFlow与自订义的扩展套件组合编写而成。

Cortex提到,人工智能系统系统转移到第二版的DeepBird有几个步骤,首先要针对生产阶段服务器评估基准,使用来自生产服务的暗流量,验证推测的正确性并测量预测延迟,确保系统在高负载下还能维持推测服务的稳定性以及性能。再来,就是要比对第一版与第二版DeepBird的推测以及训练品质。另外,撰写详细的文件以及教学也非常重要,能帮助用户更轻易的转换到新平台。

DeepBird训练模型的流程就5个阶段,首先厘清问题,针对哪部分优化?什么作为输入或是特征?第二针对应用准备数据集,第三撰写训练脚本来优化模型,第四并在不同的数据集上评估,第五就定义超级参数组,并在Aurora Mesos上执行脚本。重复步骤3到5,直到取得需要的结果。

第二版DeepBird的API在测试版发布后一季,已经进入了稳定版,而在这过程他们也对TensorFlow的Estimator API有了更深入的理解,并开始尝试在一些多阶段训练等非典型案例使用,并且进一步简化整合Estimator API到自有的Trainer API中。

框架的改变带来了许多正向影响,Cortex提到,工程师的生产力提高了,由于通过使用Tensorboard或是像Model Repo这样的内部可视化工具,工程师可以简单的观察模型收敛的情况,并进行调整取得更好的结果,而且加强过的模型度量方法,工程师可以更加掌握模型状态。

而DeepBird服务的易用性提升,除了增加许多新功能外,与推特原本的系统也有良好的集成,自订易的指标以及减化的训练流程,让工程师更容易进行试验。而在系统的执行性能也获得提升,第二版的DeepBird在x86-64架构执行的也更有效率。