stable diffusion web uiをインストールします

画像生成AIのStable Diffusionをインストールします。今回は、UbuntuをGPUパススルーが可能なProxmoxにインストールして、Stable Diffusion Web UIを実行します。なお、この記事自体はProxmox環境でのインストール方法を説明していますが、インストールはVirtualBoxのUbuntuで実行されます。

ただし、VirtualBoxでは特殊な設定を行わない限りGPUパススルーができないため、Web画面は正常に表示されても、画像生成がうまくいかない可能性があります。この点を考慮していただき、Proxmoxでの環境構築を推奨します。インストール方法自体は同じですが、GPUを使用した画像生成を行いたい場合は、Proxmoxでのセットアップをお勧めします。

Ubuntu
Ubuntuは、デスクトップPCやクラウド、インターネットに接続されたあらゆる機器まで、すべての環境において動作可能なオープンソースのソフトウェアオペレーティングシステムです。

まず、Linux環境を準備するために、Ubuntuの公式サイトからISOファイルをダウンロードします。このとき、デスクトップ版ではなく、動作が軽い「Ubuntu Server」を選びましょう。Ubuntu Serverはコマンドを入力するCUI(キャラクターユーザインターフェース)環境ですが、Stable Diffusion Web UIのインストールはコピー&ペーストするだけの簡単な作業なので、こちらで十分です。

次に、ダウンロードしたISOファイルを使って、VirtualBoxにUbuntu Serverをインストールします。まず、新しい仮想マシンを作成し、「ISOイメージ」の項目に、先ほどダウンロードしたISOファイルを指定しておきましょう。

メモリサイズは8GBに変更しましたが、他の設定は特に変更していません。ディスク容量はデフォルトの25GBのまま、ネットワークの設定もそのままにしてあります。この設定で仮想マシンを起動しましょう。

しばらくすると、Ubuntuのセットアップウィザードが別の画面で表示されます。ここで、キーボードレイアウトを選択できますが、日本語を選んでください。

インストールタイプでは「最小」を選びます。デフォルトではこれが選ばれていないので、スペースキーを押して「最小」に設定しておきましょう。

次に、ネットワーク接続、プロキシ、ミラーアドレス、ストレージ設定はそのままで問題ありませんので、そのまま次に進んでください。

ユーザー情報の入力は非常に重要です。必ず正確に入力し、忘れないようにしてください。この情報は後でシステムにログインする際に必要となります。また、OpenSSHや他の人気のあるソフトウェアについては、デフォルトの設定のまま進めて大丈夫です。インストールには少し時間がかかることがありますが、焦らずに待ちましょう。

ここで、初心者の方がつまずきやすい点があります。それは、VirtualBoxのCUI(コマンドラインインターフェース)環境では、通常のコピー&ペーストができないということです。しかし、これを可能にする方法がありますので、安心してください。

まず、VirtualBoxには「ポートフォワーディング」という便利な機能があります。これにより、ホストマシン(あなたのPC)とゲストマシン(仮想マシン)間で通信を行うことができます。具体的には、ホストマシン上の特定のポートに送られたデータを、ゲストマシンの特定のポートに自動的に転送することが可能になります。この設定を行うことで、ホストマシンからゲストマシン内のアプリケーション(例えば、Webサーバーなど)に直接アクセスすることができるようになります。

ポートフォワーディングを設定するためには、まずVirtualBoxの「設定」から「ネットワーク」を選びます。そして、「ポートフォワーディングの規則を追加」ボタンをクリックします。ここで、ホストIPにはあなたのWindows PCのIPアドレスを入力してください。これにより、ホストとゲスト間の通信が可能になり、CUI画面でもコピー&ペーストができるようになります。

設定からネットワークと進み、ポートフォワーディングの規則を入力します。
ホストIPにWindowsPCのIPアドレスを入力します。

