Mueva los modelos de aprendizaje automático de Amazon SageMaker Autopilot de la experimentación a la producción utilizando Amazon SageMaker Pipelines PlatoBlockchain Data Intelligence. Búsqueda vertical. Ai.

Mueva los modelos de aprendizaje automático de Amazon SageMaker Autopilot de la experimentación a la producción mediante Amazon SageMaker Pipelines

Piloto automático Amazon SageMaker crea, entrena y ajusta automáticamente los mejores modelos de aprendizaje automático (ML) personalizados en función de sus datos. Es una solución de aprendizaje automático automatizado (AutoML) que elimina el trabajo pesado de los modelos ML escritos a mano que requieren experiencia en ML. Los científicos de datos solo deben proporcionar un conjunto de datos tabulares y seleccionar la columna de destino para predecir, y Autopilot infiere automáticamente el tipo de problema, realiza el preprocesamiento de datos y la ingeniería de funciones, selecciona los algoritmos y el modo de entrenamiento, y explora diferentes configuraciones para encontrar el mejor modelo de ML. Luego puede implementar directamente el modelo en un Amazon SageMaker punto final o repetir las soluciones recomendadas para mejorar aún más la calidad del modelo.

Aunque Autopilot elimina el trabajo pesado de crear modelos de ML, los ingenieros de MLOps aún tienen que crear, automatizar y administrar flujos de trabajo de ML de extremo a extremo. Canalizaciones de Amazon SageMaker lo ayuda a automatizar los diferentes pasos del ciclo de vida de ML, incluido el preprocesamiento de datos, la capacitación, el ajuste y la evaluación de modelos de ML y su implementación.

En esta publicación, mostramos cómo crear un flujo de trabajo de ML de extremo a extremo para entrenar y evaluar un modelo de ML generado por Autopilot usando Pipelines y registrarlo en el Registro de modelos de SageMaker. El modelo de ML con el mejor rendimiento se puede implementar en un punto final de SageMaker.

Descripción general del conjunto de datos

Utilizamos el conjunto de datos de readmisión hospitalaria disponible públicamente para pacientes diabéticos para predecir la readmisión de pacientes diabéticos dentro de los 30 días posteriores al alta. Es una versión sampleada del “Diabetes 130-US hospitales para los años 1999-2008 Conjunto de datos”. Este es un problema de clasificación de clases múltiples porque las opciones de readmisión son < 30 si el paciente es readmitido dentro de los 30 días, > 30 si el paciente es reingresado a los 30 días, o no por no tener constancia de reingreso.

El conjunto de datos contiene 50,000 filas y 15 columnas. Esto incluye información demográfica sobre pacientes junto con sus registros de visitas al hospital y readmitted como la columna de destino. La siguiente tabla resume los detalles de la columna.

Nombre de columna Descripción
Raza_Caucásica Valores: 0 para no, 1 para sí
raza_afroamericana Valores: 0 para no, 1 para sí
Raza_Hispano Valores: 0 para no, 1 para sí
raza_asiática Valores: 0 para no, 1 para sí
Raza_Otro Valores: 0 para no, 1 para sí
Edad 0-100 rango de edad
Tiempo en el hospital Número de días entre el ingreso y el alta
Número de procedimientos de laboratorio Número de pruebas de laboratorio realizadas durante el encuentro
Número de medicamentos Número de nombres genéricos distintos administrados durante el encuentro
Número de visitas de emergencia Número de visitas a urgencias del paciente en el año anterior al encuentro
Número de visitas de pacientes hospitalizados Número de visitas hospitalarias del paciente en el año anterior al encuentro
Número de diagnósticos Número de diagnósticos ingresados ​​al sistema
Cambio de medicamentos Indica si hubo un cambio en los medicamentos para la diabetes (ya sea la dosis o el nombre genérico); valores: 0 y 1
Medicamentos para diabéticos Indica si se prescribió algún medicamento para la diabetes; valores: 0 para no cambiar la prescripción y 1 para cambiar la prescripción
Readmitido Días hasta la readmisión de pacientes hospitalizados; valores: 30 si el paciente reingresó en más de 30 días, y no para sin registro de reingreso

