2024年5月25日土曜日

Stable Diffusion web UI

書店をぶらつきStable Diffusionの入門書を2冊買いました。青っぽいのと黄色っぽいの。
どちらも面白かった。

AUTOMATIC1111/stable-diffusion-webuiの環境構築をUbuntu 22.04.4にしましたが、サイト記載の手順で特にハマることなく完了しました。

サーバに環境構築した場合の変更点としては、外部接続用のインターフェースをlistenするようにすることくらいでしょうか。
デフォルトでは、ローカルホストをlistenしているため外部からアクセスできません。

ひとまず、下記オプションをwebui-user.shのCOMMANDLINE_ARGSに設定しています。
  • --listen
  • --enable-insecure-extension-access
  • --xformers
--enable-insecure-extension-accessは必要なときだけ指定しても良いかもしれません。
また、--xformersオプションを入れるとメモリ消費量削減と速度向上に効果があります。

しばらくは楽しめそうです。

参考URL)

2024年5月4日土曜日

ubuntu 22.04.4 with GPU passthrough on ESXi 8

画像生成AIで遊んでみたくなったので下記パーツでPC作成、ESXi 8を導入。
  • ASRock B550M Pro4
  • AMD Ryzen 7 5700X
  • Palit NED407S019K9-1043D (GeForce RTX 4070 SUPER Dual 12GB)
内蔵NICがRealtek RTL8111Hチップだったので、NICを増設してESXiセットアップは完了。
久々でvmklinux driverが利用できなくなったのを忘れてて時間を無駄にしました。
#vmware買収で無償版が無くなりホームラボ利用が衰退しそうで寂しい限りです。
#VMUG Advantageは大丈夫だろうか。

さて本題、ESXiでGPUパススルー設定後、ubuntu server 22.04.4 LTSのVM作成しましたが、NVIDIAのドライバインストールでハマりました。
結論、nvidia-driver-nnnでうまくいかない場合は、nvidia-driver-nnn-openを試してみよう。

環境
$ uname -r
5.15.0-105-generic
$ grep -i version /etc/os-release 
VERSION_ID="22.04"
VERSION="22.04.4 LTS (Jammy Jellyfish)"
VERSION_CODENAME=jammy
$
オープンソースドライバーNouveauの確認。
$ lsmod |grep nouveau
nouveau              2306048  0
mxm_wmi                16384  1 nouveau
i2c_algo_bit           16384  1 nouveau
drm_ttm_helper         16384  1 nouveau
ttm                    86016  3 vmwgfx,drm_ttm_helper,nouveau
drm_kms_helper        311296  2 vmwgfx,nouveau
video                  65536  1 nouveau
wmi                    32768  2 mxm_wmi,nouveau
drm                   622592  7 vmwgfx,drm_kms_helper,drm_ttm_helper,ttm,nouvea
$
Nouveau無効化設定とkernel initramfs再構築。
$ cat << EOF | sudo tee /etc/modprobe.d/blacklist-nouveau.conf
blacklist nouveau
options nouveau modeset=0
EOF
$
$ sudo update-initramfs -u
リブートしNouveauドライバーがロードされていないことを確認。
$ lsmod |grep nouveau
$
ドライバーの検索。
$ ubuntu-drivers devices
ERROR:root:aplay command not found
== /sys/devices/pci0000:02/0000:02:05.0 ==
modalias : pci:v000010DEd00002783sv00001569sd0000F302bc03sc00i00
vendor   : NVIDIA Corporation
driver   : nvidia-driver-550-open - distro non-free
driver   : nvidia-driver-550 - distro non-free recommended
driver   : nvidia-driver-550-server-open - distro non-free
driver   : nvidia-driver-550-server - distro non-free
driver   : xserver-xorg-video-nouveau - distro free builtin

== /sys/devices/pci0000:00/0000:00:0f.0 ==
modalias : pci:v000015ADd00000405sv000015ADsd00000405bc03sc00i00
vendor   : VMware
model    : SVGA II Adapter
manual_install: True
driver   : open-vm-tools-desktop - distro free