もしホストPCのIPアドレスが不明な場合は、以下の手順で確認することができます。

  1. コマンドプロンプトを開く
    まず、Windowsのスタートメニューを開き、検索バーに「cmd」と入力して、表示された「コマンドプロンプト」をクリックします。
  2. IPアドレスを確認するコマンドを入力
    コマンドプロンプトが開いたら、以下のコマンドを入力してエンターキーを押します。
    ipconfig
  3. IPアドレスの確認
    このコマンドを実行すると、現在のシステムのIPアドレス、サブネットマスク、デフォルトゲートウェイなどの情報が表示されます。通常、表示された情報の中から「IPv4アドレス」という項目を探し、その隣に表示されている数字がホストPCのIPアドレスです。このIPアドレスを、先ほどのポートフォワーディング設定の「ホストIP」欄に入力してください。

ipconfigはいくつかのオプションを持っており、それぞれが異なる情報を表示するために使用されます。たとえば、以下にいくつかの一般的なオプションを挙げてみましょう:

  • ipconfig /all: ネットワークインターフェースの全ての詳細な情報を表示します。これにはMACアドレス(物理アドレス)、DHCPとDNSサーバーの情報などが含まれます。
  • ipconfig /release: DHCPを使用してアドレスを取得するネットワークインターフェースの現在のIPアドレスを解放します。
  • ipconfig /renew: DHCPを使用してアドレスを取得するネットワークインターフェースのIPアドレスを新たに取得または更新します。

次に、ゲストIPには仮想マシン(Ubuntu)のIPアドレスを入力します。もし仮想マシンのIPアドレスが不明な場合は、以下のコマンドで確認できます。

  1. ターミナルを開く
    Ubuntu上でターミナルを開きます。これは「Ctrl + Alt + T」キーを押すことで簡単に開くことができます。
  2. IPアドレスを確認するコマンドを入力
    ターミナルが開いたら、次のコマンドを入力してエンターキーを押します。
    ip a
    このコマンドは、システム上のすべてのネットワークインターフェースに関する情報を表示します。具体的には、各インターフェースのIPアドレス(IPv4とIPv6の両方)、ブロードキャストアドレス、MACアドレスなどが表示されます。通常、ensethで始まる項目の下にある「inet」の後に続く数字列が、仮想マシンのIPアドレスです。もし、初心者の方でこの情報がわかりにくい場合、ip aコマンドはネットワークの状態を確認するのにとても便利ですが、結果がたくさん表示されることがあるので、注意して見てください。目的の情報を見つける際に混乱しないように、ゆっくり確認しましょう。
  3. ホストポートとゲストポートの設定
    次に、ポートフォワーディング設定のホストポートには、Windows PCで使用していないポート番号を入力します。これは、ホストマシンの特定のポート番号を使用して、ゲストマシン(Ubuntu)にアクセスするためです。例えば、2222番など、他のアプリケーションで使われていないポート番号を選びましょう。ゲストポートには、Linuxで実際に使用されているSSH接続のための標準ポート番号である「22」を入力します。これにより、ホストマシンからゲストマシンにSSH接続が可能になります。なお、前にUbuntuをインストールした際に、OpenSSH Serverのインストールを選ばなかった場合でも、後から接続するためにこの設定を行うことで、問題なく接続できるようになります。

ポートフォワーディングの設定を行う際、「Windows セキュリティの重要な警告」が表示されることがあります。この場合は、「許可」を選択してください。これにより、ポートフォワーディングを通じて仮想マシンとの通信がスムーズに行われるようになります。

次に、ポート転送の設定が完了したので、仮想マシンにSSH接続を行います。ここでは、TeraTermというSSHクライアントを使用します。TeraTermは、Windowsで動作する使いやすいSSHクライアントで、初心者にもおすすめです。

  1. TeraTermを起動する
    まず、TeraTermを起動します。起動すると、「ホスト」の欄に接続先を入力する画面が表示されます。
  2. 接続情報を入力する
    「ホスト」には、先ほど確認したWindows PCのIPアドレスを入力します。また、「TCPポート」には、先にポートフォワーディングで設定した「2222」を入力します。これにより、ホストマシンの特定のポートを通じて、仮想マシンに接続できるようになります。
  3. ユーザー名とパスフレーズを入力する
    接続が成功すると、ユーザー名とパスフレーズの入力を求められます。ここでは、Ubuntuインストール時に作成したユーザー名とパスフレーズを入力してください。正しく入力すると、仮想マシンのターミナルに接続され、リモートから操作できるようになります。

この手順を終えると、Ubuntuサーバーにリモートアクセスできる環境が整います。これで、次のステップに進む準備ができました。

