Python pytorch能否优化顺序操作(如tensorflow图或JAX&x27;s jit)?

Python pytorch能否优化顺序操作(如tensorflow图或JAX&x27;s jit)?,python,pytorch,jax,Python,Pytorch,Jax,最初,tensorflow和pytorch有一个根本的区别: tensorflow基于计算图。构建此图表和在会话中对其进行评估是两个独立的步骤。当它被使用时,图形不会改变,这允许进行优化 torch急切地在张量上评估操作。这使API更加方便(无会话),但也降低了识别和优化总是按顺序发生的操作的可能性 现在,这种差异变得越来越不明显。Tensorflow以其独特的风格回应了火炬的流行。还有一个项目,它构建在与tensorflow()相同的底层框架上。JAX没有会话的概念。但它允许您通过简单地调

最初,tensorflow和pytorch有一个根本的区别:

  • tensorflow基于计算图。构建此图表和在会话中对其进行评估是两个独立的步骤。当它被使用时,图形不会改变,这允许进行优化
  • torch急切地在张量上评估操作。这使API更加方便(无会话),但也降低了识别和优化总是按顺序发生的操作的可能性
现在,这种差异变得越来越不明显。Tensorflow以其独特的风格回应了火炬的流行。还有一个项目,它构建在与tensorflow()相同的底层框架上。JAX没有会话的概念。但它允许您通过简单地调用将多个操作编译在一起

由于Tensorflow已经涵盖了PyTorch的功能,PyTorch是否也在致力于整合Tensorflow的优势?PyTorch(或其路线图)中是否有类似会话或jit的功能


API文档有一个,但据我所见,这更多是关于导出模型的。

正如您所提到的,有一个,它的目的也是在导出的图中引入优化(例如内核融合、常量优化等)。IIRC您可以在他们的github repo中找到一些关于这些的源代码,尽管我不确定这些代码是否在文档中的某个地方被明确提到(或者足够明确地被记住)

由于
1.3
还引入了量化(参见一些介绍)。在教程部分,即您可以看到显式融合
Conv2d
BatchNorm
ReLU
,以提高性能。Ofc还存在一些特殊的功能,比如使用
int
代替
float
进行权重(量化)、混合算法(尽可能使用
half
float精度,请参见NVidia)等

最后但并非最不重要的一点是,我认为对于一个使用矢量化操作并使用
torchscript
导出的编写良好的模型,由于一些通用的图形优化,您不会看到真正实质性的运行时差异。不过,无论您是要使用GPU、CPU、TPU,它们的版本是什么,无论您是只经过推理还是经过培训等等,都会有所不同。与
pytorch
相比,很难确定
tensorflow
的速度有多快(这两种框架中都存在一些众所周知的问题)。总的来说,这要视情况而定,而且测量值也有很大差异

顺便说一句,当谈到每个框架的优点时,它们的核心确实开始涵盖类似的内容(PyTorch最近获得了移动支持,请参阅)。真正的区别仍然是不同的基本方法和每个框架必须做什么来规避这些限制