TFJS中急切风格的性能成本是多少?

4

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

由于我们设计目标的一个重要部分是优先考虑易用性而不是性能,因此TensorFlow.js支持差分的急切风格。

通常会有什么样的性能损失?是否取决于模型?是否存在完全没有性能差异的情况?

1个回答

4
声明式(也称为延迟执行、图模式)编程范式的主要性能优势,如TensorFlow v1(Python)默认图模型中所示,来自以下方面:
  • 将整个模型推入到C++层,执行开销比解释或非编译语言(如Python和JavaScript)低得多。
  • 并行执行模型计算图中独立路径。例如,一个由多个独立输入塔组成的模型。这些塔可以在CPU的不同核心或同一主机的多个GPU上并行执行。
  • 由于整个模型在执行开始之前就已知,C++执行引擎可以对模型的计算图进行一整套优化。以下是一些示例:
    • 常量折叠:由仅包含常量节点上的无状态、确定性操作组成的子树可以折叠成一个单独的常量节点。
    • 操作融合:在某些情况下,计算图的几个相邻节点(操作)可以被替换为一个在数学上等效但在计算上更有效的节点。
    • 修剪:某些计算图包含不会对最终输出产生贡献的节点。图形模型执行引擎可以预见到这一点,并防止这些节点执行。
  • 即时(JIT)编译:图形执行引擎可以接受整个图形并将其编译为较低级别的表示形式,这涉及较低的分派开销,并更易于在可用硬件上高性能执行(例如,针对NVIDIA或兼容GPU的CUDA程序,Google TPU的特殊指令,甚至是WebGL的着色器程序等)。
所有上述的优化都由图模式的TensorFlow支持。想要了解更多细节,请搜索"grappler"和"XLA"。
TensorFlow.js采用命令式(即即时执行)范式,主要基于可用性考虑。这类似于TensorFlow即时执行、PyTorch和NumPy。因此,它没有所有上述优化的机会。
然而,需要意识到从命令式程序中获取计算图的方法(请参见TensorFlow v2的tf.function装饰器和JAX)。TensorFlow.js也可以采用类似的范式来提高性能。只是产品团队还没有明确足够的需求来优先考虑该功能。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接