O ComfyUI é uma ferramenta AIGC baseada em nós, construída sobre o Stable Diffusion e projetada para a geração de vídeos curtos e produção de animações. O PAI-EAS oferece suporte à implantação de serviços do ComfyUI baseada em cenários.
Antes de começar
Principais limitações e considerações
Leia esta seção antes de implantar o serviço para evitar desperdício de recursos e erros comuns.
-
Recursos de implantação: Recomendamos os tipos de instância com GPU GU30, NVIDIA A10 ou NVIDIA T4. O tipo de instância
ml.gu7i.c16m60.1-gu30oferece a melhor relação custo-benefício.ImportanteCada instância do PAI-EAS executa um único processo do ComfyUI e oferece suporte a apenas uma GPU (instância única com GPU única ou várias instâncias com GPU única). A inferência paralela com várias GPUs não é suportada. Não selecione tipos de instância com várias GPUs (como 2×A10). Tipos de instância com várias GPUs desperdiçam recursos e não melhoram o desempenho de tarefas únicas.
Dimensionamento horizontal: Para aumentar a simultaneidade, use a API Edition e aumente o número de réplicas em vez de selecionar um tipo de instância com várias GPUs.
Escolha uma edição de implantação
Selecione uma edição que melhor se adapta ao seu caso de uso:
Edição | Caso de uso | Método de acesso | Principais recursos | Método de faturamento |
Standard Edition | Desenvolvimento e teste para um único usuário |
|
| Quando implantada em recursos públicos, a cobrança começa assim que a instância entra em execução, mesmo sem chamadas de API. |
API Edition | Cargas de trabalho de produção com alta simultaneidade | Chamadas de API (assíncronas) |
| |
Cluster Edition WebUI | Equipes com vários usuários e treinamento | WebUI |
Para mais informações sobre como isso funciona, consulte Como a Cluster Edition funciona |
Para mais informações sobre faturamento, consulte Faturamento do Elastic Algorithm Service (EAS).
As chamadas de API síncronas e assíncronas diferem com base no uso do serviço de fila do PAI-EAS:
Chamada síncrona: Envia uma solicitação diretamente para a instância de inferência sem usar o serviço de fila do PAI-EAS.
Chamada assíncrona: Usa o serviço de fila do PAI-EAS. As solicitações são enviadas para uma fila de entrada e os resultados são entregues por meio de um modelo de assinatura.
Como o ComfyUI possui seu próprio sistema de fila assíncrona integrado, até mesmo as chamadas síncronas são processadas de forma assíncrona nos bastidores. Após enviar uma solicitação, o sistema retorna um Prompt ID que você usa para consultar o resultado da inferência.
Implante o serviço
Standard Edition, Cluster Edition e API Edition: Use a implantação de modelo baseada em cenários para uma experiência simplificada ou a implantação de modelo personalizado para opções de configuração avançadas.
Método 1: Implantação de modelo baseada em cenários (recomendado)
Acesse o PAI console. Selecione uma região na parte superior da página. Em seguida, selecione o espaço de trabalho desejado e clique em Enter Elastic Algorithm Service (EAS).
Na página Elastic Algorithm Service (EAS), clique em Deploy Service. Na seção Scenario-based Model Deployment, clique em AI Video Generation: ComfyUI-based Deployment.
-
Configure os seguintes parâmetros principais e defina os outros parâmetros conforme necessário:
Version: Consulte Escolha uma edição de implantação.
-
Model Settings: Por exemplo, usando o Object Storage Service (OSS), selecione um bucket e um diretório. Após a implantação bem-sucedida, o sistema cria automaticamente os diretórios necessários do ComfyUI neste local.
ImportanteO PAI-EAS não oferece suporte à instalação de nós personalizados (plugins) diretamente da rede por meio do ComfyUI Manager ou Git Clone. Para usar seus próprios modelos, instalar nós personalizados ou fazer chamadas de API, configure esta montagem de armazenamento.
Resource Configuration: Selecione um tipo de instância com GPU. Recomendamos GU30, NVIDIA A10 ou NVIDIA T4. O
ml.gu7i.c16m60.1-gu30oferece a melhor relação custo-benefício. Se este tipo de instância não estiver disponível, selecioneecs.gn6i-c16g1.4xlarge.
Clique em Deploy. Aguarde aproximadamente 5 minutos. Quando o Service Status mudar para Running, a implantação estará concluída.
Método 2: Implantação de modelo personalizado
Acesse o PAI console. Selecione uma região na parte superior da página. Em seguida, selecione o espaço de trabalho desejado e clique em Enter Elastic Algorithm Service (EAS).
Clique em Deploy Service. Na seção Inference Service, clique em Custom Deployment na seção Custom Model Deployment.
-
Configure os seguintes parâmetros principais:
Deployment Method: Selecione Image-based Deployment e selecione a caixa de seleção Enable Web App.
-
Image Configuration: Na lista Alibaba Cloud Image, selecione
comfyui:2.3. Convenção de nomenclatura da versão da imagem:x.xpara a Standard Edition,x.x-apipara a API Edition ex.x-clusterpara a Cluster Edition.NotaComo as versões são atualizadas frequentemente, selecione a versão de imagem mais recente disponível ao implantar.
Para os casos de uso de cada edição, consulte Escolha uma edição de implantação.
-
Mount storage: Usando o Object Storage Service (OSS) como exemplo, selecione um bucket e um diretório. Após a implantação bem-sucedida, o sistema cria automaticamente os diretórios necessários do ComfyUI neste local. Certifique-se de que o bucket esteja na mesma região do serviço do PAI-EAS.
ImportanteO PAI-EAS não oferece suporte à instalação de nós personalizados (plugins) diretamente da rede por meio do ComfyUI Manager ou Git Clone. Para usar seus próprios modelos, instalar nós personalizados ou fazer chamadas de API, configure esta montagem de armazenamento.
URI: Clique em
para selecionar um diretório OSS existente. Por exemplo, oss://bucket-test/data-oss/.Mount Path: Defina como
/mnt/datapara montar o diretório OSS no caminho do contêiner/mnt/data.
-
Command to Run:
Após selecionar uma versão da imagem, o sistema configura o comando de execução automaticamente.
Se você configurou uma montagem de armazenamento, adicione o parâmetro
--data-dirao Command e certifique-se de que seu valor corresponda exatamente ao Mount Path. Por exemplo,python main.py --listen --port 8000 --data-dir /mnt/data --cache-root /stable-diffusion-cache.
Resource Type: Selecione Public Resources.
Deployment: Selecione um tipo de instância com GPU. Recomendamos GU30, NVIDIA A10 ou NVIDIA T4. O
ml.gu7i.c16m60.1-gu30oferece a melhor relação custo-benefício. Se este tipo de instância não estiver disponível, selecioneecs.gn6i-c16g1.4xlarge.
Clique em Deploy. A implantação leva aproximadamente 5 minutos. Quando o Service Status mudar para Running, o serviço estará implantado.
Use o serviço através do WebUI
A Standard Edition e a Cluster Edition suportam acesso por meio do WebUI.
Abra a interface web
Clique no nome do serviço de destino para abrir a página Overview e, em seguida, clique em Web Application no canto superior direito.
Se a página demorar muito para carregar, consulte A página congela ou demora muito para carregar .
Use um template de workflow
O ComfyUI fornece templates pré-configurados para tarefas comuns.
-
Selecione um template (por exemplo, Wan VACE Text to Video).
NotaOs templates variam de acordo com as versões da imagem do ComfyUI. Se o template de exemplo não estiver disponível, selecione um template diferente ou carregue um arquivo de workflow do sistema de arquivos local.
Após o carregamento do workflow, você pode ver erros sobre modelos ausentes. Ignore esses erros (recomendamos selecionar a opção para não mostrar esta mensagem novamente).
-
Como os caminhos dos modelos podem ter mudado, executar o workflow diretamente pode produzir o seguinte erro:
Prompt outputs failed validation: UNETLoader: - Value not in list: unet_name: 'wan2.1_vace_14B_fp16.safetensors' not in (list of length 200) LoraLoader: - Value not in list: lora_name: 'Wan21_CausVid_14B_T2V_lora_rank32.safetensors' not in (list of length 364)Na seção Load models here, selecione novamente
wan2.1_vace_14B_fp16.safetensorsno carregador UNET eWan21_CausVid_14B_T2V_lora_rank32.safetensorsno carregador LoRA. Após a execução bem-sucedida do workflow, o vídeo gerado aparece na seção Save Video. Salve o vídeo se necessário.

