CUDAなんてない!Ryzen + RADEONのAMD環境でもStable Diffusionをローカルマシンで動かす。

CUDAなんてない!Ryzen + RADEONのAMD環境でもStable Diffusionをローカルマシンで動かす。

いま一部で話題のStable Diffusion
ちょっと前から出ているMidjourneyと同じく、「画像生成AIが言葉から連想して絵を書いてくれる」というツール。
今はツールだけど、そのうち色々なアプリ、サービスのいち機能に自然な形で組み込まれると思います。

それが自分のPCでも動くらしい!
それなら無駄にありあまるGPUパワー(というほどでもないけど)を使ってみたい!!
と思い立ち触ってみたけれど、基本NVIDIA=CUDA推奨。

誰かRADEON=AMDでやってる奴いるでしょ!
と思ったら意外と日本の記事が出てこなくて苦労しましたとさ。

バイブル

基本この動画の通りにやっただけです。

が、これ系の知識が全く無かったので何回もやり直しました。
初めて動いた時は声がでたレベル。

当環境&必要なもの

  • CPU:AMD Ryzen 9 5900X
  • GPU:AMD RADEON 6800XT
  • MEM:32GB
  • Ubuntuユーザー名:dolls
  • Ubuntuホスト名:grayhound
  • ストレージ:100GB以上のSSD
  • Linuxの基本的コマンドを叩ける知識

この記事の主な流れ

  1. Ubuntsuのインストール
  2. AMD GPUのLinuxインストール
  3. Dockerのインストール
  4. Stable Diffusionのインストール
  5. 学習モデルのコピー
  6. Condaの環境設定
  7. PytorchのCUDA環境をROCmで上書き
  8. 完成
  9. おまけ:トラブル事例など

Ubuntsuの用意

当初Windows上のWSL2で試してましたが断念。
空いてるSSDにUbuntsuをインストールし環境を構築しました。

このあとのツールにバージョン指定があります。
よってあえてUbuntu 20.04.4 LTS (Focal Fossa)を使います。
上記よりデスクトップイメージのISOファイルを落とし、RufusでインストールUSBメモリを作りました。

今はインストーラが親切なので特に注意はありません。
ターミナルとFirefoxがあればいいので、最小インストールで問題なしです。

Windows環境へのLinux SSD追加

気をつけたのはNVMeに入っているWindowsのゲーム環境を変化させない事。

今回UbuntuはSATA SSD 120GBを増やしてそれにインストールしました。
インストール先は手動設定を選び、一応16GBばかりのSwap領域を作成(要るこれ?)。そのあと残りをSATA SSDを”ext4、ルートディレクトリ”でフォーマット。

ブートローダ=GRUBの書き込み先を、忘れずにSATA SSDに設定。
これでPCを入れるとSATA SSDのUbuntuが起動する環境になりました。
その時数秒出るGRUBでWindows Boot Loaderを選ぶとWindowsが起動する他、ASUSロゴでF8連打すればNVMeを直指定する事もできます。

RADEONドライバのインストール

AMDのGPGPU環境であるAMD ROCmをインストールします。
インストールドキュメントに従って進めていきました。

ROCm Installation Guide v5.0

Prerequisite Actions

前提ツールやユーザーの権限の設定を進めます。

$ sudo apt-get install wget
$ sudo apt-get install gnupg2

$ sudo apt list --installed | grep 'wget\|gnupg2'

$ sudo usermod -a -G video $LOGNAME
$ echo 'ADD_EXTRA_GROUPS=1' | sudo tee -a /etc/adduser.conf
$ echo 'EXTRA_GROUPS=video' | sudo tee -a /etc/adduser.conf
$ echo 'EXTRA_GROUPS=render' | sudo tee -a /etc/adduser.conf

How To Install ROCm

インストーラーのダウンロード&導入。

