Stable Diffusion
PR

【CUDA12.8 対応 xformers】 CUDA12.8でxformersをビルドする方法 【Python】

えりる
記事内に商品プロモーションを含む場合があります

この記事ではCUDA12.8Pytorch 2.8環境でxformersを無理やりビルドして使用する方法について情報共有します。
(注意: 自己責任でお願いします。)

環境

検証環境は以下の通りです。PyTorchの開発は Linux 環境への対応の方が早いという噂を聞いたのでOSは Ubuntu を選択します。

  • OS = Ubuntu 24.04.2 LTS
    • WSL(Windows PC上で簡単にLinuxを動かすことができる機能)上で動作
  • CPU = Intel Core Ultra 285k
  • GPU = NVIDIA RTX 5070
  • pyenv+venvなどの仮想環境を作れる環境
    • Python 3.10.6 (Stable Diffusion が対応しているバージョン) を使用する
  • CUDA Toolkit 12.8CUDA 12.8に対応したcuDNNはインストール済み
  • Pytorch 2.8はインストール済み

pyenvCUDA Toolkit 12.8CUDA 12.8Pytorch 2.8のインストールは下記記事で解説していますのでご参照ください。

あわせて読みたい
【Stable Diffusion】 RTX50シリーズでStable Diffusionを起動する方法 【CUDA 12.8対応】
【Stable Diffusion】 RTX50シリーズでStable Diffusionを起動する方法 【CUDA 12.8対応】

xformersのビルド環境構築

まず、Ubuntu に必要な開発ツールとライブラリをインストールします。

sudo apt update
sudo apt install python3-dev build-essential cmake

次に、CUDA 12.8 と cuDNN の環境変数を確認します。

環境変数は以下の通りに設定しました。

export PATH="/usr/local/cuda/bin:$PATH"
export LD_LIBRARY_PATH="/usr/local/cuda/lib64:$LD_LIBRARY_PATH"
export CUDA_HOME=/usr/local/cuda-12.8
export CUDNN_INCLUDE_DIR=/usr/local/cuda/include
export CUDNN_LIB_DIR=/usr/local/cuda/lib64

環境変数設定は.bashrc記載されているので、そのファイルの末尾に追加しました。

変更したので以下のコマンドで有効化。

source ./.bashrc

その後、PyTorchが自分のGPUに適したCUDAバージョンを認識しているかを確認します。

以下のコマンドの出力結果で確認することができます。

python -c "import torch; print(torch.__version__); print(torch.cuda.is_available()); print(torch.cuda.get_arch_list())"

出力例は以下のとおりです。

2.8.0
True
['sm_90']

RTX5070の場合はsm_90が含まれていればよいそうです。

次に、xformersのGitHubリポジトリからソースコードを取得します。

git clone https://github.com/facebookresearch/xformers.git

mainブランチを使用します。

その後、Python 3.10.6を有効化し、仮想環境を作成して有効化します。

pyenv local 3.10.6
python -m venv venv
source venv/bin/activate

次に必要なPythonパッケージをrequirement.txtからインストールします。

requirement.txtは先ほど取得したソースコード一式が入っているフォルダ(xformers)にあるので、

cd xformers

でディレクトリを移動しておきます。

その後、以下のコマンドでrequirement.txtからパッケージをインストールします。

pip install -r requirements.txt

これで大体の環境はできました。

xformers のインストール (トラブルシューティングを含む)

カレントディレクトリがxformersであることを確認後、以下のコマンドでxformersを直接ソースコードからインストールすることができます。

pip install .

ここまでの状態でインストールをすると

ModuleNotFoundError: No module named 'torch'

というエラーがでます。

これはtorchが無いよってことなんですが、 ここまででPyTorchはインストールですし、先ほど以下のコマンドでtorchがインポートできることは確認済みです。

python -c "import torch; print(torch.__version__); print(torch.cuda.is_available()); print(torch.cuda.get_arch_list())"

これを回避するには以下のコマンドでwheelをインストールすると解消されます。

pip install ninja packaging wheel

この状態でインストールを試みると下記のエラーがでます。

Did you forget to run `git submodule update --init --recursive` ?

これは以下のコマンドを実行するようにと言われているので指示に従います。

git submodule update --init --recursive

この状態でインストールをすると無事成功しました。

pip install .

xformersのビルドと他環境での利用方法

ここまででCUDA12.8Pytorch 2.8環境でxformersをインストールできました。

作ったxformersをほかの環境で利用する方法を説明します。

以下のコマンドでビルドしたxformersをビルドします。

python setup.py bdist_wheel

成功すると、dist/ ディレクトリ内に .whl ファイルが生成されます。

このときファイル名は変えないでください。

作業フォルダに.whl ファイルを移動させたあと、ほかの仮想環境を有効化した状態で、

pip install ビルドして生成されたファイル名.whl

を行うことでインストールできます。

参考文献

記事URLをコピーしました