至福の時間

 

 

 

 

 

同じネタで投稿する

 

他の投稿ネタを確認する

 

 


HP Pavilion Gaming Laptop 2機種、以下のnVidia GPU搭載の2台にLinux mint 22 を入れてstable diffusionをインストールした。

・GeForce GTX 1050 Ti (VRAM 4GB)

・GeForce GTX 1660 Ti (VRAM 6GB)

 

セットアップにかなり手こずり、試行錯誤でやり散らかして作業環境が不安定となり、20回近くOSのクリーンインストールからやり直した。

さらに、この記事編集にあたり、エラーを再現するため再度クリーンインストールからやり直した。

 

先人の記事を色々と参考にインストール完了したが、1つの解説記事だけで解決せず複数の方のやり方を組み合わせる必要があったため、 まとめ記事を書くことにした。

 

本題に入る前に、記事タイトルの意図に関して補足を少々。

「至福の時間」などというキーワードを付けたが、不具合を抱えて未解決の状態はストレスの連続だ。

古いバージョンのOSで試せばすんなりいくだろうと予想はしたが、それは最終手段に残しておき最新OSで環境を整えることに拘った。

完全な自力解決は厳しいが、先人が道を切り開いてくれており、今の時代は適切なキーワード検索で参考記事を探すことができる。
答えを見ながらやったのなら「お前が解決した訳ではない」と厳しい見方をする人もいるかもしれないが、そこへ辿り着くまでに何度も間違った方向へ進んでは行き詰まり、試行錯誤を繰り返しており、最初から最後まで解説を見ながら楽をした訳ではない。
AIの持て囃される現代は、自分で考えずに機械の答えのコピーを自分の手柄にしてふんぞり返る人も目立つが、そんなのと同列にして欲しくない。
昔、日本のベートーベンと持て囃された佐村河内という有名人がいたが、そこまで落ちぶれたくない。

ヒントになる記事を見つけては試行錯誤を何度も繰り返し、成果を得る、この到達した先に至福の時間(=達成感)が得られる。

 

本題に戻ると、大きな行き詰まりの生じたポイントは以下の3点だ。

(1)nVidia GPUドライバーのインストールが失敗する

(2)依存関係のエラーが発生する

(3)Pythonのバージョンが要求されるバージョンと異なり正常に処理できない

 

以下に順番に対策を説明していく。

 

 

(1) nVidia GPUドライバーのインストールが失敗する

⇒ nVidia GPUドライバーを組み込む際、BiosでSecure bootを無効(Disabled)にしておく

 

<BiosでSecure bootをDisabledに変更>

 

Secure boot 有効(Enabled)状態でGPUドライバーをインストールすると、"nvidia-smi" コマンドで以下のようなエラー表示となる。

 

---

NVIDIA-SMI has failed because it couldn't communicate with the NVIDIA driver. Make sure that the latest NVIDIA driver is installed and running.

---

 

 

<nVidiaのドライバーが組み込みエラーとなる>

 

標準のSecure Boot有効状態でインストールする解説記事も存在するが、手順が煩雑なので簡潔に解決したければ Secure boot無効が無難だ。

Secure boot 無効だけなら既に入っているWindows等は起動可能だ。

ただし、1つ上の項目の"Legacy Support" を有効にすると HDD/SSDにインストール済のWindowsが認識されなくなるので注意。

また、本記事はHPのPCのBios前提で書いているので、メーカーが変われば当然状況も変わる筈だ。

 

尚、USB フラッシュドライブからの起動を選択したくても、Windows起動が固定になっていて動かせない場合もある。

<WindowsのBoot Manager起動が優先なのを変更できない>

 

その場合は一旦Legacy有効確定してBiosを抜けてから、Legacyを再度無効にすればUSB起動を選べるようになる。

 

Bios変更後、警告画面で4桁数字の入力を求められるので指示に従う。

 

<警告画面に表示された4桁の数字を入れてEnterする>

 

nVidiaドライバーのインストールは、Linux mint起動直後のGUIで表示される「ドライバーマネージャー」の使用が簡単だ。

 

<起動直後に表示される「ようこそ」メニューからドライバーマネージャーを起動する>

 

<「推奨」の付いた "nvidia-driver-550" を選択して入れる>

 

