0?背景
? ? ? ? 雖然網(wǎng)絡(luò)上已經(jīng)有很多類似的文章,但是講linux?上通過?stable-diffussion-webui整合各類生產(chǎn)力插件的還比較少,而且親測有效的更是鳳毛菱角。為了幫助大家避坑,筆者特意利用休息的時間寫了這篇文章。力求讓小白玩家也能夠上手。
? ? ? ? 在linux整合stable-difussion有什么用:
? ? ? ? 1、幫助創(chuàng)作者提高生產(chǎn)力。因為主流的A100、H100等顯卡都是跑在服務(wù)器上面的專業(yè)卡,而服務(wù)器99%是用Linxu系統(tǒng)。當(dāng)然您硬是要給服務(wù)器裝Windows也是可以的,但實際上可能會造成性能浪費。在Linux服務(wù)器上配置一臺A100顯卡的GPU服務(wù)器即使是用40G版本的單卡,也能滿足一個小型工作室對生產(chǎn)力的需求了。
? ? ? ? 2、幫助研究AI應(yīng)用領(lǐng)域的伙伴增強認知,很多東西不自己親自去搭一個、跑一個、改一個是很難在腦海中形成對知識的深刻認知的。
? ? ? ? 3、在linux上運行服務(wù)會更穩(wěn)定,更專業(yè)。
實驗環(huán)境:
服務(wù)器 | SuperMicro?超威 |
操作系統(tǒng) | Ubuntu 20.04.6 LTS Release:?? ?20.04 Codename:?? ?focal |
CPU | Architecture: ? ? ? ? ? ? ? ? ? ?x86_64 CPU op-mode(s): ? ? ? ? ? ? ? ? ?32-bit, 64-bit Byte Order: ? ? ? ? ? ? ? ? ? ? ?Little Endian Address sizes: ? ? ? ? ? ? ? ? ? 46 bits physical, 57 bits virtual CPU(s): ? ? ? ? ? ? ? ? ? ? ? ? ?48 On-line CPU(s) list: ? ? ? ? ? ? 0-47 Thread(s) per core: ? ? ? ? ? ? ?2 Core(s) per socket: ? ? ? ? ? ? ?12 |
GPU | Nvidia A100?sxm?40G * 4 (Nvlink?雙卡連接)? |
內(nèi)存 | 512Gb |
?筆者估算在不進行任何量化或其它壓縮的情況下能穩(wěn)定運行的最低配置要求:
服務(wù)器 | SuperMicro?超威 |
操作系統(tǒng) | Ubuntu 18\20.04.6 LTS Release:? ? 18\20.04 Codename:?? ?focal |
CPU | 4核以上夠用就行 |
GPU | 支持CUDA平臺的N卡,顯存8G以上。 |
內(nèi)存 | 16Gb以上 |
磁盤 | 固態(tài)或者機械(40G以上) |
????????
1 介紹
1.1?StableDiffussionWebUI?
github地址:https://github.com/AUTOMATIC1111/stable-diffusion-webui
項目簡介:
????????該項目是一個對stable-diffussion生態(tài)進行整合的項目,其優(yōu)點是簡單易用,容易上手,截至本文寫作時github標(biāo)星92.5k+。其集成了文生圖、圖生圖、圖生文、訓(xùn)練、插件擴展等核心功能。也可以通過擴展插件(extension)集成其它的sd生態(tài)下的項目,如文生視頻、視頻對口型等模型。
? ? ? ? 其支持windows、linux、macosx 3大操作系統(tǒng)。其中windows有一鍵安裝包。Linux可以通過腳本一鍵安裝(但是對于法力不夠的煉丹師在github下載代碼和在huggingface下載模型文件將變得極其困難)。
1.1.1 StableDiffusion?介紹
Stable Diffusion is a machine learning model based on latent diffusion that has the capability to convert textual descriptions into high-quality images. Developed collaboratively by CompVis, Stability AI, and LAION, this model is trained on a subset of the LAION-5B database, consisting of 512x512 resolution images. Stable Diffusion is a latent diffusion model that generates desired image samples, such as faces, by progressively removing random Gaussian noise.
Stable Diffusion是一種基于潛在擴散的機器學(xué)習(xí)模型,能夠?qū)⑽谋久枋鲛D(zhuǎn)化為高質(zhì)量的圖像。該模型由CompVis、Stability AI和LAION聯(lián)合開發(fā),使用LAION-5B數(shù)據(jù)庫的子集進行訓(xùn)練,該數(shù)據(jù)庫包含512x512分辨率的圖像。Stable Diffusion是一種潛在擴散模型,通過逐步去除隨機高斯噪聲來生成感興趣的圖像樣本,例如人臉等。
最新版本的SD包含了768*768的數(shù)據(jù)集進行訓(xùn)練。
常見名詞安利:
預(yù)訓(xùn)練模型(pre model):也稱基座模型,是指在大量數(shù)據(jù)集上面提前訓(xùn)練好的模型,其本質(zhì)是一堆參數(shù)集,未經(jīng)過遷移訓(xùn)練,這個時候的預(yù)訓(xùn)練模型并不具備特定的專業(yè)能力。通常需要大量算力才能訓(xùn)練pre-model,一般大公司或者機構(gòu)才玩得起。
finetune model:?在預(yù)訓(xùn)練模型的基礎(chǔ)上通過遷移訓(xùn)練,用以完成特定任務(wù)的模型。一般分為全量參數(shù)微調(diào)和部分參數(shù)微調(diào),微調(diào)相對于于預(yù)訓(xùn)練所消耗的算力資源要小得多,所需要的數(shù)據(jù)集也要小得多。但是經(jīng)過微調(diào)以后,模型的能力卻能得到質(zhì)變。finetune?后的model使用方式和基座模型一樣,放到models/Stable-diffusion。
Loro?model:也是一種微調(diào)模型,不同的是Loro通常僅微調(diào)特定的層,如Linner層(全連接層),非常靈活,開銷很小。要想獲得不同的lora,可以是到網(wǎng)絡(luò)上C站或國內(nèi)的AI圖站下載。下載后的lora文件直接放到Stable Diffusion安裝目錄的models的lora目錄里。刷新后就可使用。(煉丹師們口中的丹就是它)
VAE美化模型:VAE,全名Variational autoenconder,中文叫變分自編碼器。作用是:濾鏡+微調(diào)。等于美顏相機。vaemodel通常放到models/VAE
Embeddings:數(shù)據(jù)嵌入。簡單點說就是給模型外掛了一個記憶盤,把一些你需要教它的知識存儲在這里面,這個記憶盤實質(zhì)是一個向量數(shù)據(jù)庫,將你需要嵌入的信息轉(zhuǎn)化為高維向量,然后通過在高維比較相似度來查詢數(shù)據(jù)。模型每次干活前從這里查詢相關(guān)數(shù)據(jù),但嚴(yán)格來說embedding不應(yīng)該被定義為微調(diào),因為它并沒有修改模型本身的參數(shù)。在SD中創(chuàng)建Embeddings需要安裝cond_stage_model。
DreamBooth:可用于訓(xùn)練預(yù)調(diào)模型用的。是使用指定主題的圖像進行演算,訓(xùn)練后可以讓模型產(chǎn)生更精細和個性化的輸出圖像。
LyCORIS模型:此類模型也可以歸為Lora模型,也是屬于微調(diào)模型的一種。一般文件大小在340M左右。不同的是訓(xùn)練方式與常見的lora不同,但效果似乎會更好不少。使用此類模型,需要安裝插件? https://ghproxy.com/https://github.com/KohakuBlueleaf/a1111-sd-webui-locon
1.2 text2video
github地址:https://github.com/kabachuha/sd-webui-text2video
項目簡介:
? ? ? ? 該項目是一個基于sdwebui的文生視頻的擴展插件,提供了擴展界面和基礎(chǔ)模型。用戶在安裝插件以后可以替換自己的模型運行,目前支持大部分開源的text2video模型。
1.3 SadTalker
github地址:GitHub - OpenTalker/SadTalker: [CVPR 2023] SadTalker:Learning Realistic 3D Motion Coefficients for Stylized Audio-Driven Single Image Talking Face Animation
項目簡介:
? ? ? ? 該項目是一個通過音頻驅(qū)動圖片合成對口型視頻的開源項目。你可以提供一段音頻(或者文字)驅(qū)動一張人物圖片去對口型合成視頻。
2?安裝配置
2.1?安裝基礎(chǔ)組件
如果你已經(jīng)安裝好了以下基礎(chǔ)組件和配置,則可忽略。
#可以使用以下一行命令將Ubuntu的apt源設(shè)置為阿里云鏡像:
#對于Ubuntu 20.04 (Focal Fossa)版本:
sudo sed -i 's/archive.ubuntu.com/mirrors.aliyun.com/g' /etc/apt/sources.list
#對于Ubuntu 18.04 (Bionic Beaver)版本:
sudo sed -i 's/archive.ubuntu.com/mirrors.aliyun.com/g' /etc/apt/sources.list
#運行以上命令后,系統(tǒng)會將源地址中的"archive.ubuntu.com"替換為"mirrors.aliyun.com",從而將apt源設(shè)置為阿里云鏡像。 然后,運行以下命令更新apt源列表:
sudo apt update
# 安裝Python3和Python3-venv
sudo apt install wget git python3 python3-venv pip
# 設(shè)置pip 阿里云鏡像
cp /etc/apt/sources.list /etc/apt/sources.list.backup
curl -o /etc/apt/sources.list http://mirrors.aliyun.com/repo/ubuntu`lsb_release -cs`.list
apt update
# 安裝ffmpeg
sudo apt install ffmpeg
# 安裝Nvidia驅(qū)動和Cuda平臺
2.2?安裝StableDifussionWebUI
2.1.1?從Gitee下載代碼,從源碼安裝(好處是遇到問題更容易解決,也能做一些自己的修改)。
# 創(chuàng)建應(yīng)用文件夾
mkdir /usr/local/apps
cd /usr/local/apps
# Clone 代碼(這里從Gitee clone,避免網(wǎng)絡(luò)問題)
git clone https://gitee.com/sd-webui/stable-diffusion-webui.git
或者從鏡像clone (git clone https://mirror.ghproxy.com/https://github.com/AUTOMATIC1111/stable-diffusion-webui.git)
/usr/local/apps/stable-diffusion-webui
# 修改啟動腳本
vi webui.sh
# 定位到第7行代碼
# 【ESC】 :7
# 注釋這段代碼(這是用于識別系統(tǒng)環(huán)境的代碼,在某些虛擬環(huán)境下可能識別不正確,我們不需要它)
# If run from macOS, load defaults from webui-macos-env.sh
if [[ "$OSTYPE" == "darwin"* ]]; then
if [[ -f webui-macos-env.sh ]]
then
source ./webui-macos-env.sh
fi
fi
# 修改下載腳本,將git代碼源切換為鏡像下載的代碼
vi modules/stable-diffusion-webui
# 定位到第232行
# 【ESC】:232
將如下代碼:
xformers_package = os.environ.get('XFORMERS_PACKAGE', 'xformers==0.0.20')
gfpgan_package = os.environ.get('GFPGAN_PACKAGE', "https://github.com/TencentARC/GFPGAN/archive/8d2447a2d918f8eba5a4a01463fd48e45126a379.zip")
clip_package = os.environ.get('CLIP_PACKAGE', "https://github.com/openai/CLIP/archive/d50d76daa670286dd6cacf3bcd80b5e4823fc8e1.zip")
openclip_package = os.environ.get('OPENCLIP_PACKAGE', "https://github.com/mlfoundations/open_clip/archive/bb6e834e9c70d9c27d0dc3ecedeebeaeb1ffad6b.zip")
stable_diffusion_repo = os.environ.get('STABLE_DIFFUSION_REPO', "https://github.com/Stability-AI/stablediffusion.git")
k_diffusion_repo = os.environ.get('K_DIFFUSION_REPO', 'https://github.com/crowsonkb/k-diffusion.git')
codeformer_repo = os.environ.get('CODEFORMER_REPO', 'https://github.com/sczhou/CodeFormer.git')
blip_repo = os.environ.get('BLIP_REPO', 'https://github.com/salesforce/BLIP.git')
修改為:
xformers_package = os.environ.get('XFORMERS_PACKAGE', 'https://ghproxy.com/https://github.com/TencentARC/xformers/archive/0.0.20.zip')
gfpgan_package = os.environ.get('GFPGAN_PACKAGE', "https://ghproxy.com/https://github.com/TencentARC/GFPGAN/archive/8d2447a2d918f8eba5a4a01463fd48e45126a379.zip")
clip_package = os.environ.get('CLIP_PACKAGE', "https://ghproxy.com/https://github.com/openai/CLIP/archive/d50d76daa670286dd6cacf3bcd80b5e4823fc8e1.zip")
openclip_package = os.environ.get('OPENCLIP_PACKAGE', "https://ghproxy.com/https://github.com/mlfoundations/open_clip/archive/bb6e834e9c70d9c27d0dc3ecedeebeaeb1ffad6b.zip")
stable_diffusion_repo = os.environ.get('STABLE_DIFFUSION_REPO', "https://ghproxy.com/https://github.com/Stability-AI/stablediffusion.git")
k_diffusion_repo = os.environ.get('K_DIFFUSION_REPO', 'https://ghproxy.com/https://github.com/crowsonkb/k-diffusion.git')
codeformer_repo = os.environ.get('CODEFORMER_REPO', 'https://ghproxy.com/https://github.com/sczhou/CodeFormer.git')
blip_repo = os.environ.get('BLIP_REPO', 'https://ghproxy.com/https://github.com/salesforce/BLIP.git')
# 手動下載官方模型<Optional> (如果你的服務(wù)器網(wǎng)速不佳,請手動下載模型,再放到對應(yīng)目錄上面)
cd models/Stable-diffusion/
將從https://huggingface.co/stabilityai/stable-diffusion-2-1/tree/main下載的v2-1_768-nonema-pruned.safetensors模型放到這個目錄下面。(v2.1的標(biāo)準(zhǔn)模型,當(dāng)然你也可以去下載其它finetune模型,同樣放在這個目錄下面即可)
# 啟動腳本開始安裝,會自動安裝StableDifussion以及其它擴展
bash webui.sh --enable-insecure-extension-access --xformers --server-name 0.0.0.0
按照上面這個流程基本都能安裝成功,由于本期講的是插件集成,所以SDWebUI的安裝較為簡潔。
常見問題:
如果遇到repositories問題可以cd到對應(yīng)目錄,
1、如果有requirements.txt?則 pip install -r?requirements.txt?
2、如果有setup.py?則 pip install -e .?
。安裝完成后的效果圖:
2.3?Text2Video?Extension?安裝
2.4.1?插件安裝
? ? ? ? 1、選擇SDWebUI的extension
? ? ? ? 2、選擇Install?From?URL
? ? ? ? 3、點擊Install按鈕?
因為這個項目在gitee上也沒有很好的搬運工,這里我們使用鏡像地址。?
https://mirror.ghproxy.com/https://github.com/kabachuha/sd-webui-text2video.git
2.4.2?模型下載安裝
1、在安裝完成插件并且重啟UI后,sdwebui會自動下載sd-webui-text2video插件適配的模型文件,但是通常情況下我們的服務(wù)器可能會遇到下載問題,這個時候就需要通過其它渠道下載好模型到本地電腦,然后再上傳到服務(wù)器手動安裝。
2、下載模型
# 創(chuàng)建路徑
cd models;mkdir ModelScope;cd ModelScope;make dir t2v
#?下載模型,并放入對應(yīng)的文件夾中。以下參考插件官方說明:
VideoCrafter(WIP):
- 通過此鏈接下載預(yù)訓(xùn)練的 T2V 模型,并將 model.ckpt 放入 models/VideoCrafter/model.ckpt 中。然后使用與 ModelScope 相同的 GUI 管道。
型號范圍:
- 將模型放入 stable-diffusion-webui/models/text2video,每個完整模型應(yīng)該有自己的文件夾。模型由四部分組成:
VQGAN_autoencoder.pth
、configuration.json
和。確保是文本 JSON 文件而不是保存的 HTML 網(wǎng)頁(單擊右側(cè)的 ?? 字符,不要通過右鍵單擊保存)。建議的要求從 6 GB VRAM 開始。open_clip_pytorch_model.bin
text2video_pytorch_model.pth
configuration.json
突出的微調(diào)列表是模型搜索的良好起點。
在此處加入開發(fā)或報告問題和功能請求https://github.com/kabachuha/sd-webui-text2video
如果您喜歡這個擴展,請在 GitHub 上給它一個星!??
去Huggigface下載預(yù)訓(xùn)練模型
damo-vilab/modelscope-damo-text-to-video-synthesis at main
#?最后你的模型目錄文件如下
- models
? ? - ModelScope
? ? ? ? - t2v
? ? ? ? ? ? ? ? -?configuration.json
? ? ? ? ? ? ? ? - open_clip_pytorch_model.bin
? ? ? ? ? ? ? ? - text2video_pytorch_model.pth
? ? ? ? ? ? ? ? - VQGAN_autoencoder.pth
如果你要切換多個模型也可以如下方式組織模型文件目錄:
- models
? ? - ModelScope
? ? ? ? - t2v
? ? ? ? ? ? ? ? -?configuration.json?
{ "framework": "pytorch",
"task": "text-to-video-synthesis",
"model": {
"type": "latent-text-to-video-synthesis",
"model_args": {
"ckpt_clip": "./animov/open_clip_pytorch_model.bin",
"ckpt_unet": "./animov/text2video_pytorch_model.pth",
"ckpt_autoencoder": "./animov/VQGAN_autoencoder.pth",
"max_frames": 25,
"tiny_gpu": 1
},
"model_cfg": {
"unet_in_dim": 4,
"unet_dim": 320,
"unet_y_dim": 768,
"unet_context_dim": 1024,
"unet_out_dim": 4,
"unet_dim_mult": [1, 2, 4, 4],
"unet_num_heads": 8,
"unet_head_dim": 64,
"unet_res_blocks": 2,
"unet_attn_scales": [1, 0.5, 0.25],
"unet_dropout": 0.1,
"temporal_attention": "True",
"num_timesteps": 1000,
"mean_type": "eps",
"var_type": "fixed_small",
"loss_type": "mse"
}
},
"pipeline": {
"type": "latent-text-to-video-synthesis"
}
}
? ? ? ? ? ? ? ? -?animov
? ? ? ? ? ? ? ? ????????- open_clip_pytorch_model.bin
? ? ? ? ? ? ? ? ????????- text2video_pytorch_model.pth
? ? ? ? ? ? ? ????????? - VQGAN_autoencoder.pth
?配置好模型文件以后重啟sdwebui
運行結(jié)果如下:
2.4?SadTalker?安裝
2.4.1?插件安裝
????????1、選擇SDWebUI的extension
? ? ? ? 2、選擇Install?From?URL
? ? ? ? 3、點擊Install按鈕
可以看到我們使用了gitee上面的SadTalker倉庫(感謝搬運工們)避免可能遇到的網(wǎng)絡(luò)問題,并節(jié)約時間。
https://gitee.com/ikaros-521/SadTalker.git
? ? ? ? 4、然后耐心等待安裝完成即可
?2.4.2?模型下載安裝
? ? ? ? 1、在安裝完成插件并且重啟UI后,sdwebui會自動下載SadTalker的模型文件,但是通常情況下我們的服務(wù)器可能會遇到下載問題,這個時候就需要通過其它渠道下載好模型到本地電腦,然后再上傳到服務(wù)器手動安裝。
? ? ? ? 參考SadTalker項目的文檔,從百度云盤下載模型文件:
百度云盤: we provided the downloaded model in?checkpoints, 提取碼: sadt.?And?gfpgan, 提取碼: sadt.
? ? ? ? 2、將下載好的模型文件上傳到對應(yīng)的位置
新建文件夾用于放模型文件
mkdir /usr/local/apps/stable-diffusion-webui/extensions/SadTalker/checkpoints
如下圖所示將下載的模型文件放入對應(yīng)目錄
cd /usr/local/apps/stable-diffusion-webui/models/GFPGAN
注意:生產(chǎn)視頻過程中可能遇到ffmpeg插件版本過低導(dǎo)致的報錯。執(zhí)行下列命令手動升級版本:
# 更新安裝包,萬能大法
pip install --upgrade imageio-ffmpeg
# 如果還是報錯
sudo apt update
sudo apt upgrade ffmpeg
?重新啟動sdwebui即可。
運行效果圖:
2.5?系統(tǒng)負載情況
3?參考文獻
1.GitHub - AUTOMATIC1111/stable-diffusion-webui: Stable Diffusion web UI
2.https://github.com/kabachuha/sd-webui-text2video
3.GitHub - OpenTalker/SadTalker: [CVPR 2023] SadTalker:Learning Realistic 3D Motion Coefficients for Stylized Audio-Driven Single Image Talking Face Animation文章來源:http://www.zghlxwxcb.cn/news/detail-751493.html
4.?Stable Diffusion的各類模型介紹(Stable Diffusion研習(xí)系列03) - 知乎文章來源地址http://www.zghlxwxcb.cn/news/detail-751493.html
到了這里,關(guān)于stable-diffussion-webui+sd-webui-text2video+SadTalker數(shù)字人生產(chǎn)力工具安裝配置教程(Linux Ubuntu,避坑帖)的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!