Implante e gerencie pipelines de machine learning com o Terraform usando o Amazon SageMaker PlatoBlockchain Data Intelligence. Pesquisa Vertical. Ai.

Implante e gerencie pipelines de machine learning com o Terraform usando o Amazon SageMaker

Os clientes da AWS contam com a infraestrutura como código (IaC) para projetar, desenvolver e gerenciar sua infraestrutura de nuvem. A IaC garante que a infraestrutura e os serviços do cliente sejam consistentes, escaláveis ​​e reproduzíveis, além de poder seguir as melhores práticas na área de operações de desenvolvimento (DevOps).

Uma abordagem possível para gerenciar a infraestrutura e os serviços da AWS com IaC é Terraform, que permite que os desenvolvedores organizem sua infraestrutura em módulos de código reutilizáveis. Esse aspecto está ganhando cada vez mais importância na área de aprendizado de máquina (ML). Desenvolver e gerenciar pipelines de ML, incluindo treinamento e inferência com o Terraform como IaC, permite dimensionar facilmente para vários casos de uso de ML ou regiões sem precisar desenvolver a infraestrutura do zero. Além disso, fornece consistência para a infraestrutura (por exemplo, tipo e tamanho da instância) para treinamento e inferência em diferentes implementações do pipeline de ML. Isso permite rotear solicitações e tráfego de entrada para diferentes Amazon Sage Maker pontos finais.

Nesta postagem, mostramos como implantar e gerenciar pipelines de ML usando o Terraform e o Amazon SageMaker.

Visão geral da solução

Esta postagem fornece o código e orienta você pelas etapas necessárias para implantar a infraestrutura da AWS para pipelines de ML com o Terraform para treinamento e inferência de modelos usando o Amazon SageMaker. O pipeline de ML é gerenciado por meio de Funções de etapa da AWS para orquestrar as diferentes etapas implementadas no pipeline de ML, conforme ilustrado na figura a seguir.

Etapas da função Step

O Step Functions inicia um AWS Lambda função, gerando um ID de trabalho exclusivo, que é usado ao iniciar um trabalho de treinamento do SageMaker. O Step Functions também cria um modelo, configuração de terminal e terminal usado para inferência. Os recursos adicionais incluem o seguinte:

O código relacionado a ML para treinamento e inferência com uma imagem do Docker depende principalmente do trabalho existente no seguinte Repositório GitHub.

O diagrama a seguir ilustra a arquitetura da solução:

Diagrama de Arquitetura

Orientamos você pelas seguintes etapas de alto nível:

  1. Implante sua infraestrutura da AWS com o Terraform.
  2. Envie sua imagem do Docker para o Amazon ECR.
  3. Execute o pipeline de ML.
  4. Invoque seu ponto de extremidade.

Estrutura do repositório

Você pode encontrar o repositório contendo o código e os dados usados ​​para esta postagem no seguinte Repositório GitHub.

O repositório inclui os seguintes diretórios:

  • /terraform – Consiste nas seguintes subpastas:
    • ./infrastructure – Contém o arquivo main.tf chamando o módulo de pipeline de ML, além das declarações de variáveis ​​que usamos para implantar a infraestrutura
    • ./ml-pipeline-module – Contém o módulo de pipeline do Terraform ML, que podemos reutilizar
  • /src – Consiste nas seguintes subpastas:
    • ./container – Contém código de exemplo para treinamento e inferência com as definições da imagem do Docker
    • ./lambda_function – Contém o código Python para as configurações de geração da função Lambda, como um ID de trabalho exclusivo para o trabalho de treinamento do SageMaker
  • /data – Contém o seguinte arquivo:
    • ./iris.csv – Contém dados para treinar o modelo de ML

Pré-requisitos

Para este passo a passo, você deve ter os seguintes pré-requisitos:

Implante sua infraestrutura da AWS com o Terraform

Para implantar o pipeline de ML, você precisa ajustar algumas variáveis ​​e nomes de acordo com suas necessidades. O código desta etapa está no /terraform diretório.

Ao inicializar pela primeira vez, abra o arquivo terraform/infrastructure/terraform.tfvars e ajuste a variável Nome do Projeto ao nome do seu projeto, além da variável região se você deseja implantar em outra região. Você também pode alterar variáveis ​​adicionais, como tipos de instância para treinamento e inferência.

Em seguida, use os seguintes comandos para implantar a infraestrutura com o Terraform:

export AWS_PROFILE=<your_aws_cli_profile_name>
cd terraform/infrastructure
terraform init
terraform plan
terraform apply

Verifique a saída e certifique-se de que os recursos planejados apareçam corretamente e confirme com sim no estágio de aplicação se tudo está correto. Em seguida, acesse o console do Amazon ECR (ou verifique a saída do Terraform no terminal) e obtenha a URL do seu repositório ECR que você criou por meio do Terraform.

A saída deve ser semelhante à saída exibida a seguir, incluindo a URL do repositório ECR:

Apply complete! Resources: 19 added, 0 changed, 0 destroyed. Outputs: ecr_repository_url = <account_number>.dkr.ecr.eu-west-1.amazonaws.com/ml-pipeline-terraform-demo

Envie sua imagem do Docker para o Amazon ECR

