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á.
Etapa 2. Crie os scripts de runtime

Nesta etapa, você integra o modelo desenvolvido na etapa 1 e seu código auxiliar associado em uma plataforma de ML para treinamento e inferência prontos para produção. Especificamente, isso envolve o desenvolvimento de scripts de tempo de execução para que o modelo possa ser incorporado à SageMaker IA. Esses scripts Python autônomos incluem funções de retorno de chamada de IA SageMaker predefinidas e variáveis de ambiente. Eles são executados dentro de um contêiner de SageMaker IA hospedado em uma instância do Amazon Elastic Compute Cloud (Amazon EC2). A documentação do Amazon SageMaker AI Python SDK
Como utilizar as tarefas de processamento
SageMaker A IA fornece duas opções para realizar a inferência do modelo em lote. Você pode usar um trabalho de processamento de SageMaker IA ou um trabalho de transformação em lote. Cada opção tem vantagens e desvantagens.
Um trabalho de processamento consiste em um arquivo Python executado dentro de um contêiner de SageMaker IA. A tarefa de processamento consiste em qualquer lógica que você coloque em seu arquivo Python. Ela tem estas vantagens:
-
Quando você entender a lógica básica de uma tarefa de treinamento, as tarefas de processamento serão simples de configurar e fáceis de compreender. Elas compartilham as mesmas abstrações das tarefas de treinamento (por exemplo, ajustar a contagem de instâncias e a distribuição de dados).
-
Cientistas de dados e engenheiros de ML possuem controle total sobre as opções de manipulação de dados.
-
O cientista de dados não precisa gerenciar qualquer lógica de componente de E/S, exceto a funcionalidade familiar de leitura/gravação.
-
É um pouco mais fácil executar os arquivos em ambientes sem SageMaker IA, o que ajuda no rápido desenvolvimento e nos testes locais.
-
Se houver um erro, uma tarefa de processamento falhará assim que o script falhar e não haverá espera inesperada por uma nova tentativa.
Por outro lado, as tarefas de transformação em lote são uma extensão do conceito de endpoint de SageMaker IA. Em runtime, essas tarefas importam funções de retorno de chamada, que então manipulam a E/S para ler os dados, carregar o modelo e fazer as previsões. As tarefas de transformação em lote possuem as seguintes vantagens:
-
Elas utilizam uma abstração de distribuição de dados que difere da abstração utilizada em tarefas de treinamento.
-
Elas utilizam o mesmo arquivo principal e a mesma estrutura de funções para inferência em lote e inferência em tempo real, o que é conveniente.
-
Elas possuem um mecanismo de tolerância a falhas integrado baseado em novas tentativas. Por exemplo, se ocorrer um erro em um lote de registros, ela tentará novamente várias vezes antes que o trabalho seja encerrado com falha.
Por causa de sua transparência, facilidade de uso em vários ambientes e abstração compartilhada com tarefas de treinamento, decidimos utilizar a tarefa de processamento em vez da tarefa de transformação em lote na arquitetura de referência apresentada neste guia.
Você deve executar scripts de runtime do Python localmente antes de implantá-los na nuvem. Especificamente, recomendamos que você utilize a cláusula de proteção principal ao estruturar seus scripts Python e realizar testes de unidade.
Como utilizar a cláusula de proteção principal
Use uma cláusula de proteção principal para suporte à importação de módulos e executar seu script Python. Executar scripts Python individualmente é benéfico para depurar e isolar problemas no pipeline de ML. Recomendamos as seguintes etapas:
-
Use um analisador de argumentos nos arquivos de processamento do Python para especificar os arquivos de entrada/saída e suas localizações.
-
Forneça um guia principal e funções de teste para cada arquivo Python.
-
Depois de testar um arquivo Python, incorpore-o aos diferentes estágios do pipeline de ML, esteja você usando um AWS Step Functions modelo ou uma tarefa de processamento de SageMaker IA.
-
Use instruções Assert em seções críticas do script para facilitar o teste e a depuração. Por exemplo, você pode utilizar uma instrução Assert para garantir que o número de atributos do conjunto de dados seja consistente após o carregamento.
Teste de unidade
O teste de unidade de scripts de runtime que foram escritos para o pipeline é uma tarefa importante e frequentemente ignorada no desenvolvimento do pipeline de ML. Isso ocorre porque machine learning e ciência de dados são campos relativamente novos e demoraram a adotar práticas de engenharia de software bem estabelecidas, como testes de unidade. Como o pipeline de ML será utilizado no ambiente de produção, é essencial testar o código do pipeline antes de aplicar o modelo de ML a aplicativos reais.
O teste de unidade do script de runtime também oferece os seguintes benefícios exclusivos para modelos de ML:
-
Ele evita transformações inesperadas de dados. A maioria dos pipelines de ML envolve muitas transformações de dados, por isso é fundamental que essas transformações funcionem conforme o esperado.
-
Ele valida a reprodutibilidade do código. Qualquer aleatoriedade no código pode ser detectada por testes de unidade com diferentes casos de uso.
-
Ele reforça a modularidade do código. Os testes de unidade geralmente são associados à medida de cobertura do teste, que é o grau em que uma suíte de testes específica (uma coleção de casos de teste) executa o código-fonte de um programa. Para obter uma alta cobertura de testes, os desenvolvedores modularizam o código, porque é difícil escrever testes de unidade para uma grande quantidade de código sem dividi-lo em funções ou classes.
-
Isso evita que códigos ou erros de baixa qualidade sejam introduzidos na produção.
Recomendamos que você utilize uma estrutura de teste de unidade madura, como pytest
Importante
Teste de unidade não garante que todos os casos extremos sejam testados, mas podem ajudá-lo a evitar erros de forma proativa antes de implantar o modelo. Recomendamos que você também monitore o modelo após a implantação para garantir a excelência operacional.