m4 mac mini本地部署ComfyUI,測試Flux-dev-GGUF的workflow模型10步出圖,測試AI繪圖效能,基於MPS(fp16),優點是能耗小和靜音

刘悦的技术博客發表於2024-12-08

m4 mac mini已經發布了一段時間,針對這個產品,更多的是關於價效比的討論,如果拋開各種補貼不論,價位上和以前釋出的mini其實差別不大,真要論價效比,各種windows系統的mini主機的價格其實是吊打蘋果的。

本次我們針對m4 mac mini的AI效能做個測試,使用目前泛用性最廣的AI工作流軟體:ComfyUI框架,基於MPS(fp16)模式進行測試。

Mac Os 本地部署ComfyUI

首先確保本機已經安裝好了基於arm架構的Python3.11,之所以使用Python3.11,是因為這個版本效能有一定的最佳化,又不會像最新的3.13由於版本過新,引發依賴裝不上的問題。

Mac版本Python3.11安裝包的下載地址:

https://python.org

隨後克隆官方專案:

git clone https://github.com/comfyanonymous/ComfyUI.git

接著安裝 MPS 版本的 torch

pip3 install --pre torch torchvision torchaudio --extra-index-url https://download.pytorch.org/whl/nightly/cpu

然後安裝依賴:

pip3 install -r requirements.txt

依賴安裝完畢後,需要升級一下SSL證書:

bash /Applications/Python*/Install\ Certificates.command

接著安裝 ComfyUI 的 Manager 專案,用來安裝各種節點:

cd custom_nodes  
git clone https://github.com/ltdrdata/ComfyUI-Manager.git

至此ComfyUI專案就部署好了。

Flux-dev-GGUF模型下載

下載需要的flux-dev模型,由於官方的模型體積太大(23G),這裡我們下載GGUF的量化版本:

https://pan.quark.cn/s/2907b57697fe

模型名稱分別是:flux1-dev-Q4_1.gguf和t5-v1_1-xxl-encoder-Q5_K_M.gguf,將其分別放到models的UNET目錄和clip目錄。

隨後,回到專案的根目錄,輸入命令,啟動ComfyUI服務:

python3 main.py --force-fp16

這裡強制使用fp16精度用來提升效能。

程式返回:

liuyue@mini ComfyUI % python3 main.py --force-fp16  
[START] Security scan  
[DONE] Security scan  
## ComfyUI-Manager: installing dependencies done.  
** ComfyUI startup time: 2024-12-08 23:04:08.464703  
** Platform: Darwin  
** Python version: 3.11.9 (v3.11.9:de54cf5be3, Apr  2 2024, 07:12:50) [Clang 13.0.0 (clang-1300.0.29.30)]  
** Python executable: /Library/Frameworks/Python.framework/Versions/3.11/bin/python3  
** ComfyUI Path: /Volumes/ssd/work/ComfyUI  
** Log path: /Volumes/ssd/work/ComfyUI/comfyui.log  
  
Prestartup times for custom nodes:  
   0.7 seconds: /Volumes/ssd/work/ComfyUI/custom_nodes/ComfyUI-Manager  
  
Total VRAM 24576 MB, total RAM 24576 MB  
pytorch version: 2.5.1  
Forcing FP16.  
Set vram state to: SHARED  
Device: mps  
Using sub quadratic optimization for cross attention, if you have memory or speed issues try using: --use-split-cross-attention  
[Prompt Server] web root: /Volumes/ssd/work/ComfyUI/web  
### Loading: ComfyUI-Manager (V2.51.9)  
### ComfyUI Revision: 2859 [b4526d3f] | Released on '2024-11-24'  
[ComfyUI-Manager] default cache updated: https://raw.githubusercontent.com/ltdrdata/ComfyUI-Manager/main/alter-list.json  
[ComfyUI-Manager] default cache updated: https://raw.githubusercontent.com/ltdrdata/ComfyUI-Manager/main/model-list.json  
[ComfyUI-Manager] default cache updated: https://raw.githubusercontent.com/ltdrdata/ComfyUI-Manager/main/github-stats.json  
[ComfyUI-Manager] default cache updated: https://raw.githubusercontent.com/ltdrdata/ComfyUI-Manager/main/custom-node-list.json  
Torch version 2.5.1 has not been tested with coremltools. You may run into unexpected errors. Torch 2.4.0 is the most recent version that has been tested.  
[ComfyUI-Manager] default cache updated: https://raw.githubusercontent.com/ltdrdata/ComfyUI-Manager/main/extension-node-map.json  
  
Import times for custom nodes:  
   0.0 seconds: /Volumes/ssd/work/ComfyUI/custom_nodes/websocket_image_save.py  
   0.0 seconds: /Volumes/ssd/work/ComfyUI/custom_nodes/ComfyUI-GGUF  
   0.1 seconds: /Volumes/ssd/work/ComfyUI/custom_nodes/ComfyUI-Manager  
   2.2 seconds: /Volumes/ssd/work/ComfyUI/custom_nodes/ComfyUI-MLX  
  
Starting server  
  
To see the GUI go to: http://127.0.0.1:8188

代表部署成功,訪問:http://127.0.0.1:8188

測試Flux-dev-GGUF工作流

下載基於GGUF的工作流:

https://promptingpixels.com/flux-gguf/

匯入工作流後,輸入提示詞:

a super sexy gal holding a sign that says "ComfyUI Mac"

意思是性感女子舉著一個牌子,上面寫著 ComfyUI Mac

此時,可以直接執行工作流,程式返回:

ggml_sd_loader:  
 13                            144  
 0                              50  
 14                             25  
Requested to load FluxClipModel_  
Loading 1 new model  
loaded completely 0.0 323.94775390625 True  
Requested to load FluxClipModel_  
Loading 1 new model  
  
ggml_sd_loader:  
 1                             476  
 3                             304  
model weight dtype torch.bfloat16, manual cast: None  
model_type FLUX  
Requested to load Flux  
Loading 1 new model  
loaded completely 0.0 7181.8848876953125 True  
 20%|██████████████████▌                                                                          | 2/10 [01:04<04:18, 32.27s/it]

每秒的迭代穩定在30次左右,一張圖大概需要3-5分鐘左右。

筆者的 m4 mac mini 的配置是丐版升級到24G記憶體,在出圖的過程中,透過活動監視器可知,記憶體沒有被佔滿:

可以看到,只使用了21G的記憶體,有網友使用純丐版16G記憶體的mini進行測試,16g記憶體實際刨除系統佔用,空閒最多也就10g,超出的部分只能跑SSD的虛擬記憶體,導致GPU跑不滿,所以丐版16G記憶體是有可能導致出圖的效率降低。

最後是10步迭代的出圖效果:

可以看到,精度沒有下降太多,主要問題還是出圖速度太慢。

結語

m4 mac mini的AI生態還有很大的提升空間,建議AI從業者慎重購買,如果一定要買,也需要避開16G記憶體的版本,因為如果模型體積過大,16G記憶體中真正能使用的其實只有10G記憶體,有可能會導致模型推理效率降低,當然,我們也不能忽視m4 mac mini推理模型的優點,那就是能耗小相對省電,並且使用時的聲音很小,不像N卡裝置動不動就山呼海嘯。

相關文章