【SD】Ubuntu 從安裝系統到安裝Stable Diffusion Webui

Yomisana

是時候填坑了 XD

此文章使用的是 ubuntu apt 庫預設的 python 3.10.xx (通常是最新版本)
並且不需要安裝 conda 直接用原生的python安裝

如果才剛安裝作業系統可以看一下下方設定

安裝作業系統時需要記住,在台灣要連上台灣的 Ubuntu臺灣套件庫

192.168.xx.0/24
192.168.xx.xx
192.168.xx.1
8.8.8.8 (DNS 一定要 Google 要不然連不上,預設的沒有更改就一定要指定,如果你確定你的路由器等都一定會轉向置 Google DNS 就無需填寫)

(可選) 設定使用 ufw防火牆 與 啟動 SMB 讓 Windows 電腦可以網路磁碟機連線

  • ufw 防火牆設定 - 注意如果目前使用 ssh 遠端務必 ufw 詢問你是否開啟 ssh 通道 請打 Y 並且之後開啟 22 port.
    1
    2
    3
    4
    5
    $ sudo ufw enable
    $ sudo ufw allow 22/tcp
    $ sudo ufw allow 445/tcp

    $ sudo ufw delete 3 (兩次-如果是 IPV6 就不要刪除了...)
  • samba(SMB) 架設 - 注意因為沒有開放外往所以就是直接上 root 如果你要把 samba 要透過網際網路連線遠端需要額外查找相關安全性資訊。
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    $ sudo apt-get install samba
    $ sudo nano /etc/samba/smb.conf

    ###
    [OS]
    path = /
    writable = yes
    guest account = root
    force user = root
    public = yes
    force group = root
    ###

    $ sudo service smbd restart

    在 windows 上 連接磁碟機打上 \\192.168.xx.xx\os 打上帳號密碼,如果有詢問的話

安裝好後 進入到系統的第一件事情把東西都更新到最新的

1
sudo apt update && sudo apt upgrade

安裝NVIDIA顯示卡驅動 與 NVIDIA CUDA

2023/08/17 06:06
我的顯卡: Tesla M40 24G
當前版本號:
顯示卡驅動版本:535.86.10
顯示卡CUDA版本: 12.2
當時的指令安裝:

請注意: 你需要查看你的顯示卡是支援到哪一個 CUDA 版本上 並且安裝此卡的最新版本!

1
2
3
4
$ wget https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2204/x86_64/cuda-keyring_1.1-1_all.deb
$ sudo dpkg -i cuda-keyring_1.1-1_all.deb
$ sudo apt-get update
$ sudo apt-get -y install cuda

Tips: 通常安裝CUDA時也會安裝顯示卡驅動
安裝完畢後 sudo reboot

顯卡驅動相關疑難雜症(如果很有自信可以跳過,需要時再回頭來看XD)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
- 檢查是否有安裝好:
+ nvidia-smi
+ nvcc --version

- 如果顯示Command nvcc not found,則將路徑加入至~/.bashrc
+ sudo nano ~/.bashrc

###(放在最底下即可)
export PATH=/usr/local/cuda-12/bin${PATH:+:${PATH}}
export LD_LIBRARY_PATH=/usr/local/cuda-12/lib64:${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}
###

+ source ~/.bashrc
- 回到最上面 檢查是否有安裝好的步驟。

開始安裝 Stable Diffusion 所需要的東西:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
- 安裝所需要的依賴套件
+ sudo apt install python3 python3-pip python3-virtualenv wget git

- git clone stable diffusion webui
+ cd ~
+ git clone https://github.com/AUTOMATIC1111/stable-diffusion-webui.git

- 把 python venv 創建在 stable diffusion webui 底下
+ cd stable-diffusion-webui
+ python3 -m virtualenv ubuntu_venv

- 進入到 venv 環境底下
+ source ./ubuntu_venv/bin/activate
- 如果需要退出 venv 環境底下
+ deactivate

把 Stable Diffusion webui 變成 systemd 服務

sudo nano /etc/systemd/system/stable_diffusion_webui.service

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
[Unit]
Description=Stable Diffusion AUTOMATIC1111 Web UI service of yomisana source
After=network.target
StartLimitIntervalSec=0

[Service]
Type=simple
Restart=always
RestartSec=1
User={你的使用者名稱}
ExecStart=/usr/bin/env bash /home/{你的使用者名稱}/stable-diffusion-webui/webui.sh --xformers --enable-insecure-extension-access --no-half-vae --enable-insecure-extension-access --listen --port 7860
WorkingDirectory=/home/{你的使用者名稱}/stable-diffusion-webui
StandardOutput=append:/var/log/sdwebui.log
StandardError=append:/var/log/sdwebui.log

[Install]
WantedBy=multi-user.target

ExecStart 後面有看到熟悉的 command_args 不用後面的指令竟是 webui 的指令,會丟這邊是為了不再獨立一個檔案讓我自己搞混

套用 ubuntu 的 venv

sudo nano /home/{你的使用者名稱}/stable-diffusion-webui/webui.sh

1
2
3
4
5
6
7
#!/usr/bin/env bash
#################################################
# Please do not make any changes to this file, #
# change the variables in webui-user.sh instead #
#################################################
source ./ubuntu_venv/bin/activate
export PYTHONUNBUFFERED="1"

添加上面 兩行沒有在檔案上看過的指令
以上如果妳都做對的話就成功囉!

Stable Diffusion 相關疑難雜症(如果很有自信可以跳過,需要時再回頭來看XD)

1
2
- Cannot locate TCMalloc (improves CPU memory usage)
+ sudo apt-get install libgoogle-perftools4 libtcmalloc-minimal4 -y

試營運囉!

  • 重新載入檔案 systemd 的檔案
    1
    sudo systemctl daemon-reload
  • 開機時啟動 stable_diffusion_webui.serivce
    1
    sudo systemctl enable stable_diffusion_webui.service
  • 開啟 stable_diffusion_webui.serivce
    1
    sudo systemctl start stable_diffusion_webui.service
  • 停止 stable_diffusion_webui.serivce
    1
    sudo systemctl stop stable_diffusion_webui.service

以上!