[轉(zhuǎn)載] i卡也能跑AI畫(huà)圖?Stable Diffusion with Intel Arc GPU運(yùn)行實(shí)戰(zhàn)

2023.2.22編輯:已經(jīng)有大佬寫(xiě)了適配i卡的webui,指路?
https://github.com/Aloereed/stable-diffusion-webui-ipex-arc(B站同id)

本文章轉(zhuǎn)載自英特爾員工2023年2月3日的帖子:
[https://medium.com/intel-analytics-software/stable-diffusion-with-intel-arc-gpus-f2986bba8365]
參考文檔:
https://intel.github.io/intel-extension-for-pytorch/xpu/latest/tutorials/installation.html
https://github.com/intel/intel-extension-for-pytorch

? ? “The Intel Extension for PyTorch”項(xiàng)目(ipex)通過(guò)在PyTorch官方注冊(cè)的“device =?xpu”設(shè)備為英特爾獨(dú)立 GPU 提供深度學(xué)習(xí)加速。
? ? 這允許用戶在Ubuntu平臺(tái),或者在WIndows10 21H2/Win11平臺(tái)依托WSL2或者Docker?for?windows,來(lái)配置顯卡加速pytorch訓(xùn)練和推理。
? (和AMD顯卡的ROCm相比,后者只能運(yùn)行在ubuntu等Linux系統(tǒng)上,但是仍然可以使用device =?cuda設(shè)備代碼,無(wú)須修改源代碼,更加友好)
? ? Docker Desktop有點(diǎn)類(lèi)似于windows平臺(tái)的虛擬機(jī)包和鏡像管理系統(tǒng),它基于WSL2開(kāi)發(fā),因此和WSL2一樣具有VScode遠(yuǎn)程開(kāi)發(fā)等功能。通過(guò)拉取Docker?Hub提供的官方鏡像可以簡(jiǎn)化環(huán)境依賴(lài)安裝,非常方便。
? ? 本文將會(huì)使用Intel?Arc?A770 獨(dú)顯運(yùn)行一個(gè)最基礎(chǔ)的Stable?Diffusion?AI?text-image模型。

步驟
環(huán)境依賴(lài)
? ? 首先要保證安裝了正確的Arc顯卡驅(qū)動(dòng)(參見(jiàn)官方文檔的安裝說(shuō)明)

? ? 確認(rèn)系統(tǒng)已升級(jí)到Win11?或最新的Win10,以獲得完整的WSL2功能。
安裝基于WSL2的 windows Docker
? ??首先要啟用WSL2功能,這部分不是重點(diǎn),網(wǎng)上教學(xué)非常豐富。注意這一步和安卓模擬器沖突,只能選一個(gè)
? ??
wsl -l -v
? ? 確認(rèn)WSL2正常啟用后,在Docker官網(wǎng)安裝客戶端并重啟,確認(rèn)windows Docker啟動(dòng)成功,需要對(duì)Docker的操作有一定了解。

? ? (如果不想用Docker的話,可以參考官方文檔,在wsl2?ubuntu或Ubuntu物理機(jī)下手動(dòng)安裝ipex及其依賴(lài)環(huán)境,道理都是一樣的)
拉取官方ipex鏡像
? ??官方提供的ipex鏡像可以通過(guò) [hub.docker.com/r/intel/intel-extension-for-pytorch/tags]?訪問(wèn),Arc獨(dú)顯用戶理論上應(yīng)該使用gpu這個(gè)鏡像,但也可以試試latest。鏡像中已經(jīng)包含了OneAPI?Toolkit等環(huán)境依賴(lài),比較方便。在啟動(dòng)Docker容器之前,先把SD離線模型下載下來(lái)!
mkdir c:\data
cd c:\data
git lfs install
git clone https://huggingface.co/runwayml/stable-diffusion-v1-5
(具體路徑請(qǐng)自行修改)
? ? 運(yùn)行官方鏡像啟動(dòng)一個(gè)容器(注意這里原作者留了一個(gè)端口給Jupter?Notebook開(kāi)發(fā),但我更喜歡用VScode,功能非常強(qiáng)大。用戶可以自行決定哪一個(gè)更適合)
docker run -it --rm
??????????????? --device /dev/dxg
??????????????? -v /usr/lib/wsl:/usr/lib/wsl
??????????????? -v c:\data:/data
??????????????? -p 9999:9999
??????????????? intel/intel-extension-for-pytorch:gpu
? ? 通過(guò)python命令行檢查docker是否連接到A770顯卡。并通過(guò)聲明的9999端口啟動(dòng)Jupyter?Notebook遠(yuǎn)程連接
python -c "import torch;import intel_extension_for_pytorch as ipex;print(ipex.xpu.get_device_name(0))"
cd c:/data
pip install -q jupyter
jupyter notebook --allow-root --ip 0.0.0.0 --port 9999
? ? 這里應(yīng)該能夠正確識(shí)別顯卡

用Arc?A770?顯卡運(yùn)行Stable?Diffusion?text2image模型
? ? 用瀏覽器打開(kāi)Jupyter給的URL來(lái)進(jìn)行開(kāi)發(fā)。運(yùn)行SD模型。
# install Stable Diffusion for this notebook
%pip install -q diffusers transformers accelerate
?
import intel_extension_for_pytorch as ipex
import torch
from diffusers import StableDiffusionPipeline
# check Intel GPU
print(ipex.xpu.get_device_name(0))
# load the Stable Diffusion model
pipe = StableDiffusionPipeline.from_pretrained("./stable-diffusion-v1-5",
?????????????????????????????????????????????? revision="fp16",
?????????????????????????????????????????????? torch_dtype=torch.float16)
# move the model to Intel Arc GPU
pipe = pipe.to("xpu")
# model is ready for submitting queries
pipe("an astronaut riding a horse on mars").images[0]
# run another query
pipe("cat sitting on a park bench").images[0]

? ? 可以成功得到結(jié)果,收工


? ??同樣,用戶可以通過(guò)這個(gè)項(xiàng)目在WSL2 和 Intel Arc GPU 上運(yùn)行任何其他的?PyTorch 模型,并且通過(guò)官方提供的ipex.optimize函數(shù)對(duì)運(yùn)行速度進(jìn)行優(yōu)化。
? ? 目前大部分AI繪畫(huà)的前端腳本都是基于CUDA進(jìn)行編寫(xiě),因此兼容ipex?xpu接口的webui仍有待開(kāi)發(fā)。
? ? 關(guān)鍵詞:webui?novelai?ai繪圖?ai繪畫(huà)?英特爾顯卡?
