非常教程

TensorFlow Guide参考手册

表现 | Performance

XLA Overview(XLA概述)

注意: XLA是实验性的。大多数使用情况在性能(速度或减少的内存使用情况)方面都没有改进。我们早期发布了XLA,这样开源社区可以为其开发做出贡献,并为与硬件加速器集成创建一条路径。

XLA(加速线性代数)是用于优化TensorFlow计算的线性代数的域特定编译器。结果是在服务器和移动平台上的速度,内存使用率和可移植性得到了改善。最初,大多数用户不会从XLA中看到很大的好处,但是欢迎您通过使用即时(JIT)编译或提前编译(AOT)的XLA进行试验。特别鼓励开发者针对新硬件加速器尝试XLA。

XLA框架是实验性和积极的开发。特别是,尽管现有操作的语义不太可能发生变化,但预计将增加更多的操作来涵盖重要的用例。该团队欢迎来自社区的关于通过GitHub缺失功能和社区贡献的反馈。

我们为什么要构建XLA?

XLA与TensorFlow合作有几个目标:

  • 提高执行速度。编译子图以减少短暂Ops的执行时间,以消除TensorFlow运行时间的开销,融合流水线操作以减少内存开销,并专用于已知张量形状以允许更积极的恒定传播。
  • 改善内存使用。分析和计划内存使用情况,原则上消除许多中间存储缓冲区。
  • 减少对自定义操作的依赖。通过改进自动融合低级Ops的性能来消除对许多自定义Ops的需求,以匹配手工融合的自定义Ops的性能。
  • 减少移动足迹。通过提前编译子图并发出可以直接链接到另一个应用程序的对象/头文件对来消除TensorFlow运行时。结果可以将移动推断的占用空间减少几个数量级。
  • 提高可移植性。为新颖的硬件编写新的后端程序相对容易,此时大部分TensorFlow程序将在该硬件上未修改地运行。这与专门针对新硬件的个体单片Ops的方法形成对比,这需要重写TensorFlow程序以利用这些Ops。

XLA如何工作?

XLA的输入语言称为“HLO IR”,或称为HLO(高级优化程序)。操作语义页面描述了HLO的语义。将HLO视为编译器IR是最方便的。

XLA将HLO中定义的图形(“计算”)编译成各种体系结构的机器指令。XLA是模块化的,因为它很容易插入替代后端,以便定位一些新颖的硬件架构。用于x64和ARM64的CPU后端以及NVIDIA GPU后端均位于TensorFlow源代码树中。

下图显示了XLA中的编译过程:

XLA Overview(XLA概述)

XLA带有多个与目标无关的优化和分析,如CSE,独立于目标的操作融合以及为计算分配运行时内存的缓冲区分析。

在独立于目标的步骤之后,XLA将HLO计算发送到后端。后端可以执行进一步的HLO级别分析和优化,这次是针对具体目标信息和需求。例如,XLA GPU后端可以执行专用于GPU编程模型的操作融合,并确定如何将计算划分为流。在这个阶段,后端也可以模式匹配某些操作或其组合来优化库调用。

下一步是目标特定的代码生成。XLA附带的CPU和GPU后端使用LLVM进行低级IR,优化和代码生成。这些后端以有效的方式发出代表XLA HLO计算所需的LLVM IR,然后调用LLVM从此LLVM IR发出本机代码。

GPU后端当前通过LLVM NVPTX后端支持NVIDIA GPU; CPU后端支持多个CPU ISA。

支持的平台

XLA目前支持x86-64和NVIDIA GPU上的JIT编译; 以及针对x86-64和ARM的AOT编译。

TensorFlow Guide

TensorFlow是谷歌基于DistBelief进行研发的第二代人工智能学习系统,其命名来源于本身的运行原理。Tensor(张量)意味着N维数组,Flow(流)意味着基于数据流图的计算,TensorFlow为张量从流图的一端流动到另一端计算过程。TensorFlow是将复杂的数据结构传输至人工智能神经网中进行分析和处理过程的系统。

主页 https://www.tensorflow.org/
源码 https://github.com/tensorflow/tensorflow
版本 Guide
发布版本 1.4

TensorFlow Guide目录

1.指南 | Guide
2.教程 | Tutorials
3.配置 | Deploy
4.扩展 | Extend
5.开始 | Get Started
6.表现 | Performance