NPU上如何使能pytorch图模式

简介: 本文介绍了PyTorch的`torch.compile`技术和TorchAir的相关内容。`torch.compile`通过将动态图转换为静态图并结合JIT编译,提升模型推理和训练效率。示例代码展示了如何使用`torch.compile`优化模型。TorchAir是昇腾为PyTorch提供的图模式扩展库,支持在昇腾设备上进行高效训练和推理。它基于Dynamo特性,将计算图转换为Ascend IR,并通过图引擎优化执行。文章还提供了TorchAir的使用示例及功能配置方法。

1 Pytorch的compile技术

PyTorch 的 torch.compile 是一个强大的功能,用于优化 PyTorch 模型的性能。它通过将 PyTorch 的动态图转换为静态图,并利用 Just-In-Time(JIT)编译技术,显著提高模型的推理速度和训练效率。

1.1 PyTorch torch.compile 的作用

torch.compile 是 PyTorch 的一个实验性功能,旨在通过编译优化提升模型的性能。它利用了 PyTorch 的 torch.jit 模块,将动态图转换为静态图,并通过后端编译器(如 LLVM 或 OpenVINO)进一步优化代码。

1.2. 如何使用 torch.compile

以下是一个简单的示例,展示如何使用 torch.compile 来优化模型:

import torch
import torch.nn as nn

# 定义一个简单的模型
class SimpleModel(nn.Module):
    def __init__(self):
        super(SimpleModel, self).__init__()
        self.fc = nn.Linear(10, 1)

    def forward(self, x):
        return self.fc(x)

# 实例化模型
model = SimpleModel()

# 编译模型
compiled_model = torch.compile(model)

# 输入数据
input_data = torch.randn(1, 10)

# 使用编译后的模型进行推理
output = compiled_model(input_data)
print(output)

2 TorchAir

2.1 Torch Air是什么?

TorchAir(Torch Ascend Intermediate Representation)是昇腾为Ascend Extension for PyTorch(torch_npu)提供的图模式能力扩展库,支持PyTorch网络在昇腾设备上进行图模式的训练和推理。TorchAir提供了昇腾设备的图模式编译后端,对接PyTorch的Dynamo特性,将PyTorch的FX(Functionalization)计算图转换为Ascend IR计算图,并通过GE(Graph Engine,图引擎)进行图编译、图执行、图优化等操作,并下发到昇腾硬件执行。
TorchAir继承了Dynamo的大部分特性,如动态shape图功能,在PyTorch基础上又新增了图相关能力,如离线场景导图、模型编译时间优化、集合通信算子入图等功能,详细介绍参见功能介绍。
image.png

具体可以参考:
简介-PyTorch 图模式使用(TorchAir)-套件与三方库-Ascend Extension for PyTorch6.0.0开发文档-昇腾社区

2.2 Torch Air使用

TorchAir图模式相关的功能配置示例如下,此处代码仅供参考,请根据实际情况开启对应功能项。

# 必须先导torch_npu再导torchair
import torch
import torch_npu
import torchair

# (可选)若涉及集合通信算子入图,可调用patch方法
from torchair import patch_for_hcom
patch_for_hcom()

# 定义模型Model
class Model(torch.nn.Module):
    def __init__(self):
        super().__init__()
    def forward(self, x, y):
        return torch.add(x, y)

# 实例化模型model
model = Model()

# 从TorchAir框架获取NPU提供的默认backend
config = torchair.CompilerConfig()
npu_backend = torchair.get_npu_backend(compiler_config=config)

# 使用TorchAir的backend去调用compile接口编译模型
opt_model = torch.compile(model, backend=npu_backend)

# 使用编译后的model去执行
x = torch.randn(2, 2)
y = torch.randn(2, 2)
opt_model(x, y)

具体可参考:
快速上手-PyTorch 图模式使用(TorchAir)-套件与三方库-Ascend Extension for PyTorch6.0.0开发文档-昇腾社区

