Implemente y administre canalizaciones de aprendizaje automático con Terraform utilizando Amazon SageMaker PlatoBlockchain Data Intelligence. Búsqueda vertical. Ai.

Implemente y administre canalizaciones de aprendizaje automático con Terraform usando Amazon SageMaker

Los clientes de AWS confían en Infraestructura como código (IaC) para diseñar, desarrollar y administrar su infraestructura en la nube. IaC garantiza que la infraestructura y los servicios del cliente sean consistentes, escalables y reproducibles, al tiempo que puede seguir las mejores prácticas en el área de operaciones de desarrollo (DevOps).

Un enfoque posible para administrar la infraestructura y los servicios de AWS con IaC es Terraform, que permite a los desarrolladores organizar su infraestructura en módulos de código reutilizables. Este aspecto está ganando cada vez más importancia en el área del aprendizaje automático (ML). El desarrollo y la administración de canalizaciones de ML, incluida la capacitación y la inferencia con Terraform como IaC, le permite escalar fácilmente para múltiples casos de uso de ML o regiones sin tener que desarrollar la infraestructura desde cero. Además, proporciona consistencia para la infraestructura (por ejemplo, tipo y tamaño de instancia) para el entrenamiento y la inferencia en diferentes implementaciones de la canalización de ML. Esto le permite enrutar las solicitudes y el tráfico entrante a diferentes Amazon SageMaker puntos finales.

En esta publicación, le mostramos cómo implementar y administrar canalizaciones de ML con Terraform y Amazon SageMaker.

Resumen de la solución

Esta publicación proporciona código y lo guía a través de los pasos necesarios para implementar la infraestructura de AWS para canalizaciones de aprendizaje automático con Terraform para el entrenamiento y la inferencia de modelos con Amazon SageMaker. La canalización de ML se administra a través de Funciones de paso de AWS para orquestar los diferentes pasos implementados en la canalización de ML, como se ilustra en la siguiente figura.

Paso Función Pasos

Step Functions inicia un AWS Lambda función, generando una identificación de trabajo única, que luego se usa al iniciar un trabajo de capacitación de SageMaker. Step Functions también crea un modelo, una configuración de punto final y un punto final utilizado para la inferencia. Los recursos adicionales incluyen lo siguiente:

El código relacionado con ML para el entrenamiento y la inferencia con una imagen de Docker se basa principalmente en el trabajo existente en el siguiente Repositorio GitHub.

El siguiente diagrama ilustra la arquitectura de la solución:

Diagrama de arquitectura

Lo guiamos a través de los siguientes pasos de alto nivel:

  1. Implemente su infraestructura de AWS con Terraform.
  2. Envíe su imagen de Docker a Amazon ECR.
  3. Ejecute la canalización de ML.
  4. Invoque su punto final.

Estructura del repositorio

Puede encontrar el repositorio que contiene el código y los datos utilizados para esta publicación en el siguiente Repositorio GitHub.

El repositorio incluye los siguientes directorios:

  • /terraform – Consta de las siguientes subcarpetas:
    • ./infrastructure – Contiene el archivo main.tf que llama al módulo de canalización de ML, además de las declaraciones de variables que usamos para implementar la infraestructura.
    • ./ml-pipeline-module – Contiene el módulo de canalización de Terraform ML, que podemos reutilizar
  • /src – Consta de las siguientes subcarpetas:
    • ./container – Contiene código de ejemplo para entrenamiento e inferencia con las definiciones para la imagen de Docker
    • ./lambda_function – Contiene el código de Python para las configuraciones de generación de funciones de Lambda, como una ID de trabajo única para el trabajo de entrenamiento de SageMaker.
  • /data – Contiene el siguiente archivo:
    • ./iris.csv – Contiene datos para entrenar el modelo ML

Requisitos previos

Para este tutorial, debe tener los siguientes requisitos previos:

Implemente su infraestructura de AWS con Terraform

Para implementar la canalización de ML, debe ajustar algunas variables y nombres según sus necesidades. El código para este paso está en el /terraform directorio.

Al inicializar por primera vez, abra el archivo terraform/infrastructure/terraform.tfvars y ajustar la variable nombre del proyecto al nombre de tu proyecto, además de la variable región si desea implementar en otra región. También puede cambiar variables adicionales, como tipos de instancias para entrenamiento e inferencia.

Luego use los siguientes comandos para implementar la infraestructura con Terraform:

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

Verifique la salida y asegúrese de que los recursos planificados aparezcan correctamente, y confirme con sí en la etapa de aplicación si todo es correcto. Luego vaya a la consola de Amazon ECR (o verifique la salida de Terraform en la terminal) y obtenga la URL de su repositorio de ECR que creó a través de Terraform.