Para que o pipeline de ML e o SageMaker treinem e provisionem um endpoint do SageMaker para inferência, você precisa fornecer uma imagem do Docker e armazená-la no Amazon ECR. Você pode encontrar um exemplo no diretório src/container. Se você já aplicou a infraestrutura da AWS da etapa anterior, pode enviar a imagem do Docker conforme descrito. Depois que sua imagem do Docker for desenvolvida, você pode executar as seguintes ações e enviá-la para o Amazon ECR (ajuste o URL do Amazon ECR de acordo com suas necessidades):

cd src/container
export AWS_PROFILE=<your_aws_cli_profile_name>
aws ecr get-login-password --region eu-west-1 | docker login --username AWS --password-stdin <account_number>.dkr.ecr.eu-west-1.amazonaws.com
docker build -t ml-training .
docker tag ml-training:latest <account_number>.dkr.ecr.eu-west-1.amazonaws.com/<ecr_repository_name>:latest
docker push <account_number>.dkr.ecr.eu-west-1.amazonaws.com/<ecr_repository_name>

Se você já aplicou a infraestrutura da AWS com o Terraform, você pode enviar as alterações do seu código e imagem do Docker diretamente para o Amazon ECR sem implantar novamente via Terraform.

Execute o pipeline de ML

Para treinar e executar o pipeline de ML, acesse o console do Step Functions e inicie a implementação. Você pode verificar o andamento de cada etapa na visualização da máquina de estado. Você também pode verificar o progresso do trabalho de treinamento do SageMaker e o status do seu endpoint do SageMaker.

Função Iniciar Etapa

Depois de executar com êxito a máquina de estado no Step Functions, você pode ver que o ponto de extremidade do SageMaker foi criado. No console do SageMaker, escolha Inferência no painel de navegação e, em seguida, Pontos finais. Certifique-se de aguardar o status mudar para InService.

Status do ponto final do SageMaker

Invoque seu endpoint

Para invocar seu endpoint (neste exemplo, para o conjunto de dados iris), você pode usar o seguinte script Python com o SDK da AWS para Python (Boto3). Você pode fazer isso em um notebook SageMaker ou incorporar o seguinte trecho de código em uma função do Lambda:

import boto3
from io import StringIO
import pandas as pd client = boto3.client('sagemaker-runtime') endpoint_name = 'Your endpoint name' # Your endpoint name.
content_type = "text/csv"   # The MIME type of the input data in the request body. payload = pd.DataFrame([[1.5,0.2,4.4,2.6]])
csv_file = StringIO()
payload.to_csv(csv_file, sep=",", header=False, index=False)
payload_as_csv = csv_file.getvalue() response = client.invoke_endpoint(
EndpointName=endpoint_name,
ContentType=content_type,
Body=payload_as_csv
) label = response['Body'].read().decode('utf-8')
print(label)

limpar

Você pode destruir a infraestrutura criada pelo Terraform com o comando terraform destroy, mas primeiro é necessário excluir os dados e os arquivos nos buckets do S3. Além disso, o endpoint do SageMaker (ou vários endpoints do SageMaker, se executados várias vezes) é criado por meio do Step Functions e não gerenciado pelo Terraform. Isso significa que a implantação acontece ao executar o pipeline de ML com o Step Functions. Portanto, certifique-se de excluir o endpoint ou os endpoints do SageMaker criados por meio do pipeline do Step Functions ML para evitar custos desnecessários. Conclua as seguintes etapas:

  1. No console do Amazon S3, exclua o conjunto de dados no bucket de treinamento do S3.
  2. Exclua todos os modelos que você treinou por meio do pipeline de ML no bucket de modelos do S3, seja por meio do console do Amazon S3 ou da AWS CLI.
  3. Destrua a infraestrutura criada via Terraform:
    cd terraform/infrastructure
    terraform destroy

  4. Exclua os endpoints do SageMaker, a configuração do endpoint e os modelos criados por meio do Step Functions, no console do SageMaker ou por meio da AWS CLI.

Conclusão

Parabéns! Você implantou um pipeline de ML usando o SageMaker com Terraform. Este exemplo de solução mostra como você pode implantar facilmente a infraestrutura e os serviços da AWS para pipelines de ML de maneira reutilizável. Isso permite dimensionar para vários casos de uso ou regiões e permite treinar e implantar modelos de ML com um clique de maneira consistente. Além disso, você pode executar o pipeline de ML várias vezes, por exemplo, quando novos dados estiverem disponíveis ou você quiser alterar o código do algoritmo. Você também pode optar por rotear solicitações ou tráfego para diferentes pontos de extremidade do SageMaker.

Incentivo você a explorar a adição de recursos de segurança e a adoção de práticas recomendadas de segurança de acordo com suas necessidades e padrões potenciais da empresa. Além disso, incorporar essa solução em seus pipelines de CI/CD fornecerá mais recursos para adotar e estabelecer as melhores práticas e padrões de DevOps de acordo com seus requisitos.


Sobre o autor

Implante e gerencie pipelines de machine learning com o Terraform usando o Amazon SageMaker PlatoBlockchain Data Intelligence. Pesquisa Vertical. Ai.Oliver Zollikofer é Cientista de Dados na Amazon Web Services. Ele permite que clientes corporativos globais criem, treinem e implantem modelos de aprendizado de máquina, bem como gerenciem o ciclo de vida do modelo de ML com MLOps. Além disso, ele cria e arquiteta soluções de nuvem relacionadas.

Carimbo de hora:

Mais de Aprendizado de máquina da AWS