> ## Documentation Index
> Fetch the complete documentation index at: https://novita.ai/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# Criar Endpoint Serverless

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, <a href="https://novita.ai">Novita AI</a> 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 <a href="https://novita.ai/gpu-instance/console/serverless">Console Serverless</a>, selecione a especificação apropriada de instância de contêiner com GPU e clique em **"Criar Endpoint"**.

<Tip>
  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.
</Tip>

## 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 <a href="https://novita.ai/gpu-instance/console/settings" target="_blank">Configurações - Autenticação do Registro de Contêiner</a>.
  * **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 <a href="https://novita.ai/gpu-instance/console/serverless">Console Serverless</a>. 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:

```bash theme={"system"}
curl "{URL you just copied}/v1/chat/completions" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "meta-llama/Llama-3.1-8B-Instruct",
    "messages": [
        {
            "role": "system",
            "content": "Act like you are a helpful assistant."
        },
        {
            "role": "user",
            "content": "Hi there!"
        }
    ],
    "max_tokens": 512
}'
```

## Próxima etapa

Em seguida, consulte o documento [Gerenciar Endpoint Serverless](/docs/pt-BR/guides/serverless-gpus-quickstart-manage-endpoint) para aprender como verificar e modificar o endpoint serverless que você acabou de criar.
