Este guia usa a implantação de um modelo Llama 3.1 8B como exemplo para apresentar como criar um Endpoint Serverless do zero.
Etapa 1: Preparar a imagem do contêiner
Você precisa empacotar o ambiente de execução em uma imagem Docker e enviá-la antecipadamente para um repositório de imagens. Atualmente, Novita AI oferece suporte à especificação de “repositório de imagens público” e “repositório de imagens privado” (incluindo credenciais de acesso ao repositório de imagens).
Usamos o repositório oficial de imagens do vLLM para servir o modelo Llama 3.1 8B: vllm/vllm-openai:latest. Você pode usar este endereço de imagem diretamente.
Etapa 2: Acessar o Console
Acesse o Console Serverless, selecione a especificação apropriada de instância de contêiner com GPU e clique em “Criar Endpoint”.
Atualmente, apenas especificações de instância RTX 4090 24GB são compatíveis. Mais opções serão disponibilizadas gradualmente; acompanhe as atualizações oficiais.
Etapa 3: Configurar o Endpoint Serverless
Aqui usamos a imagem pública vllm/vllm-openai:latest como exemplo de configuração:
- Nome do Endpoint: Usado para identificar exclusivamente seu Endpoint. O sistema gerará um nome para você por padrão, mas você também pode especificar um.
- Nome do App: O nome da aplicação faz parte da URL do Endpoint. Ele é opcional e permite personalização; somente letras minúsculas, números e hifens são permitidos. Se não for especificado, o sistema gerará um automaticamente.
- Configuração de Workers
- Workers Min: O número mínimo de Workers a serem mantidos. Pode ser definido como 0, para que nenhum Worker seja mantido quando seu serviço não tiver solicitações. Observe que defini-lo como 0 pode não responder rapidamente a solicitações subsequentes. Tenha cuidado se o seu cenário exigir tempo de resposta rápido.
- Workers Max: O número máximo de Workers a serem mantidos. Quando o volume de solicitações do seu serviço aumentar e acionar o mecanismo de autoescalonamento, o número de Workers aumentará. Esta configuração limita o número máximo de Workers para ajudar a controlar custos.
- Tempo Limite de Ociosidade (segundos): Quando o mecanismo de autoescalonamento aciona a retirada de um Worker do ar, a plataforma manterá o Worker pelo tempo especificado para lidar rapidamente com possíveis aumentos subsequentes de solicitações. Observe que a plataforma cobrará por esse tempo.
- Concorrência Máxima: O número máximo de solicitações simultâneas que cada Worker pode processar. Quando a concorrência excede o valor máximo, as solicitações serão encaminhadas para outros Workers. Se todos os Workers estiverem totalmente ocupados, as solicitações serão enfileiradas para execução.
- GPUs/Worker: O número de GPUs que cada Worker ocupa.
- Versão do CUDA: Permite especificar a versão do CUDA.
- Política de Escalonamento:
- Atraso da Fila: Ajusta o número de Workers com base no tempo de espera das solicitações na fila. Você precisa configurar o “Tempo de Atraso da Fila (segundos)”. Quando o tempo de espera das solicitações na fila exceder esse valor, o autoescalonamento será acionado. Quando for menor que esse valor, o autoescalonamento será acionado para reduzir a escala (combinado com o “Tempo Limite de Ociosidade (segundos)” definido anteriormente para determinar o momento específico em que o Worker ficará offline).
- Contagem de Solicitações: Ajusta o número de Workers com base no número de solicitações na fila. Você precisa configurar a “Contagem Máxima de Solicitações da Fila”. Quando o número de solicitações na fila exceder esse valor, o autoescalonamento será acionado. Quando for menor que esse valor, o autoescalonamento será acionado para reduzir a escala (combinado com o “Tempo Limite de Ociosidade (segundos)” definido anteriormente para determinar o momento específico em que o Worker ficará offline).
- Configuração da Imagem:
- Imagem do Contêiner: O endereço do repositório de imagens, como
vllm/vllm-openai:latest.
- Credenciais do Registro de Contêiner: Ao especificar um repositório de imagens privado, você precisa definir as credenciais de acesso. Configure-as em Configurações - Autenticação do Registro de Contêiner.
- Porta HTTP: A porta HTTP exposta pelos Workers. O balanceador de carga encaminhará as solicitações para esta porta dos Workers, por exemplo,
8080 neste caso.
- Comando de Inicialização do Contêiner: O comando executado quando o contêiner inicia. Por exemplo:
--model meta-llama/Llama-3.1-8B-Instruct --max-model-len 4096.
- Configuração de Armazenamento: Aqui você pode configurar o disco do contêiner, o disco de volume e o volume de rede. Atualmente, os tamanhos do disco do contêiner e do disco de volume são fixos. Mais opções serão disponibilizadas gradualmente; acompanhe as atualizações oficiais.
- Outros:
- Caminho de Verificação de Integridade: O balanceador de carga integrado realizará verificações de integridade por meio deste caminho. Ele determinará se deve encaminhar solicitações para o Worker com base em se o código de status retornado é
200, como /health.
- Variáveis de Ambiente: Aqui você pode configurar as variáveis de ambiente das quais o serviço depende. Por exemplo:
HUGGING_FACE_HUB_TOKEN={Your Hugging Face Access Token (with read permission)}.
Após confirmar que a configuração está correta, clique em “Implantar” para concluir o processo de criação.
Etapa 4: Acessar o serviço do modelo Llama 3 8B implantado
Você pode encontrar o Endpoint Serverless que acabou de criar no Console Serverless. Quando o status do Endpoint mudar para “Servindo” e pelo menos um Worker estiver no estado “Em execução”, clique no botão “Copiar” para copiar a URL de acesso ao serviço do modelo.
E você pode usar o comando curl para acessar o serviço como abaixo:
Próxima etapa
Em seguida, consulte o documento Gerenciar Endpoint Serverless para aprender como verificar e modificar o endpoint serverless que você acabou de criar.