解説記事の中には、コマンド入力で nouveau 無効化を行い、コマンドでnVidiaドライバーを入れる物もあるが、標準で楽な方法が提供されているので素直に利用すればよい。

 

再起動後、"nvidia-smi"コマンドで以下のような結果が表示されればOKだ。

 

<nVidiaドライバーの正常動作を確認>

 

 

(2)依存関係のエラーが発生する

⇒ レポジトリ登録で対処

 

stable diffusionの前準備として cudaをインストールしようとすると以下エラーが発生する。

 

<壊れた変更禁止パッケージのエラー発生>

 

エラー内容をそのままテキストで貼り付けると、以下の通りとなる。

---

インストールすることができないパッケージがありました。おそらく、あり得
ない状況を要求したか、(不安定版ディストリビューションを使用しているの
であれば) 必要なパッケージがまだ作成されていなかったり Incoming から移
動されていないことが考えられます。
以下の情報がこの問題を解決するために役立つかもしれません:

以下のパッケージには満たせない依存関係があります:
 nsight-systems-2022.1.3 : 依存: libtinfo5 しかし、インストールすることができま せん
E: 問題を解決することができません。壊れた変更禁止パッケージがあります。

---

 

 

この問題は以下サイトの手順で解決した。

 

 

 

 

具体的解決方法は短いので、そのまま引用させていただくと、以下2つのレポジトリファイル作成(以下2コマンド実行)で解決する。

 

 

---

$ sudo tee /etc/apt/sources.list.d/jammy.list << EOF
deb http://archive.ubuntu.com/ubuntu/ jammy universe
EOF
---
$ sudo tee /etc/apt/preferences.d/pin-jammy <<EOF
Package: *
Pin: release n=jammy
Pin-Priority: -10

Package: libtinfo5
Pin: release n=jammy
Pin-Priority: 990
EOF
---

 

viエディタで内容を作ってもよいが、これも素直にteeコマンドをそのまま貼り付ければEOFの行の直前までの内容でファイルが作られる。

 

 

(3)Pythonのバージョンが要求されるバージョンと異なり正常に処理できない

⇒ pyenvで指定バージョンのPython 3.10.6 を実行可能とする

 

webui.sh をいきなり実行しようとすると、Pythonのバージョン違いのエラーが発生するため、古いバージョンのPythonで処理しないといけない。

 

<古いバージョンのpython3.10.6を要求される>

 

該当メッセージをテキストで引用すると以下の通りだ。

---

INCOMPATIBLE PYTHON VERSION

This program is tested with 3.10.6 Python, but you have 3.12.3.
If you encounter an error with "RuntimeError: Couldn't install torch." message,
or any other error regarding unsuccessful package (library) installation,
please downgrade (or upgrade) to the latest version of 3.10 Python
and delete current Python and "venv" folder in WebUI's directory.

You can download 3.10 Python from here: https://www.python.org/downloads/release/python-3106/
---

Stable diffusionのインストール手順と古いバージョンのpythonをユーザ環境に入れる具体的方法が解説された記事がこちら。

 

 

 

pyenvを使い旧バージョンのPython を使用可能とするのだが、具体的手順は長いので上の元記事を参照頂きたい。

先述の(2)で行ったレポジトリ作成以降は、上記参考記事の内容をそのまま実行すれば素直に進められる。

 

上の記事の些細なことを補足すると、

 

"source ~/.bashrc" のところでtypoがあり、 "."の位置が間違っているが、Linuxを使う人なら説明しなくても気づくだろう。

 

初回の "./webui.sh" の実行途中でエラー停止することがあるが、"./webui.sh" を再実行させれば先へ進められる。

 

 

〇 webui.sh の起動オプション

 

"stable-diffusion-webui/webui-user.sh"  は webui.sh から source コマンドで取り込まれるようになっている。

ユーザによる設定変更は webui-user.sh を編集することになる。

 

素の状態で webui.sh を実行してもメモリ不足等のエラー発生、動作が遅い等の問題があるため、webui-user.sh を編集して以下オプションを挿入した。

export COMMANDLINE_ARGS="--xformers --listen --no-half-vae --precision full --no-half --lowvram"

 

他にも参考記事記載の別の環境変数のオプションも追加してみたが、結果は大差なかったかも。