$ sudo apt-get update
$ wget https://repo.radeon.com/amdgpu-install/21.50/ubuntu/focal/amdgpu-install_21.50.50000-1_all.deb
$ sudo apt-get install ./amdgpu-install_21.50.50000-1_all.deb

基本となる全部入りのROCmを入れます(dkmsは含めると失敗するので除外します)
トータル1.3GBくらいあるので時間がかかります。

$ sudo amdgpu-install --usecase=rocm --no-dkms

Kernel Mode Driverのインストール

現時点ではうまくインストールされないdkms(カーネルモードドライバ)を手動でインストールします。

Installation Of Kernel Headers and Development Packages on Ubuntuを参考に手動インストールします。

dolls@grayhound:/tmp$ wget -q -O - https://repo.radeon.com/rocm/rocm.gpg.key | sudo apt-key add -
OK

dolls@grayhound:/tmp$ echo 'deb [arch=amd64] https://repo.radeon.com/amdgpu/latest/ubuntu focal main' | sudo tee /etc/apt/sources.list.d/amdgpu.list
deb [arch=amd64] https://repo.radeon.com/amdgpu/latest/ubuntu focal main

dolls@grayhound:/tmp$ sudo apt-get update
…
18.7 kB を 1秒 で取得しました (16.5 kB/s)
パッケージリストを読み込んでいます... 完了

dolls@grayhound:/tmp$ sudo apt install amdgpu-dkms

終わったらPCを再起動。

インストール後の確認

rocmifoとclinfoの両方で下記の様にデバイス詳細が出てくる事を確認します。
うまくGPUが認識されていないと、CPUだけの表示になります。

$ sudo dkms status
amdgpu, 5.13.11.21.50-1373477: added
amdgpu, 5.16.9.22.20-1438746~20.04, 5.15.0-46-generic, x86_64: installed

$ sudo /opt/rocm-5.0.0/bin/rocminfo
ROCk module is loaded
=====================
HSA System Attributes
=====================
Runtime Version: 1.1
System Timestamp Freq.: 1000.000000MHz
Sig. Max Wait Duration: 18446744073709551615 (0xFFFFFFFFFFFFFFFF) (timestamp count)
Machine Model: LARGE
System Endianness: LITTLE

