novitalabs/comfyui-worker:v0.0.1 como exemplo para mostrar como criar e chamar um Endpoint Serverless Assíncrono.
1. Preparar a imagem do contêiner
Empacote seu ambiente de execução em uma imagem Docker e faça o upload para um registro de imagens com antecedência. Registros de imagens públicos e privados são compatíveis. Registros privados exigem credenciais para pull da imagem.- Você pode fazer upload da sua imagem para o Docker Hub. Atualmente, a plataforma fornece um serviço de aquecimento de imagem para imagens do Docker Hub.
novitalabs/comfyui-worker:v0.0.1. A imagem inclui o ComfyUI e o SDK de worker da Novita. A entrada da tarefa é um JSON de workflow do ComfyUI, e o handler do worker retorna os resultados das imagens geradas. Recomendamos configurar variáveis de ambiente de armazenamento de objetos, como BUCKET_ENDPOINT_URL, para que imagens e vídeos gerados possam ser enviados para seu bucket e retornados como URLs na saída do job.
2. Selecionar especificação da instância
Atualmente, o Endpoint Serverless Assíncrono oferece suporte aos seguintes tipos de instância de GPU:- RTX 4090 24GB
- H100 SXM 80GB
comfyui-worker, recomendamos RTX 4090 24GB.
Para requisitos adicionais, entre em contato conosco.
3. Criar armazenamento em nuvem (opcional)
Se você precisar de armazenamento compartilhado ou persistente, crie um armazenamento em nuvem na página de gerenciamento de armazenamento e, em seguida, monte o armazenamento ao criar o endpoint. Para detalhes, consulte Gerenciar armazenamento em nuvem.4. Criar Endpoint
- Acesse a página GPUs Serverless Assíncronas, selecione um tipo de instância e clique em “Criar Endpoint”.
- Conclua a configuração dos parâmetros do Endpoint.
- Nome do Endpoint: usado para identificar exclusivamente o Endpoint. Ele faz parte da URL ao criar jobs. O sistema gera um nome padrão aleatório. Você pode personalizá-lo, mas é recomendado usar o nome padrão.
- Configuração do worker
| Item de configuração | Descrição |
|---|---|
| Número mínimo de workers | O número mínimo de instâncias de worker a serem mantidas para o Endpoint. Definir um mínimo mais alto ajuda a reduzir o tempo de cold start. Se definido como 0, não haverá workers ociosos quando não houver solicitações, o que pode aumentar a latência de resposta para novas solicitações. Use 0 com cautela em cenários sensíveis à latência. |
| Número máximo de workers | O número máximo de instâncias de worker para o qual o Endpoint pode escalar. Quando o volume de solicitações aumenta, a plataforma aumenta automaticamente o número de workers até esse máximo. Esse limite ajuda a controlar custos. |
| Tempo limite de ociosidade (segundos) | Quando um worker está prestes a ser liberado devido à redução de escala, a plataforma o mantém pelo tempo limite de ociosidade configurado para que ele possa responder rapidamente a novas solicitações. Você é cobrado pelo worker durante esse período. |
| Máximo de solicitações simultâneas | O número máximo de solicitações simultâneas tratadas por um worker. Se esse número for excedido, as solicitações serão roteadas para outros workers. Se todos os workers estiverem totalmente ocupados, as solicitações excedentes serão enfileiradas até que a execução seja possível. |
| GPUs / worker | Número de placas de GPU alocadas para cada worker. |
| Versão do CUDA | Versão do CUDA usada pelo worker. |
GPUs / Worker como 1.
- Tipo:
- Selecione Assíncrono.
- Política elástica:
- Selecione Política de enfileiramento de solicitações.
- Defina Concorrência-alvo de um único worker como
1. O worker do ComfyUI neste exemplo processa um job por vez. Quando as solicitações enfileiradas excedem a capacidade atual dos workers, a plataforma escala os workers com base na contagem de solicitações na fila até atingir o número máximo de workers.
- Configuração da imagem:
- Endereço da imagem:
novitalabs/comfyui-worker:v0.0.1. - Credenciais do repositório de imagens: se a imagem for privada, forneça credenciais para pull da imagem. Você pode criar credenciais na página de gerenciamento de credenciais de segurança.
- Porta HTTP: porta HTTP do worker.
- Comando de inicialização do contêiner: comando executado quando o contêiner é iniciado.
- Endereço da imagem:
- Configuração de armazenamento:
- Disco do sistema: tamanho do disco do sistema por instância de worker.
- Armazenamento em nuvem: selecione o armazenamento em nuvem se precisar montá-lo. Para detalhes, consulte Gerenciar armazenamento em nuvem.
- Outros:
- Caminho de verificação de integridade: este parâmetro não está habilitado no momento.
- Variáveis de ambiente: defina as variáveis de ambiente exigidas pelo serviço. Exemplo de configuração S3:
comfyui-worker, recomendamos fortemente configurar o armazenamento de objetos para que as imagens de saída sejam enviadas para um bucket e retornadas como URLs.
- Revise os preços e clique em “Implantar com um clique”.
5. Acessar o serviço
- Na página GPUs Serverless Assíncronas, encontre o Endpoint recém-criado e verifique se seu status é “Em execução”.
- Certifique-se de que pelo menos um Worker no Endpoint esteja em execução.
- Certifique-se de ter uma Chave de API para autenticação. O criador do Endpoint e o proprietário da Chave de API devem pertencer à mesma equipe.
Obter uma Chave de API:
- Faça login no console da Novita.
- Acesse a página API Key / Gerenciamento de chaves.
- Crie uma Chave de API e copie o valor
sk_...gerado. - Certifique-se de que o proprietário da Chave de API e o proprietário do Endpoint estejam na mesma equipe.
5.1 Criar um job e recuperar a saída via Curl
A solicitação a seguir é um exemplo executável decomfyui-worker e corresponde ao caso testado. Substitua 0f43a6867e05fddd na URL pelo nome real do seu Endpoint e substitua sk_xxxx pela sua Chave de API real.
O tamanho máximo de job aceito pelo Endpoint Serverless Assíncrono é 4 MiB.
id é o job_id:
O tamanho máximo de saída retornado pela API
status do Endpoint Serverless Assíncrono é 4 MiB. Para evitar essa limitação, configure variáveis de ambiente de armazenamento de objetos e retorne URLs dos arquivos enviados na saída.Os resultados do job são mantidos no Endpoint Serverless Assíncrono por até 6 horas após a conclusão.5.2 Criar job e obter resultados via SDK da Novita
Instale o SDK:novita-gpus é https://async-public.serverless.novita.ai/v1.