C++版PyTorch「LibTorch」の環境構築【Visual Studio】

LibTorchの環境構築

Deep Learningを実際に使う場合はやはりライブラリに頼ることになると思うのでこちらの学習もしていこうと思います。特に最近は「PyTorch」と呼ばれるライブラリがメジャーだと思います。PyTorchはこちらのサイトからダウンロードできます。

基本的にはPythonで扱われることが多いのですが、C++版も存在しており「LibTorch」と呼ばれています。今回はLibTorchをVisual Studio 2022で使用できるように設定していこうと思います。

1. LibTorchのダウンロード

まず上記のURLにアクセスし、以下のように選択してダウンロードリンクをクリックします。今回はCPUを使用するため「CPU」を選択していますが、GPUを使用する場合は「CUDA 11.8」、「CUDA 12.1」、「CUDA12.4」のどれかを選択します(2024.09現在)。
※ Debug版とRelease版でダウンロードリンクが異なるのでご注意ください。

ダウンロードが完了したら、ダウンロードされたZIPファイルを任意の場所に解凍します。

2. 環境変数の設定

Libtorchフォルダを解凍したら環境変数の設定を行います。
まずタスクバーの検索窓に「システム環境変数」と入力し、「システム環境変数の編集」を選択する。

図のような画面が表示されるので右下の「環境変数」をクリックする。

すると環境変数の設定画面が表示されるので、下段のシステム環境変数の「Path」を選択し「編集」をクリックする。

環境変数名の編集画面が表示されるので「新規」を押してから「参照」を押してフォルダ選択画面を表示する。

そして先ほど回答したLibtorchフォルダのlibフォルダを選択する。フォルダパスは以下の通り。

libtorch-win-shared-with-deps-2.4.1+cpu\libtorch\lib

システム環境変数の設定したらPCを再起動します。
再起動しないと設定したパスが反映されません。

3. Visual Studioの設定

まず動作確認用のプロジェクトを作成します。
Visual Studio 2022を起動すると図のような画面が表示されるので「新しいプロジェクトの作成」を選択します。

次にテンプレートを選択します。今回はC++のコンソールアプリを選択しました。

次にプロジェクト名とプロジェクトの保存先を設定します。今回は「LibtorchTest」という名前のプロジェクトにしました。

プロジェクトを作成したらアクティブソリューション(DebugかRelease)をダウンロードしたLibTorchに合わせてからプロパティの設定を行います。
プロジェクト→LibtorchTestのプロパティを選択してプロパティ設定画面を表示します。

まず「構成プロパティ→全般→C++言語標準」の設定を確認します。
ここがC++ 14になっていた場合は「ISO C++17標準」か「ISO C++ 20標準」に変更します。
C++ 14だとビルドが通らないのでここの設定を変更する必要があります。

次に「構成プロパティ→C/C++→全般」の「追加のインクルードディレクトリ」にフォルダを追加します。

インクルードディレクトリを選択すると図のような画面が表示されるので、フォルダの選択を行います。

ここで追加するフォルダは以下の2つです。

libtorch-win-shared-with-deps-2.4.1+cpu\libtorch\include
libtorch-win-shared-with-deps-2.4.1+cpu\libtorch\include\torch\csrc\api\include

次に「構成プロパティ→リンカー→全般」で「追加のライブラリディレクトリ」を設定します。

追加のライブラリディレクトリを選択すると図のような画面が表示されるので先ほどと同じようにライブラリフォルダを選択します。

ここで追加するフォルダは以下の通りです。

libtorch-win-shared-with-deps-2.4.1+cpu\libtorch\lib

最後にライブラリファイルの追加を行います。
構成プロパティ→リンカー→入力」の「追加の依存ファイル」を選択します。

図のような画面が表示されるので、赤枠で囲った部分にlibフォルダ内のライブラリファイルを入力します。ここで追加するライブラリファイルは以下の通りです(そのままコピペでOK)。

asmjit.lib
c10.lib
cpuinfo.lib
dnnl.lib
fbgemm.lib
fbjni.lib
fmt.lib
kineto.lib
libprotobuf.lib
libprotobuf-lite.lib
libprotoc.lib
pthreadpool.lib
pytorch_jni.lib
sleef.lib
torch.lib
torch_cpu.lib
XNNPACK.lib

そしてすべて設定したら「適用」を押してOKを押します。

4. 動作確認

テスト用のプログラムで動作確認を行います。今回は3×2のテンソルを作成して表示するプログラムで動作確認を行いました。

#include <iostream>
#include <torch/torch.h>

int main()
{
	torch::Tensor tensor = torch::rand({ 2, 3 });
	std::cout << tensor << std::endl;
	return 0;
}

そして実行してみます。ビルドで大量の警告が出てきますがライブラリの中なので今回は気にしないことにします。

結果が表示されました。動作は問題なさそうです。

今回は以上です。

コメント

タイトルとURLをコピーしました