Google推出支持分布式计算的TensorFlow 0.8
如今, Google 已将机器学习运用到了多种产品中,并推出了能够加速机器学习模型改进与升级的 TensorFlow 开源系统。今天, Google 推出 TensorFlow 0.8 ,以满足用户对机器学习模型分布式训练的需求。
支持分布式计算的 TensorFlow 0.8 能够使用户在自己的机器学习基础结构中训练分布式模型。该系统以高性能的 gRPC 数据库为支撑( gRPC 数据库支持同时对上百台机器进行训练),且与最近发布的 Google 云机器学习系统 互补,使用户能够利用 Google 云平台,对其 TensorFlow 模型进行训练并提供服务。
配合 TensorFlow 0.8 的发布, Google 还在 TensorFlow 模型库中发行了一款针对 Inception 图像分类神经网络的分布式训练程序。利用该分布式训练程序, Google 能够使用 100 个 GPU ,在短短 65 小时内将 Inception 网络的精确度提高至 78% 。随着 GPU 数量的增加,系统的整体处理量可以得到提升,并且能够更快地计算出精确的结果。因此,即使是小型集群或一组设备也能因分布式 TensorFlow 受益。
TensorFlow利用100个GPU将Inception训练的速度提高了56倍。
这个分散式训练程序还可以让用户通过使用如 Kubernetes 等集群管理系统,扩大训练规模。此外,用户在训练程序后,还可以通过在 Kubernetes 中使用 TensorFlow 服务,进行生产部署和推理加速。
除分布式 Inception 之外, TensorFlow 0.8 还包括便于用户自行定义分布式模型的新型数据库。由于集群内的每个程序都能处理各种通用计算,因此 TensorFlow 的分布式结构大大提高了用户在定制模型时的灵活性。 Google 之前推出的 DistBelief 系统(与后续推出的很多系统类似)主要通过 “ 参数服务器 ” 管理共享模型的参数。该服务器的读写界面非常简单,便于用户获取和更新共享的参数数据。
包括参数管理在内, TensorFlow 系统中所有的计算,均通过数据流图表呈现。该系统还可以将这些数据传输到不同设备上(如多核 CPU 、通用 GPU 和移动处理器等)。为了让 TensorFlow 系统便于使用, Google 还在系统中包含了 Python 数据库,从而便于编写那些可在单一程序中运行并且能通过多个副本进行训练以扩大训练规模的模型。
该结构便于用户从运用单进程工作扩大到使用集群工作,还便于用户使用新结构进行试验,以完成分布式训练。 Google 发现,将有备份功能的同步化 SGD 用在 TensorFlow 系统图表中,能提高图像模型训练的准确性,并缩短耗时。
目前, TensorFlow 系统中的分布式计算支持尚处于初级阶段。 Google 会继续通过工程设计以及算法改进,来提高分布式训练的性能,并将在 GitHub 中与广大用户分享 Google 所取得的成就。