$ 
recommendedなパッケージをインストールする。
$ sudo apt install nvidia-driver-550
リブート後に確認。
$ lsmod |grep -i nvidia
nvidia_uvm           4648960  0
nvidia_drm             94208  0
nvidia_modeset       1343488  1 nvidia_drm
nvidia              54018048  2 nvidia_uvm,nvidia_modeset
drm_kms_helper        311296  2 vmwgfx,nvidia_drm
drm                   622592  7 vmwgfx,drm_kms_helper,nvidia,nvidia_drm,ttm
$
$ nvidia-smi
No devices were found
$
$ lspci |grep -i nvidia
02:05.0 VGA compatible controller: NVIDIA Corporation AD104 [GeForce RTX 4070 SUPER] (rev a1)
02:05.1 Audio device: NVIDIA Corporation Device 22bc (rev a1)
$
上手くいっていない。
dmesgを見ると下記のメッセージがあり、初期化に失敗しています。
[    3.337870] nvidia-modeset: Loading NVIDIA Kernel Mode Setting Driver for UNIX platforms  550.67  Tue Mar 12 23:29:25 UTC 2024
[    3.339965] [drm] [nvidia-drm] [GPU ID 0x00000205] Loading driver
[    3.346790] ACPI Warning: \_SB.PC08.S6F0._DSM: Argument #4 type mismatch - Found [Buffer], ACPI requires [Package] (20210730/nsarguments-61)
[    5.381856] NVRM: GPU 0000:02:05.0: RmInitAdapter failed! (0x26:0x56:1598)
[    5.382198] NVRM: GPU 0000:02:05.0: rm_init_adapter failed, device minor number 0
[    5.385633] [drm:nv_drm_load [nvidia_drm]] *ERROR* [nvidia-drm] [GPU ID 0x00000205] Failed to allocate NvKmsKapiDevice
[    5.386063] [drm:nv_drm_register_drm_device [nvidia_drm]] *ERROR* [nvidia-drm] [GPU ID 0x00000205] Failed to register device
apt list |grep nvidia-driverで以前のバージョンを確認し、545,535を試してみたがどれも同じ結果となりました。
パッケージ削除は下記を実行すれば良い。
$ sudo apt-get --purge remove nvidia-*
$ sudo apt-get --purge remove libnvidia-*
調べてみると参考URL※1が、同じエラーのようでopen driverを利用すれば良いとのこと。
$ sudo apt install nvidia-driver-550-open
リブート後確認。
$ lsmod |grep -i nvi
nvidia_uvm           4657152  0
nvidia_drm             94208  0
nvidia_modeset       1495040  1 nvidia_drm
nvidia               8577024  2 nvidia_uvm,nvidia_modeset
drm_kms_helper        311296  2 vmwgfx,nvidia_drm
drm                   622592  7 vmwgfx,drm_kms_helper,nvidia,nvidia_drm,ttm
$ nvidia-smi
Fri May  3 21:39:07 2024
+-----------------------------------------------------------------------------------------+
| NVIDIA-SMI 550.67                 Driver Version: 550.67         CUDA Version: 12.4     |
|-----------------------------------------+------------------------+----------------------+
| 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 4070 ...    Off |   00000000:02:05.0 Off |                  N/A |
| 30%   41C    P8             15W /  220W |       2MiB /  12282MiB |      0%      Default |
|                                         |                        |                  N/A |
+-----------------------------------------+------------------------+----------------------+

+-----------------------------------------------------------------------------------------+
| Processes:                                                                              |
|  GPU   GI   CI        PID   Type   Process name                              GPU Memory |
|        ID   ID                                                               Usage      |
|=========================================================================================|
|  No running processes found                                                             |
+-----------------------------------------------------------------------------------------+
$
成功。
Ubuntu Server Docs ※2をみると、-server版の方が用途に合っていたかもしれません。

参考URL)

2022年10月30日日曜日

ASRock C236M WS障害


マザーボードの(BIOS/UEFI)バッテリーが弱るとHDDアクセスが不安定になる場合があることを知りました。
電源入れっぱなしのPCでマザーボードのバッテリーが原因で障害になるとは思いませんした。

サーバ運用しているASRock C236M WSにリモートログインが出来なくなり無反応な状態に。
普段外しているディスプレイ、キーボードを接続するも無反応なので、強制電源断で再起動すると取り敢えずログインできるようになりました。

