TFJS中渴望风格的性能成本是多少?

时间:2019-02-21 03:07:36

标签: performance machine-learning tensorflow.js

论文TENSORFLOW.JS: MACHINE LEARNING FOR THE WEB AND BEYOND指出:

  

由于我们设计目标的重要部分是确定优先级   易用性优于性能,TensorFlow.js支持渴望的风格   差异化。

总的来说,我们在谈论什么样的性能提升?是否取决于模型?是否存在根本没有性能差异的情况?

1 个答案:

答案 0 :(得分:2)

像TensorFlow v1(Python)的默认图形模型中那样,声明性(也称为延迟执行,图形模式)编程范例的主要性能优势来自以下方面:

  • 将整个模型向下推到C ++层,执行开销很大 与解释型或非编译型语言(例如Python和 JavaScript
  • 并行执行模型的计算图的独立路径。一个 示例是由多个独立的输入塔组成的模型。这些 塔可以在CPU的不同内核或多个内核上同时执行 同一主机的GPU。
  • 由于在执行开始之前就已经了解了整个模型, C ++执行引擎可以在以下位置执行一整套的优化 模型的计算图。仅举几个例子:
    • 恒定折叠:图形的子树,仅由无状态, 常量节点上的确定性操作可以折叠为单个常量节点
    • 运维融合:在某些情况下,计算的几个相邻节点(ops) 图可以用数学上等价的方式代替,但在计算上更多 有效节点。
    • 修剪:某些计算图包含对节点无贡献的节点 最终输出。图模型执行引擎可以事先看到 并阻止这些节点执行。
  • 及时(JIT)编译:图形执行引擎可以采用 整个图并将其编译为涉及较低层次的较低层表示 调度开销更大,更容易接受 在可用硬件(例如CUDA程序)上实现高性能执行 适用于NVIDIA或兼容的GPU,有关Google TPU的特殊说明,或 甚至是用于WebGL等的着色器程序。)

图模式TensorFlow支持所有上述优化。对于 有关更多详细信息,请谷歌搜索术语“抓斗”和“ XLA”。

TensorFlow.js采用命令式(又称渴望)范式,主要基于 可用性考虑。这类似于TensorFlow渴望执行, PyTorch和NumPy。结果,它没有附带所有上述内容 优化的机会。

不过,请注意,有多种方法可以从 命令性程序(请参见TensorFlow v2的tf.function装饰器和JAX)。没有理由为什么TensorFlow.js 不能采用类似的范例来提高性能。只是没有需要 对于产品团队而言,已经足够清晰地对其功能进行优先级排序了。