Use modelos e nós personalizados
-
Certifique-se de que o serviço tenha uma montagem de armazenamento configurada. Após a implantação do serviço, o sistema cria automaticamente a seguinte estrutura de diretórios no armazenamento OSS ou NAS montado.
data-oss/ ├── custom_nodes/ # Custom node files (ComfyUI plugins) ├── models/ # Model files ├── input/ ├── output/ ├── unet/ └── temp/ -
Faça o upload de arquivos de modelo ou nó. Por exemplo, use o OSS e faça o upload de arquivos para o OSS pelo console. Para arquivos grandes, consulte Como faço o upload de objetos grandes para o OSS?.
-
Upload de arquivos de modelo: Verifique a documentação do repositório source para o nó que usa o modelo e faça o upload do modelo para o subdiretório correspondente em
models. Por exemplo:Carregador de Checkpoint: Faça o upload dos modelos para
models/checkpoints.Carregador de modelo de estilo: Faça o upload dos modelos para
models/styles.
Upload de arquivos de nó: Faça o upload de nós personalizados para o diretório
custom_nodesno armazenamento montado.
-
-
Carregue o novo conteúdo.
Modelos: Na parte superior da página, clique em PAICustom > Load New Models. Se o modelo ainda não aparecer, clique em PAICustom > Restart Process. Após a reinicialização do processo, atualize a página do navegador.
Nós: Clique em Restart Process. Após a reinicialização do processo, atualize a página do navegador.
Chame o serviço através da API
Chame o serviço do ComfyUI por meio de sua API para integrá-lo aos seus aplicativos para geração automatizada de conteúdo. O workflow principal é: envie um JSON de workflow > obtenha um ID de tarefa > use o ID da tarefa para recuperar o resultado da geração.
Suporte de edição: A Standard Edition suporta apenas chamadas síncronas e fornece depuração online. A API Edition suporta apenas chamadas assíncronas e somente o endpoint /prompt.
Recuperação da saída gerada: Imagens e vídeos gerados são armazenados no diretório
outputmontado. As respostas da API retornam nomes de arquivos e subdiretórios em vez dos próprios arquivos. Para o OSS, construa o caminho completo do arquivo para baixá-los. Para mais informações, consulte Baixe arquivos do OSS usando o Alibaba Cloud SDK.
Prepare o corpo da solicitação da API
O formato do corpo da solicitação depende do método de chamada:
Chamada síncrona: Envolva o conteúdo JSON do workflow dentro de um par chave-valor
prompt.Chamada assíncrona: O corpo da solicitação é o próprio conteúdo JSON do workflow.
Como baixar um workflow: No canto superior esquerdo da página do ComfyUI, clique em
> File > Export (API).
Como o workflow Wan VACE Text to Video acima consome muito tempo, fornecemos o seguinte workflow de teste para facilitar os testes (cada execução leva aproximadamente 3 minutos).
Chamadas síncronas
As chamadas síncronas enviam solicitações diretamente para a instância do serviço do PAI-EAS. Este método é adequado para desenvolvimento, testes e cenários de baixa simultaneidade.
Depuração online
A depuração online permite testar chamadas de API diretamente no console sem escrever código. Isso é útil para validar rapidamente as configurações do workflow.
Na página Elastic Algorithm Service (EAS), clique em Online Debugging na coluna Actions do serviço de destino para abrir a página de depuração online.
Chamadas baseadas em código
Chame a API por meio de código para integrar o ComfyUI aos seus aplicativos. O workflow é o mesmo da depuração online: primeiro obtenha o Prompt ID e, em seguida, consulte o resultado da inferência.
Chamadas assíncronas
As chamadas assíncronas são projetadas para cargas de trabalho de produção com alta simultaneidade. Este método usa o serviço de fila do PAI-EAS para balanceamento de carga. As solicitações retornam imediatamente e você recupera os resultados assinando a fila de resultados.
As chamadas assíncronas suportam apenas o endpoint api_prompt. O parâmetro task_id é um identificador crítico para corresponder solicitações a resultados. Atribua um valor exclusivo a cada solicitação para correlacioná-la com o resultado da fila correspondente. O caminho da solicitação é:
{service_url}/api_prompt?task_id={assign a unique value}
Perguntas frequentes
Abaixo estão os problemas e as soluções comuns para a implantação e o uso do ComfyUI.
Problemas de implantação
P: O serviço permanece em estado de espera ou o ComfyUI não consegue gerar saída
Isso geralmente é causado por recursos insuficientes. Verifique se a imagem do serviço e o tipo de instância estão configurados corretamente. Recomendamos os tipos de instância com GPU GU30, NVIDIA A10 ou NVIDIA T4. O tipo de instância ml.gu7i.c16m60.1-gu30 oferece a melhor relação custo-benefício.
Problemas de modelos e nós
P: O WebUI exibe um erro "Missing Model"
Problema: Uma caixa de diálogo intitulada Missing Model indica que o modelo em checkpoints/v1-5-pruned-emaonly-fp16.safetensors está ausente, e um aviso vermelho à esquerda mostra Invalid directory specified (does this require custom nodes?).
Solução: Você pode ignorar este erro com segurança. Esta verificação de validação não se aplica ao ComfyUI implantado no PAI. Consulte os erros reais de tempo de execução.
Recomendamos selecionar a opção para não mostrar esta mensagem novamente ou desativar a validação de modelo nas Settings.
P: Fiz o upload de um novo modelo, mas não consigo encontrá-lo
Solução:
Clique em PAICustom e selecione Load New Models.
Se o modelo ainda não aparecer, clique em Restart Process.
P: O carregador de modelo mostra "undefined"
Primeiro, verifique se o arquivo do modelo está colocado no diretório correto, conforme exigido pelo nó do carregador de modelo.
Se você fez o upload do modelo após a implantação, reinicie o serviço.
P: Não consigo encontrar um nó
Para nós recém-instalados, reinicie o serviço.
Se o nó não estiver instalado, consulte Use modelos personalizados e instale nós (plugins do ComfyUI).
P: O ComfyUI Manager falha ao baixar modelos ou instalar nós
Não recomendamos o uso do ComfyUI Manager com o ComfyUI implantado no PAI-EAS. O ComfyUI Manager baixa modelos e códigos de plugins de fontes externas, como o GitHub, o que frequentemente falha devido a restrições de rede.
Em vez disso, faça o upload de arquivos de modelo e nó para o armazenamento montado. Para mais informações, consulte Use modelos personalizados e instale nós (plugins do ComfyUI).
P: Como visualizar arquivos de modelo e nós disponíveis (plugins do ComfyUI)
Arquivos de modelo: Verifique a partir do nó do carregador de modelo correspondente. Por exemplo, visualize os arquivos de modelo disponíveis na lista suspensa do carregador de Checkpoint.
Nós: Clique com o botão direito na página do WebUI e clique em Add Node no menu de contexto para visualizar todos os plugins do ComfyUI instalados.
Erros de tempo de execução
P: A página congela ou demora muito para carregar
Atualize a página, limpe o cache do navegador ou acesse o serviço no modo de navegação anônima/privada.
Se o armazenamento estiver montado, exclua os arquivos nos diretórios
input/,output/etemp/.Tente reiniciar o serviço.
P: O processo reinicia no meio do workflow
Se os logs da instância contiverem run.sh: line 54: 531285 Killed python -u main_run.py "$@", o processo foi encerrado devido a uma condição de falta de memória (OOM). O processo reinicia automaticamente após um evento OOM.
P: RuntimeError: CUDA error: out of memory
Isso significa que a memória da GPU está esgotada. Para modelos de imagem, reduza a resolução da imagem ou o tamanho do lote. Para modelos de vídeo, reduza a contagem de quadros ou a resolução.
P: A chamada de API retorna "URL not found" ou "404 page not found"
Verifique se a URL do endpoint da API está completa. Para chamadas síncronas, anexe o caminho
/prompt.
Outros
P: Desempenho de aceleração do xFormers
O xFormers é uma ferramenta de aceleração de código aberto baseada em Transformer que reduz o tempo de geração de imagens e vídeos e o uso de memória da GPU.
As imagens do ComfyUI têm a aceleração xFormers ativada por padrão. O efeito de aceleração depende do tamanho do workflow, com as melhorias mais notáveis em operações intensivas de GPU, especialmente com GPUs NVIDIA.
Próximos passos
Após implantar o serviço do ComfyUI, você pode:
Monitoramento do serviço: Configure monitoramento e alertas para rastrear a integridade do serviço em tempo real. Para mais informações, consulte Visualize métricas de monitoramento do serviço.
Auto Scaling: Configure políticas de Auto Scaling com base na carga de trabalho para otimizar o uso de recursos e os custos. Para mais informações, consulte Auto Scaling.
Otimização de custos: Entenda os métodos de faturamento do PAI-EAS e escolha o tipo de instância e a edição de implantação adequados para reduzir custos. Para mais informações, consulte Visão geral do faturamento.
Referência
Instale pacotes Python
Instale um pacote .whl executando um comando
Certifique-se de que o serviço tenha uma montagem de armazenamento configurada. Por exemplo, suponha que o caminho do OSS (URI) seja
oss://examplebucket/comfyui/e o caminho de montagem seja/mnt/data/.Faça o upload do arquivo
.whlpara o diretóriooss://examplebucket/comfyui/models/whl. Se o diretóriowhlnão existir, crie-o primeiro.Atualize o Command to Run do serviço: Adicione
pip install /mnt/data/models/whl/xxx.whlno início do comando de execução. Neste comando,/mnt/dataé o caminho de montagem do OSS, e xxx.whl é o nome do pacote .whl.Reinicie o serviço.
Instale pacotes através da configuração de biblioteca de terceiros
Na página de detalhes do serviço, clique em Update no canto superior direito.
Se o serviço foi implantado através da implantação de modelo baseada em cenários, mude para a implantação de modelo personalizado.
Na seção Environment Information, configure as dependências na área Third-party Library Configuration.
Clique em Update na parte inferior da página para aplicar a atualização.
Atualize a versão da imagem
Se o serviço tiver armazenamento OSS ou NAS montado, os modelos personalizados são armazenados no armazenamento OSS ou NAS e não são afetados por uma atualização de versão da imagem.
Na página de detalhes do serviço, clique em Update no canto superior direito.
Se o serviço foi implantado através da implantação de modelo baseada em cenários, mude para a implantação de modelo personalizado.
Na seção Service Configuration, edite a configuração JSON e atualize o campo
imageemcontainerspara a versão desejada (por exemplo, altere 1.9 para a versão de destino).Clique em Update Directly.
Gere uma URL sem necessidade de login com um período de validade personalizado
Use uma API para gerar uma URL de acesso web sem necessidade de login com um período de validade especificado.
Acesse a página da API DescribeServiceSignedUrl.
Selecione o endpoint do serviço.
-
Defina os seguintes parâmetros:
-
ClusterId (Region) e ServiceName: Insira a região e o nome do serviço.
Na página de visão geral do serviço EAS, o campo Service Name mostra o valor de ServiceName. A região está incorporada no endereço da imagem do nó (por exemplo,
cn-hangzhoucorresponde ao valor da região ClusterId). Clique em View Web Application no canto superior direito para abrir o serviço. Type (Page type): Selecione webview na lista suspensa.
Expire (Expiration time): Insira um número inteiro em segundos. O valor máximo é 43200 segundos (12 horas). Defina conforme necessário.
Internal (VPC access): Defina como false (acesso público) ou true (acesso VPC).
-
Clique em Call API. O campo
SignedUrlna resposta contém a URL de acesso web sem necessidade de login.
Altere o idioma padrão do WebUI
Na página do WebUI, clique no botão Settings no canto inferior esquerdo.
-
Configure o idioma nos dois locais a seguir e, em seguida, atualize e recarregue a página.
Comfy > Locale.
Language > Locale.
Apêndice
Como a Cluster Edition funciona
O diagrama a seguir mostra a arquitetura:
A Cluster Edition é projetada para cenários com vários usuários. Ela introduz uma camada de proxy que desacopla os clientes das instâncias de inferência de backend.
Cada usuário possui um ambiente de backend e um diretório de trabalho independentes, mas compartilha o pool de instâncias de inferência de GPU do backend.
Quando um usuário envia uma solicitação de inferência, o proxy seleciona uma instância disponível no pool para lidar com a solicitação.
Este mecanismo de multiplexação por tempo isola os ambientes dos usuários, ao mesmo tempo em que maximiza a utilização dos recursos de GPU e reduz os custos de inferência em cenários com vários usuários.
