Linux Mint 21.3 Cinnamon ”Edge” editionでstable diffusion Web UIインストール&セットアップ!・・トラブル収拾も含む・・構成:Core i5-13500+Nvidia RTX 4060ti 16G


さて、今回は、Linux Mint 21.3 Cinnamon "Edge" edition上にstable diffusion Web UIをインストール&設定していきます。Linux Mint 21.3 Cinnamon editionはUbuntu 22.04 LTSベースですが、Edge editionは、最新のハードウェアチップセット等最新のデバイスをサポートする目的でリリースされており、カーネルは6.5シリーズを採用しています。カーネル5.15シリーズを搭載するノーマルeditionのMint 21.3と比較し、提供されるドライバの範囲が狭く、安定性に欠ける旨、開発チームから案内が出ており、最新のハードウェアを保有していない場合、これを使う事は推奨されていません。

筆者の自作PCのCPUはCore i5-13500であり、Linuxカーネル6.1以上の使用が推奨されています。また、RTX 4060Ti 16GBはかなり新しいnvidiaのグラフィックスカードのため、カーネル5.15搭載のノーマルなLinux Mint21.3シリーズを使う事はやめ、今回はLinux Mint 21.3 Cinnamon Edge editionを使用する事にした次第です。

ざっとセットアップ後の感想を言えば、同系列のDebian 12.5のstable diffusion Web UIセットアップの内容と比較すると、全く一緒では無く、問題発生時の収拾方法も異なります。
今回はこのあたりを中心に投稿を進めていきます。

また、前回投稿した内容もそうでしたが、Mint側でWeb UIインストール環境・条件に関わるインストールが必要になった場合、なるべくOSに準備され使用可能となっているrepositoryからのみのインストール方法を採用します(使用するWebブラウザは、Google Chromeとしており、これだけが、このインストールポリシーとは異なりますがPPA設定されますのでアップデートに関しては問題ありません)。確かに最新のCUDAや、nvidiaドライバーを外部から入手し設定を続行する方が性能等の面でメリットも多いかもしれません(反面安定性に欠ける事もあります)。ただし、サポート範囲から外れてしまうため、通常この方法を取った場合は、自分で全て対処を行う必要があり、対象のLinuxを長く使っていく事を考えれば、さすがにこれは面倒かも・・というのが筆者の考え方です。自分で全て対処をするといった選択肢はどちらかといえば学習も含め、深くstable diffusion Web UIを使っていく場合必要となるかもしれませんが、今回の投稿は、stable diffusion Web UIを深くではなく、まずはざっとLinuxで使ってみたい・・方向けの記述内容となっています。ただしインストール・設定時に発生する主要な問題については解消します。

尚、今回は、Mint自体のセットアップ方法に関する投稿ではありませんので、Mintのインストール&セットアップに関しては当ブログの以下リンクを参考にして頂ければと思います。

1.stable diffusionの動作環境

1.1 ハードウェア(自作PC)

CPU:Core i5-13500
Memory: 32GB
Storage : 500GB SSD(1TB側はWindows 11 Proが動作)
Graphics:Nvidia GFORCE RTX 4060 Ti 16GB

1.2 ソフトウェア

① OS:Linux Mint 21.3 Cinnamon "Edge" edition

・カーネル:6.5シリーズ
・Cinnamon   :  バージョン6.0.4
・pre-installed Python : バージョン3.10.12
・Dispaly Server:X11

② stable diffusionで使用するwebブラウザ:Google Chrome

以下Googleサイトより、ChromeのDebパッケージをダウンロード・インストールし、デフォルト起動webブラウザにして、stable diffusion Web UIで使用しています。

https://www.google.com/intl/ja_jp/chrome/

2. Nvidiaドライバー&CUDAインストール

①Nouveauディスプレイドライバーを無効化

まず、インストール直後に使用されるNouveauディスプレイドライバーを無効化します。これを事前に行わないとnvidiaドライバーのインストールが失敗するためです。

無効化には、ターミナルにて以下を投入します。

sudo sh -c "echo 'blacklist nouveau' > /etc/modprobe.d/blacklist-nouveau.conf"
sudo sh -c "echo 'options nouveau modeset=0' >> /etc/modprobe.d/blacklist-nouveau.conf"
sudo update-initramfs -u


上記処理終了後、再起動します。再起動後以下コマンドをターミナルに投入し、Nouveauディスプレイドライバーが止まっている事を確認します。
lsmod | grep nouveau
何も表示が帰ってこなければ止まっています。

②nvidiaドライバー&CUDAツールキットのインストール

まず、RTX 4060Ti 16GBに対応したドライバーを特定するため、以下をターミナルに投入します。

ubuntu-drivers devices

