1 引言
在当今快速发展的机器学习领域,TVM已经成为了一个不可或缺的工具。尤其是MicroTVM,作为TVM的一个重要分支,它专注于在资源受限的微控制器上运行机器学习模型,这在物联网(IoT)和边缘计算的背景下显得尤为重要。MicroTVM的存在极大地推动了机器学习模型在更小、更省电的设备上的应用,打开了智能设备和嵌入式系统的新局面。
在这篇博客中,我们将详细探讨如何从源码编译TVM,特别是针对MicroTVM的编译,让您能够在各种微控制器和小型设备上部署先进的机器学习模型。无论您是TVM的新手还是有经验的开发者,这篇博客都将为您提供宝贵的信息和指导。
2 编译TVM的前置条件
在编译TVM之前,确保系统中已安装了必要的工具和依赖项,包括gcc、git、cmake和llvm。这些工具对于编译过程至关重要。
要在 Ubuntu/Debian 上安装这些必要的工具和依赖项,在终端中执行:
sudo apt-get update
sudo apt-get install -y python3 python3-dev python3-setuptools gcc libtinfo-dev zlib1g-dev build-essential cmake libedit-dev
sudo apt install llvm-dev
Mac下使用Homebrew,这一过程变得相当简单和直接。
brew install gcc git cmake
brew install llvm
echo 'export PATH="/opt/homebrew/opt/llvm/bin:$PATH"' >> ~/.zshrc
echo 'export LDFLAGS="-L/opt/homebrew/opt/llvm/lib"' >> ~/.zshrc
echo 'export CPPFLAGS="-I/opt/homebrew/opt/llvm/include"' >> ~/.zshrc
source ~/.zshrc
在使用 M1 处理器的 macOS 上,我们一般建议使用 conda 来管理依赖项。这些依赖项包括python以及各种python工具包。
conda create --name tvm python=3.8
conda activate tvm
3 下载和配置TVM源代码
3.1 下载TVM源代码
在您的系统中准备好了所有必要的编译工具后,下一步是下载TVM源代码。这一步骤通常通过Git完成,确保您能够获取最新的代码版本。
git clone --recursive https://github.com/apache/tvm tvm
cd tvm
3.2 切换到合适的分支(可选)
如果需要,您可以切换到一个特定的分支或标签,以访问特定版本的TVM。
git checkout <branch_name>
3.3 配置TVM构建环境
TVM使用 cmake 来构建库,你可以通过编辑 config.cmake 或将 cmake 标志传递给命令行来修改 TVM 的配置,这里我使用 编辑 config.cmake 的方式来完成这项任务。
首先,创建一个编译目录并将配置文件拷贝到编译目录下,然后对配置文件进行修改。
mkdir build
cp cmake/config.cmake build
vim build/config.cmake
编辑以自定义编译选项,当你需要使用MicroTVM时,请确保至少打开以下配置项:
- set(USE_CMSISNN ON)
- set(USE_MICRO ON)
- set(USE_LLVM ON)
- set(USE_ETHOSU ON)
4 编译TVM并配置TVM使用环境
4.1 编译TVM
运行CMake来配置编译环境并执行构建。
cd build
cmake ..
make -j8
提示:
- 当cmake版本太低时,可以考虑用 conda install cmake 的方式来安装最新版本的cmake
- Ubuntu的环境可能不好安装 llvm ,可以使用 conda install llvm 的方式来安装最新版本的cmake
4.2 安装Python包
对于频繁修改TVM代码的程序员来说,设置环境变量 PYTHONPATH 以告诉 python 在哪里查找 TVM时一个比较好的方式。当你拉取最新的TVM代码并重新生成项目后,更改将立即实现(无需再次设置)。例如,假设你在目录 /path/to/tvm 上克隆了 tvm,那么我们可以在 ~/.bashrc 中添加以下行。
export TVM_HOME=/path/to/tvm
export PYTHONPATH=$TVM_HOME/python:${PYTHONPATH}
4.3 安装Python 依赖项
# Necessary dependencies:
pip3 install --user numpy decorator attrs
# If you want to use : the TVM command line driver.
pip3 install --user typing-extensions psutil scipy
5 可能用到的资源
以下是一些推荐的网站,它们可能对于学习和使用TVM非常有帮助:
- Apache TVM Documentation — tvm 0.15.dev0 documentation
- GitHub - apache/tvm: Open deep learning compiler stack for cpu, gpu and specialized accelerators
- GitHub - ArmDeveloperEcosystem/Paddle-examples-for-AVH: 🤖 Use PaddlePaddle for OCR and Object Detection on Arm Cortex-M with Arm Virtual Hardware (AVH)
6 总结
在这篇博客中,我们详细探讨了如何在Mac M1操作系统上从源码编译TVM。我们从安装必要的工具和依赖开始,然后详细介绍了如何使用Git下载TVM源代码,并进行了基本的配置。
TVM和MicroTVM的世界广阔而深奥,等待着我们去探索。无论你的兴趣在于优化深度学习模型的性能,还是在边缘设备上实现复杂的机器学习算法,TVM都为您提供了实现这些目标的可能性。祝您在探索TVM的旅程中取得成功!