PyTorch2.7正式版のためのxformersをビルド

PyTorch2.7正式版がリリースされBlackwellシリーズのGPUも正式サポートされましたが、この時点ではxformersの対応版がまだ公開されていません。そこで自環境でビルドしてみました。

前提環境

  • Windows 11
  • Build Tools for Visual Studio 2022
  • CUDA Toolkit 12.8 Update 1
  • Python 3.12.9
  • PyTorch 2.7
  • GeForce RTX 5070 Ti

xformers無しの生成や学習は問題なく実行できる環境。

ビルド&インストール手順

windowsスタートメニュー -> visual studio 2022 -> x64 Native Tools Command Prompt for VS 2022を起動

以下のコマンドはこのコンソールに入力。

適当な場所にリポジトリをクローン(浅い階層のほうが良いかも)

cd c:\
git clone https://github.com/facebookresearch/xformers.git

(この時点の最新 commit 3abeaa9e7e26b330632e183930d94b67a0fd33d2)

使用する仮想環境をアクティベート

F:\sd-scripts\venv\Scripts\Activate

ビルドに必要なパッケージを追加インストール

pip install ninja packaging wheel

設定を追加

set DISTUTILS_USE_SDK=1
set TORCH_CUDA_ARCH_LIST=10.0;12.0
set MAX_JOBS=4

DISTUTILS_USE_SDKは設定しないとエラーになるので問答無用で入れる。

TORCH_CUDA_ARCH_LIST の値は使用するGPUによって変更が必要になる模様。5070tiの場合は上記の設定。

set TORCH_CUDA_ARCH_LIST=6.1;7.0;7.5;8.0;8.6;8.9;9.0;10.0;12.0

のように設定することで幅広いGPUに対応できる可能性があるが未検証

アーキテクチャ対応リスト https://developer.nvidia.com/cuda-gpus

MAX_JOBSは並列作業数の設定。使用してるPCスペックによって変更可能。CPUの物理コア数より少し低いあたりの数値がベターらしい。ちなみに無設定だとCPUとメインメモリ(64GB)使用率が100%に張り付いてスワップ地獄に。

クローンしたリポジトリのフォルダに移動

cd \xformers

リポジトリの更新

git submodule update --init --recursive

最終的なインストール実行

pip install -v -U . --no-deps

◤◢◤1時間以上かかるので待つ!◢◤◢

幸運にもエラーが出ずにインストール完了していたら使い回せるように.whlを作成して完了

python setup.py bdist_wheel

エラー対応

無対策だとおそらくこのエラーが出る

error: unable to create file …: Filename too long

Windowsの標準的なファイルパス長制限(通常260文字)を超えてしまうファイルやディレクトリが存在する時のエラー

解決方法:レジストリエディターを使用する

  1. Windowsの検索バーに「regedit」と入力し、レジストリエディターを開きます。
  2. ユーザーアカウント制御のダイアログが表示されたら「はい」をクリックして、管理者権限で実行します。
  3. レジストリエディターのアドレスバーに以下のパスを入力し、移動します。
    HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\FileSystem
  4. 右側のペインで LongPathsEnabled という名前の項目を探します。
    • もし存在しない場合は、右側の空白部分を右クリックし、「新規」 -> 「DWORD (32-bit) 値」を選択して、LongPathsEnabled という名前で作成します。
  5. LongPathsEnabled をダブルクリックします。
  6. 「値のデータ」を 0 から 1 に変更します。
  7. 「OK」をクリックします。
  8. レジストリエディターを閉じます。
  9. PCを再起動します。

さらにGitの設定変更

git config --global core.longpaths true

終わりに

StableDiffusionをはじめとする生成AIのセットアップでxformersという言葉をよく耳にするかと思います。一昔前はパフォーマンス向上に必須級と言われていたxformersですが、最近では『今の環境だと、もうそんなに必要ない…?推論ならSageAttentionでいいんじゃ』なんて声もちらほら……。最新環境においてxformersがどれだけ有効なのか、このあたりは有識者の見解や具体的な検証を待つべきかもしれません。

コメント

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