Selecione suas preferências de cookies

Usamos cookies essenciais e ferramentas semelhantes que são necessárias para fornecer nosso site e serviços. Usamos cookies de desempenho para coletar estatísticas anônimas, para que possamos entender como os clientes usam nosso site e fazer as devidas melhorias. Cookies essenciais não podem ser desativados, mas você pode clicar em “Personalizar” ou “Recusar” para recusar cookies de desempenho.

Se você concordar, a AWS e terceiros aprovados também usarão cookies para fornecer recursos úteis do site, lembrar suas preferências e exibir conteúdo relevante, incluindo publicidade relevante. Para aceitar ou recusar todos os cookies não essenciais, clique em “Aceitar” ou “Recusar”. Para fazer escolhas mais detalhadas, clique em “Personalizar”.

Código de inferência personalizado com uma transformação em lote

Modo de foco
Código de inferência personalizado com uma transformação em lote - SageMaker IA da Amazon

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á.

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.

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 serve

    A 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, JSONLines e TFRecordRecordio.

    SageMaker A IA substitui CMD as declarações padrão em um contêiner especificando o serve argumento após o nome da imagem. O argumento serve substitui os argumentos que você fornece com o comando CMD no Dockerfile.

     

  • Recomendamos que você use a forma exec da instrução ENTRYPOINT:

    ENTRYPOINT ["executable", "param1", "param2"]

    Por exemplo:

    ENTRYPOINT ["python", "k_means_inference.py"]

     

  • SageMaker A IA define variáveis de ambiente especificadas em CreateModele CreateTransformJobno seu contêiner. Além disso, as seguintes variáveis de ambiente serão preenchidas:

    • SAGEMAKER_BATCH sempre é definida como true 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 como SINGLE_RECORD quando o contêiner receber um único registro por chamada para invocações e como MULTI_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 de 200 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 os MaxPayloadInMB valores e apropriados MaxConcurrentTransforms 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 MaxConcurrentTransformsBatchStrategy, e. SageMaker A IA determina os valores desses parâmetros usando esta ordem de precedência:

  1. Os valores de parâmetro que você fornece ao criar a solicitação CreateTransformJob.

  2. Os valores que o contêiner do modelo retorna quando a SageMaker IA invoca o endpoint dos parâmetros de execução>

  3. 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.

PrivacidadeTermos do sitePreferências de cookies
© 2025, Amazon Web Services, Inc. ou suas afiliadas. Todos os direitos reservados.