附註:
- 此教學課程需要存取 Oracle Cloud。若要註冊免費帳戶,請參閱開始使用 Oracle Cloud Infrastructure Free Tier 。
- 它會使用 Oracle Cloud Infrastructure 證明資料、租用戶及區間的範例值。完成實驗室時,請將這些值替代為您雲端環境特定的值。
在 Oracle Cloud Infrastructure GPU 上部署穩定的 Diffusion Automatic1111
在不斷演變的人工智慧 (AI) 和機器學習 (ML) 領域中,研究人員和工程師不斷地推動可能的界限。近年來,一個顯著發展勢頭是穩定擴散模式。這項尖端技術提供顯著的優勢、承諾廣泛的使用案例,同時持續看見令人振奮的發展。在本教學課程中,我們將深入探索 Stable Diffusion AI/ML 模型的世界、探索其優勢、探索其使用案例,以及討論這個迷人領域的最新發展。
簡介
穩定差異:穩定的差異在於 AI 和 ML 領域中相對創新的方式。它是一種可能性生成模型,因其能夠產生高品質的資料樣本,以及對各種訓練條件的健全度而顯著增加。穩定的擴散模型 (通常以擴散過程為基礎) 允許控制的資料產生和操控。以下是主要元件的簡要概要:
Diffusion 流程:穩定擴散模型的核心概念是擴散流程,該過程會隨著時間推移建立資料分佈的演進模型。它涉及反覆將雜訊處理程序套用至資料,直到轉換成想要的分配為止。
驅逐自動編碼器:在擴散過程中,會使用拒絕自動編碼器從雜訊樣本中復原原始資料。此流程可協助模型學習及掌握資料的有意義功能。
目標
Automatic1111 穩定擴散是人工智慧產生影像領域中改變遊戲規則的工具。這個創新的 WebUI 提供易於使用的平台,重新塑造建立 AI 產生的映像檔的環境。使用者可以藉此流暢地操作和監控專屬產生映像檔的 AI 模型。我們將部署 Automatic1111 及其在 Oracle Linux 8 中推斷您最喜愛的穩定差異模型的先決條件。
先決條件
-
具有 A10 GPU 限制的 Oracle Cloud Infrastructure (OCI) 租用戶。至少需要 1 個 A10。
-
現有的 OCI 虛擬雲端網路 (VCN),至少有一個公用子網路和公用 IP 限制。
-
您喜愛的 Huggingface Creator 有穩定的擴散模型檢查點。將模型限制為 v1-5 和 v2-1。無法在單一 A10 GPU 上載入穩定的 Diffusion XL,請參閱穩定的 Diffusion Model - Hugging Face 。
作業 1:在 OCI 上佈建 GPU 運算執行處理
-
使用現有的 VCN 搭配公用子網路啟動 OCI 上的運算執行處理。如需詳細資訊,請參閱啟動運算執行處理。
-
從可用的 GPU.A10 資源配置選擇單一 A10 GPU 執行處理。
VM.GPU.A10.1
-
啟動運算執行處理時,請將資源配置變更為上述其中一種資源配置。若要啟動 GPU.A10 VM,請按一下專業與上一代,然後選取 VM.GPU.A10.1 資源配置。
-
您的租用戶若未設定 GPU.A10 的服務限額,這些資源配置將不會列在資源配置清單中。
-
若要檢查 OCI 主控台中的租用戶限制,請設定要佈建 GPU.A10 運算執行處理的區域,開啟導覽功能表,然後按一下治理與管理。
-
在租用戶管理底下,選取限額、配額和用量。
-
將服務設定為「運算」,在範圍欄位中選取其中一個可用性網域,然後在資源欄位中輸入 GPU.A10 。
-
為 A10 型 VM 和 BM 執行處理選取 GPU 。
-
-
運算限制是依據可用性網域。檢查此限制是否在區域的任何可用性網域中設定。如果所有可用性網域的服務限制設為 0,您可以按一下「要求提高服務限制」連結,然後送出此資源的擴大要求。
注意:若要存取「限制」、「配額」和「用量」,您必須是租用戶管理員群組的成員,或者您的群組必須具備指派給讀取 LimitsAndUsageViewers 的原則。
- 如需詳細資訊,請參閱服務限制。
-
目前的 OCI GPU.A10 運算資源配置支援 Oracle Linux、Ubuntu 以及 Rocky Linux。僅 VM 資源配置支援 Windows。
注意:NVIDIA 不正式支援 Rocky Linux。
-
在 OCI 上佈建運算執行處理時,請使用標準 Oracle Linux 8 作業系統映像檔或啟用 Oracle Linux 8 GPU 的映像檔。如果您使用標準 Oracle Linux 作業系統映像檔,請確定需要安裝 NVIDIA vGPU 驅動程式。我們將在教學課程中使用 Oracle Linux 8 GPU 映像檔。
-
展開「開機磁碟區 (Boot Volume)」區段,即可將開機磁碟區至少增加到 250GB,並將 VPU 增加到更高的效能,以獲得更佳的干擾。
-
使用以上的參數啟動執行處理。
作業 2:安裝 Automatic1111 的先決條件
-
由於 NVIDIA 驅動程式包含在 Oracle Linux GPU 建置映像檔中,因此只要執行 nvidia-smi 命令即可確認其存在與功能。這樣可確保所有內容均已正確設定,且 GPU 驅動程式如預期般運作。
-
成長 FileSystem OCI 執行處理系統記憶體隨附 46.6GB 預設值。由於我們的開機磁碟區增加到 300GB,因此請讓我們使用 OCI Util 的內建 OCI 命令來擴充檔案系統。
若要在開機磁碟區增加到 300GB 之後,擴充 OCI 執行處理上的檔案系統,您可以使用內建的 OCI (Oracle Cloud Infrastructure) 命令。以下說明如何進行:
-
檢查目前的磁碟使用狀況:調整檔案系統大小時,最好先檢查目前的磁碟使用狀況,以確保其反映增加的開機磁碟區大小。您可以將
df
指令用於此用途:df -h
確認可用空間與新的開機磁碟區大小 (300GB) 相符。
-
調整檔案系統大小:使用 OCI 公用程式命令調整檔案系統大小,以使用增加的儲存體。實際的指令會依您使用的特定作業系統和檔案系統而有所不同。以下為 Oracle Linux 8 所使用。
sudo /usr/libexec/oci-growfs
當要求確認您正在擴充分割區時,請輸入 'y'。
-
驗證檔案系統擴充:執行 resize 指令之後,請再次檢查磁碟使用狀況,以確認檔案系統已經成功擴充:
df -h
現在應該會反映增加的檔案系統大小。
依照這些步驟,您應該可以在 OCI 執行處理上擴充檔案系統,以使用增加的開機磁碟區所提供的額外儲存空間。
-
-
在 Oracle Linux 8 中安裝 Python 3。10.6 。
sudo dnf update -y sudo dnf install curl gcc openssl-devel bzip2-devel libffi-devel zlib-devel wget make -y wget https://www.python.org/ftp/python/3.10.6/Python-3.10.6.tar.xz tar -xf Python-3.10.6.tar.xz cd Python-3.10.6/ ./configure --enable-optimizations make -j 2 nproc sudo make altinstall python3.10 -V
-
現在已安裝 Python3.10.6,請讓我們安裝 git 來複製 Git 儲存區域。
sudo dnf install git
-
複製 Automatic1111 。
git clone https://github.com/AUTOMATIC1111/stable-diffusion-webui.git
您的複製目錄中應該要有穩定 -diffusion-webui 的儲存區域。
-
將您最喜愛的「穩定差異模型」下載至
stable-diffusion-webui/models/Stable-Diffusion
目錄。- 對於我們的使用案例,我已從 stable-diffusion-v1-5 下載 v1-5-pruned.ckpt。
-
更新 Firewall 規則 以允許連接埠 7860 流量。
sudo firewall-cmd --list-all # To check existing added ports sudo firewall-cmd --zone=public --permanent --add-port 7860/tcp sudo firewall-cmd --reload sudo firewall-cmd --list-all # Confirm that port has been added.
作業 3:執行 AUTOMATIC1111
-
順利安裝 Python 3。10.6 後,下載了 AUTOMATIC1111 軟體和必要的穩定擴散模型,我們已經準備好執行 AUTOMATIC1111 來向前邁進。不過,在繼續之前,請先微調組態,以最佳化穩定擴散影像產生的速度和整體品質。
-
編輯
webui-user.sh
檔案並進行下列調整。您可以在stable-diffusion-webui
目錄中找到此檔案。此程序檔負責設定 AUTOMATIC1111 的引數,必須瞭解和更新可用的參數。-
依下列方式修改參數:新增
listen
以在連接埠 7860 上將此參數當作伺服器來執行,啟用擴充功能存取以安裝偏好的穩定差異擴充,並將精確度設為完整。# Commandline arguments for webui.py, for example: export COMMANDLINE_ARGS="--medvram --opt-split-attention" export COMMANDLINE_ARGS="--listen --enable-insecure-extension-access --precision full --no-half-vae --no-half --theme light"
-
請確定使用 Python3.10 的下列參數。
# python3 executable python_cmd="python3.10"
-
下列參數會安裝最新的 PyTorch2,而非預設的 PyTorch。這在推論和影像反覆速度上已證明更好。
# install command for torch export TORCH_COMMAND="pip install clean-fid numba numpy torch==2.0.1+cu118 torchvision --force-reinstall --extra-index-url https://download.pytorch.org/whl/cu118"
-
-
確定沒有任何語法錯誤之後,請執行命令檔 webui.sh (不要與 Webui-user.sh 混淆,先前編輯的檔案)。
bash webui.sh
此程序的結果應包括安裝 AUTOMATIC1111 的所有必要套裝軟體,包括最新的 PyTorch2。它也會載入基本模型並在連接埠 7860 上啟動推斷伺服器。如有需要,您可以修改 webui-user.sh 檔案來自訂連接埠。
-
確認使用上述連接埠 7860 上執行的伺服器成功部署之後,讓我們繼續存取「穩定差異」應用程式。開啟您的 Web 瀏覽器並輸入下列位址:
http://<PublicIP>:7860
,將"<PublicIP>"
取代為執行處理的公用 IP 位址。
當您執行此動作後,應用程式應該會載入,如下圖所示。您可以在右上角找到想要的模型,如反白所示。
作業 4:透過服務管理程式 systemctl 部署 AUTOMATIC1111
-
在路徑
/etc/systemd/system
中建立檔案stable-diffusion.service
,並在檔案stable-diffusion.service
中輸入以下內容。[Unit] Description=systemd service start stable-diffusion [Service] WorkingDirectory=/home/opc/stable-diffusion-webui ExecStart=bash webui.sh User=opc [Install] WantedBy=multi-user.target
-
請務必將工作目錄變更為必要目錄。
-
執行下列命令以重新載入並啟用 / 啟動服務。
sudo systemctl daemon-reload sudo systemctl enable stable-diffusion.service sudo systemctl start stable-diffusion.service
-
執行下列命令以檢查服務的狀態。
sudo systemctl start stable-diffusion.service
要了解與改進的地方
- 穩定擴散模型包含各種大小與版本,包括 v1.1、v1.2、v1.3、v1.4、v1.5、v2.0、v2.1 和 vSDXL。這些版本依其功能的遞增順序列出,以及可完成的功能。例如,所有 v1 模型都能夠產生原生 512x512 映像檔。v2 可以原生產生 768x768 映像檔,而不需要精確度。v1 模型的檔案大小通常落在每個檢查點模型的 6-8GB 範圍之內,而 v2 模型的每個檢查點模型的檔案大小約為 5.5GB。
模型載入
-
多 GB 模型會在執行開始時載入到您的 GPU VRAM,而許多 CUDA 核心則會以每秒數百次的方式處理。相關的資料傳輸速率依物理定律定義的絕對限制運作。在圖形卡內,電氣信號在光速下導晶片所需時間等因素並不算低估。
-
GPU 會處理一組計算,接著發出訊號通知 CPU 以提供更多處理資料。接著,當 CPU 存取系統記憶體來擷取另一批資料,並透過 PCI-E 將資料傳送至 GPU 時,它會等待。GPU 完成資料後,系統會加以處理,然後再次對 CPU 進行訊號,輸入另一個等待階段。
-
這就是為什麼 VRAM 在 AI 任務中扮演著重要的角色。如果可以在作業開始時,將所有必要的資料和指示預先載入圖形卡上,使其能夠以其最快的內部速度處理它們,而且只需在結論時收集結果,就能大幅減少等待時間並減少浪費的資源。
-
在我們的使用案例中,我們使用 VM.GPU.A10.1,此 VM 配備 24GB RAM 的 NVIDIA A10 GPU。單一 NVIDIA A10 GPU 已不足以順利執行 v1.5 作業。然而,隨著提示的複雜度增加,產生時間長短,反覆速度也會降低。有 v2 個穩定差異模型的刪減版本,能夠以比原始大小的 v2 相對位置快速且順暢的方式執行作業,主要是由於它們的空間需求降低所致。雖然所有版本的穩定擴散模型都可以在單一 NVIDIA A10 24 GB GPU 內容納,但反覆和影像產生時間的步伐取決於各種因素,包括特定模型、大小、提示複雜性、抽樣步驟、影像尺寸、高解析度調整、批次大小等。
-
在即將推出的教學課程中,我們將探索如何分割模型、將模型分散至多個 GPU,以及在單一機器內使用多個 GPU 執行穩定的差異化。我們亦將探討對現有穩定擴散基準模式的微調。
相關連結
確認書
作者 - Abhiram Ampabathina (資深雲端架構師)
其他學習資源
探索 docs.oracle.com/learn 的其他實驗室,或者存取更多 Oracle Learning YouTube 頻道上的免費學習內容。此外,請瀏覽 education.oracle.com/learning-explorer 以成為 Oracle Learning 檔案總管。
如需產品文件,請造訪 Oracle Help Center 。
Deploy Stable Diffusion Automatic1111 on Oracle Cloud Infrastructure GPUs
F87725-01
October 2023
Copyright © 2023, Oracle and/or its affiliates.