このページの本文へ

Stable Diffusionの生成速度をビデオカード複数枚挿しで“実質的に”爆速にしてみた

2024年05月03日 11時00分更新

文● 加藤勝明(KTU) 編集●北村/ASCII

提供: CFD販売

  • この記事をはてなブックマークに追加
  • 本文印刷

「Stability Matrix」ならセットアップ手順を極力シンプルにできる

 まずはStable Diffusionの環境構築だが、今回は「Stability Matrix」を利用する。スタンダードなStable Diffusion+Automatic 1111環境ではまずGitやPythonを導入し、そこからコマンドプロンプトを叩いて……と面倒臭い手順を踏む必要があるのだが、Stability Matrixは必要なものがすべて内包されている。ビデオカードが1枚でも2枚以上でも、最初のセットアップは共通だ。2枚以上の場合は後述するデバイスIDとの紐付け作業が必要になる。

まずはStability Matrixのリポジトリへ行き、最新版をDLしよう。https://github.com/LykosAI/StabilityMatrixへ飛び、右側やや下の「Releases」へ進む

検証時点での最新版は2.10.2だった。DLリンクは「Assets」の中にある。Windows版なら「StablityMatrix-win-x64.zip」をDLするのが正解だが、ほかにmacOSやLinux版も用意されている

Windows版の場合Zipファイルの中に入っているStability Matrix本体を、任意のフォルダーにコピーする。このStability Matrixと同じ階層にフォルダーの中にデータが入るのでデスクトップ直置きとかは避けた方がいい

Stability Matrix初回起動時にデータフォルダーの位置を尋ねてくるが、学習モデルなどの管理が面倒なら「Portableモード」にチェックを付けるといい。Stability Matrix本体と同じ階層にできるDataフォルダーに全データがまとまるので、複数PCでも同じ環境を使いたい時には好都合だ

Stable DiffusionのUIはさまざまなものが存在する。好みのものを使おう。今回は定番Automatic 1111をクリックし「インストール」を選択した

Stable Diffusion+Automatic 1111のセットアップ中に学習モデルのDLもできる。チェックを付けなければデフォルトの学習モデル(Stable Diffusion 1.5)がDLされるので問題ないし、後から追加することもできる

 Stability MatrixにStable Diffusion+Automatic 1111環境を作ったら、それぞれに学習モデルや機能拡張を導入する。環境移行が楽なようにPortable仕様にしたので複数環境がある場合は個々にダウンロードやセットアップが必要になるが、そこは手軽さとトレードオフだ。学習モデルは特にサイズが大きいので高速な回線がないと厳しいだろう。

学習モデルやコントロールネットを追加したい場合はStability Matrixのウインドウ左にある「Model Browser」アイコンをクリック。CivitAIまたはHuggingFaceに公開されているデータを直でダウンロードできる

GeForceを使っているならTensorRTの機能拡張も入れておいた方がいいだろう。個々のStable Diffusion+Automatic 1111環境にあるジグソーパズルのピースアイコンをクリックし、TensorRTにチェックを付ければインストールできる

ここまで来ればとりあえずStable Diffusion+Automatic 1111は動作するようになる。2枚目のGPUで動かすためには、画面下の「パッケージの追加」をクリック

 2つめのStable Diffusion+Automatic 1111環境をセットアップしたら、GPUと環境の紐付けを行なう。起動時のオプション(Extra Launch Arguments)にGPUを識別するためのデバイスID(--device-id)とAutomatic 1111を環境ごとに用意するためのポート(--port)を指定する。

 GPUのデバイスIDは1枚目が0、2枚目が1……となるが、どっちがCPU側に近いビデオカードなのかは実際動かしてから「HWiNFO」などのツールで確認するといい。ポートはウェブブラウザーを開くためにGPUごとに異なる値が必要だ。こちらは最大65535までの任意の数を指定すればいいことになっている。

 Automatic 1111のデフォルトは7680なので、2枚挿しの場合は7680と7681を明示的に指定すればいい(ここでは11451と11452とした)。

2つ目のStable Diffusion+Automatic 1111環境のセットアップを始める前に、「表示名」の所を少しだけ変えておこう。ここでは末尾に「-2」と加えた。ここからの手順は1枚目とまったく同じ

これで2つのStable Diffusion+Automatic 1111環境がセットアップできた。次にこれを2枚のビデオカードそれぞれに紐付ける作業を行なう。各環境に1つずつある歯車アイコンをクリック

Launch Optionsの一番下にある「Extra Launch Arguments」に「--device-id 0 --port 11451」と入力。2枚目用に追加した環境には「--device-id 1 --port 11452」と入力した

 初回起動時はさまざまなデータのダウンロードが発生するため、どの程度待つかは学習モデルの種類やネット回線の速度などに依存する。気長に待とう。

あとは「Launch」ボタンを押せばそのGPUに紐付いたStable Diffusion+Automatic 1111環境が起動する。2つめを起動する場合はStability Matrix左上にある「←」ボタンをクリックして……

この画面に戻ったら別のLaunchボタンをクリックすればいい。ブラウザーが開かない場合は「Web UI」ボタンをクリックだ

おなじみのAutomatic 1111が出現したら、好きなように試行錯誤しよう

2枚のRTX 4070 Ti SUPERに画像生成をさせた状態でタスクマネージャーを開いたところ。片方のGPU(デバイスID 0)側はこのように「3D」の負荷がガツンと上がり、VRAM使用量も増えている

ところがもう片方(デバイスID 1)は3Dが全く動かないのにVRAM使用量は上がっている。タスクマネージャーの仕様なのか不具合なのかは不明だが、タスクマネージャーでは正しく負荷の状態を把握することは(現状)できないようだ

タスクマネージャーで正しくチェックできなくてもHWiNFOの「GPU Core Load」をチェックするといい

カテゴリートップへ

注目ニュース

ASCII倶楽部

ピックアップ

ASCII.jpメール アキバマガジン

ASCII.jp RSS2.0 配信中