Resumen de la solución

Usamos Ductos en Estudio Amazon SageMaker orquestar diferentes pasos de canalización necesarios para entrenar un modelo de piloto automático. Un Experimento de piloto automático se crea y ejecuta con los SDK de AWS como se describe en esta publicación. Los trabajos de capacitación de Autopilot inician sus propios procesos de back-end dedicados de SageMaker y Llamadas a la API de SageMaker son necesarios para iniciar nuevos trabajos de capacitación, monitorear los estados de los trabajos de capacitación e invocar modelos de piloto automático capacitados.

Los siguientes son los pasos necesarios para este proceso de capacitación de Autopilot de extremo a extremo:

  1. Cree un trabajo de entrenamiento de Autopilot.
  2. Supervisar el estado del trabajo de formación.
  3. Evalúe el rendimiento del modelo entrenado en un conjunto de datos de prueba.
  4. Registrar el modelo en el registro de modelos.

Pasos de canalización de SageMaker

Cuando el modelo registrado cumple con los requisitos de rendimiento esperados después de una revisión manual, puede implementar el modelo en un Punto final de SageMaker mediante un script de implementación independiente.

El siguiente diagrama de arquitectura ilustra los diferentes pasos de canalización necesarios para empaquetar todos los pasos en una canalización de entrenamiento de Autopilot reproducible, automatizada y escalable. Cada paso es responsable de una tarea específica en el flujo de trabajo:

  1. An AWS Lambda La función inicia el trabajo de entrenamiento del piloto automático.
  2. Un paso de devolución de llamada supervisa continuamente el estado de ese trabajo.
  3. Cuando se completa el estado del trabajo de entrenamiento, usamos un trabajo de procesamiento de SageMaker para evaluar el rendimiento del modelo.
  4. Finalmente, usamos otra función de Lambda para registrar el modelo de ML y las métricas de rendimiento en el registro del modelo de SageMaker.

Los archivos de datos se leen desde el Servicio de almacenamiento simple de Amazon El depósito (Amazon S3) y los pasos de canalización se llaman secuencialmente.

Diagrama de arquitectura de la canalización de SageMaker

Diagrama de arquitectura de la canalización de SageMaker

En las siguientes secciones, revisamos el código y discutimos los componentes de cada paso. Para implementar la solución, haga referencia a la Repositorio GitHub, que proporciona instrucciones paso a paso para implementar un flujo de trabajo de MLOps de AutoPilot mediante Pipelines.

Requisitos previos

Para este tutorial, complete los siguientes pasos de requisitos previos:

  1. Configurar un Cuenta de AWS.
  2. Cree un entorno de estudio.
  3. Crea dos Gestión de identidades y accesos de AWS (IAM) funciones: LambdaExecutionRole y SageMakerExecutionRole, con los permisos que se describen en el cuaderno de SageMaker. Las políticas administradas deben tener un alcance más bajo para mejorar la seguridad. Para obtener instrucciones, consulte Creación de un rol para delegar permisos a un usuario de IAM.
  4. En la consola de Studio, cargue el código de la Repositorio GitHub.
  5. Abra el cuaderno de SageMaker autopilot_pipelines_demo_notebook.ipynb y ejecutar las celdas debajo Obtener conjunto de datos para descargar los datos y cargarlos en su depósito S3.
    1. Descargue los datos y descomprímalos en una carpeta llamada datos:
      !unzip -o data/data.zip -d data
      !mkdir data
      !wget https://static.us-east-1.prod.workshops.aws/public/d56bf7ad-9738-4edf-9be0-f03cd22d8cf2/static/resources/hcls/diabetic.zip -nc -O data/data.zip
      

    2. Divida los datos en archivos de prueba y entrenamiento y cárguelos en su depósito S3. Autopilot divide automáticamente el archivo train-val en conjuntos de datos de entrenamiento y validación. El archivo de prueba se divide en dos archivos separados: un archivo sin la columna de destino y otro archivo con solo la columna de destino.
      data = pd.read_csv(DATASET_PATH)
      train_val_data = data.sample(frac=0.8)
      test_data = data.drop(train_val_data.index)
      train_val_data.to_csv(train_val_dataset_s3_path.default_value, index=False, header=True)
      test_data.drop(target_attribute_name.default_value, axis=1).to_csv(
      x_test_s3_path.default_value, index=False, header=False
      )
      test_data[target_attribute_name.default_value].to_csv(
      y_test_s3_path.default_value, index=False, header=True)
      

