TVM LLVM 加速AI

下面为记录人工智能推理加速过程,基于TVM

总体脉络:

    1. TVM 安装
    2. TVM 测试及使用
    3. Auto TVM 使用
    4. 编译导出 so/dll
    5.在C++中调用生成的so/dll

零、什么是TVM

TVM是apache基金会开放的人工智能模型编译框架,由华人 陈天琦博士 初始开发。陈博士本科毕业于上海交大ACM班,有极深的计算机理论基础,有名的xgboost就是出自他手。

通常我们使用人工智能模型进行前向推理的方式是这样:

1. 训练模型

这一步骤对于广大炼丹师来说非常熟悉了,可以使用tensorflow或pytorch之类工具进行模型训练,得到模型文件(网络结构和参数)。

2. 使用推理引擎部署模型

推理一般我们可以使用上面提到的人工智能框架的前向推理功能进行处理。稍讲究一点的可以使用专用的人工智能推理框架,比如onnxruntime (ORT), NCNN (腾讯出品)等。 这种方式可以理解为解释方式(类比于python语言的解释运行方式)。在这一方式下,我们需要先加载模型,用通过的推理引擎创建网络结构并加载好网络参数,再将需要推理的数据输入模型,得到最后的推理结果。

另一种方式就是所谓的 JIT 方式, 类似java或其它带JIT的语言(如php 8.0) ,比如你可以直接在java中创建代码并调用tvm进行推理。 这种情况下TVM引擎没有完全发挥优化能力。

第三种方式,最复杂但是最高效的方式: TVM编译。 将推理引擎和模型编译优化成native code方式。你可以想象成自己写的一套函数,函数中已经硬编码了网络模型的参数,可以从整体上对整个模型加参数进行编译优化,得到最好性能的推理功能函数(算子和模型已经融为一体)

第三四方式: 在IOT设备上,可以使用裸金属方式,即不需要操作系统支持的程序下,生成推理库,只依赖c运行库,无需操作系统介入,适合IOT设备。

我们将一步一步引导 大家测试第二三种方式的使用,终极目标是在auto  TVM基础上实现第三种方式。

Auto TVM 使用模板创建搜索空间来帮助我们进一步优化算法,以达到性能调优的目的。即auto-tunning。

auto-tuning分两个步骤:第一步定义搜索空间;第二步是运行搜索算法来探索这个空间。在本教程中,你可以了解如何在TVM中执行这两个步骤。下面通过矩阵乘法展示auto-tuning的完整工作流程。

本文可能会涉及autoTVM实作手法。
一、TVM 安装

请参考 官方文档: https://tvm.apache.org/docs/install/index.html

在ubuntu 18.04下安装:

1. 安装基础环境

    sudo apt-get update
    sudo apt-get install -y python3 python3-dev python3-setuptools gcc libtinfo-dev zlib1g-dev build-essential cmake libedit-dev libxml2-dev

2. 下载源码

git clone --recursive https://github.com/apache/tvm tvm

3. 进入tvm目录

    mkdir build
    cp cmake/config.cmake build

3.下载llvm 预编译包:

https://releases.llvm.org/download.html

从下面下载自己需要的包,解压后放到某个目录,我放到了/opt下

我的路径是:

/opt/clang+llvm-10.0.0-x86_64-linux-gnu-ubuntu-18.04/
注意上面的路径依使用的llvm版本有不同而不同。

4. 修改刚才复制的 config.cmake 文件

修改这行: set(USE_LLVM /path/to/your/llvm/bin/llvm-config)

我的值 是 set(USE_LLVM /opt/clang+llvm-10.0.0-x86_64-linux-gnu-ubuntu-18.04/bin/llvm-config)

注意上面的路径,依自己的clang的解压目录而变化 (clang和llvm在本文中的意思相同,不作区别)

5. 编译

    cd build
    cmake ..
    make -j4

6. 安装 tvm库

mkdir /opt/tvm

将build目录下的 libtvm打头的so文件复制到/opt/tvm 下

当前的两个文件是:

libtvm_runtime.so  libtvm.so

至少编译完成,下面安装python下的tvm

 
二、安装python版本TVM

切换到刚才下载的tvm源码的目录,即那个tvm目录。在此目录下还有先前创建的build目录的。

确保你的python命令运行后提示是 python3 版本。

cd python; python setup.py install --user; cd ..

安装完成后,运行python

输入 import tvm 并回车

如果没有报错,刚表明安装tvm成功。

 
三、TVM测试

    git clone https://github.com/google/googletest
    cd googletest
    mkdir build
    cd build
    cmake ..
    make
    sudo make install

切换到刚才的tvm源码目录(下面有我们创建的build)

运行测试脚本:

./tests/scripts/task_cpp_unittest.sh

make cpptest
四、Auto TVM 自动调优

https://blog.csdn.net/hw5226349/article/details/92019491

 
五、C++端部署及导出so

https://zhuanlan.zhihu.com/p/60981432

六、后记

关于 四、五节的内容,为了内容完整,引用了几个网上的文章,后面会完善。

https://blog.csdn.net/znsoft/article/details/115024906

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
您好!要在虚拟机上安装 LLVMTVM,您可以按照以下步骤进行操作: 1. 首先,在虚拟机中打开终端或命令提示符窗口。 2. 接下来,使用包管理工具(如apt、yum等)安装必要的依赖项。例如,在 Ubuntu 系统上,可以运行以下命令来安装所需的软件包: ```shell sudo apt-get update sudo apt-get install build-essential cmake python3-dev llvm ``` 这将安装构建工具、CMake、Python 3 开发环境和 LLVM 编译器。 3. 完成上述步骤后,您可以开始安装 TVM。首先,克隆 TVM 仓库到本地: ```shell git clone --recursive https://github.com/apache/tvm.git ``` 4. 进入 TVM 仓库目录: ```shell cd tvm ``` 5. 在 TVM 仓库目录中,运行以下命令来构建和安装 TVM: ```shell mkdir build cp cmake/config.cmake build/ cd build # 使用编辑器打开 config.cmake 文件,并进行以下修改: # 将 set(USE_LLVM OFF) 改为 set(USE_LLVM /usr/bin/llvm-config)(确保路径正确) # 保存并关闭文件 cmake .. make -j$(nproc) ``` 这将构建 TVM 并生成可执行文件。 6. 安装完成后,您可以进行 TVM 的配置。在 TVM 仓库目录中,运行以下命令: ```shell cp ../python/tvm/* python/tvm/ -r export PYTHONPATH=$(pwd)/python:${PYTHONPATH} ``` 这将配置您的 Python 环境以使用 TVM。 现在,您已经成功在虚拟机上安装了 LLVMTVM。您可以开始使用 TVM 进行深度学习和机器学习任务了。如果您有其他问题,请随时提问!
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值