Avaliação de Desempenho de Geração de Imagens com ComfyUI e Flux-dev-GGUF no Mac Mini M4

Introdução à Capacidade de IA do Mac Mini M4

O Mac Mini M4 da Apple, embora seja um hardware recente, será o foco de nossa avaliação de desempenho em tarefas de inteligência artificial. Para este teste, utilizaremos o ComfyUI, uma plataforma de fluxo de trabalho de IA amplamente reconhecida, operando no modo MPS (Metal Performance Shaders) com precisão FP16, aproveitando as capacidades de hardware da Apple.

Configuração do ComfyUI no macOS

Para iniciar, é fundamental ter uma instalação do Python 3.11 otimizada para a arquitetura ARM do Mac. Esta versão é recoemndada por oferecer melhorias de desempenho sem os potenciais problemas de compatibilidade de dependências que versões mais recentes, como a 3.13, podem apresentar. O instalador para macOS pode ser obtido no site oficial do Python:

https://www.python.org

Após a instalação do Python, o próximo passo é clonar o repositório oficial do ComfyUI:

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

Em seguida, instale a versão do PyTorch com suporte a MPS, que permite aproveitar o hardware gráfico da Apple:

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

Instale as dependências restantes do ComfyUI:

pip3 install -r requirements.txt

Para evitar problemas com certificados, é aconselhável atualizar os certificados SSL do Python:

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

Para facilitar a gestão de nós (nodes) e modelos, instale o ComfyUI Manager. Navegue até o diretório custom_nodes do ComfyUI e clone o repositório do Manager:

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

Com esses passos, o ambiente ComfyUI estará configurado e pronto para uso.

Obtenção do Modelo Flux-dev-GGUF

Dada a praticidade, optaremos por uma versão quantizada do modelo Flux-dev-GGUF, em vez da versão completa de 23GB. O modelo quantizado pode ser encontrado no seguinte link (verifique a acessibilidade, pois pode variar regionalmente):

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

Os arquivos necessários são flux1-dev-Q4_1.gguf e t5-v1_1-xxl-encoder-Q5_K_M.gguf. Estes devem ser posicionados nos diretórios apropriados dentro da estrutura de modelos do ComfyUI:

  • flux1-dev-Q4_1.gguf no diretório models/UNET.
  • t5-v1_1-xxl-encoder-Q5_K_M.gguf no diretório models/clip.

Após a organização dos modelos, retorne ao diretório raiz do ComfyUI e inicie o serviço com o seguinte comando, forçando o uso de precisão FP16 para otimizar o desempenho:

python3 main.py --force-fp16

A execução bem-sucedida do servidor será indicada por uma saída de log semelhante a esta, com o endereço para acessar a interface web:

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

A interface gráfica estará disponível em http://127.0.0.1:8188.

Teste de Geração de Imagens com Flux-dev-GGUF

Para testar a capacidade de geração de imagens, utilizaremos um workflow específico para GGUF, disponível para download:

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

Após importar o workflow no ComfyUI, inserimos um prompt de exemplo para a geração de imagens, como:

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

Este prompt descreve "uma garota super sexy segurando uma placa que diz 'ComfyUI Mac'". Ao executar o workflow, o sistema processará o prompt e gerará a imagem. Durante a execução, a saída do console mostrará o progresso do carregamento do modelo e as etapas de inferência:

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]

A taxa de iteração se estabilizou em aproximadamente 30 iterações por segundo, resultando em um tempo de geração de imagem de cerca de 3 a 5 minutos para uma única imagem. Durante este processo, o Monitor de Atividade do macOS indicou que a memória RAM do Mac Mini M4 (configurado com 24GB) não foi totalmente utilizada, com cerca de 21GB sendo consumidos. Observações de outros usuários com versões de 16GB de RAM indicam que a memória efetivamente disponível para operações de IA pode ser significativamente menor (em torno de 10GB após a ocupação do sistema), o que pode levar a um uso mais intenso da memória virtual baseada em SSD, impactando negativamente a performance da GPU e a eficiência da geração de imagens. Embora a qualidade visual final não tenha sofrido uma degradação notável, a velocidade de geração permaneceu como o principal gargalo.

Em resumo, o ecossistema de IA no Mac Mini M4, embora promissor, ainda apresenta espaço considerável para evolução. Para profissionais de IA, a aquisição de um modelo com 16GB de RAM pode ser uma limitação significativa. Em cenários com modelos de IA maiores, a RAM efetivamente utilizável pode se reduzir a aproximadamente 10GB, forçando o uso extensivo de swap para o SSD e comprometendo a eficiência da inferência. No entanto, o Mac Mini M4 oferece vantagens notáveis para cargas de trabalho de inferência: seu consumo de energia é baixo, resultando em economia, e sua operação é excepcionalmente silenciosa, um contraste marcante com a ventilação ruidosa frequentemente associada a sistemas equipados com GPUs NVIDIA.

Tags: ComfyUI MacMiniM4 AIArt ImageGeneration MPS

Publicado em 7-14 05:59