いま一部で話題の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の基本的コマンドを叩ける知識
この記事の主な流れ
- Ubuntsuのインストール
- AMD GPUのLinuxインストール
- Dockerのインストール
- Stable Diffusionのインストール
- 学習モデルのコピー
- Condaの環境設定
- PytorchのCUDA環境をROCmで上書き
- 完成
- おまけ:トラブル事例など
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をインストールします。
インストールドキュメントに従って進めていきました。
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に割り当てるため、設定を行います。
- 「設定」>「地域と言語」を開き、「インストールされている言語の管理」を開く。
- 追加データのインストールが始まる。
- 左上タスクバーの言語をクリックし、”日本語(Mozc)”をクリック
- ”ツール”が増えているのでプロパティを選択。
- ”キー設定の選択”のドロップダウンで好みのIMEを選んだ後、「編集」を押す
- 設定リストの項目名”入力キー”を押して割当キーごとにソート。
- Ctrl+Spaceを使っているキーアサインを適当に変更して空ける。
- 入力キーが”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 rm `docker ps -a -q` $ docker ps -a
イメージの削除。
イメージのリストを見て”IMAGE ID”を確認。それを指定して個別に削除
$ docker images $ docker rmi c2ed632773ee
イメージやコンテナを含むdockerのサイズチェックは”docker system df”でOK.
作ったcondaの環境が毎回消えてる
2回目からはイメージからではなく、コンテナから環境を起動する必要があります。
そのあたりを別記事にしました。