文档
注册

(可选)编译libtorch_npu

编译操作

  1. 参见安装前必读安装PyTorch框架安装torch_npu插件完成依赖与PyTorch框架的安装。
  2. 获取libtorch_npu源码。支持PyTorch 2.1.0及以后的版本。
    命令示例如下:
    git clone -b v2.1.0-6.0.rc1 https://gitee.com/ascend/pytorch.git
    cd pytorch
    git submodule update --init --recursive
  3. 执行编译生成libtorch_npu安装包。
    python3 build_libtorch_npu.py
    默认编译release版本,如需debug版本,添加DEBUG=1环境变量。编译完成后,当前目录下生成libtorch_npu目录,包含以下文件。
    • include:生成的C++头文件。
    • lib:生成的C++库文件。
    • share:包含Torch_npuConfig.cmake,用于用户编译构建时获取必要的头文件,库文件等配置文件。

libtorch推理测试

Ascend Extension for PyTorch源码仓下pytorch/examples/libtorch_resnet模型为例,介绍libtorch推理的快速使用。

  1. 需提前安装torch、torch_npu、torchvision、expecttest以及packaging。
  2. 编译文件添加NPU编译配置。

    已完成NPU适配的编译文件请参见CMakeLists.txt,可以直接用于编译工作。

    用户如果使用自定义CMakeLists.txt编译文件,需添加以下内容用于引用libtorch_npu插件,以便进行后续基于NPU的编译工作。
    set(torch_npu_path path_to_libtorch_npu)         # 设置libtorch_npu的路径
    include_directories(${torch_npu_path}/include)   # 设置引用libtorch_npu的头文件路径
    link_directories(${torch_npu_path}/lib)          # 设置引用libtorch_npu的库文件路径
    
    target_link_libraries(libtorch_resnet torch_npu) # 链接torch_npu库
  3. 为了使模型在NPU设备上初始化和运行,用户需在C++代码中已将GPU接口修改为适配NPU的接口。当前脚本中已完成对应修改,用户可参见以下内容对实际开发的脚本进行修改。已完成NPU适配的模型代码请参见libtorch_resnet.cpp
    代码示例如下,引入torch_npu头文件并设置初始化Device,在NPU使用结束时需要调用torch_npu::finalize_npu()释放资源,否则可能会有报错提示。
    // 使用libtorch_npu相关接口,需引用libtorch_npu的头文件
    #include<torch_npu/torch_npu.h>
    
    // 使用NPU设备前需进行初始化
    torch_npu::init_npu("npu:0");
    
    // 通过传NPU字符串构造NPU设备
    at::Device("npu:0")
    
    // 使用NPU设备结束需进行反初始化
    torch_npu::finalize_npu()
    表1 C++接口说明

    接口

    说明

    torch_npu::init_npu()

    使用NPU设备前需进行初始化,输入值格式为npu:id,其中id为NPU卡号。

    at::Device()

    通过传NPU字符串构造NPU设备,输入值格式为npu:id,其中id为NPU卡号。

    torch_npu::finalize_npu()

    使用NPU设备结束需进行反初始化,输入值格式为npu:id,其中id为NPU卡号。

  4. 执行编译并推理。resnet_trace.py用于导出torchscript文件可用于libtorch推理,编译与推理脚本可参见libtorch_resnet.sh
    运行脚本位于pytorch/ci/libtorch_resnet.sh,当前提供的脚本已集成了导出torchscript文件、编译与推理部分。
    bash libtorch_resnet.sh
    显示以下内容,表示编译成功。
    图1 命令回显

    aarch64环境下报torch.libs/*.so库不存在,请参见常见问题中的“torch.libs/libopenblasp-r0-56e95da7.3.24.so不存在”章节。

搜索结果
找到“0”个结果

当前产品无相关内容

未找到相关内容,请尝试其他搜索词