把写的 libtorch 调用模型的程序移植到了下 Ubuntu 下发现没有问题,libtorch 提供了预编译好的库。放到基于 Arm 的国产主机上就提示 libtorch.so 不是动态库文件,需要从源代码编译 libtorch。不过没啥难点,踩坑文。
git clone https://github.com/pytorch/pytorch --recursive && cd pytorch git checkout v1.2.0 # 真的勇士敢于在master分支下编译 #下载编译需要的子模块 git submodule sync git submodule update --init --recursive
拉取镜像
sudo docker pull dlckdgk/libtorch:frcnn # 拉取镜像 sudo docker run -it -d -v ~/Desktop:/workspace -p 9000:22 --name libtorchArm dlckdgk/libtorch:frcnn sudo docker exec -it libtorchArm bash
pytorch 官方给出的环境是用 conda 装的,然而悲剧的是官方并没有给出 aarch64 的安装文件,所以还是使用 pip 来安装。还有个问题是很多 python 库并没有发布对应架构下的包,好在编译 libtorch 需要的 python 环境较为简单。编译完之后导出 python 环境发现,编译 libtorch 必须的包应该只有 pyyaml(不太确定)。当然 cmake 和 gcc 等工具还是必须的。
安装 pyyaml 的命令:
apt install python3.7 python3-pip apt install vim cmake pip install pyyaml rm -rf /usr/bin/python /usr/bin/pip ln -s /usr/bin/python3.7 /usr/bin/python ln -s /usr/bin/pip3 /usr/bin/pip
在编译之前可以使用 export 或者 cmake-gui 关闭一些不必要的编译选项来加快编译速度,
export USE_CUDA=False export BUILD_TEST=False cd pytorch mkdir build && cd build python ../tools/build_libtorch.py
$ git checkout v1.8.0 $ git submodule sync $ git submodule update --init --recursive $ pip install typing_extensions $ python tools/build_libtorch.py