Introdução à reserva de capacidade GPU para inferência no SageMaker

\n

Executar inferência com grandes modelos de linguagem (LLMs) exige capacidade GPU confiável, especialmente durante períodos críticos de avaliação, testes temporários de produção ou picos de demanda. A disponibilidade imprevisível de instâncias sob demanda pode atrasar implantações e prejudicar a performance das aplicações.

\n

Para resolver isso, o Amazon SageMaker AI oferece planos de treinamento que permitem reservar capacidade computacional para janelas de tempo específicas. Embora originalmente criados para cargas de treinamento, esses planos agora suportam endpoints de inferência, garantindo GPU da família p para workloads temporários de inferência com disponibilidade previsível.

\n\n

Visão geral do fluxo para reservar e usar capacidade GPU com planos de treinamento

\n

O processo consiste em quatro fases principais:

\n

    \n

  1. Identificar requisitos de capacidade: definir tipo e quantidade de instância, além da duração necessária.
  2. \n

  3. Buscar ofertas disponíveis: consultar capacidade disponível para o período desejado.
  4. \n

  5. Criar a reserva do plano de treinamento: selecionar a oferta e gerar o ARN de reserva.
  6. \n

  7. Implantar e gerenciar o endpoint: configurar o endpoint SageMaker para usar a capacidade reservada e controlar seu ciclo de vida.
  8. \n

\n\n

Pré-requisitos para seguir o tutorial

\n

\n\n

Passo 1: Buscar capacidade GPU disponível e criar reserva

\n

Suponha que uma equipe precise de uma instância ml.p5.48xlarge por uma semana para avaliação de modelos a partir de uma data específica. Usando o CLI da AWS, execute o comando abaixo para buscar ofertas:

\n

aws sagemaker search-training-plan-offerings \\\n  --target-resources "endpoint" \\\n  --instance-type "ml.p5.48xlarge" \\\n  --instance-count 1 \\\n  --duration-hours 168 \\\n  --start-time-after "2025-01-27T15:48:14-04:00" \\\n  --end-time-before "2025-01-31T14:48:14-05:00"\n

\n

O resultado traz detalhes como ID da oferta, zona de disponibilidade, preço e janela de reserva. Após escolher, crie a reserva:

\n

aws sagemaker create-training-plan \\\n  --training-plan-offering-id "tpo-SHA-256-hash-value" \\\n  --training-plan-name "p4-for-inference-endpoint"\n

\n

O comando retorna o ARN do plano de treinamento, que será usado para vincular o endpoint à capacidade reservada.

\n

Alternativamente, é possível realizar essa busca e reserva diretamente pelo console SageMaker AI, navegando até Model training & customization > Training plans e seguindo o fluxo visual para pesquisa, detalhamento e compra.

\n\n

Passo 2: Configurar o endpoint com a reserva do plano de treinamento

\n

Ao criar a configuração do endpoint, inclua o objeto CapacityReservationConfig na seção ProductionVariants, apontando para o ARN da reserva:

\n

--endpoint-config-name "ftp-ep-config" \\\n--production-variants '[{ \n  "VariantName": "AllTraffic", \n  "ModelName": "my-model", \n  "InitialInstanceCount": 1, \n  "InstanceType": "ml.p5.48xlarge", \n  "InitialVariantWeight": 1.0, \n  "CapacityReservationConfig": { \n    "CapacityReservationPreference": "capacity-reservations-only", \n    "MlReservationArn": "arn:aws:sagemaker:us-east-1:123456789123:training-plan/p4-for-inference-endpoint" \n  } \n}]'\n

\n

O parâmetro CapacityReservationPreference com valor capacity-reservations-only garante que o endpoint utilize somente a capacidade reservada e será desativado ao término da reserva, evitando cobranças inesperadas.

\n\n

Passo 3: Implantar o endpoint na capacidade reservada

\n

Com a configuração pronta, crie o endpoint:

\n

aws sagemaker create-endpoint \\\n  --endpoint-name "my-endpoint" \\\n  --endpoint-config-name "ftp-ep-config"\n

\n

Após alguns minutos, o endpoint estará ativo e pronto para receber requisições de inferência usando a capacidade garantida pela reserva.

\n\n

Passo 4: Invocar o endpoint durante o período ativo

\n

Use o comando abaixo para enviar dados para inferência e receber respostas:

\n

aws sagemaker-runtime invoke-endpoint \\\n  --endpoint-name "my-endpoint" \\\n  --body fileb://input.json \\\n  --content-type "application/json" \\\n  output.json\n

\n

Durante o período da reserva, o endpoint opera com capacidade garantida, assegurando desempenho estável para testes e benchmarks.

\n\n

Passo 5: Comportamento do endpoint após expiração da reserva

\n

Se a reserva expirar enquanto o endpoint ainda estiver ativo, e com a configuração capacity-reservations-only, as invocações falharão com erro de capacidade:

\n

{\n  "Error": {\n    "Code": "ModelError",\n    "Message": "Endpoint capacity reservation has expired. Please update endpoint configuration."\n  }\n}\n

\n

Para retomar o serviço, é necessário criar nova reserva e atualizar a configuração do endpoint ou migrar para capacidade sob demanda, conforme o passo a seguir.

\n\n

Passo 6: Atualizar e migrar o endpoint

\n

\n\n

Passo 7: Escalar endpoint dentro dos limites da reserva

\n

Se a reserva contemplar mais instâncias do que as inicialmente implantadas, é possível aumentar a contagem durante o período ativo:

\n

aws sagemaker create-endpoint-config \\\n  --endpoint-config-name "ftp-ep-config-scaled" \\\n  --production-variants '[{ \n    "VariantName": "AllTraffic", \n    "ModelName": "my-model", \n    "InitialInstanceCount": 2, \n    "InstanceType": "ml.p5.48xlarge", \n    "InitialVariantWeight": 1.0, \n    "CapacityReservationConfig": { \n      "CapacityReservationPreference": "capacity-reservations-only", \n      "MlReservationArn": "arn:aws:sagemaker:us-east-1:123456789123:training-plan/p4-for-inference-endpoint" \n    } \n}]'\naws sagemaker update-endpoint \\\n  --endpoint-name "my-endpoint" \\\n  --endpoint-config-name "ftp-ep-config-scaled"\n

\n

Tentar ultrapassar a capacidade reservada gerará erro de validação.

\n\n

Passo 8: Encerrar e limpar o endpoint após uso

\n

Finalizada a avaliação, delete o endpoint para liberar recursos e evitar cobranças adicionais.

\n\n

Links úteis para aprofundamento

\n

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *