iT邦幫忙

2023 iThome 鐵人賽

DAY 15
0

提要

前言

昨天我們介紹了關於 Stable Diffusion 的內容(後面簡稱SD),今天我們從安裝開始,一步步手把手示範如何使用SD,內容包含:前置準備、環境選定、及SD的安裝。

前置準備

我們先看下自有的電腦配置,目前可建置的參考網址,這是一個構建stable-diffusion-webui的網站,安裝好後可以有 UI 的網頁畫面供操作,要注意的是要用哪種運算資源做 AI 生圖,目前支援:NVIDIA 的 GPU、AMD 的 GPU、及 Intel 的 CPU,建議是用NVIDIA 的 GPU,按照之前的使用經驗,在跑生圖的時候,vram至少要6G以上才會比較穩,但如果是要訓練 ckpt 或 safetensors 那些的話,建議是10G以上,不然跑不動,雖然它有提供降低 vram 附載的參數,但如果資源不夠的時候還是有機會掛掉,另外它也有支援純 CPU 運行的模式,但這部分筆者就沒試了,也不建議嘗試啦,高機率會浪費時間,這邊小結一下:

  1. GPU: NVIDIA GPU vram 至少6G,建議10G以上會更好。
  2. CPU: vcore 至少4或以上。
  3. RAM: 16G以上,跑圖比較不會掛掉,訓練也穩。
  4. 一顆學習的心: 因為接下來的操作很吃手動,目前SD更版週期為2~3週左右,有時碰到新問題還得自行排查,先打下預防針,另外有些bug是版本問題造成的,不幸碰到得先速速降版,不然就沒得用啦!

環境選定

筆者是用 Docker 環境下去安裝的,基礎映像使用 Ubuntu:22.04,若讀者為 Windows 的情況請參考這裡,以下會以 Docker 及 Ubuntu:22.04 的情況進行示範。

以下操作不限於Ubuntu,都是Linux based指令

  • CPU檢查
test@ubuntu22:~$ lscpu
Architecture:                       x86_64
CPU op-mode(s):                     32-bit, 64-bit
Byte Order:                         Little Endian
Address sizes:                      39 bits physical, 48 bits virtual
CPU(s):                             16
On-line CPU(s) list:                0-15
Thread(s) per core:                 2
Core(s) per socket:                 8
Socket(s):                          1
NUMA node(s):                       1
Vendor ID:                          GenuineIntel
CPU family:                         6
Model:                              165
Model name:                         Intel(R) Core(TM) i7-10700 CPU @ 2.90GHz
  • GPU檢查
    (這招不用nvidia-smi,萬一驅動掛掉還能用!但要先跑update-pciids激活,才能顯卡型號。)
test@ubuntu22:~$ lspci -nn |grep '\[03'
01:00.0 VGA compatible controller [0300]: NVIDIA Corporation AD102 [GeForce RTX 4090] [10de:2684] (rev a1)
  • RAM檢查
test@ubuntu22:~$ free -h
              total        used        free      shared  buff/cache   available
Mem:           62Gi       3.6Gi        47Gi        19Mi        11Gi        58Gi
Swap:            0B          0B          0B
  • 一顆學習的心

相信自己可以做到,若是心不安,就買一包綠色乖乖放在測試機旁邊。

SD的安裝

  • Docker安裝

老生常談,請看以下示範,或參考這裡

# Add Docker's official GPG key:
sudo apt-get update
sudo apt-get install ca-certificates curl gnupg
sudo install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
sudo chmod a+r /etc/apt/keyrings/docker.gpg

# Add the repository to Apt sources:
echo \
  "deb [arch="$(dpkg --print-architecture)" signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \
  "$(. /etc/os-release && echo "$VERSION_CODENAME")" stable" | \
  sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt-get update
sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
  • 安裝驅動
sudo apt install nvidia-driver-525-server -y
sudo reboot

安裝完驅動一般來說會自動幫你更新kernel到最新,這是正常的。

  • 啟動容器
sudo docker run --gpus '"device=0"' --network host --name test1 -it ubuntu:22.04 bash

這邊指用到了第一張GPU及映射主機網路設定與容器內同步。

  • 安裝SD
    (裝在容器內,可以自行封裝image另用,就不用重新建置了!)
# 先看能否抓到顯卡
nvidia-smi
# 安裝依賴包
apt update
apt install wget git python3 python3-venv libgl1 libglib2.0-0
# 下載UI運行腳本
wget -q https://raw.githubusercontent.com/AUTOMATIC1111/stable-diffusion-webui/master/webui.sh
chmod +x webui.sh
# 進行安裝並啟動SD
./webui.sh -f --listen

跑完後他會開在預設的端口 7860,就能直接連啦!
輸入--help可以看其他常用參數。

如果你懶得自己裝,筆者有個封裝好的可以直接用:

sudo docker run --gpus '"device=0"' --network host --name test1 -it 105552010/sd-test:v1.6.0 bash

介面會長這個樣子:

https://ithelp.ithome.com.tw/upload/images/20230930/20120468RLUW9KQfq9.png

小結

今天我們介紹了關於 SD 安裝的內容;例如,前置準備、環境選定、及SD的安裝,明天會介紹SD常用操作的內容,明天見!

參考連結


上一篇
[Day14] Stable Diffusion,來吧
下一篇
[Day16] Stable Diffusion的基礎使用
系列文
關於我將 AIGC 導入企業的那些坑-以 Stable Diffusion 為例31
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

1 則留言

0
aferd
iT邦新手 5 級 ‧ 2024-04-19 18:21:28

版主你好,想問問SD是不是只支援單GPU使用?
我使用了ducker參數device=all

在host端同時監控nvidia-smi -l,發現SD在算圖時永遠只有1顆GPU有忙碌
想問問你會不會知道怎樣修改讓GPU載入docker時,在跑SD的時候所有gpu都活動呢?(應該全部GPU一起算會比較快速產圖?

Nick iT邦新手 4 級 ‧ 2024-04-19 21:30:03 檢舉

嗨嗨,大大你好:
先說結論,以Automatic1111提供的UI環境來說,目前沒支援多GPU。

關於後續更新的消息,可以參考這裡:https://github.com/AUTOMATIC1111/stable-diffusion-webui/discussions/8293

還有其他開源項目,像是StabilityAI前員工做的號稱有支援,可以參考看看,SwarmUI這套:https://github.com/Stability-AI/StableSwarmUI/blob/master/docs/Using%20More%20GPUs.md

我要留言

立即登入留言