Cuando el conjunto de datos esté listo para usar, ahora podemos configurar Pipelines para establecer un proceso repetible para construir y entrenar modelos de ML personalizados usando Autopilot. Usamos boto3 y del SDK de SageMaker para iniciar, rastrear y evaluar los trabajos de AutoML de manera automatizada.

Definir los pasos de la canalización

En esta sección, lo guiaremos a través de la configuración de los cuatro pasos en la canalización.

Iniciar el trabajo del piloto automático

Este paso de canalización utiliza un paso lambda, que ejecuta una función Lambda sin servidor. Usamos un paso Lambda porque la llamada API a Autopilot es liviana. Las funciones de Lambda no tienen servidor y son adecuadas para esta tarea. Para obtener más información sobre los pasos de Lambda, consulte Utilice un paso de SageMaker Pipeline Lambda para implementaciones de modelos ligeros. La función lambda en el start_autopilot_job.py guión crea un trabajo de Autopilot.

Usamos la llamada a la API de piloto automático de Boto3 crear_auto_ml_trabajo para especificar la configuración del trabajo de Autopilot, con los siguientes parámetros:

  • AutoMLJobName – El nombre del trabajo del piloto automático.
  • Configuración de datos de entrada – Los datos de entrenamiento, la ubicación de los datos en Amazon S3 y tipo de datos S3 con valores válidos como S3Prefix, ManifestFiley AugmentedManifestFile.
  • Configuración de datos de salida – La ruta de salida de S3 donde se almacenan los artefactos del trabajo de AutoML.
  • Tipo de problema - El tipo de problema (MulticlassClassification para nuestro caso de uso).
  • AutoMLJobObjectiveAutoMLJobObjectiveF1macro es nuestro métrica objetiva para nuestro caso de uso.
  • Configuración de trabajo de AutoML - El modo de entrenamiento se especifica aquí. Usamos el recién lanzado modo de entrenamiento conjunto creado por AutoGluón.

Ver el siguiente código:

def lambda_handler(event, context):
sagemaker_client.create_auto_ml_job(
AutoMLJobName=event["AutopilotJobName"],
InputDataConfig=[
{
"DataSource": {
"S3DataSource": {
"S3DataType": "S3Prefix",
"S3Uri": event["TrainValDatasetS3Path"],
}
},
"TargetAttributeName": event["TargetAttributeName"],
}
],
OutputDataConfig={"S3OutputPath": event["TrainingOutputS3Path"]},
ProblemType=event["ProblemType"],
AutoMLJobObjective={"MetricName": event["AutopilotObjectiveMetricName"]},
AutoMLJobConfig={
"CompletionCriteria": {
"MaxCandidates": event["MaxCandidates"],
"MaxRuntimePerTrainingJobInSeconds": event[
"MaxRuntimePerTrainingJobInSeconds"
],
"MaxAutoMLJobRuntimeInSeconds": event["MaxAutoMLJobRuntimeInSeconds"],
},
"Mode": event["AutopilotMode"],
},
RoleArn=event["AutopilotExecutionRoleArn"],
)

Comprobar el estado del trabajo del piloto automático

A Paso de devolución de llamada nos ayuda a realizar un seguimiento del estado del trabajo de entrenamiento de Autopilot.

El paso realiza un seguimiento repetido del estado del trabajo de entrenamiento mediante el uso de una función Lambda separada en check_autopilot_job_status.py hasta su finalización.