==========
HSA Agents
==========
*******
Agent 1
*******
Name: AMD Ryzen 9 5900X 12-Core Processor
Uuid: CPU-XX
Marketing Name: AMD Ryzen 9 5900X 12-Core Processor
Vendor Name: CPU
Feature: None specified
Profile: FULL_PROFILE
Float Round Mode: NEAR
Max Queue Number: 0(0x0)
Queue Min Size: 0(0x0)
Queue Max Size: 0(0x0)
Queue Type: MULTI
Node: 0
Device Type: CPU
Cache Info:
L1: 32768(0x8000) KB
Chip ID: 0(0x0)
Cacheline Size: 64(0x40)
Max Clock Freq. (MHz): 3700
BDFID: 0
Internal Node ID: 0
Compute Unit: 24
SIMDs per CU: 0
Shader Engines: 0
Shader Arrs. per Eng.: 0
WatchPts on Addr. Ranges:1
Features: None
Pool Info:
Pool 1
Segment: GLOBAL; FLAGS: FINE GRAINED
Size: 32778432(0x1f428c0) KB
Allocatable: TRUE
Alloc Granule: 4KB
Alloc Alignment: 4KB
Accessible by all: TRUE
Pool 2
Segment: GLOBAL; FLAGS: KERNARG, FINE GRAINED
Size: 32778432(0x1f428c0) KB
Allocatable: TRUE
Alloc Granule: 4KB
Alloc Alignment: 4KB
Accessible by all: TRUE
Pool 3
Segment: GLOBAL; FLAGS: COARSE GRAINED
Size: 32778432(0x1f428c0) KB
Allocatable: TRUE
Alloc Granule: 4KB
Alloc Alignment: 4KB
Accessible by all: TRUE
ISA Info:
*******
Agent 2
*******
Name: gfx1030
Uuid: GPU-386fbea17c7c7a72
Marketing Name: AMD Radeon RX 6800 XT
Vendor Name: AMD
Feature: KERNEL_DISPATCH
Profile: BASE_PROFILE
Float Round Mode: NEAR
Max Queue Number: 128(0x80)
Queue Min Size: 4096(0x1000)
Queue Max Size: 131072(0x20000)
Queue Type: MULTI
Node: 1
Device Type: GPU
Cache Info:
L1: 16(0x10) KB
L2: 4096(0x1000) KB
L3: 131072(0x20000) KB
Chip ID: 29631(0x73bf)
Cacheline Size: 64(0x40)
Max Clock Freq. (MHz): 2575
BDFID: 2816
Internal Node ID: 1
Compute Unit: 72
SIMDs per CU: 2
Shader Engines: 8
Shader Arrs. per Eng.: 2
WatchPts on Addr. Ranges:4
Features: KERNEL_DISPATCH
Fast F16 Operation: TRUE
Wavefront Size: 32(0x20)
Workgroup Max Size: 1024(0x400)
Workgroup Max Size per Dimension:
x 1024(0x400)
y 1024(0x400)
z 1024(0x400)
Max Waves Per CU: 32(0x20)
Max Work-item Per CU: 1024(0x400)
Grid Max Size: 4294967295(0xffffffff)
Grid Max Size per Dimension:
x 4294967295(0xffffffff)
y 4294967295(0xffffffff)
z 4294967295(0xffffffff)
Max fbarriers/Workgrp: 32
Pool Info:
Pool 1
Segment: GLOBAL; FLAGS: COARSE GRAINED
Size: 16760832(0xffc000) KB
Allocatable: TRUE
Alloc Granule: 4KB
Alloc Alignment: 4KB
Accessible by all: FALSE
Segment: GROUP
Size: 64(0x40) KB
Allocatable: FALSE
Alloc Granule: 0KB
Alloc Alignment: 0KB
Accessible by all: FALSE
ISA Info:
ISA 1
Name: amdgcn-amd-amdhsa--gfx1030
Machine Models: HSA_MACHINE_MODEL_LARGE
Profiles: HSA_PROFILE_BASE
Default Rounding Mode: NEAR
Default Rounding Mode: NEAR
Fast f16: TRUE
Workgroup Max Size: 1024(0x400)
Workgroup Max Size per Dimension:
x 1024(0x400)
y 1024(0x400)
z 1024(0x400)
Grid Max Size: 4294967295(0xffffffff)
Grid Max Size per Dimension:
x 4294967295(0xffffffff)
y 4294967295(0xffffffff)
z 4294967295(0xffffffff)
FBarrier Max Size: 32
*** Done ***

$ sudo /opt/rocm-5.0.0/opencl/bin/clinfo
Number of platforms: 1
Platform Profile: FULL_PROFILE
Platform Version: OpenCL 2.2 AMD-APP (3406.0)
Platform Name: AMD Accelerated Parallel Processing
Platform Vendor: Advanced Micro Devices, Inc.
Platform Extensions: cl_khr_icd cl_amd_event_callback