messagesログを見ると下記メッセージの記録後、同じメッセージが定期的に記録され
kernel: ata11.00: exception Emask 0x10 SAct 0xc0 SErr 0x4000000 action 0xe frozen
kernel: ata11.00: irq_stat 0x80000040, connection status changed
kernel: ata11: SError: { DevExch }
kernel: ata11.00: failed command: WRITE FPDMA QUEUED
kernel: ata11.00: cmd 61/08:30:68:d2:b4/00:00:06:00:00/40 tag 6 ncq 4096 out#012         res 50/00:00:00:00:00/00:00:00:00:00/a0 Emask 0x10 (ATA bus error)
kernel: ata11.00: status: { DRDY }
kernel: ata11.00: failed command: WRITE FPDMA QUEUED
kernel: ata11.00: cmd 61/08:38:80:2f:13/00:00:61:00:00/40 tag 7 ncq 4096 out#012         res 50/00:00:00:00:00/00:00:00:00:00/a0 Emask 0x10 (ATA bus error)
kernel: ata11.00: status: { DRDY }
kernel: ata11: hard resetting link
kernel: ata11: SATA link up 6.0 Gbps (SStatus 133 SControl 300)
kernel: ata11.00: configured for UDMA/133
kernel: ata11: EH complete
1時間40分後に下記メッセージの記録を最後にストール状態になったようです。
kernel: ata11.00: exception Emask 0x10 SAct 0x0 SErr 0x4000000 action 0xe frozen
kernel: ata11.00: irq_stat 0x80000040, connection status changed
kernel: ata11: SError: { DevExch }
kernel: ata11.00: failed command: FLUSH CACHE EXT
kernel: ata11.00: cmd ea/00:00:00:00:00/00:00:00:00:00/a0 tag 5#012         res 50/00:00:00:00:00/00:00:00:00:00/a0 Emask 0x10 (ATA bus error)
kernel: ata11.00: status: { DRDY }
kernel: ata11: hard resetting link
kernel: ata11: SATA link up 6.0 Gbps (SStatus 133 SControl 320)
kernel: ata11.00: configured for UDMA/133
kernel: ata11.00: retrying FLUSH 0xea Emask 0x10
kernel: ata11.00: device reported invalid CHS sector 0
kernel: ata11: EH complete
エラーが出ていたata11(起動HDD)のSMART情報を確認するとエラー記録もなく、ディスクとしては問題なさそうな様子。

SATAケーブルがダメになったかな?などと考えながらその他ログなどを確認していると、I/Oエラーのメッセージが表示されシェルでコマンドを実行できなくなり、電源断再起動後にBIOS画面も出ない状態に。
なんどか試すもBIOS画面が表示されたり、されなかったりでOSブートまで辿り着かず。
これはマザーボードのバッテリー交換あるあるかなと思い、バッテリー交換するとGRUB画面まで進み一先ず復旧しました。

不安定な状態で確認作業等をしていたため、ファイルシステムの不整合も起きたようで、/sysrootがマウントできずに起動失敗するようになっていました。

ブート時にシェルモードになり、dmesgで下記メッセージが表示されたので、lvscanでrootボリュームを調べ、xfs_repairを実行したところ失敗。
起動ディスクだから失敗したのかなと、あまり考えずUSBブートイメージを作成してxfs_repairを実行し直しました。
最終的にxfs_repairの-Lオプションを付けて実行したので、USBブートする必要なかったかもしれません。
  :
systemd[1]: Mounting /sysroot...
kernel: SGI XFS with ACLs, security attributes, no debug enabled
kernel: XFS (dm-0): Mounting V5 Filesystem
kernel: XFS (dm-0): Corruption warning: Metadata has LSN (720:28720) ahead or current LSN (720:28592). Please unmount and run xfs_repair (>= v4.3) to resolve.
kernel: XFS (dm-0): log mount/recovery failed: error -22
kernel: XFS (dm-0): log mount failed
mount[526]: mount: wrong fs type, bad option, bad superblock on /dev/mapper/ct-root
mount[526]: missing codepage or helper program, or other error
mount[526]: In some cases useful info is found in syslog - try
mount[526]: dmesg | tail or so.
systemd[1]: sysroot.mount mount process exited, code=exited status=32
systemd[1]: Failed to mount /sysroot.
systemd[1]: Dependency faild for Initrd Root File System.
systemd[1]: Dependency failed for Reload Configuration from the Real Root.
  :
しばらく様子見が必要ですが、マザーボードのバッテリー交換だけで今のところ復旧した感じです。
まさか、起動時だけでなく起動している状態でもマザーボードのバッテリー状態が影響するとは思いませんでした。

ちなみに外したバッテリーの電圧は、無負荷状態では3Vありました。