これで、コピー&ペーストが可能になったので、DockerおよびDocker Composeをインストールしていきます。まず、公式のDockerドキュメントを参考にしながら進めましょう。

公式ドキュメントはこちらです: Docker公式インストールガイド

  1. 必要なパッケージをインストール

まず、aptがHTTPS経由でリポジトリにアクセスできるようにするためのパッケージをインストールします。以下のコマンドをターミナルに入力して実行します。

sudo apt-get install \
    apt-transport-https \
    ca-certificates \
    curl \
    software-properties-common

ここで、sudoを使うことで、一時的に管理者権限でコマンドを実行します。これにより、rootユーザーに切り替える必要がなく、安全に操作できます。

  1. Dockerの公式GPG鍵を追加

次に、Dockerの公式GPG鍵を追加します。この鍵は、パッケージの信頼性を確認するために必要です。以下のコマンドを実行します。

curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
  1. 安定版リポジトリの追加

次に、Dockerの安定版リポジトリをシステムに追加します。これにより、安定版のDockerをインストールできるようになります。

sudo add-apt-repository \
   "deb [arch=amd64] https://download.docker.com/linux/ubuntu \
   $(lsb_release -cs) \
   stable"
  1. パッケージリストの更新とDockerのインストール

最後に、パッケージリストを更新し、Dockerをインストールします。

sudo apt-get update
sudo apt-get install docker-ce

これでDockerのインストールは完了です。インストールが完了したら、docker --versionコマンドを実行して、インストールされたDockerのバージョンを確認してみましょう。

これでDockerのインストールは完了です。インストールが完了したら、docker --versionコマンドを実行して、インストールされたDockerのバージョンを確認してみましょう。

続いて、Docker Composeをインストールします。こちらも公式サイトとそこに記載されているリンク(GitHub)を参考に進めましょう。

最新バージョンの確認とインストール

まず、GitHubのリリースページで最新のバージョンを確認します。この記事を書いている時点での最新バージョンはv2.18.1です。以下のコマンドをターミナルに入力して、Docker Composeをインストールします。curlコマンドでバイナリファイルをダウンロードし、適切なディレクトリに配置します。

sudo curl -L https://github.com/docker/compose/releases/download/v2.18.1/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose

ここで-o /usr/local/bin/docker-composeとすることで、通常のユーザー権限でファイルを指定のディレクトリに保存しています。

バイナリに対する実行権限の追加

次に、ダウンロードしたDocker Composeバイナリに対して実行権限を付与します。これにより、Docker Composeが正常に動作するようになります。

sudo chmod +x /usr/local/bin/docker-compose

Docker Composeのバージョン確認

最後に、正しくインストールされたかどうかを確認するために、以下のコマンドでDocker Composeのバージョンを表示させます。

docker-compose --version

これで、Stable Diffusion Web UIのインストールに必要なDockerとDocker Composeの準備が整いました。次に進む前に、インストールが正しく行われたことを確認してください。

Stable Diffusion Web UIのインストール準備

この後は、Stable Diffusion Web UIのGitHubページに記載されている手順に従ってインストール作業を進めます。ただし、注意点として、現時点でAMD GPUはサポート対象外となっていますので、NVIDIA GPUを使用している場合に進めてください。

GitHub - AbdBarho/stable-diffusion-webui-docker: Easy Docker setup for Stable Diffusion with user-friendly UI
Easy Docker setup for Stable Diffusion with user-friendly UI - AbdBarho/stable-diffusion-webui-docker

リポジトリのクローン作成と移動

まず、Stable Diffusion Web UIのリポジトリをクローン(コピー)して、自分の環境にダウンロードします。その後、自動的に作成されるディレクトリに移動します。

git clone https://github.com/AbdBarho/stable-diffusion-webui-docker.git
cd stable-diffusion-webui-docker

このコマンドを実行することで、GitHubからプロジェクトのソースコードをダウンロードし、それを「stable-diffusion-webui-docker」というディレクトリに保存します。cdコマンドでそのディレクトリに移動して、次のステップに進む準備を整えます。

必要なモデルファイルのダウンロードと検証

