As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.
Esta seção explica como a Amazon SageMaker AI interage com um contêiner do Docker que executa seu próprio código de inferência para transformação em lote. Use essas informações para gravar um código de inferência e criar uma imagem do Docker.
Tópicos
Como a SageMaker IA executa sua imagem de inferência
Para que um contêiner funcione como um executável, é preciso configurá-lo com uma instrução ENTRYPOINT
em um Dockerfile. Observe o seguinte:
-
Para transformações em lote, a SageMaker IA invoca o modelo em seu nome. SageMaker A IA executa o contêiner como:
docker run
image
serveA entrada para as transformações em lote deve ter um formato que possa ser dividido em arquivos menores para serem processados em paralelo. Esses formatos incluem CSV, JSON, JSON
Lines e TFRecord Recordio. SageMaker A IA substitui
CMD
as declarações padrão em um contêiner especificando oserve
argumento após o nome da imagem. O argumentoserve
substitui os argumentos que você fornece com o comandoCMD
no Dockerfile. -
Recomendamos que você use a forma
exec
da instruçãoENTRYPOINT
:ENTRYPOINT ["executable", "param1", "param2"]
Por exemplo:
ENTRYPOINT ["python", "k_means_inference.py"]
-
SageMaker A IA define variáveis de ambiente especificadas em
CreateModel
eCreateTransformJob
no seu contêiner. Além disso, as seguintes variáveis de ambiente serão preenchidas:-
SAGEMAKER_BATCH
sempre é definida comotrue
quando o contêiner é executado em transformação em lote. -
SAGEMAKER_MAX_PAYLOAD_IN_MB
é definida como a carga útil de maior tamanho que será enviada ao contêiner via HTTP. -
SAGEMAKER_BATCH_STRATEGY
será definida comoSINGLE_RECORD
quando o contêiner receber um único registro por chamada para invocações e comoMULTI_RECORD
quando o contêiner tiver o número máximo possível de registros na carga útil. -
SAGEMAKER_MAX_CONCURRENT_TRANSFORMS
é definida como o número máximo de solicitações/invocations
que podem ser abertas simultaneamente.
nota
As últimas três variáveis de ambiente são provenientes da chamada de API feita pelo usuário. Se o usuário não definir valores para elas, elas não serão transmitidas. Nesse caso, os valores padrão ou os valores solicitados pelo algoritmo (em resposta a
/execution-parameters
) serão usados. -
-
Se você planeja usar dispositivos de GPU para inferências de modelo (especificando instâncias de cálculo de ML baseadas em GPU na sua solicitação
CreateTransformJob
), verifique se os seus contêineres são compatíveis com nvidia-docker. Não empacote drivers NVIDIA com a imagem. Para obter mais informações sobre o nvidia-docker, consulte NVIDIA/nvidia-docker. -
Você não pode usar o
init
inicializador como ponto de entrada em contêineres de SageMaker IA porque ele fica confuso com os argumentos de trem e serviço.
Como a SageMaker IA carrega seus artefatos de modelo
Em uma solicitação CreateModel
, as definições de contêiner incluem o parâmetro ModelDataUrl
, que identifica o local no Amazon S3 em que os artefatos do modelo são armazenados. Quando você usa a SageMaker IA para executar inferências, ela usa essas informações para determinar de onde copiar os artefatos do modelo. Ele copia os artefatos para o diretório /opt/ml/model
no contêiner do Docker para uso pelo seu código de inferência.
O parâmetro ModelDataUrl
deve apontar para um arquivo tar.gz. Caso contrário, a SageMaker IA não poderá baixar o arquivo. Se você treinar um modelo em SageMaker IA, ele salva os artefatos como um único arquivo tar compactado no Amazon S3. Se você treinar um modelo em outra estrutura, precisará armazenar os artefatos do modelo no Amazon S3 como um arquivo tar compactado. SageMaker O AI descompacta esse arquivo tar e o salva no /opt/ml/model
diretório do contêiner antes do início do trabalho de transformação em lote.
Como contêineres atendem solicitações
Os contêineres devem implementar um servidor web que responda a invocações e solicitações de ping na porta 8080. Para transformações em lote, você tem a opção de definir algoritmos para implementar solicitações de parâmetros de execução para fornecer uma configuração dinâmica de tempo de execução para a IA. SageMaker SageMaker A IA usa os seguintes endpoints:
-
ping
—Usado para verificar periodicamente a integridade do contêiner. SageMaker A IA espera por um código de200
status HTTP e um corpo vazio para uma solicitação de ping bem-sucedida antes de enviar uma solicitação de invocações. Você pode usar uma solicitação de ping para carregar um modelo na memória a fim de gerar inferência quando forem enviadas solicitações de invocação. -
(Opcional)
execution-parameters
: Permite que o algoritmo forneça os parâmetros ideais de ajuste para um trabalho durante o runtime. Com base na memória e na CPUs disponibilidade de um contêiner, o algoritmo escolhe osMaxPayloadInMB
valores e apropriadosMaxConcurrentTransforms
para o trabalho.BatchStrategy
Antes de chamar a solicitação de invocações, a SageMaker IA tenta invocar a solicitação de parâmetros de execução. Ao criar um trabalho de transformação em lote, você pode fornecer valores para os MaxPayloadInMB
parâmetros MaxConcurrentTransforms
BatchStrategy
, e. SageMaker A IA determina os valores desses parâmetros usando esta ordem de precedência:
-
Os valores de parâmetro que você fornece ao criar a solicitação
CreateTransformJob
. -
Os valores que o contêiner do modelo retorna quando a SageMaker IA invoca o endpoint dos parâmetros de execução>
-
Os valores de parâmetros padrão, listados na seguinte tabela:
Parameter Valores padrão MaxConcurrentTransforms
1
BatchStrategy
MULTI_RECORD
MaxPayloadInMB
6
A resposta para uma solicitação de parâmetros de execução GET
é um objeto JSON com chaves para os parâmetros MaxConcurrentTransforms
, BatchStrategy
, e MaxPayloadInMB
. Aqui está um exemplo de resposta válida:
{
“MaxConcurrentTransforms”: 8,
“BatchStrategy": "MULTI_RECORD",
"MaxPayloadInMB": 6
}
Como o contêiner deve responder a solicitações de inferência
Para obter inferências, a Amazon SageMaker AI envia uma solicitação POST para o contêiner de inferência. O corpo da solicitação POST contém dados do Amazon S3. O Amazon SageMaker AI passa a solicitação para o contêiner e retorna o resultado da inferência do contêiner, salvando os dados da resposta no Amazon S3.
Para receber solicitações de inferência, o contêiner deve ter um servidor web que escute na porta 8080 e deve aceitar solicitações POST para o endpoint /invocations
. O tempo limite da solicitação de inferência e o máximo de novas tentativas podem ser configurados por meio de ModelClientConfig
.
Como o contêiner deve responder a solicitações de verificação de integridade (ping)
O requisito mais simples é que o contêiner deve responder com um código de status HTTP 200 e um corpo vazio. Isso indica à SageMaker IA que o contêiner está pronto para aceitar solicitações de inferência no /invocations
endpoint.
Embora a exigência mínima seja para o contêiner retornar um 200 estático, um desenvolvedor de contêiner pode usar essa funcionalidade para executar verificações mais profundas. O tempo limite da solicitação em tentativas /ping
é de 2 segundos.