この後、サポートドライバー一覧が表示されますが、この中で、今回はnvidia-driver-545をインストールしています。推奨されているnvidia-driver-535は当方のグラフィックスカードでは、インストールに失敗するためです(失敗した場合、nvidia-smiが動作しませんので、この場合は、インストールを実行したnvidia-driverを完全に削除した後、違うドライバーをインストールという流れとなります)。

→sudo apt install nvidia-driver-545


再起動後、nvidia-smiを実行します。


この表示が出ればnvidiaドライバーのインストールが成功しています。

次にCUDAツールキットをインストールします。

→sudo apt install nvidia-cuda-toolkit


以上でstable diffusion Web UIで使用するグラフィックスカード周りの設定は完了です。

3.stable diffusion Web UIインストール&設定

3.1 stable diffusion Web UIインストール事前準備

さて次は、stable diffusion Web UIのインストールという事になるんですが、まずはこのために必要となるパッケージをインストールしてしまいます。
これは以下をターミナルにて投入します。

sudo apt install python3-venv python3-dev git wget google-perftools

次にインストールしたpython3-venvを使って、stable diffusion Web UIで使用するpython3の仮想環境の設定を行ってしまいます。ただし、前回の投稿でも触れましたが、stable diffusion Web UIのインストール先にstable diffusion Web UIで使用するpython3仮想環境構成がありますのでそちらを使っても構いません。
今回筆者は、sdという名前でホームディレクトリ直下にpyhon3仮想環境を作ります。ターミナルにて以下コマンドを投入します。

→python3-venv -m venv sd

続けて仮想環境のactivate、deactivateを行います。

以上で、stable diffusion Web UIインストールの準備が整います。

3.2 stable diffusion Web UIインストール

これは簡単です。wgetを使って、webui.shをダウンロードし、これを実行するだけ。前回投稿記事と同様。。ターミナルにて以下コマンドを投入(ホームディレクトリで)

wget -q https://raw.githubusercontent.com/AUTOMATIC1111/stable-diffusion-webui/master/webui.sh

ホームディレクトリ直下にwebui.shができますので、これに実行権を与えた後、ターミナルにて以下を投入

→./webui.sh

前回紹介した通り、このシェルを動作させる事により、stable diffusion Web UIのインストールが開始されます。これが完了すると、以下のようにstable diffusion Web UIが起動します。


この後、stable diffusion Web UIを閉じて、stable diffusion Web UIの初期設定に入るわけですが、閉じる際、ターミナル側を開いてCtrl+Cを打つと、シグナルエラーをはきます。従って上記両方のWindow自体を閉じてください。これでも問題は発生しません。

以上で、ホームディレクトリ直下のwebui.shはもう使用しませんので削除します。

3.3 stable diffusion Web UI動作環境設定

上記インストール完了後、ホームディレクトリ直下に"stable-diffusion-webui"ディレクトリが出来ており、ここにstable diffusion Web UIがインストールされています。Web UI環境変数設定後、Web UIは、ここと、先程作成したpython3仮想環境sdを使い動作する事となります。このstable-diffusion-webuiディレクトリ直下に、webui-user.shがあります。ここがWeb UI環境変数設定場所となります。これをText editor等を使い以下のように編集して保存します。
(以下”COMMANDLINE_ARGS”は、WebUI実行時引数となります。筆者は、グラフィクスメモリーが16GBあるため、--xformersぐらいしか指定していません。この引数はユーザ各人の環境により変動しますので、自分に最適なものを指定してください。また、他にも設定項目が多数ありますが、今回は混乱を避けるため、自分の場合必要最低限これだけやればいいか・・程度の環境設定例を示しています)
#!/bin/bash
#########################################################
# Uncomment and change the variables below to your need:#
#########################################################

# Commandline arguments for webui.py,
export COMMANDLINE_ARGS="--xformers"

# python3 venv without trailing slash (defaults to ${install_dir}/${clone_dir}/venv)
venv_dir="$HOME/sd"

# TCMalloc setting up
PATH=$PATH:/usr/sbin
###########################################


以上、処理終了後、ターミナルにてホームディレクトリ直下のstable-diffusion-webuiに入り、./webui.shを投入すると、stable diffusion Web UIが起動します。

3.4 stable diffusion Web UIのエラー対応

①distutilsとsetuptoolsの競合

stable diffusion Web UI起動後、ターミナル側を注意深く見ていくと、xformersがLaunchされた直後以下エラーメッセージが出力されているのがわかります(環境変数設定後、WebUI初回起動時には、数回インストールが発生します。この際に以下エラーが出ていたかさだかではありませんが、少なくとも2回目起動時には出ていました。初回起動時にはエラーが出ていなかった可能性もありますのでこの点注意ください)

/home/superjeter007/sd/lib/python3.10/site-packages/_distutils_hack/__init__.py:11: UserWarning: Distutils was imported before Setuptools, but importing Setuptools also replaces the `distutils` module in `sys.modules`. This may lead to undesirable behaviors or errors. To avoid these issues, avoid using distutils directly, ensure that setuptools is installed in the traditional way (e.g. not an editable install), and/or make sure that setuptools is always imported before distutils.
  warnings.warn(/home/superjeter007/sd/lib/python3.10/site-packages/_distutils_hack/__init__.py:26: UserWarning: Setuptools is replacing distutils.warnings.warn("Setuptools is replacing distutils.")

よくよく見れば、distutilsとsetuptoolsが競合するのでなんとかしてね・・という事がわかります。またこれを防ぐためには今回作ったpython3の仮想環境をうまく使えば競合は起きないという結論にたどり着けます。仮想環境に手動でインストールするのは無論setuptoolsとなります。

ターミナルにて、ホームディレクトリ直下のsdに入り(cd sd)、以下を投入
→source bin/activate

コマンド入力ラインの先頭に仮想環境名(今回はsd)が出ていれば、仮想環境に入った事になりますので、これを確認後、続けて以下を投入(ちなみにpipは、pip、pip3どちらを指定しても構いません)。。

→pip  install --upgrade pip setuptools
これを分けてやる場合は次を順次実行・・
pip install --upgrade pip
pip install setuptools

初回pipを使ったインストールの際には、pip自体をアップグレードした方が無難なため上記処理にはpipのアップグレードも含めています。

以上処理終了後、deactivate  と打って、仮想環境から抜けます。

次にWebUIを起動し、エラーが消えている事を確認して、この問題収拾は終わりです。

②ControlNetインストール後のエラー

やはり、Debian 12.5上のWebUIにControlNetをインストールした後、WebUI起動時に出るエラーと同じ内容のエラーが出ます(エラーはターミナル側に出ます)。


insightfaceがインストールできないので、手動でインストールしてね・・って事で、python3-devは既に事前インストールしているため、python3仮想環境に入って、insightfaceをインストール・・・・・できません^^;。。



Debian 12.5の場合はこれでいけたんですが、いろいろと調査した結果、Linux Mint 21.3 Cinnamon "Edge" editionでは開発環境としてC++が足りないという事がわかりましたので、これをインストールします。

→sudo apt install g++

この後、Debian 12.5の時と同様にinsightfaceをpython3仮想環境にインストールします。
ホームディレクトリ直下のsdディレクトリに入り(cd sd)、以下を投入
source bin/activate

仮想環境に入るとコマンド入力ライン先頭に仮想環境名が入る(今回は(sd)が先頭に入る)→コマンド入力ラインに以下を投入

pip install insightface

上記インストール完了後、deactivate と打って仮想環境から出ます。

最後に、WebUIを起動し、ターミナル側のエラーが消えている事を確認します。

ちなみに、insightfaceをインストールしなかった場合は、ControlNetに関わる顔認証、顔属性推定の機能性に影響を与えるため(多分ここは使えません)注意ください。

以上でWebUIのエラー対応は終了です。上記対応を行っていなくてもWebUIのインタフェースは起動しますので、エラーに気が付かないって事がないよう、ターミナル側に出るメッセージはよく観察する事をお勧めします(huggingfaceのwarningは無視しても影響はありません)。

4. 最後に

今回久々にMintを触って見ましたが、バージョン21の各レビジョンと比較して機能性が、かなり向上しましたね。例えばHypnotixは登録インターネットTVチャネルがかなり増え、これならTVいらないかも・・と思ったほどです。相変わらずWebAPP等も◎。


このため、自作PCには、Ubuntu 24.04ベースの次期Mintをstable diffusion Web UIと共にインストールし、何か大きな問題が発生しない限り、自作PCのLinux自体を別物に変える事は行わない事にしようと思っています。長年Linuxの評価を行ってきましたが、結果、実質的な選択肢は自分にとってMintか、Manjaroしかありません。Manjaroに関しては一度stable diffusion Web UIのセットアップはしてみますが、印刷環境の作りやすさ等はやっぱりUbuntuベースのMintの方に部があります。かゆい所に手が届くといった点がなんとも◎。。

さて、2回連続で今注目されているstable diffusion Web UIのインストール&設定をNVIDIAの最新グラフィックスカードの設定も含み通しでやってみました。Python3の仮想環境周りは今回始めて触っていますので、結果ブログの記述にいまいち統一感が無い所がNGですね(^^;。
申し訳ありません。ただ、この通しっていうのがLinux環境では、Netで調べてもあまり出てこなかったので今回書いてみました。

stable diffusion Web UIについては、触る程度はできるようになりましたが、自分好みに”学習”させるという部分では少しトレーニング用のドキュメントを読み込まないと先に進めません。このあたりは地道に気楽に進めていこうと思います。

と・・言う事で今回の投稿はここまでとします。



コメント