当前位置: 首页 > news >正文

ARM64架构手动编译libtorch,安装MKL/oneDNN加速模型推理,详细流程!

目录

前言:

一、依赖环境

二、下载pytorch源码

三、下载oneDNN源码

三、编译libtorch

四、整理libtorch

五、C++调用libtorch


前言:

libtorch官方并没有给出ARM64架构的安装文件,在ARM64环境下,libtorch需要手动编译。编译完成后发现模型推理速度太慢,部分原因为手动编译的libtorch没有使用MKL加速工具,安装MKL后重新编译libtorch后,模型的推理速度提高了4-5倍。


一、依赖环境

cmake和gcc版本不能过低,不然编译过程会报错。 gcc版本至少大于10.0。python环境所需安装:

pip install pyyaml

二、下载pytorch源码

git clone https://github.com/pytorch/pytorch --recursive && cd pytorch # 下载子模块 git submodule sync git submodule update --init --recursive

三、下载oneDNN源码

cd到你的工作目录,然后进行下载oneDNN源码文件。以我的工作目录为例:

cd /home/user/workspace wget https://github.com/oneapi-src/oneDNN/archive/refs/tags/v3.3.3.tar.gz --no-check-certificate

安装配置:

# 解压 tar -xzvf v3.3.3.tar.gz cd oneDNN-3.3.3 # ARM平台代码适配 sed '2441s/.*/'"$(sed -n 2439p tests/gtests/graph/unit/backend/dnnl/test_conv.cpp)"'/' -i tests/gtests/graph/unit/backend/dnnl/test_conv.cpp # 创建构造目录 mkdir build cd build mkdir install # 编译,注意修改路径 cmake -DCMAKE_INSTALL_PREFIX=/home/user/workspace/oneDNN-3.3.3/build/install/ .. make -j make install # 检查安装目录是否有libdnnl.so 文件 ll install/lib64/

三、编译libtorch

修改环境变量

# 华为服务器没有cuda,关闭cuda export USE_CUDA=False export BUILD_TEST=False # 启用oneDNN加速库,如果没有编译上述onnDNN源码,则不添加该环境 export USE_MKLDNN=1

编译:

cd pytorch mkdir build cd build python ../tools/build_libtorch.py

四、整理libtorch

新建lintorch文件夹,并将编译好的包整理到libtorch下。我的libtorch和pytorch在同一层级目录下。

cd /home/user/workspace mkdir libtorch mkdir libtorch/share cp -r pytorch/torch/include/ libtorch/ cp -r pytorch/build/build/lib/ libtorch/ cp -r pytorch/torch/share/cmake/ libtorch/share/

保证Libtorch的结构如下即可:

五、C++调用libtorch

CmakeList.txt文件示例:

cmake_minimum_required(VERSION 3.0 FATAL_ERROR) project(LibTorchDemo) set(CMAKE_CXX_STANDARD 17) set(CMAKE_CXX_STANDARD_REQUIRED True) # 设置 CMake 配置路径,指向 libtorch 的 cmake 文件夹 set(CMAKE_PREFIX_PATH "/home/user/workspace/libtorch/share/cmake") link_directories("/home/user/workspace/libtorch/lib") find_package(Torch REQUIRED) add_executable(digit digit.cpp) target_link_libraries(digit "${TORCH_LIBRARIES}")

六、进一步提高推理速度(可选)

如果觉得速度还不够快,可以开启BLAS加速。我的测试结果是可以在oneDNN加速后的推理速度上再提高2-2.5倍。

安装openBLAS

sudo apt install libopenblas-dev gfortran

进入pytorch目录并清理build

cd pytorch/build rm -rf * # 重新编译 python ../tools/build_libtorch.py

重复步骤四,整理libtorch文件。

http://www.jsqmd.com/news/494731/

相关文章:

  • Flow3自动化任务机器人技术解析与实现方案
  • 【亲测免费】 IBAN.js - 国际银行账号验证与格式化工具
  • 2026年质量好的防爆喷漆柜品牌推荐:环保喷漆柜实力工厂推荐 - 行业平台推荐
  • 0318晨间日记
  • Sowing Taker Auto Bot:自动化耕作协议的智能解决方案
  • Lunar 开源项目使用教程
  • go-wkhtmltopdf在AWS Lambda中的应用:无服务器PDF生成方案
  • 2026年质量好的定制喷粉房品牌推荐:工业喷粉房/大旋风喷粉房直销厂家推荐 - 行业平台推荐
  • OpenSCI自动化机器人技术解析:Base Sepolia测试网上的智能合约交互工具
  • Django-Dynamic-Scraper入门教程:从零开始构建你的第一个动态爬虫
  • 致我的17岁——未成年的终章
  • 2026年知名的点烟器DC线工厂推荐:点烟器插座生产厂家推荐 - 行业平台推荐
  • 自动驾驶大模型---Diffusion Planner
  • Tea Auto Bot:Tea Sepolia测试网自动化交互工具解析
  • 2026年质量好的保温水箱公司推荐:新疆地埋水箱口碑好的厂家推荐 - 行业平台推荐
  • react-shimmer源码解析:探索高性能图片加载组件的实现原理
  • Swot域名数据库详解:如何贡献并维护全球高校域名信息?
  • 避免90%状态错误:ADK-Python变量引用与上下文管理完全指南
  • multierr与标准库兼容性:errors.Is和errors.As完美结合
  • MegaETH Auto Bot:自动化参与Meganet带宽共享的技术解析
  • 汉字拼音转换神器pinyin:一站式解决注音、排序与检索难题
  • VapeLabs自动机器人技术解析与实现方案
  • Awesome Programming for Kids深度解析:从玩具机器人到代码世界的桥梁
  • Runtime实战教程:3个实例带你掌握动态创建实例的秘诀
  • Zygisk API完全指南:用NeoZygisk开发模块的5个关键步骤
  • 如何用No-as-a-Service快速获取创意拒绝理由?5分钟上手教程
  • go-wkhtmltopdf核心功能解析:从HTML到PDF的高效转换
  • 2025前端质量保障终极指南:Web开发清单从入门到精通
  • Package Control:Sublime Text 终极包管理器,5分钟上手安装与使用指南
  • 如何用uni-api快速搭建个人AI服务:5分钟配置多模型负载均衡指南