次に、リポジトリ内で特定のコマンドを実行することで、Stable Diffusionが正常に動作するために必要なモデルファイルをダウンロードし、その整合性を自動的に検証します。このデータのダウンロードは最初の1回のみ必要で、合計で約12GBのデータを取得します。

sudo docker compose --profile download up --build

ここでは、通常のユーザー権限でsudoコマンドを使用し、必要な権限を一時的に取得して実行しています。--profile downloadオプションは、モデルファイルをダウンロードするための特定のプロファイルを使用することを指示しており、up --buildオプションでダウンロードとビルドが行われます。

UIの実行設定

次に、実際にStable Diffusion Web UIを起動します。今回はVirtualBox上で動作させるため、CPU向けに最適化されたUI(auto-cpu)を選択します。

sudo docker compose --profile auto-cpu up --build

このコマンドで、CPUを利用してStable Diffusion Web UIが起動されます。VirtualBox環境ではGPUパススルーが利用できないため、CPU向けの設定で動作させることで、仮想環境内でも動作するようにしています。

しかし、エラーが発生しました。

=> ERROR [auto-cpu internal] load build definition from Dockerfile 0.0s
=> ERROR [auto-cpu internal] load .dockerignore 0.0s
[auto-cpu internal] load build definition from Dockerfile:
[auto-cpu internal] load .dockerignore:
failed to solve: failed to read dockerfile: failed to prepare as qtnl1bob5ac4n92psrozckpy4: write /var/lib/docker/overlay2/qtnl1bob5ac4n92psrozckpy4/link: no space left on device

エラーの発生とディスク容量の確認

Stable Diffusion Web UIを実行しようとしたところ、エラーが発生しました。このエラーを調査した結果、ディスク容量に問題があることが判明しました。まず、現在のファイルシステムのディスク使用状況を確認してみましょう。

df -h

root@ubuntu:~/stable-diffusion-webui-docker# df -h
Filesystem Size Used Avail Use% Mounted on
tmpfs 796M 788K 795M 1% /run
/dev/mapper/ubuntu–vg-ubuntu–lv 12G 12G 0 100% /
tmpfs 3.9G 0 3.9G 0% /dev/shm
tmpfs 5.0M 0 5.0M 0% /run/lock
/dev/sda2 2.0G 130M 1.7G 8% /boot
tmpfs 796M 4.0K 796M 1% /run/user/1000

上記の出力を見ると、/dev/mapper/ubuntu--vg-ubuntu--lvがディスク容量の100%を使用していることがわかります。これは、ディスクの空き容量が不足しているため、必要なファイルやデータを保存できず、エラーが発生した原因です。

ディスク容量の問題の原因と回避方法

VirtualBoxの設定ではディスク容量を25GBに設定したはずですが、実際には12GBしか割り当てられていないことに気づかれたかと思います。これは、Ubuntuをインストールする際に、LVM(論理ボリュームマネージャー)を選択したことが原因です。LVMを使用すると、ディスクを柔軟に管理できますが、初期設定の際に全容量が正しく割り当てられないことがあります。

この問題を回避するためには、Ubuntuのインストール時にLVMの選択を避けるのが最も簡単です。LVMを使用せずにディスク全体を単一の大きなパーティションとして設定することで、全容量が割り当てられ、ディスクスペースの不足による問題を防ぐことができます。

もし、既にLVMを選択してしまった場合は、以下のいくつかの方法で対処できます。

LVMのサイズを手動で拡張する
LVMを使用したままディスク容量を拡張することも可能ですが、この方法は少し複雑で、LVMの知識が必要です。初心者には少し難しい作業になるかもしれません。インストーラは、一つの大きなパーティションを作成してディスク全体を使用することができます。
Set up this disk as an LVM group

新たにUbuntuを再インストールする
その際、LVMを選択せずにディスク全体を使用するオプションを選びます。これにより、仮想ディスク全体が1つのパーティションとして扱われ、25GBの容量がフルに利用可能になります。

インストーラは、一つの大きなパーティションを作成してディスク全体を使用することができます。
Set up this disk as an LVM groupのチェックを外すべきでした。

未割り当ての物理ボリュームの確認

まず、使用可能な未割り当ての物理ボリュームがあるかどうかを確認します。これは、現在のディスクスペースの状況を把握し、追加のスペースを割り当てるために必要な情報を得るためです。