相关文章
|
人工智能 算法 PyTorch
TorchAcc:基于 TorchXLA 的分布式训练框架
阿里云研究员、阿里云人工智能平台 PAI 技术负责人--林伟在GTC 2024 大会 China AI Day 线上中文演讲专场上介绍了TorchAcc,这是一个基于 PyTorch/XLA 的大模型分布式训练框架。
|
9月前
|
机器学习/深度学习 PyTorch 编译器
深入解析torch.compile:提升PyTorch模型性能、高效解决常见问题
PyTorch 2.0推出的`torch.compile`功能为深度学习模型带来了显著的性能优化能力。本文从实用角度出发,详细介绍了`torch.compile`的核心技巧与应用场景,涵盖模型复杂度评估、可编译组件分析、系统化调试策略及性能优化高级技巧等内容。通过解决图断裂、重编译频繁等问题,并结合分布式训练和NCCL通信优化,开发者可以有效提升日常开发效率与模型性能。文章为PyTorch用户提供了全面的指导,助力充分挖掘`torch.compile`的潜力。
1030 17
|
9月前
|
并行计算 PyTorch 算法框架/工具
《 PyTorch 2.3革新:torch.compile自动生成CUDA优化内核全解》
torch.compile是PyTorch 2.3推出的革命性功能,通过即时编译(JIT)技术优化模型运行速度。它借助TorchDynamo提取计算图,并通过TorchInductor生成高度优化的CUDA内核,充分发挥GPU并行计算能力。支持默认、reduce-overhead和max-autotune三种模式,分别适用于不同性能需求场景。尽管在复杂模型或动态计算图中可能面临挑战,但通过调整参数或结合其他优化技术,仍可显著提升性能。这一工具极大简化了CUDA代码优化流程,为深度学习开发提供了强大支持。
559 10
|
6月前
|
PyTorch 编译器 算法框架/工具
TorchDynamo源码解析:从字节码拦截到性能优化的设计与实践
本文深入解析PyTorch中TorchDynamo的核心架构与实现机制,结合源码分析,为开发者提供基于Dynamo扩展开发的技术指导。内容涵盖帧拦截、字节码分析、FX图构建、守卫机制、控制流处理等关键技术,揭示其动态编译优化原理与挑战。
403 0
TorchDynamo源码解析:从字节码拦截到性能优化的设计与实践
|
10月前
|
容器
vllm+vllm-ascend本地部署QwQ-32B
本指南介绍如何下载、安装和启动基于Ascend的vLLM模型。首先,可通过华为镜像或Hugging Face下载预训练模型;其次,安装vllm-ascend,支持通过基础镜像(如`quay.io/ascend/vllm-ascend:v0.7.3-dev`)或源码编译方式完成;最后,使用OpenAI兼容接口启动模型,例如运行`vllm serve`命令,设置模型路径、并行规模等参数。适用于大模型推理场景,需注意显存需求(如QwQ-32B需70G以上)。
3980 17
|
8月前
|
前端开发 开发工具 C++
离线推理全流程&模型调优
本指南详细介绍小模型推理方案,涵盖从模型转换到推理的全流程。包括ATC架构转换、ModelZoo-PyTorch指导文档、ONNX导出与优化、离线及在线推理等环节。特别针对Chinese_CLIP模型,提供上机操作指导,如模型支持度分析、onnx-sim简化、msit surgeon优化、AOE自动调优和模型压缩等步骤。
离线推理全流程&模型调优
|
人工智能 PyTorch TensorFlow
MindIE+MindFormers推理方案指导
本文介绍了昇腾大模型推理解决方案MindIE+MindFormers.
MindIE+MindFormers推理方案指导
|
11月前
|
并行计算 开发工具 git
NPU上运行onnxruntime
在Ascend环境下使用onnxruntime推理时,若安装了GPU版本的onnxruntime(`onnxruntime-gpu`),可能会因缺少CUDA组件报错。正确做法是卸载`onnxruntime-gpu`,并根据官方文档适配NPU,通过源码构建支持CANN的onnxruntime whl包。具体步骤为克隆onnxruntime源码,使用`--use_cann`参数构建,并安装生成的whl包。最后,配置CANNExecutionProvider进行推理。
1832 10
|
9月前
|
人工智能 测试技术 API
飞桨x昇腾生态适配方案:11_静态OM推理
昇腾AI推理工具`ais_bench`基于ACL开发,支持命令行快速推理与性能测试(吞吐率、时延等),并提供相关API。用户需下载适配环境的`aclruntime`和`ais_bench`的whl包后通过pip安装。设置环境变量后,可通过多种场景使用工具:纯推理(默认输入全0数据)、调试模式(获取详细参数与耗时信息)、文件/文件夹输入(指定Numpy文件或目录)、以及多Device并行推理。例如,BERT模型需按顺序传入三个文件夹对应其输入参数。工具输出包括吞吐率、耗时等关键指标,助力高效模型性能评估。
911 0