ディープラーニングは、機械が人間のような創造性を模倣するコンテンツを学習および生成できるようにすることで、人工知能(AI)の分野に革命をもたらしました。 この分野での進歩の1つは、2022年にリリースされたテキストから画像へのモデルである 安定した拡散です。
Stable Diffionは、テキストの説明を条件とした非常に詳細な画像を生成する能力で大きな注目を集めており、それによって創造的なデザイン、視覚的なストーリーテリング、コンテンツ生成などの分野で新しい可能性を開きます。 オープンソースの性質とアクセシビリティを備えたStable Diffionは、ディープラーニングの力を活用しようとしている多くの研究者や開発者にとって頼りになるツールになっています。
この記事では、 WSL 2 で Docker と共に安定した拡散を活用してディープ ラーニング ワークフローを最適化し、この最先端テクノロジを使用したシームレスで効率的な実験を可能にする方法について説明します。
この包括的なガイドでは、WSL 2の有効化とDocker デスクトップ のインストールを含む、 安定した拡散WebUI Docker のセットアッププロセスについて説明します。必要なコードを GitHub からダウンロードし、 Docker Compose を使用して初期化する方法を学習します。
このガイドでは、モデルの追加とシステムの管理について説明し、UI の再読み込みや画像出力の保存に最適な場所の決定などの重要なタスクについて説明します。 ハードウェアとGPUの使用状況を監視するためのトラブルシューティング手順とヒントも含まれており、 安定した拡散WebUI をスムーズかつ効率的に体験できます(図1)。
安定した普及のためにDockerデスクトップを使用する理由
画像ベースのジェネレーティブAIの分野では、Windows PC上で効果的な実行および開発環境をセットアップすることは、特定の課題を提示する可能性があります。 これらの課題は、ソフトウェアの依存関係の違い、互換性の問題、および特殊なツールとフレームワークの必要性が原因で発生します。 Docker Desktopは、異なるシステム間で一貫性と再現性を保証するコンテナ化プラットフォームを提供することにより、これらの課題に取り組むための強力なソリューションとして浮上しています。
Docker Desktop を活用することで、画像ベースのジェネレーティブ AI ワークフローに必要なすべてのコンポーネントと依存関係をカプセル化した分離された環境を作成できます。 このアプローチにより、手動によるソフトウェアのインストール、競合するライブラリバージョン、およびシステム固有の構成に関連する複雑さが解消されます。
安定した拡散 WebUI の使用
安定拡散WebUIは、Gradioライブラリ上に構築されたブラウザインターフェイスであり、 安定拡散 と対話して機能を探索するための便利な方法を提供します。 Gradioは、機械学習モデル用のインタラクティブなインターフェイスを作成するプロセスを簡素化する強力なPythonライブラリです。
安定版拡散 WebUI 環境のセットアップは、面倒で時間のかかるプロセスであり、環境構築には複数のステップが必要です。 ただし、便利なソリューションは、 安定した拡散WebUI Dockerプロジェクト の形で利用できます。 この Docker イメージでは、事前構成された環境が提供されるため、手動セットアップが不要になります。
Windows を使用していて、Docker デスクトップがインストールされている場合は、コマンドを使用して環境 docker-compose
を簡単に構築して実行できます。 すべてがコンテナ内にカプセル化されるため、ライブラリや依存関係を事前に準備することを心配する必要はありません。
コンテナなので問題があるのか 疑問に思うかもしれません。 使い始める前は不安でしたが、今のところ特に困ったことはありません。 生成された画像、モデル、変分オートエンコーダー(VAE)、およびその他のデータはWindowsマシンと共有(バインドマウント)されるため、エクスプローラーまたはDockerデスクトップのターゲットコンテナに Files
ドラッグするだけでファイルを交換できます。
一番困ったのは、拡張機能をバックアップせずに無効にしてしまい、半日かけてトレーニングしていた約50GBのデータを一瞬で吹き飛ばしてしまったことです。 (これは冗談です!
建築
WindowsでDockerデスクトップを使用して安定した拡散を開始するための比較的簡単な手順をまとめました。
前提 条件:
- ウィンドウズ 10 プロ, 21H2 ビルド 19044.2846
- 16ギガバイトのメモリ
- NVIDIA GeForce RTX 2060 SUPER
- WSL 2 (Ubuntu)
- ドッカーデスクトップ 4.18.0 (104112)
Docker Compose を使用したセットアップ
今回はAUTOMATIC1111というWebUIを使って安定拡散を利用します。 これらの環境は、Docker Compose を使用して構築されます。 主なコンポーネントを図2に示します。
Docker Compose の構成は、 docker-compose.yml
で定義されています。 ここでは、各サービスに共通する主要なコンポーネントを記述するために呼び出され x-base_service
る Compose 拡張機能を使用しています。
まず、ホストとコンテナの間には bind mount
、モードをロードする、イメージを /output
出力するなど、 /data
設定があります。次に、NVIDIAドライバーをロードして、コンテナにGPUを認識させます。
さらに、という名前の sd-auto:58
サービスは、コンテナ内でAUTOMATIC1111、安定した拡散のためのWebUIを実行します。 ポートマッピング(TCP:7860)があるため、前述の共通サービス設定でホストとコンテナの間には、ホスト側のブラウザからコンテナ内部へのアクセスが可能です。
始める
前提
WSL 2 をライセンス認証し、Docker デスクトップをインストールする必要があります。
最初の実行時に、12GBの安定拡散1.5モデルなどをダウンロードします。 このダウンロードが完了するまで、Web UI は使用できません。 接続によっては、最初の起動までに時間がかかる場合があります。
コードのダウンロード
まず、 GitHub から Stable Diffusion WebUI Docker コードをダウンロードします 。 ZIPとしてダウンロードする場合は、[ コード]>[ダウンロードZIP] をクリックすると、 stable-diffusion-webui-docker-master.zip
ファイルがダウンロードされます(図3)。
ファイルを便利な場所に解凍します。 展開すると、という名前の stable-diffusion-webui-docker-master
フォルダが見つかります。 コマンドラインなどを開き、 docker compose
その中でコマンドを実行します。
または、Git for Windows など、Git を使用できる環境がある場合は、次のようにダウンロードする方が高速です。
git clone https://github.com/AbdBarho/stable-diffusion-webui-docker.git
この場合、フォルダ名は stable-diffusion-webui-docker
です。 で cd stable-diffusion-webui-docker
移動します。
Docker に精通しているユーザー向けの補足情報
開始するだけの場合は、このセクションをスキップできます。
既定では、タイム ゾーンは UTC です。 ログに表示される時刻と生成された output/txt2img
ディレクトリの日付を日本時間に調整するには、サービスの環境変数 auto
に追加します TZ=Asia/Tokyo
。具体的には、 に environment:
次の説明を追加します。
auto: &automatic
<<: *base_service
profiles: ["auto"]
build: ./services/AUTOMATIC1111
image: sd-auto:51
environment:
- CLI_ARGS=--allow-code --medvram --xformers --enable-insecure-extension-access --api
- TZ=Asia/Tokyo
初回起動時のタスク
残りのプロセスは、 GitHub のドキュメントで説明されているとおりです。 コードが展開されているフォルダー内で、次のコマンドを実行します。
docker compose --profile download up --build
コマンドの実行後、という名前の webui-docker-download-1
コンテナのログが画面に表示されます。 しばらくの間、ダウンロードは次のように実行されますので、完了するまで待ちます。
webui-docker-download-1 | [DL:256KiB][#4561e1 1.4GiB/3.9GiB(36%)][#42c377 1.4GiB/3.9GiB(37%)]
プロセスが正常に終了すると、次のように表示され exited with code 0
、元のプロンプトに戻ります。
…(snip)
webui-docker-download-1 | https://github.com/xinntao/Real-ESRGAN/blob/master/LICENSE
webui-docker-download-1 | https://github.com/xinntao/ESRGAN/blob/master/LICENSE
webui-docker-download-1 | https://github.com/cszn/SCUNet/blob/main/LICENSE
webui-docker-download-1 exited with code 0
0以外のコードが次のように出力された場合、ダウンロードプロセスは失敗しています。
webui-docker-download-1 | 42c377|OK | 426KiB/s|/data/StableDiffusion/sd-v1-5-inpainting.ckpt
webui-docker-download-1 |
webui-docker-download-1 | Status Legend:
webui-docker-download-1 | (OK):download completed.(ERR):error occurred.
webui-docker-download-1 |
webui-docker-download-1 | aria2 will resume download if the transfer is restarted.
webui-docker-download-1 | If there are any errors, then see the log file. See '-l' option in help/m
an page for details.
webui-docker-download-1 exited with code 24
この場合、コマンドを再度実行し、正常に終了するかどうかを確認してください。 正常に終了したら、コマンドを実行してWebUIを起動します。
手記: 以下は、AUTOMATIC1111 の UI と GPU の仕様に関するものです。
docker compose --profile auto up --build
コマンドを実行すると、最初の起動時にモデルの読み込みに数分かかる場合があります。 次の表示のようにフリーズしているように見えるかもしれませんが、それは問題ありません。
webui-docker-auto-1 | LatentDiffusion: Running in eps-prediction mode
webui-docker-auto-1 | DiffusionWrapper has 859.52 M params.
しばらく待つとログが流れ、以下のURLが表示されます。
webui-docker-auto-1 | Running on local URL: http://0.0.0.0:7860
これで、Web UI の起動準備が設定されました。 ブラウザーから http://127.0.0.1:7860 を開くと、Web UI が表示されます。 開いたら、画面の左上から適切なモデルを選択し、テキストフィールドにテキストを入力し、[ 生成 ]ボタンを選択して画像の生成を開始します(図4)。
クリックすると、ボタンが反転します。 プロセスが終了するまで待ちます(図5)。
このとき、操作している端末にイメージ生成のログが表示されており、Docker Desktop上のコンテナのログを見て同様の表示を確認することもできます(図6)。
ステータスが100%になると画像の生成が終了し、画面で確認できます(図7)。
作成された画像は、 output/txt2img/date
コマンドを実行した docker compose
ディレクトリの直下のフォルダーに自動的に保存されます。
起動したWebUIを停止するには、まだ docker compose
コマンドを実行している端末に入力します Ctrl+C
。
Gracefully stopping... (press Ctrl+C again to force)
Aborting on container exit...
[+] Running 1/1
? Container webui-docker-auto-1 Stopped 11.4s
canceled
プロセスが正常に終了すると、コマンドを再度実行できるようになります。 再起動後に WebUI を再度使用するには、次のコマンドを再実行します docker compose
。
docker compose --profile auto up --build
動作中のハードウェアの状態を確認するには、タスク マネージャを使用して GPU の状態を確認します (図 8)。
GPU がコンテナー内から見えるかどうか、および情報が出力されるかどうかを確認するには、 nvidia-smi
または Docker Desktop ターミナルから docker exec
コマンドを実行します。
root@e37fcc5a5810:/stable-diffusion-webui# nvidia-smi
Mon Apr 17 07:42:27 2023
+---------------------------------------------------------------------------------------+
| NVIDIA-SMI 530.41.03 Driver Version: 531.41 CUDA Version: 12.1 |
|-----------------------------------------+----------------------+----------------------+
| GPU Name Persistence-M| Bus-Id Disp.A | Volatile Uncorr. ECC |
| Fan Temp Perf Pwr:Usage/Cap| Memory-Usage | GPU-Util Compute M. |
| | | MIG M. |
|=========================================+======================+======================|
| 0 NVIDIA GeForce RTX 2060 S... On | 00000000:01:00.0 On | N/A |
| 42% 40C P8 6W / 175W| 2558MiB / 8192MiB | 2% Default |
| | | N/A |
+-----------------------------------------+----------------------+----------------------+
+---------------------------------------------------------------------------------------+
| Processes: |
| GPU GI CI PID Type Process name GPU Memory |
| ID ID Usage |
|=======================================================================================|
| 0 N/A N/A 149 C /python3.10 N/A |
+---------------------------------------------------------------------------------------+
モデルと VAE の追加
最初から含まれていないモデルをダウンロードする場合は、 などの stable-diffusion-webui-docker\data\StableDiffusion
拡張子を持つファイルを配置します .safetensors
。VAEの場合は、 .skpt
ファイル。 stable-diffusion-webui-docker\data\VAE
Docker Desktop を使用している場合は、コンテナーの webui-docker-auto-1
[ファイル ] を表示して操作できるため、コンテナーを Docker Desktop にドラッグすることもできます。
図 9 に、Docker デスクトップの画面を示します。 [メモ] 列に MOUNT と表示され、フォルダー内の情報が Windows ホスト側のコンテナーと共有されます。
これで、ファイルを配置した後、WebUI のフッターに [UI の再読み込み ] へのリンクが表示されるので、そこを選択します (図 10)。
[UI の再読み込み] を選択すると、システムに読み込み画面が表示され、ブラウザーの接続が切断されます。ブラウザを再ロードすると、モデル ファイルと VAE ファイルが自動的にロードされます。 モデルを削除するには、 から data\StableDiffusion
モデル ファイルを削除します。
結論
Docker Desktop を使用すると、最新の生成型 AI 環境を使用したイメージ生成がこれまでになく簡単に実行できます。 通常、環境をセットアップするだけで多くの時間と労力が必要ですが、Docker Desktopはこの複雑さを解決します。 興味のある方は、生成型AIの世界に挑戦してみてはいかがでしょうか。楽しむ!
さらに詳しく
- Docker デスクトップの最新リリースを入手します。
- 質問がありますか? Docker コミュニティがお手伝いします。
- ドッカーは初めてですか?始めましょう。