ローカルLLM構築:stable diffusionを統合したい①

前回はOpen WebUIをインストールし直すことにして、Ollamaと統合しました。
モデルなども以前のままだったので、RAGするかどうするか悩み。
前回ひっそりと挫折していた、画像生成をOpen WebUIでやってみようと。
stable diffusionとの統合を目指します。
サクッと・・・の予定でしたが。
少し手間取ったので、Docker上での構築まで。
M1 Macで行っています。
今回もリファレンスを元に進める
Open WebUIのリファレンスは基本的なものが揃っているっぽいので。
当分、ここの内容を元に勉強を進めることにしました。
「特徴」の「画像の作成と編集」の中に「AUTOMATIC1111」という項目があり。
これが、stable diffusionの導入手順です。
コミュニティの皆さんが作成してくれているみたいなので、ありがたく参考に頑張ります。
一通り流れを追うと、stable diffusionを先にインストールしておかないといけないようです。
Macのローカル上で動かしていた時期はあるんですがー。
アップデートしていないし。
Open WebUIをDocker上で構築したこともあり。
Docker上で構築し直すことにしました。
探すと先人はいるもので。
ありがたく参考にさせていただきます。
とりあえずComposeまで行ってみる
今回もDocker上のターミナルから作業をしてみます。
使い分けるのが面倒だなぁと思ってたんですが。
「Open WebUIを使うんだ!」という頭の切り替えになるので、意外と悪くないかも。
インストールの手順通り、まずはgit cloneします。
git clone https://github.com/AbdBarho/stable-diffusion-webui-docker.git
ちなみに、Dockerに構築しようと思った一つの理由に、CLIでの起動方法を忘れがちというのがあります。
あんまり使用回数が多くないので、使いたい時にコマンドを調べるところからはじめてたんですよね。
コピペ作っとけよという話ではあるんですが。
話を戻して。
そうすると、Macだとユーザーのフォルダ内に「stable-diffusion-webui-docker」というフォルダが作成されます。
Open WebUIの時はどこに保存されているか迷子になったので、わかりやすくて良いですね。
「stable-diffusion-webui-docker」フォルダまで移動して、ビルドします。
cd stable-diffusion-webui-docker
docker compose --profile download up --build
docker compose --profile auto-cpu up --build
Appleシリコンだとauto-cpuじゃないとだめらしいので(今はどうかまでは調べてません)、とりあえず参考にしたQiita記事の内容に習います。ありがとうございます。
これでDocker上に「webui-docker」というコンテナが出来上がるので。
画像生成に胸が高鳴ります。
エラー発生
コンテナの起動をしてもすぐ停止してしまいます。
ログを見ると「In: failed to create symbolic link '/root/.cache’: File exists」というエラーが。
「もう同じ名前のリンクがあるから、シンボリックリンクを作ろうとしてもだめだよ!」
と言われています。
モデル・依存パッケージのキャッシュ用に使われるらしいので、Open WebUIかOllamaと競合したっぽいですね。
上書きや削除するのも、現時点では避けたいので。
シンボリックリンクの作成を回避する方向で進めます。
entrypoint.shの編集
git cloneしたstable diffusionのフォルダ内の、services/AUTOMATIC1111にDockerFileがあります。
その中に以下のコードがあり。
ENTRYPOINT ["/docker/entrypoint.sh"]
CMD python -u webui.py --listen --port 7860 ${CLI_ARGS}
コンテナ起動時に、entrypoint.shというファイルを読み込んでいるそうです。
このファイルはDockerFileと同じ階層にあるので、そちらに以下を追記して保存します。
if [ -e /root/.cache ] && [ ! -L /root/.cache ]; then
echo "[fix] /root/.cache exists, removing"
rm -rf /root/.cache
fi
if [ ! -e /root/.cache ]; then
mkdir -p /data/cache
ln -s /data/cache /root/.cache
fi
自分のMacでエディタを開くのが久しぶりだったので、Cursorが開いたときは少しびっくりしました。
普段は会社のWindowsでVScodeです。
再ビルド
内容が変わったので、DockerFileのあるフォルダ内でコンテナを再ビルドします。
docker build --no-cache -t sd-webui-fixed .
ターミナル上で処理が始まるので。
終わったら、もう一度cpu-autoも。
docker compose --profile auto-cpu up --build
これでコンテナ「は」無事起動しました。
初回のモデルDLを忘れてた
「stable diffusionのUIを見るのも久しぶりだなぁ」と思いながら、stable diffusionのローカルURLであるhttp://localhost:7860/にアクセスしてみると。

・・・何!?
エラーが起きているのかと思い、コンテナのログを確認してみると。

何かが進捗していました。
「んん?」と少し考えたら。
モデルのダウンロードですね。
AIツールをDLした時に、初回モデルのDLがあることをすっかり忘れてました。
まぁ・・・ここに至るまでに凡ミスエラーをしまくったこともあり。
正常に動かない=エラーという考えになってしまってました。
終わるまで待って、先程のローカルURLにアクセスしてみると。

無事立ち上がりました。
・・・この後に、前に使ってた時に諸々微調整していたことを思い出し。
少し気が遠くなったのは内緒です。
次はOpen WebUIと
とりあえず試しに画像を1毎生成してみたところ。
まぁ遅いw
前回はCLIからだったので、サクサク目でしたが。
今回はDocker上だからですかね。
画像の生成だけが目的ではないので、とりあえず良いかと。
次は、本題のOpen WebUIとの統合に進みます。
※嬉しくなって生成してみた画像が、なんとも言えないメガテン感で笑いました。
※画像生成モデルも、もう一回探さないとですね。
このブログや記事の内容について、疑問に思っている事はありますか?
もしあれば、どんなことでも構いませんので、コメントを残していただくか、問い合わせフォームよりご連絡ください。

はじめまして、「ぽんぞう@勉強中」です。
小企業に一人情報部員として働いている40代のおじさんです。IT技術での課題解決を仕事にしていますが、それだけでは解決できない問題にも直面。テクノロジーと心の両面から寄り添えるブログでありたいと、日々運営しています。詳しくはプロフィールページへ!












ディスカッション
コメント一覧
まだ、コメントがありません