Platform Name: AMD Accelerated Parallel Processing
Number of devices: 1
Device Type: CL_DEVICE_TYPE_GPU
Vendor ID: 1002h
Board name: AMD Radeon RX 6800 XT
Device Topology: PCI[ B#11, D#0, F#0 ]
Max compute units: 36
Max work items dimensions: 3
Max work items[0]: 1024
Max work items[1]: 1024
Max work items[2]: 1024
Max work group size: 256
Preferred vector width char: 4
Preferred vector width short: 2
Preferred vector width int: 1
Preferred vector width long: 1
Preferred vector width float: 1
Preferred vector width double: 1
Native vector width char: 4
Native vector width short: 2
Native vector width int: 1
Native vector width long: 1
Native vector width float: 1
Native vector width double: 1
Max clock frequency: 2575Mhz
Address bits: 64
Max memory allocation: 14588628168
Image support: Yes
Max number of images read arguments: 128
Max number of images write arguments: 8
Max image 2D width: 16384
Max image 2D height: 16384
Max image 3D width: 16384
Max image 3D height: 16384
Max image 3D depth: 8192
Max samplers within kernel: 29631
Max size of kernel argument: 1024
Alignment (bits) of base address: 1024
Minimum alignment (bytes) for any datatype: 128
Single precision floating point capability
Denorms: Yes
Quiet NaNs: Yes
Round to nearest even: Yes
Round to zero: Yes
Round to +ve and infinity: Yes
IEEE754-2008 fused multiply-add: Yes
Cache type: Read/Write
Cache line size: 64
Cache size: 16384
Global memory size: 17163091968
Constant buffer size: 14588628168
Max number of constant args: 8
Local memory type: Scratchpad
Local memory size: 65536
Max pipe arguments: 16
Max pipe active reservations: 16
Max pipe packet size: 1703726280
Max global variable size: 14588628168
Max global variable preferred total size: 17163091968
Max read/write image args: 64
Max on device events: 1024
Queue on device max size: 8388608
Max on device queues: 1
Queue on device preferred size: 262144
SVM capabilities:
Coarse grain buffer: Yes
Fine grain buffer: Yes
Fine grain system: No
Atomics: No
Preferred platform atomic alignment: 0
Preferred global atomic alignment: 0
Preferred local atomic alignment: 0
Kernel Preferred work group size multiple: 32
Error correction support: 0
Unified memory for Host and Device: 0
Profiling timer resolution: 1
Device endianess: Little
Available: Yes
Compiler available: Yes
Execution capabilities:
Execute OpenCL kernels: Yes
Execute native function: No
Queue on Host properties:
Out-of-Order: No
Profiling : Yes
Queue on Device properties:
Out-of-Order: Yes
Profiling : Yes
Platform ID: 0x7f30adf1dd90
Name: gfx1030
Vendor: Advanced Micro Devices, Inc.
Device OpenCL C version: OpenCL C 2.0
Driver version: 3406.0 (HSA1.1,LC)
Profile: FULL_PROFILE
Version: OpenCL 2.0
Extensions: cl_khr_fp64 cl_khr_global_int32_base_atomics cl_khr_global_int32_extended_atomics cl_khr_local_int32_base_atomics cl_khr_local_int32_extended_atomics cl_khr_int64_base_atomics cl_khr_int64_extended_atomics cl_khr_3d_image_writes cl_khr_byte_addressable_store cl_khr_fp16 cl_khr_gl_sharing cl_amd_device_attribute_query cl_amd_media_ops cl_amd_media_ops2 cl_khr_image2d_from_buffer cl_khr_subgroups cl_khr_depth_images cl_amd_copy_buffer_p2p cl_amd_assembly_program

$ lsmod | grep amdgpu
amdgpu 9797632 18
iommu_v2 24576 1 amdgpu
gpu_sched 45056 1 amdgpu
drm_ttm_helper 16384 1 amdgpu
ttm 86016 2 amdgpu,drm_ttm_helper
drm_kms_helper 307200 1 amdgpu
drm 618496 12 gpu_sched,drm_kms_helper,amdgpu,drm_ttm_helper,ttm
i2c_algo_bit 16384 2 igb,amdgpu

これでようやくLinuxのプログラムからRADEONを使う準備が整いました。

Dockerのインストール

Stable Diffusionの実行環境はdockerを利用します。

Ubuntuへのdockerインストールは、Ubuntu 20.04へのDockerのインストールおよび使用方法を参照しました。

ステップ1から2まで進めます。
環境ができた後もdockerコマンドはよく使います。Sudoなしのdocker実行設定はオススメです。

イメージを持ってくる

rocm/pytorch – Docker Image | Docker Hub

当初動画と異なるイメージを使ったらハマりました。
NAVI21(6800XT等)に対応してるImage Layer Details – rocm/pytorch:rocm5.2_ubuntu20.04_py3.7_pytorch_1.11.0_navi21 | Docker Hubを使います。

$ docker pull rocm/pytorch:rocm5.2_ubuntu20.04_py3.7_pytorch_1.11.0_navi21

イメージの実行

エイリアスでオプションを指定し、持ってきたイメージを実行します。

$ alias drun='sudo docker run -it --network=host --device=/dev/kfd --device=/dev/dri --group-add=video --ipc=host --cap-add=SYS_PTRACE --security-opt seccomp=unconfined -v $HOME/dockerx:/dockerx'
$ drun rocm/pytorch:rocm5.2_ubuntu20.04_py3.7_pytorch_1.11.0_navi21

stable-diffusionのインストール

うまくdockerのコンテナが動けば(という表現が合っているか自信がない)、ルートプロンプト#になります。
その状態でいよいよStable Diffusionを持ってきます。

# mkdir /dockerx/rocm
# cd /dockerx/rocm
# git clone https://github.com/CompVis/stable-diffusion
Cloning into 'stable-diffusion'...
remote: Enumerating objects: 313, done.
remote: Total 313 (delta 0), reused 0 (delta 0), pack-reused 313
Receiving objects: 100% (313/313), 42.62 MiB | 19.97 MiB/s, done.
Resolving deltas: 100% (113/113), done.
root@grayhound:/dockerx/rocm#

プログラム自体はかなり小さい。

学習モデルをコピーする

学習モデルを公開しているHugging Faceにアカウントを登録します(手順割愛)

CompVis/stable-diffusion-v-1-4-original

サイトにログインしている状態で、sd-v1-4.ckptをクリック。
4GBほどのファイルがダウンロードできます。

次にdockerの外のユーザー権限のターミナルからフォルダを作成。利便性のためアクセス件も付与します。
ディレクトリ名は小文字のみ使用のこと。

$ sudo chown -R $USER:$USER /home/dolls/dockerx/rocm/stable-diffusion
$ cd /home/dolls/dockerx/rocm/stable-diffusion/models/ldm
$ mkdir stable-diffusion-v1

ダウンロードしたファイルを”model.ckpt”にリネームし、作成したstable-diffusion-v1ディレクトリにコピーします。

Condaの環境設定

Condaを使ってStableDiffusionの依存パッケージをセットアップします。

root@grayhound:/dockerx/rocm# cd stable-diffusion/
root@grayhound:/dockerx/rocm/stable-diffusion# conda env create -f environment.yaml
Collecting package metadata (repodata.json): done
Solving environment: done

==> WARNING: A newer version of conda exists. <==
current version: 4.13.0
latest version: 4.14.0

Please update conda by running

$ conda update -n base -c defaults conda

Downloading and Extracting Packages
typing_extensions-4. | 42 KB | ########################################################################## | 100%
numpy-1.19.2 | 10 KB | ########################################################################## | 100%
....(中略)....
0.12.1 toml-0.10.2 toolz-0.12.0 torch-fidelity-0.3.0 torchmetrics-0.6.0 tornado-6.2 tqdm-4.64.0 traitlets-5.3.0 transformers-4.19.2 tzdata-2022.2 tzlocal-4.2 urwid-2.1.2 validators-0.20.0 watchdog-2.1.9 wcwidth-0.2.5 werkzeug-2.2.2 widgetsnbextension-4.0.2 yarl-1.8.1 zipp-3.8.1

done
#
# To activate this environment, use
#
# $ conda activate ldm
#
# To deactivate an active environment, use
#
# $ conda deactivate

環境設定が完了したら初期設定を実行しておきます

# conda init bash

PytorchのCUDA環境をROCmで上書き

セットアップされたのはCUDA環境のため、ROCm(AMD)へ上書きします。
バイブルではこれをなぜか2回行ってます。
おそらくは通常環境にまずインストールし、さらにactivateした仮想環境にもインストールしているのでしょう。

Base環境のPytorchを上書き

Install PyTorchよりPIPを使った下記インストール文字列を作成します。
そしてinstallの後に”–upgrade”を追加して実行。

# pip3 install --upgrade torch torchvision torchaudio --extra-index-url https://download.pytorch.org/whl/rocm5.1.1

ldm環境を別のシェルで開いて上書き

これまで触っていたターミナルと別のターミナルを起動します(これまでのは端においておく)
そして”docker container ls”コマンドで実行しているコンテナのNAMESを確認。これは実行ごとに自動で割り振られる呼称のようです。

dolls@grayhound:~/デスクトップ$ sudo docker container ls
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
1f78219b061d rocm/pytorch:rocm5.2.3_ubuntu20.04_py3.7_pytorch_1.12.1 "bash" 15 seconds ago Up 14 seconds cranky_haslett

このときはcranky_haslettでした。
それを指定して新しいシェルを起動します。

dolls@grayhound:~/デスクトップ$ sudo docker exec -it cranky_haslett bash
(base) root@grayhound:/var/lib/jenkins#

上手くいけば、列の先頭に(base)がついたプロントになります。

開いたシェルを使い、conda環境をldmに切り替えます。
そしてLDM上で再度Pytorchをアップデートします。

(base) root@grayhound:/var/lib/jenkins# conda activate ldm
(ldm) root@grayhound:/var/lib/jenkins#
(ldm) root@grayhound:/var/lib/jenkins# pip3 install --upgrade torch torchvision torchaudio --extra-index-url https://download.pytorch.org/whl/rocm5.1.1

すでにあるよと言われるファイルもあれば、新しくダウンロードするものもあります。
環境ごとに必要なのでしょう・・・と思うことにしました。

運命の初実行

いよいよ完成。
実行してみます。

(ldm) root@grayhound:/dockerx/rocm/stable-diffusion# cd /dockerx/rocm/stable-diffusion
(ldm) root@grayhound:/dockerx/rocm/stable-diffusion# python3 scripts/txt2img.py --prompt "apple" --H 512 --W 512 --n_iter 1 --ddim_steps 50 --n_sample 3
Downloading: 100%|██████████████████████████████| 342/342 [00:00<00:00, 323kB/s]
Downloading: 100%|█████████████████████████| 4.44k/4.44k [00:00<00:00, 4.14MB/s]
Downloading: 100%|█████████████████████████| 1.13G/1.13G [00:21<00:00, 55.8MB/s]
Global seed set to 42
Loading model from models/ldm/stable-diffusion-v1/model.ckpt

上手く行けば初回は色々とダウンロードが走ったのち、outputsディレクトリに画像ができます。
おめでとうございます。

うまく行ったとき

バイブルのコマンドでは512×512の画像が3枚、同じテーマで出力されます。
GPUが使われるため、3枚の作成は20−30秒ほどで完成。
これなら試行錯誤もしやすいし何より無料!!

試しにツール(後述)で温度や負荷などを確認してみました。
結構ゲーム中と同等の負荷がかかるようです(それはそうか)

これはキーワード=promptに”Landscape, photograph, hokkaido, winter mountain”とつけて生成された画像。
ちょっと山が不自然ですが、ありそうな風景が出力されています。これに”Japan”を入れると山が富士山になるの面白い。

コケたとき(メモリ不足)

# python3 scripts/txt2img.py --prompt "apple" --H 1920 --W 1080 --n_iter 1 --ddim_steps 10 --n_sample 1
・・・・
RuntimeError: HIP out of memory. Tried to allocate 31.29 GiB (GPU 0; 15.98 GiB total capacity; 4.31 GiB already allocated; 11.47 GiB free; 4.45 GiB reserved in total by PyTorch) If reserved memory is >> allocated memory try setting max_split_size_mb to avoid fragmentation.  See documentation for Memory Management and PYTORCH_HIP_ALLOC_CONF

画像解像度は如実にメモリを食うらしく、なかなか拡大できません。
16GBの容量があるRADEON 6800XTでもダメ。FullHDの画像を出そうとしたら31.3GB確保しなさいって言われました。
今の内訳を見ると16GBのうち4.5GBはPytorchにて予約済。11.4GBは使えるという事なのかな。

おまけ:オプション情報

Ubuntsuの日本語変換キー設定

Ubuntuデスクトップで日本語入力を使う場合、日本語切り替えキーは動作しないようです。
仮にCtrl+Spaceに割り当てるため、設定を行います。

  1. 「設定」>「地域と言語」を開き、「インストールされている言語の管理」を開く。
  2. 追加データのインストールが始まる。
  3. 左上タスクバーの言語をクリックし、”日本語(Mozc)”をクリック
  4. ”ツール”が増えているのでプロパティを選択。
  5. ”キー設定の選択”のドロップダウンで好みのIMEを選んだ後、「編集」を押す
  6. 設定リストの項目名”入力キー”を押して割当キーごとにソート。
  7. Ctrl+Spaceを使っているキーアサインを適当に変更して空ける。
  8. 入力キーが”HANKAKU/ZENKAKU”になっているものをすべてCtrl+Spaceに変更する。

終わったら一度ログオフ>ログインすると有効化されます。

時計設定

LinuxとWindowsのデュアルブート環境では、お互いを行き来すると時間がずれます。
CMOS上の時計の扱いの違いによるものなので、LinuxもWindowsと同じ動きをするようにします。

sudo hwclock --systohc --localtime

ハードウェア情報モニタツール

bmon

ターミナル内で動くネットワークトラフィックモニタ。
起動するとNICを選ぶだけのシンプル画面だけど、ウィンドウサイズを広げるとグラフ表示もしてくれます。
“l”キーでグラフだけの表示になります。

$ sudo apt-get install bmon

psensor

マザーボード上の温度やファン回転数、CPU使用率などをグラフ表示してくれます。

$ sudo apt-get install psensor

おまけ:トラブル事例

python環境でモジュール不足

videoと異なるdocker imageを使ったら、txt2img.pyが色々なモジュールを要求してきました。
それを避けるためにも、必ずバイブルと同じdocker imageを使うのが近道です。

conda activate ldmがエラー

ここでハマったのは、何度やってもconda activate ldmができないこと。

# conda activate ldm
EnvironmentNameNotFound: Could not find conda environment: ldm
You can list all discoverable environments with `conda info --envs`.

原因は上のconda create envする際に、ディスク容量が不足したこと。
それによりldmのディレクトリが不十分な形で居座ってしまいました。
ちゃんとconda create envが上手く行ったかは、condaの環境一覧を見るとわかります。

(base) root@grayhound:/var/lib/jenkins# conda info -e
# conda environments:
#
base * /opt/conda

baseしかない!

対応は/dockerx/rocm/stable-diffusion/ldmを削除。改めてconda create envからやり直しです。

dockerのイメージ、コンテナの整理

何度も試していたらディスクスペースが少なくなりました。
dockerのイメージやコンテナを整理しました。

Dockerイメージとコンテナの削除方法

コンテナの一括削除。
その後、停止しているコンテナから消えているか確認。

$ docker rm `docker ps -a -q`
$ docker ps -a

イメージの削除。
イメージのリストを見て”IMAGE ID”を確認。それを指定して個別に削除

$ docker images
$ docker rmi c2ed632773ee

イメージやコンテナを含むdockerのサイズチェックは”docker system df”でOK.

作ったcondaの環境が毎回消えてる

2回目からはイメージからではなく、コンテナから環境を起動する必要があります。
そのあたりを別記事にしました。

dockerというものに少しだけ詳しくなった日。そしてStable Diffusion雑感。

コメントを残す