PyTorchをビルドする

しむどん 2026-01-15

PyTorchは深層学習のためのライブラリであり、動的計算グラフ、テンソル操作、自動微分などの深層学習で使用する処理を提供している。

通常のインストール方法は https://pytorch.org/get-started/locally/ に記載されている。ただし、今回はソースコードからビルドして使用する手順を確認する。

PyTorchのビルドとインストール

まず、GitHubからソースコードを取得する。

git clone --depth 1 [email protected]:pytorch/pytorch.git

取得したソースコードのディレクトリに移動する。

cd pytorch

サブモジュールもあるのでコードを崇徳して置く。

git submodule update --init --recursive

pipを使用してビルドをする。ここではPyTorch自体は、エディタブルインストールする。コマンドを実行すると、依存するライブラリのソースコードなどの取得も行われるため、このままやると結構時間がかかるが、今回はとりあえず耐える。

python3 -m pip install -U pip
pip3 install -r requirements-build.txt
python3 -m pip install --no-build-isolation -v -e .

成功すると最後には以下のように出力される。

Successfully installed MarkupSafe-3.0.3 filelock-3.20.3 fsspec-2026.1.0 jinja2-3.1.6 mpmath-1.3.0 networkx-3.4.2 sympy-1.14.0 torch-2.11.0a0+git66d99db

インストールできたら、ライブラリが読み込める状態である事を確認する。

python3 -c 'import torch'

エラーが出力されなければ、インストールは成功している。

Pythonインタラクティブシェルで、PyTorchを実際に使って計算を行う。

import torch

x = torch.rand(5, 3)
print(x)
>>> import torch
>>>
>>> x = torch.rand(5, 3)
>>> print(x)
tensor([[0.2096, 0.3824, 0.9260],
        [0.1516, 0.2697, 0.6035],
        [0.8189, 0.8419, 0.4931],
        [0.6137, 0.4341, 0.0958],
        [0.2686, 0.3325, 0.9396]])

できた。

PyTorchが依存しているCで実装されたライブラリとかもあるので、手順などをREADMEで確認しHomebrewで入れた。

必要なライブラリが足りていなかったり、途中でビルドが失敗したりすると、環境を直したとしてもキャッシュのせいで上手くいかない事がある。上手くいかない時はキャッシュを消してからやりなおすと上手くいくかもしれない。

make clean
キャッシュのクリア

実際に僕も何度かやりなおした。

macOSの場合

macOSでビルドしたパッケージの場合、C拡張がビルドされない状態でインストールされている事がある。その場合、たとえば次のようなエラーがimportした時に出る。

RuntimeError: Failed to import transformers.models.clip.modeling_clip because of the following error (look up to see its traceback):
No module named 'torch._C._distributed_c10d'; 'torch._C' is not a package

これと同じ事象が、GitHubのisssueに報告されていた。どうやら環境変数を適切に指定する事で解消できるようだ。キャッシュをクリアし、インストールし直す。

make clean
MACOSX_DEPLOYMENT_TARGET=14.1 CC=clang CXX=clang++ BUILD_CAFFE2_OPS=0 USE_CUDA=0 USE_MKLDNN=0 USE_DISTRIBUTED=1 python3 -m pip install --no-build-isolation -v -e .

正しくインストールできたか確認する。

python -c 'import torch._C'

ビルド時の環境変数

ビルド時に設定する主な環境変数をまとめた。

環境変数 意味 備考
MACOSX_DEPLOYMENT_TARGET ビルド時にリンクや互換性の基準となる最小のmacOSのバージョン 14.1
CC Cコンパイラとして使用するプログラム clang
CXX C++コンパイラとして使用するプログラム clang++
BUILD_CAFFE2_OPS Caffe2 の追加の演算子セット(Caffe2 Ops)をビルドするか 0 無効
USE_CUDA CUDAを利用するか 0 無効
USE_MKLDNN MKL-DNNを利用するか 0 無効
USE_DISTRIBUTED 分散トレーニング機能を利用するか 1 有効

ついでにtorchvisionも入れる

これは本稿のタイトルからすると直接関係ないのだが、PyTorchを使った画像処理系のライブラリとして、 torchvision がある。今回はこれも入れる。

ソースコードを取得する。

git clone --depth 1 [email protected]:pytorch/vision.git
python3 -m pip install --no-build-isolation -v -e .
Successfully built torchvision
Installing collected packages: torchvision
Successfully installed torchvision-0.25.0a0+1e53952
python -c 'import torchvision; print(torchvision.__version__)'
0.25.0a0+1e53952

torchvisionを初めて触るのであれば、まずは Getting started with transforms v2 をやっておくのがよさそう。ドキュメントにも、以下のようにある。

Whether you’re new to Torchvision transforms, or you’re already experienced with them, we encourage you to start with Getting started with transforms v2 in order to learn more about what can be done with the new v2 transforms.

引用: https://docs.pytorch.org/vision/stable/transforms.html#start-here