AI繪畫:CPU/核顯部署Stable Diffusion全攻略)
1. 為什么要在CPU或核顯上跑Stable Diffusion你可能已經(jīng)看過無數(shù)篇關(guān)于Stable Diffusion WebUI的教程它們無一例外都在強調(diào)一張高性能的獨立顯卡NVIDIA GPU是多么重要。確實對于追求速度和批量出圖的創(chuàng)作者來說GPU是必需品。但現(xiàn)實情況是很多人手頭只有一臺集成顯卡的輕薄本或者一臺沒有獨顯的辦公臺式機甚至是一臺云服務(wù)器上面只有CPU資源。難道這就意味著與AI繪畫無緣了嗎答案是否定的。Stable Diffusion WebUI的核心推理引擎也就是那個把文字變成圖片的“大腦”是完全可以運行在純CPU或者Intel/AMD集成顯卡核顯上的。我最初接觸SD時用的就是一臺老舊的Intel NUC迷你主機只有一顆i7處理器和自帶的Iris Xe核顯。雖然生成一張512x512的圖片需要一兩分鐘但對于學(xué)習(xí)原理、測試提示詞、嘗試不同模型來說完全夠用。這就像用一輛小排量汽車學(xué)駕駛雖然飆不了高速但學(xué)會所有操作流程綽綽有余。選擇CPU/核顯部署通?;谝韵聨追N非常實際的場景硬件限制學(xué)生黨、上班族的主力機沒有獨立顯卡或者顯卡太老比如GTX 10系列以前無法有效支持。學(xué)習(xí)與測試你只是想了解Stable Diffusion的工作原理測試不同的模型和LoRA的效果對出圖速度沒有太高要求。服務(wù)器環(huán)境在一些云服務(wù)器或租用的VPS上GPU實例價格昂貴而CPU實例相對便宜適合用于搭建一個可隨時訪問的、慢速但可用的繪畫服務(wù)。節(jié)能與靜音獨立顯卡功耗和發(fā)熱都大在不需要高強度創(chuàng)作時用CPU/核顯運行更安靜、更省電。所以如果你符合以上任何一種情況那么這篇基于CPU/核顯的配置指南就是為你準(zhǔn)備的。我們將一步步解決環(huán)境搭建、性能優(yōu)化和常見問題讓你即便在沒有獨顯的“劣勢”環(huán)境下也能順利開啟AI繪畫之旅。2. 部署前的核心準(zhǔn)備理解差異與選對工具在動手之前我們必須清醒地認(rèn)識到CPU/核顯模式與GPU模式的本質(zhì)區(qū)別這決定了后續(xù)的所有配置邏輯。最大的區(qū)別在于計算后端。在GPU模式下WebUI默認(rèn)使用torch的CUDA或DirectML后端將繁重的神經(jīng)網(wǎng)絡(luò)計算卸載到顯卡的數(shù)千個核心上并行處理速度極快。而在CPU模式下所有的計算都依賴于CPU的通用計算核心雖然現(xiàn)代CPU核心數(shù)也不少但架構(gòu)并非為這種密集矩陣運算專門優(yōu)化因此速度會慢很多。核顯集成GPU的情況稍好一些它本身是一個小型GPU可以通過如OpenVINO、DirectML等接口來加速但其計算單元數(shù)量和顯存帶寬與獨立顯卡相比仍有數(shù)量級上的差距。因此我們的準(zhǔn)備工作需要圍繞“如何讓CPU/核顯跑起來”以及“如何讓它跑得盡量快一點”展開。2.1 系統(tǒng)與Python環(huán)境確認(rèn)首先確保你的系統(tǒng)是64位的Windows 10/11或者Linux/macOS。32位系統(tǒng)無法運行。接下來是Python這是整個項目的基石。為什么必須是Python 3.10Stable Diffusion WebUI所依賴的PyTorch等關(guān)鍵庫在特定版本下有預(yù)編譯的、針對不同平臺包括CPU優(yōu)化過的二進制包。Python 3.10.x是這個生態(tài)圈目前兼容性最廣、最穩(wěn)定的版本。使用3.11或3.12可能會在安裝某些依賴時遇到找不到預(yù)編譯包需要從源碼編譯的窘境這對新手來說是災(zāi)難。我的具體操作訪問Python官網(wǎng)找到3.10.x版本例如3.10.6, 3.10.11的安裝程序。安裝時務(wù)必勾選“Add Python 3.10 to PATH”。這能讓你在命令行中直接使用python命令。安裝完成后打開命令行CMD或PowerShell輸入python --version確認(rèn)版本正確。2.2 關(guān)鍵工具Git的安裝WebUI的啟動腳本和后續(xù)的擴展管理都依賴于Git來從代碼倉庫拉取更新。沒有Git你將無法使用一鍵啟動腳本。下載前往Git官網(wǎng)下載適用于你系統(tǒng)的安裝包。安裝一路默認(rèn)選項即可。安裝后在命令行輸入git --version能顯示版本號即成功。2.3 針對CPU/核顯的特別優(yōu)化器選擇正確的Torch這是整個準(zhǔn)備環(huán)節(jié)最核心的一步直接決定了WebUI能否啟動以及運行效率。我們不再安裝默認(rèn)的CUDA版本PyTorch。對于純CPU用戶你需要安裝純CPU版本的PyTorch。打開命令行執(zhí)行以下命令pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cpu這個命令會從PyTorch官方源安裝針對CPU優(yōu)化的、不包含任何CUDA驅(qū)動的庫。安裝后你可以在Python中驗證import torch print(torch.__version__) # 輸出版本號如2.1.0 print(torch.cuda.is_available()) # 會輸出False這很正常因為我們就是CPU模式對于Intel核顯用戶推薦嘗試如果你的CPU是Intel第11代Tiger Lake或更新架構(gòu)的酷睿處理器其內(nèi)置的Iris Xe或UHD核顯性能不錯可以嘗試通過Intel的OpenVINO或微軟的DirectML后端來加速。不過對于WebUI最直接的方式是安裝支持DirectML的PyTorch適用于Windows。這能讓PyTorch調(diào)用核顯進行計算。pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/directml安裝后WebUI在啟動時可能會嘗試使用DirectML后端。注意這種方式兼容性仍在完善中如果遇到問題回退到純CPU版本通常是更穩(wěn)定的選擇。對于AMD核顯用戶情況更復(fù)雜一些。在Windows上可以嘗試上述DirectML版本。在Linux上則可以嘗試ROCm后端但配置門檻較高。對于絕大多數(shù)AMD核顯用戶尤其是在Windows下我建議先從純CPU版本開始保證能運行起來再考慮后續(xù)優(yōu)化。注意請務(wù)必在安裝WebUI之前完成PyTorch的安裝。因為WebUI的啟動腳本會檢查已安裝的PyTorch并嘗試基于此配置環(huán)境。如果先裝WebUI它可能會自動安裝一個帶CUDA的PyTorch導(dǎo)致與你的硬件不兼容。3. Stable Diffusion WebUI 的安裝與啟動環(huán)境準(zhǔn)備好后我們就可以開始部署WebUI本體了。這個過程相對標(biāo)準(zhǔn)化。3.1 獲取WebUI源代碼在你希望安裝的目錄下例如D:\AI\打開命令行。使用Git克隆官方倉庫git clone https://github.com/AUTOMATIC1111/stable-diffusion-webui.git這會在當(dāng)前目錄創(chuàng)建一個stable-diffusion-webui文件夾。3.2 放置模型文件WebUI只是一個操作界面生成圖片需要“大腦”也就是模型。下載一個基礎(chǔ)模型如sd_xl_base_1.0.safetensors可以從CivitAI等社區(qū)獲取。將下載的模型文件.safetensors或.ckpt格式放入stable-diffusion-webui\models\Stable-diffusion\目錄下。3.3 首次啟動與關(guān)鍵參數(shù)配置這是CPU/核顯用戶最關(guān)鍵的一步。我們不能直接運行webui-user.bat因為它會嘗試檢測CUDA。進入stable-diffusion-webui目錄。我們需要修改啟動參數(shù)。找到webui-user.bat文件用記事本打開。找到set COMMANDLINE_ARGS這一行。等號后面就是我們添加啟動參數(shù)的地方。對于純CPU運行最基本的參數(shù)是--use-cpu all它告訴WebUI將所有組件包括VAE、CLIP都強制使用CPU。set COMMANDLINE_ARGS--use-cpu all對于希望嘗試核顯DirectML的用戶可以嘗試set COMMANDLINE_ARGS--use-directml如果啟動失敗或出錯還是換回--use-cpu all。保存文件然后雙擊運行webui-user.bat。腳本會開始自動安裝剩余的依賴包。這個過程可能會比較慢因為要下載很多Python庫。請保持網(wǎng)絡(luò)通暢并耐心等待。如果遇到某個包下載失敗通常是網(wǎng)絡(luò)問題重新運行腳本即可。首次啟動成功后命令行窗口會顯示一個本地URL通常是http://127.0.0.1:7860。在瀏覽器中打開這個地址你就看到了Stable Diffusion WebUI的界面。4. 性能調(diào)優(yōu)與實用技巧讓慢變得可用成功啟動只是第一步在CPU/核顯上默認(rèn)設(shè)置下的生成速度可能慢到讓你懷疑人生比如5-10分鐘一張圖。通過以下調(diào)整我們可以將速度提升到可接受的范圍如1-3分鐘一張。4.1 模型與參數(shù)的精簡策略模型選擇是第一要務(wù)。龐大的模型對CPU是巨大負(fù)擔(dān)。首選小型模型放棄完整的SDXL 1.0約6-7GB轉(zhuǎn)而使用它的蒸餾版或更小的模型如sd_xl_turbo或sd-1.5系列的優(yōu)秀小模型很多在2-4GB之間。模型文件越小需要加載和計算的數(shù)據(jù)量就越少。使用FP16精度模型確保你下載的模型是fp16精度版本而不是fp32。fp16半精度浮點數(shù)在幾乎不損失肉眼可見質(zhì)量的前提下將數(shù)據(jù)量減半能顯著減少內(nèi)存占用和計算量。采樣器與步數(shù)優(yōu)化采樣器選擇Euler a或Heun這類傳統(tǒng)采樣器在CPU上通常比DPM 2M Karras等復(fù)雜采樣器更快。你可以做一個簡單測試固定其他參數(shù)用不同采樣器跑20步對比時間。大幅減少采樣步數(shù)在GPU上我們可能用20-30步追求極致細(xì)節(jié)。在CPU上我們的目標(biāo)是“看到效果”。對于很多模型8-15步已經(jīng)能產(chǎn)生可辨認(rèn)、有創(chuàng)意的結(jié)果。尤其是配合sd_xl_turbo這類模型5步以內(nèi)就能出圖。分辨率控制生成512x512的圖片比768x768快得多。先從512x512開始滿意后再嘗試提升。不要一開始就挑戰(zhàn)高分辨率。4.2 WebUI內(nèi)置的CPU優(yōu)化選項在WebUI的設(shè)置Settings頁面有一些隱藏選項對CPU用戶很有幫助。進入Settings - Optimization。找到“Cross attention optimization”。這個選項決定了注意力層的計算方式。對于CPU將默認(rèn)的Automatic或Doggettx改為xFormers或Scaled-Dot-Product可能會帶來速度提升。注意xFormers需要額外安裝且對CPU的優(yōu)化有限但值得一試。如果安裝xFormers失敗Scaled-Dot-Product是一個穩(wěn)定的備選。在Settings - Stable Diffusion頁面可以勾選“Make torch use deterministic algorithms”。這個選項在某些情況下能提升CPU計算的穩(wěn)定性但可能不影響速度。最重要的一個設(shè)置在Settings - User interface頁面底部找到“Quicksettings list”。在輸入框里添加--medvram和--lowvram這兩個參數(shù)。雖然它們本是為顯存小的GPU設(shè)計但在CPU模式下它們能優(yōu)化內(nèi)存調(diào)度策略有時能避免內(nèi)存溢出并略微提升速度。添加后點擊頁面頂部的“Apply settings”然后重啟WebUI。4.3 利用系統(tǒng)資源與進階思路關(guān)閉不必要的程序生成圖片時CPU占用率會達(dá)到100%。關(guān)閉瀏覽器、辦公軟件等能為Stable Diffusion騰出更多計算資源。監(jiān)控溫度長時間滿負(fù)載運行CPU溫度會很高。建議使用HWMonitor等工具監(jiān)控溫度確保散熱良好避免過熱降頻反而導(dǎo)致更慢。嘗試OpenVINOIntel用戶專屬這是一個更深入的優(yōu)化方向。Intel OpenVINO工具套件可以將模型轉(zhuǎn)換成針對Intel CPU和核顯高度優(yōu)化的中間格式IR從而大幅提升推理速度。但這需要將Stable Diffusion的模型進行轉(zhuǎn)換步驟較為復(fù)雜涉及安裝OpenVINO Runtime和運行轉(zhuǎn)換腳本。這屬于“玩家級”操作一旦成功性能提升可能是翻倍的。如果你有興趣可以搜索“Stable Diffusion OpenVINO”尋找相關(guān)教程。5. 常見問題排查與解決方案在CPU/核顯環(huán)境下你會遇到一些在GPU教程里看不到的“特色”問題。5.1 啟動失敗Torch相關(guān)錯誤問題描述運行webui-user.bat后出現(xiàn)紅色錯誤提示關(guān)鍵詞包含CUDA、torch.cuda.is_available()返回False等。根因分析WebUI的腳本或某個依賴庫仍然嘗試檢測并使用CUDA但你的環(huán)境里沒有。解決方案檢查啟動參數(shù)確保webui-user.bat中的COMMANDLINE_ARGS已經(jīng)設(shè)置為--use-cpu all。檢查PyTorch版本在命令行中進入WebUI目錄下的venv虛擬環(huán)境如果有然后運行python -c import torch; print(torch.__version__)。確認(rèn)你安裝的是CPU或DirectML版本而不是cu118CUDA 11.8等版本。強制重裝PyTorch如果發(fā)現(xiàn)裝錯了可以手動在WebUI的虛擬環(huán)境中重裝。首先激活虛擬環(huán)境通常位于venv\Scripts\activate然后使用pip uninstall torch torchvision torchaudio卸載再用前面提到的--index-url命令安裝正確的版本。使用離線依賴包在某些網(wǎng)絡(luò)環(huán)境下自動安裝會失敗。你可以嘗試從GitHub Releases頁面下載已經(jīng)打包好的依賴包如果有提供或者在一個網(wǎng)絡(luò)好的機器上安裝好整個環(huán)境然后拷貝venv文件夾過來。5.2 生成過程崩潰內(nèi)存不足OOM問題描述生成圖片時進程突然崩潰命令行提示Killed或MemoryError。根因分析Stable Diffusion模型和中間計算需要大量內(nèi)存RAM。生成高分辨率圖片或使用大型模型時可能超出你的物理內(nèi)存導(dǎo)致系統(tǒng)開始使用硬盤上的虛擬內(nèi)存交換空間速度急劇下降直至崩潰。解決方案降低分辨率這是最有效的方法。從256x256或512x512開始。使用更小的模型換用文件體積更小的模型。啟用--medvram和--lowvram如前所述在WebUI的設(shè)置中添加這些參數(shù)。增加系統(tǒng)虛擬內(nèi)存在Windows中手動將系統(tǒng)托管的分頁文件虛擬內(nèi)存設(shè)置得更大一些例如設(shè)置為物理內(nèi)存的1.5-2倍。這不能提升速度但可以防止崩潰。分批處理如果使用“批處理”生成多張圖將“批處理數(shù)量”設(shè)為1用“批處理大小”來控制總數(shù)可以減少單次內(nèi)存峰值。5.3 生成速度極慢無法忍受問題描述啟動和生成都正常但每張圖要等好幾分鐘。根因分析這是CPU模式的常態(tài)。我們需要接受它“慢”的事實并通過優(yōu)化讓它“慢得合理”。解決方案綜合應(yīng)用第4章的所有技巧模型換用sd-1.5或更小的模型。參數(shù)采樣步數(shù)降到10-15使用Euler a采樣器。分辨率鎖定512x512。系統(tǒng)關(guān)閉所有后臺程序確保電源模式為“高性能”。心態(tài)調(diào)整將CPU上的Stable Diffusion視為一個“構(gòu)思工具”或“提示詞測試器”。用它快速驗證想法和構(gòu)圖找到滿意的提示詞和參數(shù)組合。等到需要產(chǎn)出高質(zhì)量最終圖時再去尋找GPU資源例如按小時租用云GPU進行高速渲染。這種“CPU構(gòu)思GPU渲染”的工作流對于資源有限的個人來說非常經(jīng)濟高效。通過以上步驟你應(yīng)該能夠在一臺沒有獨立顯卡的電腦上成功搭建并運行Stable Diffusion WebUI。雖然速度無法與GPU相比但它為你打開了一扇門讓你能夠不受硬件束縛地學(xué)習(xí)和探索AI繪畫的無限可能。記住重要的不是工具的速度而是你使用工具創(chuàng)造的創(chuàng)意。