sudo pvs

このコマンドを実行すると、以下のような結果が表示されることがあります。

root@ubuntu:~/stable-diffusion-webui-docker# pvs
PV VG Fmt Attr PSize PFree
/dev/sda3 ubuntu-vg lvm2 a– <23.00g 11.50g

ここで、/dev/sda3という物理ボリュームがubuntu-vgというボリュームグループに存在し、その総容量が約23GB、そのうち約11.5GBが未割り当てであることがわかります。これで、追加のスペースを割り当てることが可能です。

使用していないDockerオブジェクトの削除

次に、ディスク容量を確保するために、使用していないDockerの全オブジェクトを削除します。これで、不要なデータをクリーンアップし、空き容量を増やすことができます。

sudo docker system prune

このコマンドは、使用されていないコンテナ、ネットワーク、ボリューム、イメージをすべて削除し、ディスクスペースを開放します。実行前に削除する内容を確認し、必要に応じてバックアップを取っておくと安心です。

未割り当てスペースの論理ボリュームへの追加

次に、未割り当てのスペースを論理ボリュームに追加します。これにより、ディスク容量が拡張され、必要なファイルを保存できるようになります。

sudo lvextend -l +100%FREE /dev/mapper/ubuntu--vg-ubuntu--lv

このコマンドで、未割り当てのすべてのスペースを/dev/mapper/ubuntu--vg-ubuntu--lvに追加します。この作業で、ディスクの最大容量が使用可能になります。

ファイルシステムのリサイズ

最後に、ファイルシステムを新しく割り当てたスペースに合わせてリサイズします。これでようやく、システムが追加されたディスク容量を認識し、利用できるようになります。

sudo resize2fs /dev/mapper/ubuntu--vg-ubuntu--lv

このコマンドを実行することで、ファイルシステムが新しいディスクサイズに拡張され、エラーが発生することなく使用できるようになります。

Linuxでのディスクとパーティションの扱い

Linuxでは、WindowsのDドライブに相当するものは直接存在しません。しかし、Linuxでは追加のディスクやパーティションを任意の位置にマウントすることで、同様の目的を達成することができます。例えば、新しいディスクを/mnt/dataなどのディレクトリにマウントすることで、Dドライブのようにデータ保存用の領域として使用できます。

未割り当ての物理ボリュームの再確認

まず、前の手順で未割り当ての物理ボリュームがすべて使用されたかどうかを確認します。再度、以下のコマンドを実行して、未割り当てのスペースが残っていないかチェックしましょう。

sudo pvs

実行すると、次のような結果が表示されます。

PV VG Fmt Attr PSize PFree
/dev/sda3 ubuntu-vg lvm2 a– <23.00g 0

ここで、PFree0となっていることを確認できれば、未割り当てのスペースがすべて論理ボリュームに追加されたことを意味します。これでディスク容量の問題は解消され、Stable Diffusion Web UIのインストールがうまくいくはずです。

ポート転送の設定とブラウザでの確認

次に、ブラウザでStable Diffusion Web UIにアクセスするために、ポート転送の設定を行います。今回使用するポート番号は7860ですが、これはVirtualBox内での設定となりますので、外部からのアクセスを可能にするために、ホストとゲスト間でポート転送を設定します。

VirtualBoxの設定を開く

まず、VirtualBoxの管理画面で、使用している仮想マシンの設定を開きます。

ネットワーク設定のポートフォワーディング

「ネットワーク」セクションに移動し、ポートフォワーディングのルールを追加します。以下の設定を行ってください。

  • ホストポート: 5555
  • ゲストポート: 7860
  • ゲストIP: 192.168.x.x(仮想マシンのIPアドレス)

この場合、ホストマシンの5555番ポートへのアクセスが、仮想マシンの7860番ポートへ転送されます。

ブラウザでのアクセス

ポートフォワーディングが設定されたら、ホストマシンのブラウザで以下のURLを入力して、Stable Diffusion Web UIにアクセスします。

http://192.168.x.x:5555/

ここで、192.168.x.xは、仮想マシンのIPアドレスに置き換えてください。ブラウザでページが表示されれば、インストールが成功し、Stable Diffusion Web UIが正常に動作していることを確認できます。

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