Stable Diffusion是一個開源的深度學習模型,能夠以較低的計算需求和高效的性能根據文本提示生成對應的圖像。阿里云基于Stable Diffusion,在其基礎上提供更加簡潔易操作的UI并進行封裝,為企業提供了AI模型應用Stable-Diffusion-WebUI。本文為您介紹如何手動部署Stable-Diffusion-WebUI服務。
方案概覽
本方案介紹了使用模型在線服務PAI-EAS部署Stable-Diffusion-WebUI,并在WebUI進行AI繪畫的詳細過程。完成本方案的部署及體驗,預計產生費用不超過15元。(假設您選擇最低規格PAI-EAS資源,且資源運行時間不超過60分鐘。如調整了資源規格,請以控制臺顯示的實際報價以及最終賬單為準)。
本方案以模型在線服務PAI-EAS為基礎,實現對Stable-Diffusion-WebUI(以下簡稱SD WebUI)進行云端便捷部署,并使用其進行AI繪畫。具體優勢與功能如下:
使用便捷:快捷部署,開箱即用;可根據需求動態切換GPU等底層資源。
企業級功能:前后端分離改造,支持多用戶對多GPU的集群調度;支持用戶隔離;支持賬單拆分。
插件及優化:支持PAI-Blade性能優化工具;提供FileBrowser插件,允許用戶在桌面端上傳和下載云端模型、圖片;提供自研的ModelZoo插件,支持開源模型下載加速。
部署形態
PAI SD WebUI支持以單機版、集群版或API版的形態進行部署,三者基于完全相同的部署流程。
單機版:面向個人用戶,通過PAI SD WebUI解決方案獲得與桌面端使用體驗完全一致的云端WebUI服務。支持純界面化操作,部署方式簡單。
集群版:面向企業客戶,通過PAI SD WebUI解決方案獲得WebUI集群服務,支持多卡調度、用戶身份識別和隔離。集群版通常適合有專屬IT或運維支持的用戶,集群版開放了更多可配置的參數供IT和運維使用,美術或設計用戶簡單熟悉后也可自主完成集群版的部署和使用。更多信息,請參見5分鐘使用EAS部署Stable Diffusion API服務。
API版:建議在WebUI上搭建業務系統,并在二次開發時使用。使用異步API模式進行部署,并通過API訪問來實現多實例的水平伸縮。結合EAS異步推理,您可以獲得請求排隊、異步推理、負載均衡和自動彈性伸縮等能力。社區WebUI提供了標準的文生圖、圖生圖等接口,而PAI在這些接口的基礎上進行了定制優化,以適應云上分布式場景。
方案架構
在實際部署時,您可以按本方案提供的默認設置完成部署,也可以根據實際資源規劃修改部分設置。部署完成后,運行架構如下:
本方案的技術架構包括以下基礎設施和云服務:
專有網絡VPC:形成云上私有網絡。
交換機:提供基本的網絡分段和隔離功能。
公網NAT網關:用于將私網資源的請求轉發到公網,實現私網資源對外提供服務的能力。
彈性公網IP:與NAT網關結合使用,幫助用戶實現出口流量轉發、入口地址轉換和公網訪問等功能,更靈活地管理和使用公網資源。
安全組:用于限制專有網絡VPC下交換機的網絡流入和流出。
存儲系統:推薦使用文件存儲NAS。大容量、高性價比、彈性擴展,適合通用類文件共享業務,用于存儲使用SD WebUI生成的各類結果。
模型在線服務PAI-EAS實例:用于部署SD WebUI。
規劃網絡和資源
在進行網絡和資源規劃時,您可以根據實際環境進行規劃,各規劃項說明如下:
規劃網絡
規劃項 | 說明 |
地域 | 本解決方案的地域采用新加坡。 選擇地域的基本原則請參見地域和可用區。由于在新加坡地域開通彈性公網IP服務后,訪問Civitai和Github的網速高效穩定,您可以直接通過WebUI下載插件和Civitai模型,且WebUI的網頁操作體驗與國內地域的部署一致,因此推薦選擇新加坡。 |
專有網絡VPC | 本方案創建1個專有網絡VPC作為專有網絡。 您可以在阿里云中創建自己的專屬虛擬網絡,以實現隔離和私密性。VPC還提供了靈活的IP地址管理、子網劃分和網絡訪問控制等功能。 |
交換機 | 本方案在創建專有網絡VPC時創建1臺交換機。 在VPC內部的子網中進行數據包轉發和連接網絡資源。 |
公網NAT網關 | 本方案在VPC中創建1個公網NAT網關。 阿里云提供的一種網絡轉發設備,主要用于將私網資源的請求轉發到公網,實現私網資源對外提供服務的能力。 |
彈性公網IP | 本方案在創建公網NAT網關時一同創建1個彈性公網IP。 阿里云提供的一種公網訪問服務,可以與NAT網關結合使用,幫助您實現出口流量轉發、入口地址轉換和公網訪問等功能,更靈活地管理和使用公網資源。 |
安全組 | 本方案創建1個安全組。 安全組用于限制專有網絡VPC下云服務器ECS的網絡流入和流出規則。 |
規劃云資源
規劃項 | 說明 |
模型在線服務PAI-EAS | 本方案會把SD WebUI部署在模型在線服務PAI-EAS上。 |
文件存儲NAS(推薦) | 本方案推薦使用NAS作為共享存儲。 阿里云上獨立的高性能存儲產品,與PAI SD WebUI方案打通。在掛載文件存儲NAS后,可以快速方便地存儲和使用SD WebUI生成的各種結果。 |
部署資源
規劃好資源后,請按照以下步驟部署方案中的所有資源。關于部署資源的相關事項,請參見附錄。
創建專有網絡VPC和交換機
在本方案中,您需要創建1個專有網絡和1臺交換機。
登錄專有網絡控制臺。
在頂部菜單欄,選擇新加坡地域。
在左側導航欄,單擊專有網絡。
在專有網絡頁面,單擊創建專有網絡,創建1個專有網絡和1臺交換機。關鍵參數配置如下,其余參數取默認:
參數
示例值
說明
專有網絡
名稱
vpc_SDWebUI
VPC名稱,建議您在部署過程中新建一個VPC作為本方案的專有網絡。
IPv4網段
192.168.0.0/16
在創建VPC時,您必須按照無類域間路由塊(CIDR block)的格式為您的專有網絡劃分私網網段。阿里云VPC支持的網段信息請參見專有網絡組成部分。
在網絡規劃時可以按照“管理網段-開發網段-測試網段-生產網段”等規則做好規劃。網段一旦投入使用,調整過程復雜,因此規劃十分重要。
交換機
名稱
vswitch_SDWebUI
虛擬交換機名稱。
可用區
新加坡 可用區A
在規劃的地域內選擇1個可用區,虛擬交換機部署在這個可用區上。
建議選擇排序靠后的,一般此類可用區較新。新可用區資源更充沛,新規格也會在新的可用區優先上線。
IPv4網段
192.168.0.0/24
配置虛擬交換機的IPv4網段,為VPC網段的真子集。
單擊確定,完成專有網絡和交換機的創建。
創建公網NAT網關和彈性公網IP
您已經在專有網絡VPC下的1個可用區創建了1臺交換機。接下來您需要創建公網NAT網關和彈性公網IP。
登錄專有網絡控制臺。
在頂部菜單欄,選擇新加坡地域。
在左側導航欄,選擇
。在公網NAT網關頁面,單擊創建NAT網關,創建1個公網NAT網關和1個彈性公網IP。關鍵參數配置如下,其余參數取默認:
參數
示例值
說明
標簽鍵
WebUI
資源的標識符,分類的名稱。
標簽值
SD_WebUI
與標簽鍵相關聯的具體值。
所屬專有網絡
vpc_SDWebUI/****
NAT網關所屬的專有網絡。
本方案選擇上述步驟已創建的專有網絡VPC。
關聯交換機
vswitch_SDWebUI/****
NAT網關關聯的交換機。
本方案選擇上述步驟已創建的交換機。
實例名稱
nat_SDWebUI
NAT網關的實例名稱。
訪問模式
VPC全通模式(SNAT)
NAT網關的訪問模式。
本方案選擇VPC全通模式,VPC中的所有機器即可通過NAT網關訪問公網。
彈性公網IP
新購彈性公網IP
可以選擇已有彈性公網IP,也可以新購。
帶寬峰值
200 Mbps
設置帶寬峰值,支持隨時調整帶寬峰值。
計費類型
按使用流量計費
設置計費類型。
單擊立即購買,完成公網NAT網關和彈性公網IP的創建。
創建安全組
您已經在專有網絡VPC下的1個可用區創建了1臺交換機。接下來您需要創建1個安全組,用于限制該專有網絡VPC下交換機的網絡流入和流出。
在左側導航欄,選擇
。在頂部菜單欄,選擇新加坡地域。
在安全組頁面,單擊創建安全組,創建1個安全組,關鍵參數配置如下,其余參數取默認:
參數
示例值
說明
安全組名稱
sg_SDWebUI
設置安全組的名稱。
網絡
****/vpc_SDWebUI
選擇上述步驟已創建的專有網絡VPC。
安全組類型
普通安全組
本方案選擇普通安全組,以實現公網出方向所有地址可訪問。實際部署時,建議選擇安全性更高的企業級安全組。
入方向
80
和443
本方案使用默認開通的80和443端口號,刪除其他端口號。
單擊創建安全組,完成安全組的創建。
創建文件存儲NAS
在進行模型服務部署時,推薦選擇存儲規格為性能型的NAS進行掛載,以提高模型切換和圖像生成的速度。因此,您需要創建1個通用型NAS。
在左側導航欄,選擇
。在頂部菜單欄,選擇亞太東南1(新加坡)地域。
在文件系統列表頁面,單擊創建文件系統,選擇創建通用型NAS。關鍵參數配置如下,其余參數取默認:
參數
示例值
說明
存儲規格
性能型
選擇通用型NAS的規格。推薦選擇性能型,切換模型和出圖速度更快。
專有網絡VPC
vpc_SDWebUI
選擇上述步驟中已創建的專有網絡VPC。
虛擬交換機
vswitch_SDWebUI
選擇上述步驟中已創建的虛擬交換機。
選中服務協議,單擊立即購買,完成文件存儲NAS的創建。
創建完成后,您可以在文件系統列表頁面對應的文件系統 ID/名稱處單擊,修改文件系統的名稱。在本方案中,將其修改為nas_SDWebUI。
部署PAI-EAS模型服務
在成功部署資源后,您可以部署SD WebUI模型服務。本方案以部署集群版模型服務為例,具體操作步驟如下:
登錄PAI控制臺。
在頂部菜單欄,選擇新加坡地域。
在左側導航欄單擊工作空間列表,在工作空間列表頁面中單擊任意一個工作空間名稱,進入對應工作空間內。如果沒有可用的工作空間,請創建工作空間。
在工作空間頁面的左側導航欄選擇
,進入模型在線服務(EAS)頁面。在推理服務頁簽下單擊部署服務,選擇自定義部署,在自定義部署模式下配置以下關鍵參數,其余參數取默認:
參數
示例值
說明
基本信息
服務名稱
sdwebui
自定義服務名稱,在同一個地域下,全局唯一。
環境信息
部署方式
選擇鏡像部署并選中開啟Web應用。
服務的部署方式。
鏡像配置
鏡像類型:官方鏡像
鏡像名稱:stable-diffusion-webui>stable-diffusion-webui:4.2-cluster-webui。
說明建議選擇最新集群版本。
選擇SD WebUI的鏡像,本方案以部署集群版模型服務為例。
模型配置
配置類型:通用型NAS
選擇文件系統:選擇NAS文件系統。
文件系統掛載點:nas_SDWebUI以及相應掛載點
文件系統路徑:
/
掛載路徑:
/code/stable-diffusion-webui/data-nas
選擇掛載的共享存儲、掛載點和掛載路徑。
運行命令
./webui.sh --listen --port 8000 --skip-version-check --no-hashing --no-download-sd-model --skip-install --api --filebrowser --cluster-status --sd-dynamic-cache --data-dir /code/stable-diffusion-webui/data-nas
完成上述配置后,系統將自動生成相應的運行命令。
使用NAS掛載后,需要在運行命令中增加命令:
--data-dir /code/stable-diffusion-webui/data-nas
。(可選)您也可以在運行命令中增加參數
--blade
來開啟blade加速,以提升出圖速度。更多參數說明,請參見附錄。
端口號
8000
完成上述配置后,系統將自動生成相應的端口號。
資源部署
資源類型
公共資源
選擇用于部署和運行服務的資源。
實例數
1
服務實例數。
部署資源
資源類型:GPU
資源規格:ecs.gn6i-c16g1.4xlarge
建議使用GPU類型,例如選擇規格為ecs.gn6i-c16g1.4xlarge。
專有網絡(自動匹配)
專有網絡(VPC)
vpc_SDWebUI
系統將自動匹配與NAS一致的專有網絡VPC、交換機和安全組,無需額外配置。
交換機
vswitch_SDWebUI
安全組名稱
sg_SDWebUI
完成上述配置后,在服務配置區域會自動生成對應的JSON文件。
單擊部署,大約等待5~10分鐘后即可完成模型部署。
方案驗證
完成以上操作后,您已經成功完成了SD WebUI集群版的部署。您可以啟動WebUI頁面,進行模型推理驗證。
在模型在線服務(EAS)頁面中,單擊上述步驟中已部署的模型服務服務方式列的查看Web應用。
首次登錄時,您需要在您的專屬工作空間首頁中等待約5分鐘,然后單擊進入Stable Diffusion WebUI,進入WebUI頁面。
在SD WebUI頁面文生圖頁簽中,輸入正向提示詞Prompt,例如
a monkey is eating a green banana
,然后單擊生成,即可完成AI繪圖,效果圖如下:后續,您可以通過SD WebUI完成文生圖、圖生圖等任務,還可以使用SD WebUI進行后期處理、模型融合和訓練等操作。另外,您還可以使用FileBrowser進行文件管理,Filebrowser支持在桌面端上傳和下載云端模型和圖片。
資源清理
在本方案中,您部署了1個PAI-EAS服務,創建了1個專有網絡VPC、1個交換機、1個公網NAT網關、1個彈性公網IP、1個安全組和1個文件存儲NAS(如果您使用NAS進行存儲)。測試完方案后,您可以參考以下規則處理對應產品的實例,避免繼續產生費用:
釋放1個PAI-EAS模型在線服務:
登錄PAI控制臺,在 頁面,單擊進入EAS,在推理服務頁簽中單擊目標服務操作列下的刪除,按照界面提示刪除該服務。
釋放1個彈性公網IP:
登錄專有網絡控制臺,在 頁面,找到目標彈性公網IP,然后單擊操作列下的解綁,將彈性公網IP與公網NAT網關解綁,然后再單擊操作列下的釋放,釋放該彈性公網IP。
釋放1個公網NAT網關:
登錄專有網絡控制臺,在 頁面,找到目標網關,然后在操作列單擊刪除,釋放該公網NAT網關。
釋放1臺交換機:
登錄專有網絡控制臺,在交換機頁面,找到目標交換機,然后單擊操作列下的刪除,按照界面提示釋放該交換機。
釋放1個專有網絡VPC:
登錄專有網絡控制臺,在專有網絡頁面,找到目標VPC,然后單擊操作列下的刪除,按照界面提示釋放該專有網絡VPC。
釋放1個安全組:
登錄ECS管理控制臺,在 頁面,找到目標安全組,然后單擊操作列下的刪除,刪除該安全組。
刪除1個文件存儲NAS:
登錄文件存儲控制臺,在 頁面,找到目標文件存儲NAS,然后單擊操作列下的刪除,刪除該NAS。
相關文檔
EAS提供了Stable Diffusion的場景化部署方式,您只需配置幾個參數,即可一鍵部署基于Stable Diffusion WebUI的服務。關于場景化部署支持的部署形態、部署流程、調用方式以及常見問題等更詳細的內容介紹,請參見AI繪畫-SDWebUI部署。
附錄
部署和使用tips
部署地域:建議服務部署在新加坡
新加坡地域開通彈性公網IP服務后,訪問Civitai和Github的網速高效穩定,您可以直接通過WebUI下載插件、Civitai模型,且WebUI網頁操作體驗與國內region部署一致。
國內地域因網絡問題,無法直接在WebUI下載Civitai模型、插件,需要手動下載到本地后,再上傳至云端服務。
共享存儲:建議使用共享存儲NAS,且部署時使用
--data-dir
參數該操作會將模型、圖片等核心內容均放置于共享存儲,服務重啟、刪除重建等操作不會受到影響。
共享存儲可選OSS或NAS,建議優先選擇NAS(通用型NAS,性能型規格),在模型切換、圖庫瀏覽器等場景使用NAS存儲的速度比OSS快4倍以上。
如果需要使用對象存儲OSS Bucket,在切換模型場景時性能低,影響體驗。如果需要將圖片統一存儲到OSS中,可以通過配置,將模型存儲于NAS,生成的圖片存儲于OSS。
版本和部署方式選擇:建議選擇最新版本
x.x-standard:推薦單用戶測試驗證時使用。標準單機部署,UI模式,僅能部署單個實例,不具備分布式能力,基本和社區WebUI保持一致。
x.x-cluster-webui:推薦在公司內部有美術、設計等多人團隊,并且盡可能節約成本的場景中使用。多租戶集群版模式,UI模式,支持多用戶同時使用前端界面,但資源相互隔離,包括使用的模型、Lora、插件、輸出圖片等。并且每個用戶前端均支持個性化設置,也可支持共享模型等設置。另外,后端實際推理服務也可以和普通EAS服務一樣,支持定時伸縮、彈性伸縮,并且支持根據實際上線的用戶數和請求數來擴縮容,最大程度上節約服務運行成本。
x.x-api:建議在WebUI上搭建業務系統,并在二次開發時使用。使用異步API模式進行部署,并通過API訪問來實現多實例的水平伸縮。結合EAS異步推理,您可以獲得請求排隊、異步推理、負載均衡和自動彈性伸縮等能力。社區WebUI提供了標準的文生圖、圖生圖等接口,而PAI在這些接口的基礎上進行了定制優化,以適應云上分布式場景。
如果有場景上選擇問題,請聯系您的商務經理進行處理。
模型上傳
通過FileBrowser插件上傳。適合Lora等體積較小的文件上傳,批量上傳多個4 GB以上的基礎大模型失敗概率較高。適合美術團隊日常使用。
通過ossutil或ECS掛載NAS上傳。適合批量上傳基礎大模型,需要有一定IT基礎。適合運維或技術團隊協助美術團隊進行一次性上傳。
模型下載
安裝Civitai助手插件后,可以直接下載Civitai模型。適合美術團隊使用。
通過EAS提供的SSH功能,登錄到容器內部通過命令進行下載。適合運維或技術團隊協助美術團隊使用。
服務啟動時可配置的參數說明
公共參數
公共參數
功能說明
使用建議
--blade
啟用PAI-blade加速,提升出圖速度。
建議開啟。
--filebrowser
支持您自主上傳、下載模型或圖片的插件。
默認啟用。
--data-dir /code/stable-diffusion-webui/data-oss
持久化存儲掛載使用的路徑。
掛載持久化存儲時使用,默認起始路徑為
/code/stable-diffusion-webui/
,也可以使用相對路徑。--api
WebUI的API調用模式。
默認啟用。
--enable-nsfw-censor
默認關閉。如果您有安全合規需求,則可以選擇開啟鑒黃過濾功能。
根據業務需要進行調整。
--always-hide-tabs
指定部分Tab頁處于隱藏狀態。
根據業務需要進行調整。
--min-ram-reserved 40 --sd-dynamic-cache
緩存Stable Diffusion大模型到內存中。
無。
集群版參數
說明ckpt的大模型和ControlNet的大模型會自動加載公共目錄下的文件和您自定義的文件。
集群版參數
功能說明
使用建議
--lora-dir
指定公共Lora模型目錄,例如:
--lora-dir /code/stable-diffusion-webui/data-oss/models/Lora
。默認不配置,用戶的所有Lora目錄將被隔離,并且只加載用戶文件夾中的Lora模型。當指定特定目錄后,所有的用戶將同時加載該公共目錄中的Lora模型和用戶文件夾中的Lora模型。
--vae-dir
指定公共VAE模型目錄,例如:
--vae-dir /code/stable-diffusion-webui/data-oss/models/VAE
。默認不配置,用戶的所有VAE目錄將被隔離,并且只加載用戶文件夾中的VAE模型。當指定特定目錄后,所有的用戶只加載該公共目錄下的VAE模型。
--gfpgan-dir
指定公共GFPGAN模型目錄,例如:
--gfpgan-dir /code/stable-diffusion-webui/data-oss/models/GFPGAN
。默認不配置,用戶的所有GFPGAN目錄將被隔離,并且只加載用戶文件夾中的GFPGAN模型。當指定特定目錄后,所有的用戶只加載該公共目錄下的GFPGAN模型。
--embeddings-dir
指定公共embeddings模型目錄,例如:
--embeddings-dir /code/stable-diffusion-webui/data-oss/embeddings
。默認不配置,用戶的所有embeddings目錄將被隔離,并且只加載用戶文件夾中的embeddings模型。當指定特定目錄后,所有的用戶只加載該公共目錄下的embeddings模型。
--hypernetwork-dir
指定公共hypernetwork模型目錄,例如:
--hypernetwork-dir /code/stable-diffusion-webui/data-oss/models/hypernetworks
。默認不配置,用戶的所有hypernetwork目錄將被隔離,并且只加載用戶文件夾中的hypernetwork模型。當指定特定目錄后,所有的用戶只加載該公共目錄下的hypernetwork模型。
--root-extensions
插件目錄使用共享目錄。使用該參數后,所有用戶看到的插件完全相同。
需要集中安裝插件或集中管理插件時使用該參數。