El paso de devolución de llamada coloca un token en un Servicio de cola simple de Amazon (Amazon SQS) que activa una función Lambda para verificar el estado del trabajo de entrenamiento:

  • Si el trabajo aún se está ejecutando, la función de Lambda genera una excepción y el mensaje se vuelve a colocar en la cola de SQS.
  • Si el trabajo está completo, la función Lambda envía un mensaje de éxito al Callback paso y la canalización continúa con el siguiente paso

Usamos una combinación de un Callback paso y una función Lambda. Existe una opción alternativa de usar un trabajo de procesamiento de SageMaker en su lugar.

Evalúe el mejor modelo de piloto automático

La Paso de procesamiento de SageMaker lanza un Trabajo de transformación por lotes de SageMaker para evaluar el modelo de Autopilot entrenado con un conjunto de datos de evaluación (el conjunto de prueba que se guardó en el depósito de S3) y genera el informe de evaluación de métricas de rendimiento y las métricas de explicabilidad del modelo. El script de evaluación toma el nombre del trabajo de AutoPilot como argumento de entrada e inicia el trabajo de transformación por lotes.

Cuando se completa el trabajo de transformación por lotes, obtenemos predicciones de salida para el conjunto de prueba. Las predicciones de salida se comparan con las etiquetas reales (reales) mediante funciones de métricas de Scikit-learn. Evaluamos nuestros resultados en base a la Puntuación F1, precisióny recordar. Las métricas de rendimiento se guardan en un archivo JSON, al que se hace referencia al registrar el modelo en el paso siguiente.

Registrar el modelo de piloto automático

Usamos otro paso Lambda, en el que la función Lambda en register_autopilot_job.py registra el modelo de Autopilot en el registro de modelos de SageMaker utilizando el informe de evaluación obtenido en el paso de procesamiento de SageMaker anterior. Aquí se utiliza un paso Lambda para la rentabilidad y la latencia.

En este punto, hemos registrado correctamente nuestro nuevo modelo de Autopilot en el registro de modelos de SageMaker. Puede ver el nuevo modelo en Studio eligiendo registro modelo en Recursos de SageMaker menú y apertura autopilot-demo-package. Elija cualquier versión de un trabajo de entrenamiento para ver las métricas objetivas en Calidad del modelo.

Mueva los modelos de aprendizaje automático de Amazon SageMaker Autopilot de la experimentación a la producción utilizando Amazon SageMaker Pipelines PlatoBlockchain Data Intelligence. Búsqueda vertical. Ai.

Puede utilizar el informe de explicabilidad en el Explicabilidad pestaña para comprender las predicciones de su modelo.

Mueva los modelos de aprendizaje automático de Amazon SageMaker Autopilot de la experimentación a la producción utilizando Amazon SageMaker Pipelines PlatoBlockchain Data Intelligence. Búsqueda vertical. Ai.

Para ver los experimentos ejecutados para cada modelo creado, vaya a la Experimentos y ensayos página. Elija (haga clic con el botón derecho) uno de los experimentos enumerados y elija Describir el trabajo de AutoML para ver la tabla de clasificación del modelo.

Mueva los modelos de aprendizaje automático de Amazon SageMaker Autopilot de la experimentación a la producción utilizando Amazon SageMaker Pipelines PlatoBlockchain Data Intelligence. Búsqueda vertical. Ai.

Para ver los pasos de canalización en el Experimentos y ensayos página, elija (haga clic con el botón derecho) el experimento y elija Abrir detalles de canalización.

Mueva los modelos de aprendizaje automático de Amazon SageMaker Autopilot de la experimentación a la producción utilizando Amazon SageMaker Pipelines PlatoBlockchain Data Intelligence. Búsqueda vertical. Ai.

Crear y ejecutar la canalización