実際に入れるオプションは個々人の環境に依存するので必要に応じて変更してもらいたい。

 

 

〇 Windowsのブラウザから開く場合

起動オプションに "--listen" を追加してやると、別PCのブラウザからIPアドレスとポート指定で開けるようになる。

逆に、Linuxのブラウザを自動起動したい場合は"--listen"を外す。

 

別PCから開くためのファイアウォールのポート開放は、以下コマンドで可能だ。

 

$ sudo ufw allow 7860/tcp

 

Windowsのブラウザで Linux mintのアドレス("hostname -I"で確認可能)とポート7860(webui.sh 実行メッセージに必要なポート番号が表示される)を指定、例えば

192.168.1.xxx:7860

などと指定してやるとWindowsのブラウザ(Edge、Firefox、Chrome等)でStable diffusionの画面を開けるようになる。

 

<WindowsのブラウザでStable diffusion実施のIPアドレスとポートを指定して開ける>

 

 

尚、自分はLinux mintのPCを別室に置いて、Teratermでssh接続してWindows側からリモートで主なインストール作業を行った。

Windowsの方が参考記事の閲覧に便利なためと、Linuxで直接作業すると無駄に待たされる時間が多いためだ。

Teratermからssh接続させるためにはLinux側にopenssh-serverを入れ、ファイアウォールポート20~22の解放が必要となる。

具体的には以下コマンド実行してポート開放した。

$  sudo ufw allow 20:22/tcp

 

 

参考として今回試した2機種の生成結果を以下に示す。

<"universal studio"、i7 8750H、GTX 1050 Ti (VRAM 4GB)で41.5秒>

 

 

 

 

<"disney land"、i7 9750H、GeForce GTX 1660 Ti(VRAM 6GB)で27.6秒>

 

CPUとGPU、搭載VRAMが後の方が上位のため、生成時間差が大きい。

尚、上記結果生成には本記事の最後にリンクを付けた記事に書いた「モデル」を適用してある。

 

 

 

 

関連記事として、GPUを使わずCPUのみで生成させる試みをした記事はこちら。

 

 

 

 

AMD GPU Radeon RX-5600XTでの生成とモデルの導入を試した記事はこちら。

 

 

 

 

[2025.2.1追記]

 

最新の Linux mint 22.1 で stable diffusionインストールを試したところ、(2)のレポジトリ登録作業は不要だった。

また、ComfyUI、LCM LoRAをそれぞれ別々に試したところ画像生成時間の短縮を確認できた。

ComfyUIにLCM LoRAを組み合わせたところ画像生成に40秒以上掛かっていたHP ノートPC

Pavilion 4K gaming i7 8750H、GTX 1050 Ti (VRAM 4GB)

で2秒程度に短縮可能なのを確認した。

 

他人の記事のやり方をそのまま真似て書くのは気が引けるので、導入手順は該当キーワードで探していただきたい。

 

2秒で生成できた証拠画像を載せようと思ったのだが、設定をいじりすぎて、荒い結果のものしか出せなくなってしまった。

代わりに8秒で生成した結果を付ける。

 

<キーワード: "zelda", "isekai ojisan" 等の生成結果例>

 

 

[2025.2.10追記]

 

ComfyUIはとっつきにくい印象だったが、Stable Diffusion標準よりもかなり便利だと思った。

理由として以下のことが挙げられる。

・生成時間が数分の一に短縮

・マウスのスクロールで表示拡大が容易

・同じキーワードで複数回の連続生成が可能

・日本語キーワードを受け付ける

 

ただし、モデルによって日本語キーワードで期待する内容に近づく場合と無関係の生成される場合があった。

「原田泰治」「山下清」等指定しても期待通りにならなかった。

「異世界おじさん」「いせおじ」等のキーワードはモデルによってはイメージに近い物が生成された場合もあった。

 

 

Windowsのブラウザで表示させるためには以下を行った

 

(1) Linux側で初回のみファイアウォールのポート開放

 

$ sudo ufw allow 8188/tcp

 

(2) Linux側で以下実施して ComfyUI実行

$ python3  ~/ComfyUI/main.py --listen

(3) Windows側のブラウザで 192.168.xxx.xxx:8188 を開く

 

 

 

<キーワード「異世界おじさん」で実行するとなぜかメイベル似のキャラばかり生成される>