在 AWS Graviton 处理器上使用 torch.compile 加速 PyTorch 推理
最初,PyTorch 使用了一种 Eager 模式,即构成模型的每个 PyTorch 操作在达到该模式后都会独立运行。PyTorch 2.0 引入了 torch.compile 来加速 PyTorch 代码,而不是默认的 Eager 模式。与 Eager 模式相比,torch.compile 以最适合的方式将整个模型预编译为单个图形 [...]
来源:亚马逊云科技 _机器学习最初 PyTorch 使用一种 Eager 模式,其中构成模型的每个 PyTorch 操作在达到后都会独立运行。PyTorch 2.0 引入了 torch.compile 来加速 PyTorch 代码,而不是默认的 Eager 模式。与 Eager 模式相比,torch.compile 以最佳方式将整个模型预编译为单个图形,以便在给定的硬件平台上运行。AWS 针对 AWS Graviton3 处理器优化了 PyTorch torch.compile 功能。与基于 AWS Graviton3 的 Amazon EC2 实例上的多个自然语言处理 (NLP)、计算机视觉 (CV) 和推荐模型的默认 Eager 模式推理相比,此优化使 Hugging Face 模型推理的性能提高了 2 倍(基于 33 个模型的性能改进的几何平均值),TorchBench 模型推理的性能提高了 1.35 倍(45 个模型的性能改进的几何平均值)。从 PyTorch 2.3.1 开始,优化功能可在 torch Python wheels 和 AWS Graviton PyTorch 深度学习容器 (DLC) 中使用。
torch.compile AWS Graviton3 处理器 Hugging Face TorchBench wheels 深度学习容器 (DLC)在这篇博文中,我们展示了如何在基于 AWS Graviton3 的 EC2 实例上优化 torch.compile 性能,如何使用优化来提高推理性能,以及由此产生的加速。
为什么使用 torch.compile 以及目标是什么?
在 Eager 模式下,模型中的运算符在遇到时会立即运行。它更易于使用,更适合机器学习 (ML) 研究人员,因此是默认模式。但是,由于冗余的内核启动和内存读取开销,eager 模式会产生运行时开销。而在 torch 编译模式下,首先将运算符合成为一个图,其中一个运算符与另一个运算符合并,以减少和本地化内存读取和总内核启动开销。
Arm Compute Library (ACL)