El resultado debe ser similar al siguiente resultado mostrado, incluida la URL del repositorio de 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

Envíe su imagen de Docker a Amazon ECR

Para que la canalización de ML y SageMaker entrenen y aprovisionen un punto de enlace de SageMaker para la inferencia, debe proporcionar una imagen de Docker y almacenarla en Amazon ECR. Puede encontrar un ejemplo en el directorio src/container. Si ya aplicó la infraestructura de AWS del paso anterior, puede insertar la imagen de Docker como se describe. Después de desarrollar su imagen de Docker, puede realizar las siguientes acciones y enviarla a Amazon ECR (ajuste la URL de Amazon ECR según sus necesidades):

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>

Si ya aplicó la infraestructura de AWS con Terraform, puede enviar los cambios de su código y la imagen de Docker directamente a Amazon ECR sin volver a implementar a través de Terraform.

Ejecute la canalización de ML

Para entrenar y ejecutar la canalización de ML, vaya a la consola de Step Functions e inicie la implementación. Puede comprobar el progreso de cada paso en la visualización de la máquina de estado. También puede verificar el progreso del trabajo de capacitación de SageMaker y el estado de su terminal de SageMaker.

Función de paso de inicio

Después de ejecutar correctamente la máquina de estado en Step Functions, puede ver que se ha creado el extremo de SageMaker. En la consola de SageMaker, elija Inferencia en el panel de navegación, luego Endpoints. Asegúrese de esperar a que el estado cambie a InService.

Estado de punto final de SageMaker

Invoque su punto final

Para invocar su punto final (en este ejemplo, para el conjunto de datos del iris), puede usar la siguiente secuencia de comandos de Python con el AWS SDK para Python (Boto3). Puede hacerlo desde un cuaderno de SageMaker o incrustar el siguiente fragmento de código en una función de 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)

Limpiar

Puede destruir la infraestructura creada por Terraform con el comando terraform destroy, pero primero debe eliminar los datos y archivos en los depósitos S3. Además, el punto final de SageMaker (o varios puntos finales de SageMaker si se ejecutan varias veces) se crea a través de Step Functions y no se administra a través de Terraform. Esto significa que la implementación ocurre cuando se ejecuta la canalización de ML con Step Functions. Por lo tanto, asegúrese de eliminar el punto final de SageMaker o los puntos finales creados a través de la canalización de aprendizaje automático de Step Functions para evitar costos innecesarios. Complete los siguientes pasos:

  1. En la consola de Amazon S3, elimine el conjunto de datos en el depósito de entrenamiento de S3.
  2. Elimine todos los modelos que entrenó a través de la canalización de ML en el depósito de modelos de S3, ya sea a través de la consola de Amazon S3 o de la AWS CLI.
  3. Destruye la infraestructura creada a través de Terraform:
    cd terraform/infrastructure
    terraform destroy

  4. Elimine los puntos de enlace de SageMaker, la configuración de puntos de enlace y los modelos creados a través de Step Functions, ya sea en la consola de SageMaker o a través de la AWS CLI.

Conclusión

¡Felicidades! Implementó una canalización de aprendizaje automático mediante SageMaker con Terraform. Esta solución de ejemplo muestra cómo puede implementar fácilmente la infraestructura y los servicios de AWS para canalizaciones de aprendizaje automático de forma reutilizable. Esto le permite escalar para múltiples casos de uso o regiones, y permite entrenar e implementar modelos ML con un solo clic de manera consistente. Además, puede ejecutar la canalización de ML varias veces, por ejemplo, cuando hay nuevos datos disponibles o si desea cambiar el código del algoritmo. También puede optar por enrutar las solicitudes o el tráfico a diferentes terminales de SageMaker.

Lo animo a explorar la posibilidad de agregar funciones de seguridad y adoptar las mejores prácticas de seguridad de acuerdo con sus necesidades y los posibles estándares de la empresa. Además, incorporar esta solución en sus canalizaciones de CI/CD le brindará más capacidades para adoptar y establecer las mejores prácticas y estándares de DevOps de acuerdo con sus requisitos.


Sobre la autora

Implemente y administre canalizaciones de aprendizaje automático con Terraform utilizando Amazon SageMaker PlatoBlockchain Data Intelligence. Búsqueda vertical. Ai.Oliver Zollikofer es científico de datos en Amazon Web Services. Permite a los clientes empresariales globales crear, entrenar e implementar modelos de aprendizaje automático, así como administrar el ciclo de vida del modelo ML con MLOps. Además, crea y diseña soluciones en la nube relacionadas.

Sello de tiempo:

Mas de Aprendizaje automático de AWS