Después de definir los pasos de la canalización, los combinamos en un Canalización de SageMaker. Los pasos se ejecutan secuencialmente. La canalización ejecuta todos los pasos de un trabajo de AutoML, utilizando Autopilot para el entrenamiento, la evaluación del modelo y el registro del modelo. Ver el siguiente código:

pipeline = Pipeline(
name="autopilot-demo-pipeline",
parameters=[
autopilot_job_name,
target_attribute_name,
train_val_dataset_s3_path,
x_test_s3_path,
y_test_s3_path,
max_autopilot_candidates,
max_autopilot_job_runtime,
max_autopilot_training_job_runtime,
instance_count,
instance_type,
model_approval_status,
],
steps=[
step_start_autopilot_job,
step_check_autopilot_job_status_callback,
step_autopilot_model_evaluation,
step_register_autopilot_model,
],
sagemaker_session=sagemaker_session,
)

Implementar el modelo

Después de haber revisado manualmente el rendimiento del modelo de ML, podemos implementar nuestro modelo recién creado en un punto final de SageMaker. Para esto, podemos ejecutar la celda en el cuaderno que crea el extremo del modelo utilizando la configuración del modelo guardada en el registro del modelo de SageMaker.

Tenga en cuenta que este script se comparte con fines de demostración, pero se recomienda seguir una canalización de CI/CD más sólida para la implementación de producción. Para obtener más información, consulte Crear, automatizar, administrar y escalar flujos de trabajo de aprendizaje automático con Amazon SageMaker Pipelines.

Conclusión

Esta publicación describió un enfoque de canalización de ML fácil de usar para entrenar automáticamente modelos de ML tabulares (AutoML) usando Autopilot, Pipelines y Studio. AutoML mejora la eficiencia de los profesionales de ML, acelerando el camino desde la experimentación de ML hasta la producción sin la necesidad de una amplia experiencia en ML. Describimos los pasos de canalización respectivos necesarios para la creación, evaluación y registro del modelo ML.

Comience accediendo al código en el Repositorio GitHub para entrenar e implementar sus propios modelos AutoML personalizados.

Para obtener más información sobre Pipelines y Autopilot, consulte Canalizaciones de Amazon SageMaker y Automatice el desarrollo de modelos con Amazon SageMaker Autopilot, respectivamente.


Acerca de los autores

Mueva los modelos de aprendizaje automático de Amazon SageMaker Autopilot de la experimentación a la producción utilizando Amazon SageMaker Pipelines PlatoBlockchain Data Intelligence. Búsqueda vertical. Ai.Pedro de Malliard es un científico de datos de pila completa para AWS y le apasiona ayudar a los clientes a mejorar sus resultados comerciales con el aprendizaje automático. Ha estado construyendo soluciones AI/ML en todo el sector de la salud. Posee múltiples certificaciones de AWS. En su tiempo libre, Pierre disfruta del esquí de travesía y la pesca submarina.

Mueva los modelos de aprendizaje automático de Amazon SageMaker Autopilot de la experimentación a la producción utilizando Amazon SageMaker Pipelines PlatoBlockchain Data Intelligence. Búsqueda vertical. Ai.paavani dua es un científico aplicado en la organización de IA de AWS. En Amazon ML Solutions Lab, trabaja con los clientes para resolver sus problemas comerciales mediante soluciones de ML. Fuera del trabajo, le gusta caminar, leer y hornear.

Mueva los modelos de aprendizaje automático de Amazon SageMaker Autopilot de la experimentación a la producción utilizando Amazon SageMaker Pipelines PlatoBlockchain Data Intelligence. Búsqueda vertical. Ai.marcelo aberle es un ingeniero de ML en la organización de IA de AWS. Dirige los esfuerzos de MLOps en Amazon ML Solutions Lab, ayudando a los clientes a diseñar e implementar sistemas de ML escalables. Su misión es guiar a los clientes en su viaje empresarial de ML y acelerar su ruta de ML hacia la producción. Es un admirador de la naturaleza de California y disfruta del senderismo y el ciclismo en San Francisco.

Sello de tiempo:

Mas de Aprendizaje automático de AWS