在服務(wù)器上部署 Stable Diffusion 時(shí),因硬件配置、環(huán)境依賴、參數(shù)設(shè)置等差異,常出現(xiàn)各類報(bào)錯(cuò)。本文整理 5 個(gè)高頻問題,從現(xiàn)象分析到實(shí)操解決,幫你快速排查故障,順利啟動(dòng)模型。?
一、顯存不足(最常見):RuntimeError: CUDA out of memory?
1. 報(bào)錯(cuò)現(xiàn)象?
啟動(dòng)模型生成圖片時(shí),終端提示 “CUDA out of memory. Tried to allocate XX MiB (GPU XX; XX GiB total capacity; XX GiB already allocated; XX MiB free; XX GiB reserved in total by PyTorch)”,生成任務(wù)直接中斷。?
2. 核心原因?
- 模型本身占用顯存高(如 SD 1.5 基礎(chǔ)模型加載后約占 2-4GiB,大模型 / LoRA 疊加后更高);?
- 生成參數(shù)設(shè)置不合理(如分辨率過高、批次數(shù)量過大);?
- 服務(wù)器顯存分配機(jī)制未優(yōu)化,殘留進(jìn)程占用顯存。?
3. 解決步驟?
(1)優(yōu)先優(yōu)化參數(shù)(無需硬件升級(jí))?
- 降低生成分辨率:將默認(rèn)的 512×512/768×768 降至 384×384,或啟用 “分塊生成”(如 WebUI 中設(shè)置--xformers參數(shù),支持低顯存下高分辨率生成);?
- 減少批次數(shù)量:在配置文件或 WebUI 中,將 “Batch Size” 設(shè)為 1,“Batch Count” 根據(jù)顯存調(diào)整(2-4 為宜);?
- 啟用顯存優(yōu)化參數(shù):?jiǎn)?dòng)命令中添加以下參數(shù)(二選一,根據(jù)服務(wù)器顯卡適配):?
?# 1. 輕量級(jí)優(yōu)化(適合6-8GiB顯存)?
python launch.py --medvram --opt-split-attention?
# 2. 深度優(yōu)化(適合4-6GiB顯存,可能犧牲少量速度)?
python launch.py --lowvram --opt-split-attention-v1?
?(2)清理殘留顯存占用?
?nvidia-smi # 找到占用顯存的Python/PyTorch進(jìn)程,記錄PID?
??kill -9 [PID] # 替換[PID]為實(shí)際進(jìn)程號(hào),如kill -9 12345?
?(3)硬件 / 驅(qū)動(dòng)輔助優(yōu)化?
- 若服務(wù)器支持多卡,啟用多卡分布式推理(需修改配置文件,示例:--device-id 0,1指定使用 0、1 號(hào)顯卡);?
- 升級(jí) NVIDIA 驅(qū)動(dòng)至 515 + 版本(適配 PyTorch 2.0+,減少顯存浪費(fèi)):?
?sudo apt-get install nvidia-driver-535 # Ubuntu系統(tǒng)示例,根據(jù)顯卡型號(hào)選擇驅(qū)動(dòng)版本?
?二、驅(qū)動(dòng)版本不兼容:CUDA error: no kernel image is available for execution on the device?
1. 報(bào)錯(cuò)現(xiàn)象?
加載模型時(shí)提示 “CUDA error: no kernel image is available for execution on the device”,或啟動(dòng)后直接提示 “PyTorch not compiled with CUDA enabled”。?
2. 核心原因?
- NVIDIA 驅(qū)動(dòng)版本與 Stable Diffusion 依賴的 PyTorch/CUDA 版本不匹配(如驅(qū)動(dòng)支持 CUDA 11.6,但 PyTorch 安裝的是 CUDA 12.1 版本);?
- 服務(wù)器未安裝顯卡驅(qū)動(dòng),或驅(qū)動(dòng)安裝后未重啟生效。?
3. 解決步驟?
(1)確認(rèn)版本匹配關(guān)系?
先查看服務(wù)器顯卡支持的最高 CUDA 版本:?
?nvidia-smi # 右上角顯示“CUDA Version: XX.X”,如12.2?
?再對(duì)照 PyTorch 與 CUDA 的適配表(推薦組合):?
(2)重裝驅(qū)動(dòng)(若版本不匹配)?
?sudo apt-get purge nvidia-*?
?- 安裝對(duì)應(yīng)版本驅(qū)動(dòng):?
?sudo ubuntu-drivers autoinstall # 自動(dòng)安裝適配顯卡的推薦驅(qū)動(dòng)?
sudo reboot # 重啟服務(wù)器生效?
?三、Python 環(huán)境沖突:ModuleNotFoundError: No module named 'xxx'?
1. 報(bào)錯(cuò)現(xiàn)象?
啟動(dòng)時(shí)提示缺失模塊,如 “ModuleNotFoundError: No module named 'diffusers'”“No module named 'transformers'”,即使已執(zhí)行pip install仍報(bào)錯(cuò)。?
2. 核心原因?
- 服務(wù)器存在多個(gè) Python 版本(如 Python 3.8/3.10),pip安裝的依賴包被寫入非當(dāng)前使用的 Python 環(huán)境;?
- 虛擬環(huán)境未激活,依賴包安裝到全局環(huán)境導(dǎo)致沖突。?
3. 解決步驟?
(1)統(tǒng)一 Python 版本并創(chuàng)建虛擬環(huán)境?
- 安裝指定 Python 版本(推薦 3.10,兼容性最佳):?
?sudo apt-get install python3.10 python3.10-venv python3.10-pip?
?- 創(chuàng)建并激活虛擬環(huán)境:?
?# 1. 在Stable Diffusion根目錄創(chuàng)建環(huán)境?
source venv/bin/activate?
# 激活環(huán)境(Windows Server)?
?(2)在虛擬環(huán)境中重新安裝依賴?
- 用官方requirements.txt安裝(避免版本遺漏):?
?# 進(jìn)入Stable Diffusion根目錄?
cd /path/to/stable-diffusion-webui?
# 安裝依賴(添加--no-cache-dir避免緩存沖突)?
pip install --no-cache-dir -r requirements.txt?
?- 若仍缺失個(gè)別模塊,手動(dòng)安裝指定版本:?
?pip install diffusers==0.21.4 transformers==4.30.2 # 示例版本,根據(jù)報(bào)錯(cuò)提示調(diào)整?
?四、依賴包版本不兼容:AttributeError: module 'xxx' has no attribute 'yyy'?
1. 報(bào)錯(cuò)現(xiàn)象?
加載模型或生成圖片時(shí),提示屬性不存在,如 “AttributeError: module 'torch.nn' has no attribute 'SiLU'”“AttributeError: 'UNet2DConditionModel' object has no attribute 'enable_xformers_memory_efficient_attention'”。?
2. 核心原因?
- 關(guān)鍵依賴包版本過高或過低(如diffusers版本與模型要求不匹配,xformers版本與 PyTorch 沖突);?
- 手動(dòng)升級(jí)包時(shí)破壞了原有依賴關(guān)系(如pip install --upgrade torch導(dǎo)致其他包不兼容)。?
3. 解決步驟?
(1)回退到穩(wěn)定版本?
- 查看 Stable Diffusion 官方推薦的依賴版本(以 WebUI 為例,根目錄requirements.txt標(biāo)注了推薦版本);?
?# 回退diffusers和transformers(示例)?
pip install diffusers==0.21.4 transformers==4.30.2?
pip install xformers==0.0.20 # 適配PyTorch 2.0.1?
?(2)修復(fù)依賴關(guān)系?
?pip install [沖突包名]==[推薦版本]?
?五、模型文件損壞 / 路徑錯(cuò)誤:OSError: Unable to open file?
1. 報(bào)錯(cuò)現(xiàn)象?
加載模型時(shí)提示 “OSError: Unable to open file (unable to open database file)” 或 “ValueError: Could not load model [模型路徑]”,且路徑看似正確。?
2. 核心原因?
- 模型文件下載不完整(如 ckpt/safetensors 文件大小遠(yuǎn)小于官方標(biāo)注,或下載時(shí)斷連導(dǎo)致?lián)p壞);?
- 模型路徑包含中文 / 特殊字符(如 “模型庫 / SD1.5.ckpt”),服務(wù)器環(huán)境無法識(shí)別;?
- 模型格式不兼容(如將 LoRA 模型放入主模型目錄,或模型版本與 Stable Diffusion 版本不匹配)。?
3. 解決步驟?
(1)驗(yàn)證模型完整性?
- 查看官方模型大小(如 SD 1.5 官方 ckpt 約 4.27GiB),對(duì)比本地文件:?
?ls -lh /path/to/models/Stable-diffusion/[模型文件].ckpt # 查看文件大小?
?- 若大小不符,重新下載(推薦從 Hugging Face 官方庫或國(guó)內(nèi)鏡像站下載,避免斷點(diǎn)續(xù)傳)。?
(2)修正模型路徑與格式?
- 主模型(ckpt/safetensors)→ models/Stable-diffusion/?
?# 錯(cuò)誤路徑:/home/user/模型/SD1.5.ckpt?
# 正確路徑:/home/user/models/SD1.5.ckpt?
?(3)適配模型版本?
- 若使用較新模型(如 SDXL),需確保 Stable Diffusion 已升級(jí)到支持版本(如 WebUI 需更新至 1.5+):?
?# 進(jìn)入WebUI根目錄,拉取最新代碼?
?