研发动机:
第一代系统DistBeliet在可扩缩性上表现很好,但在用于研究时灵活性达不到预期。对问题空间的更深理解让我们可以做出一些大幅度的简化。
TensorFlow:表达高层次的机器学习计算
C++语言编写的核心,冗余少。
不同的前端,现有Python和C++前端,添加其他语言的前端也不是难题。
TensorFlow代码举例(批量逻辑回归)
计算可以用一张数据流图来理解。
我们输入数据、权重、误差以及标签,在不同节点进行不同的运算。
这是使用张量计算的示意图。
这是使用状态计算的示意图。
这是使用分布式计算的示意图。
它能够在各个平台上自动运行模型:电话上,单个机器上(CPU或GPU),由成百上千的GPU卡组成的的分布式系统
TensorFlow名字的意义
Tensor(张量)意味着N维数组。1维时就是向量,2维时就是矩阵;通过图像可以代表更高维的数据流,比如,图像可以用三维张量(行,列,颜色)来表示。
Flow(流)意味着基于数据流图的计算。有许多运算(图中的节点)应用在数据流上。
张量从图象的一端流动到另一端,这就是“TensorFlow”。“边”代表张量(数据),节点代表运算处理。
它的灵活性体现在它通用的计算基础设施上,包括:在内核之上有一组库支持深度学习;对其他机器学习算法也很有用;也有可能胜任高性能计算的任务;抽象出潜在的设备或计算性硬件
它的可延展性体现在它的核心系统定义了大量的标准运算函数和内核函数(实现对特定设备的操作)以及它易于定义新的运算函数和/或内核函数。
TensorFlow中的深度学习:
1. 典型的神经网络的每一“层”会对应到一个或多个张量运算。
2. 专用于深度学习运算的库,包括了:许多高层次的运算,如2D 和3D卷积,池化(Pooling), Softmax回归等等;标准损失函数,如交叉熵(Corss Entropy),L1,L2等等;多种优化方法,如梯度下降(Gradient Descent), AdaGrad, L-BFGS等等。
3. 自动微分。
4. 易于使用(甚至混合使用)许多种不同的模型,包括LSTMs,卷积模型,注意力模型, 强化学习,Embedding模型, 类图灵机模型等等。
没有明确的参数服务器子系统时:
1、参数是图像中的节点。
2、数据并行训练画出来的示意图不过是更复杂一点而已。
这是同步变量的情况。
Jeff Dean 还对第一代谷歌深度学习系统的应用以及出现的问题进行了总结,也阐述了第二代深度学习系统之所以要出现的重要原因。
如需了解更多,请下载PDF全文阅读。