PyTorchのc++版のlibtorchをM1 Macでインストールする方法についてまとめます。
インストール
- 必要なもの
gccとcmake
適当にbrewでインストールしてください。
次に、PyTorchのウェブサイトに行って、Macのlibtorchをダウンロードし、どこかに展開しておきます。このディレクトリをlibtorchとします。
なお、このlibtorchの中身を使ってもm1 Macの場合はコンパイルできません。ですので、ソースからビルドすることにします。
方法はこちらにありました。
git clone -b main --recurse-submodule https://github.com/pytorch/pytorch.git
mkdir pytorch-build
cd pytorch-build
cmake -DBUILD_SHARED_LIBS:BOOL=ON -DCMAKE_BUILD_TYPE:STRING=Release -DPYTHON_EXECUTABLE:PATH=`which python3` -DCMAKE_INSTALL_PREFIX:PATH=../pytorch-install ../pytorch
cmake --build . --target install
を順番に実行し、エラーが起きないのを祈ります。[以前はmasterでしたが、現在はmainです。]
2023/08/30追記
M2 Maxでのインストールを試みました。yamlがないと言われた場合には
python3 -m pip install pyyaml
をしてください。
コンパイル後
無事に終了すると、ディレクトリpytorch-install
ができています。このディレクトリの中の
bin
include
lib
share
をlibtorchの同じ場所にコピーします。つまり、
cp -r ./pytorch-install/bin/* ~/libtorch/bin
みたいにしてコピーします。コピー先とコピー元はご自分のディレクトリの場所にしてください。includeもlibもshareも同様にします。これで終わりです。
テスト
次にテストしましょう。あるディレクトリに
example-app.cpp
CMakeLists.txt
という二つのファイルを用意します。それぞれ中身は
#include <torch/torch.h>
#include <iostream>
int main() {
torch::Tensor tensor = torch::rand({2, 3});
std::cout << tensor << std::endl;
}
cmake_minimum_required(VERSION 3.2 FATAL_ERROR)
project(example-app)
list(APPEND CMAKE_PREFIX_PATH ./libtorch)
find_package(Torch REQUIRED)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${TORCH_CXX_FLAGS}")
add_executable(example-app example-app.cpp)
target_link_libraries(example-app "${TORCH_LIBRARIES}")
set_property(TARGET example-app PROPERTY CXX_STANDARD 17)
とします。list(APPEND CMAKE_PREFIX_PATH ./libtorch)
の部分は、ご自分のlibtorchのディレクトリを指定してください。
これらを作ったあと、
mkdir build
cd build
cmake ..
make
とすれば、実行ファイルができます。実行結果は
./example-app
0.6674 0.3057 0.8953
0.3742 0.9715 0.9115
[ CPUFloatType{2,3} ]
となれば、libtorchが動いていることがわかります。