Canalizaciones de Amazon SageMaker permite a los científicos de datos y a los ingenieros de aprendizaje automático (ML) automatizar los flujos de trabajo de capacitación, lo que lo ayuda a crear un proceso repetible para orquestar los pasos de desarrollo de modelos para una experimentación rápida y una nueva capacitación de modelos. Puede automatizar todo el flujo de trabajo de creación de modelos, incluida la preparación de datos, la ingeniería de características, el entrenamiento de modelos, el ajuste de modelos y la validación de modelos, y catalogarlo en el registro de modelos. Puede configurar las canalizaciones para que se ejecuten automáticamente a intervalos regulares o cuando se activan ciertos eventos, o puede ejecutarlas manualmente según sea necesario.
En esta publicación, destacamos algunas de las mejoras en el Amazon SageMaker SDK e introduzca nuevas características de Amazon SageMaker Pipelines que facilitan a los profesionales de ML la creación y capacitación de modelos de ML.
Pipelines continúa innovando su experiencia de desarrollador y, con estos lanzamientos recientes, ahora puede usar el servicio de una manera más personalizada:
- 2.99.0, 2.101.1, 2.102.0, 2.104.0 – Documentación actualizada sobre
PipelineVariable
uso para las clases base de estimador, procesador, sintonizador, transformador y modelo, modelos de Amazon y modelos de marco. Habrá cambios adicionales con versiones más nuevas del SDK para admitir todas las subclases de estimadores y procesadores. - 2.90.0 - Disponibilidad de ModeloPaso para tareas integradas de creación y registro de recursos de modelos.
- 2.88.2 - Disponibilidad de Sesión de canalización para la interacción administrada con entidades y recursos de SageMaker.
- 2.88.2 – Compatibilidad de subclases para pasos de trabajo de canalización de flujo de trabajo para que pueda crear abstracciones de trabajos y configurar y ejecutar trabajos de procesamiento, capacitación, transformación y ajuste como lo haría sin una canalización.
- 2.76.0 - Disponibilidad de paso fallido para detener condicionalmente una canalización con un estado de error.
En esta publicación, lo guiaremos a través de un flujo de trabajo utilizando un conjunto de datos de muestra con un enfoque en la creación e implementación de modelos para demostrar cómo implementar las nuevas funciones de Pipelines. Al final, debería tener suficiente información para usar con éxito estas funciones más nuevas y simplificar sus cargas de trabajo de ML.
Descripción de las características
Pipelines ofrece las siguientes características nuevas:
- Anotación de variable de canalización – Ciertos parámetros de método aceptan múltiples tipos de entrada, incluidos
PipelineVariables
, y se ha agregado documentación adicional para aclarar dóndePipelineVariables
son compatibles tanto con la última versión estable de la documentación del SDK de SageMaker como con la firma de inicio de las funciones. Por ejemplo, en el siguiente estimador de TensorFlow, la firma init ahora muestra quemodel_dir
yimage_uri
SOPORTEPipelineVariables
, mientras que los otros parámetros no lo hacen. Para obtener más información, consulte Estimador TensorFlow.- Antes de:
- Después:
- Sesión de canalización – Sesión de canalización es un nuevo concepto introducido para traer unidad a través del SDK de SageMaker e introduce la inicialización diferida de los recursos de canalización (las llamadas de ejecución se capturan pero no se ejecutan hasta que se crea y ejecuta la canalización). los
PipelineSession
El contexto hereda elSageMakerSession
e implementa métodos convenientes para que usted interactúe con otras entidades y recursos de SageMaker, como trabajos de capacitación, puntos finales y conjuntos de datos de entrada almacenados en Servicio de almacenamiento simple de Amazon (Amazon S3). - Compatibilidad de subclase con pasos de trabajo de canalización de flujo de trabajo – Ahora puede crear abstracciones de trabajos y configurar y ejecutar trabajos de procesamiento, capacitación, transformación y ajuste como lo haría sin una canalización.
- Por ejemplo, crear un paso de procesamiento con
SKLearnProcessor
anteriormente requería lo siguiente: - Como vemos en el código anterior,
ProcessingStep
necesita hacer básicamente la misma lógica de preprocesamiento que.run
, simplemente sin iniciar la llamada a la API para iniciar el trabajo. Pero con la compatibilidad de subclases ahora habilitada con los pasos de trabajo de canalización de flujo de trabajo, declaramos elstep_args
argumento que toma la lógica de preprocesamiento con .run para que pueda crear una abstracción de trabajo y configurarla como la usaría sin Pipelines. También pasamos en elpipeline_session
, Que es unPipelineSession
objeto, en lugar desagemaker_session
para asegurarse de que las llamadas de ejecución se capturen pero no se llamen hasta que se cree y ejecute la canalización. Ver el siguiente código:
- Por ejemplo, crear un paso de procesamiento con
- Paso de modelo (un enfoque simplificado con creación de modelos y pasos de registro) –Pipelines ofrece dos tipos de pasos para integrarse con los modelos de SageMaker:
CreateModelStep
yRegisterModel
. Ahora puede lograr ambos usando solo elModelStep
escribe. Tenga en cuenta que unPipelineSession
se requiere para lograr esto. Esto brinda similitud entre los pasos de canalización y el SDK.- Antes de:
-
- Después:
- Fail step (detención condicional de la ejecución de la canalización) –
FailStep
permite que una canalización se detenga con un estado de falla si se cumple una condición, como si la puntuación del modelo está por debajo de cierto umbral.
Resumen de la solución
En esta solución, su punto de entrada es el Estudio Amazon SageMaker entorno de desarrollo integrado (IDE) para la experimentación rápida. Studio ofrece un entorno para administrar la experiencia de Pipelines de un extremo a otro. Con Studio, puede omitir la Consola de administración de AWS para toda la gestión de su flujo de trabajo. Para obtener más información sobre cómo administrar Pipelines desde Studio, consulte Visualización, seguimiento y ejecución de canalizaciones de SageMaker en SageMaker Studio.
El siguiente diagrama ilustra la arquitectura de alto nivel del flujo de trabajo de ML con los diferentes pasos para entrenar y generar inferencias usando las nuevas características.
La canalización incluye los siguientes pasos:
- Preprocesar los datos para crear las funciones requeridas y dividir los datos en conjuntos de datos de entrenamiento, validación y prueba.
- Cree un trabajo de entrenamiento con el marco SageMaker XGBoost.
- Evalúe el modelo entrenado utilizando el conjunto de datos de prueba.
- Compruebe si la puntuación AUC está por encima de un umbral predefinido.
- Si la puntuación de AUC es inferior al umbral, detenga la ejecución de la canalización y márquela como fallida.
- Si la puntuación AUC es superior al umbral, cree un modelo de SageMaker y regístrelo en el registro de modelos de SageMaker.
- Aplique la transformación por lotes en el conjunto de datos dado utilizando el modelo creado en el paso anterior.
Requisitos previos
Para seguir esta publicación, necesita una cuenta de AWS con un Dominio de estudio.
Pipelines se integra directamente con las entidades y los recursos de SageMaker, por lo que no necesita interactuar con ningún otro servicio de AWS. Tampoco necesita administrar ningún recurso porque es un servicio completamente administrado, lo que significa que crea y administra recursos por usted. Para obtener más información sobre los diversos componentes de SageMaker que son API de Python independientes junto con componentes integrados de Studio, consulte la Página de producto de SageMaker.
Antes de comenzar, instale la versión del SDK de SageMaker >= 2.104.0 y xlrd >=1.0.0 en el portátil de Studio con el siguiente fragmento de código:
Flujo de trabajo de aprendizaje automático
Para esta publicación, utiliza los siguientes componentes:
- Preparación de datos
- Procesamiento SageMaker – SageMaker Processing es un servicio completamente administrado que le permite ejecutar transformaciones de datos personalizadas e ingeniería de características para cargas de trabajo de ML.
- Construcción del modelo
- Capacitación y evaluación de modelos
- Entrenamiento con un clic – La función de formación distribuida de SageMaker. SageMaker proporciona bibliotecas de capacitación distribuidas para el paralelismo de datos y el paralelismo de modelos. Las bibliotecas están optimizadas para el entorno de capacitación de SageMaker, ayudan a adaptar sus trabajos de capacitación distribuidos a SageMaker y mejoran la velocidad y el rendimiento de la capacitación.
- Experimentos de SageMaker – Experimentos es una capacidad de SageMaker que le permite organizar, rastrear, comparar y evaluar sus iteraciones de ML.
- Transformación por lotes de SageMaker – La transformación por lotes o la puntuación sin conexión es un servicio administrado en SageMaker que le permite predecir en un conjunto de datos más grande utilizando sus modelos de ML.
- Orquestación del flujo de trabajo
Una canalización de SageMaker es una serie de pasos interconectados definidos por una definición de canalización JSON. Codifica una tubería utilizando un gráfico acíclico dirigido (DAG). El DAG brinda información sobre los requisitos y las relaciones entre cada paso de la canalización, y su estructura está determinada por las dependencias de datos entre los pasos. Estas dependencias se crean cuando las propiedades de la salida de un paso se pasan como entrada a otro paso.
El siguiente diagrama ilustra los diferentes pasos en la canalización de SageMaker (para un caso de uso de predicción de abandono) donde SageMaker infiere las conexiones entre los pasos en función de las entradas y salidas definidas por las definiciones de paso.
Las siguientes secciones explican la creación de cada paso de la canalización y la ejecución de la canalización completa una vez creada.
Estructura del proyecto
Comencemos con la estructura del proyecto:
- /sm-pipelines-extremo-a-extremo-ejemplo – El nombre del proyecto
- /datos – Los conjuntos de datos
- / pipelines – Los archivos de código para los componentes de la canalización
- /abandono de clientes
- preproceso.py
- evaluar.py
- /abandono de clientes
- proyecto-pipelines-sagemaker.ipynb – Un cuaderno que recorre el flujo de trabajo de modelado utilizando las nuevas funciones de Pipelines
Descargar el conjunto de datos
Para seguir esta publicación, debe descargar y guardar el conjunto de datos de muestra en la carpeta de datos dentro del directorio de inicio del proyecto, que guarda el archivo en Sistema de archivos elástico de Amazon (Amazon EFS) dentro del entorno Studio.
Construya los componentes de la canalización
Ahora está listo para construir los componentes de canalización.
Importar sentencias y declarar parámetros y constantes
Cree un cuaderno de Studio llamado sagemaker-pipelines-project.ipynb
dentro del directorio de inicio del proyecto. Ingrese el siguiente bloque de código en una celda y ejecute la celda para configurar SageMaker y objetos de cliente S3, cree PipelineSession
y configure la ubicación del depósito de S3 utilizando el depósito predeterminado que viene con una sesión de SageMaker:
Pipelines admite la parametrización, lo que le permite especificar parámetros de entrada en tiempo de ejecución sin cambiar su código de canalización. Puede utilizar los módulos disponibles en el sagemaker.workflow.parameters
módulo, como ParameterInteger
, ParameterFloat
y ParameterString
, para especificar parámetros de canalización de varios tipos de datos. Ejecute el siguiente código para configurar varios parámetros de entrada:
Generar un conjunto de datos por lotes
Genere el conjunto de datos por lotes, que utilizará más adelante en el paso de transformación por lotes:
Subir datos a un depósito S3
Cargue los conjuntos de datos en Amazon S3:
Definir un guión de procesamiento y un paso de procesamiento
En este paso, prepara un script de Python para realizar la ingeniería de funciones, una codificación en caliente y seleccionar las divisiones de entrenamiento, validación y prueba que se utilizarán para la creación de modelos. Ejecute el siguiente código para crear su secuencia de comandos de procesamiento:
A continuación, ejecute el siguiente bloque de código para instanciar el procesador y el paso Pipelines para ejecutar el script de procesamiento. Debido a que el script de procesamiento está escrito en Pandas, usa un SKLearnProcesador. Los oleoductos ProcessingStep
La función toma los siguientes argumentos: el procesador, las ubicaciones S3 de entrada para conjuntos de datos sin procesar y las ubicaciones S3 de salida para guardar conjuntos de datos procesados.
Definir un paso de entrenamiento
Configure el entrenamiento de modelos con un estimador SageMaker XGBoost y Pipelines TrainingStep
función:
Definir el guión de evaluación y el paso de evaluación del modelo.
Ejecute el siguiente bloque de código para evaluar el modelo una vez entrenado. Este script encapsula la lógica para comprobar si la puntuación de AUC alcanza el umbral especificado.
A continuación, ejecute el siguiente bloque de código para instanciar el procesador y el paso Pipelines para ejecutar el script de evaluación. Debido a que el script de evaluación usa el paquete XGBoost, usa un ScriptProcessor
junto con la imagen XGBoost. Los oleoductos ProcessingStep
La función toma los siguientes argumentos: el procesador, las ubicaciones S3 de entrada para conjuntos de datos sin procesar y las ubicaciones S3 de salida para guardar conjuntos de datos procesados.
Definir un paso de creación de modelo
Ejecute el siguiente bloque de código para crear un modelo de SageMaker mediante el paso del modelo Pipelines. Este paso utiliza el resultado del paso de entrenamiento para empaquetar el modelo para su implementación. Tenga en cuenta que el valor del argumento de tipo de instancia se pasa mediante el parámetro Pipelines que definió anteriormente en la publicación.
Definir un paso de transformación por lotes
Ejecute el siguiente bloque de código para ejecutar la transformación por lotes utilizando el modelo entrenado con la entrada por lotes creada en el primer paso:
Definir un paso de modelo de registro
El siguiente código registra el modelo en el registro de modelos de SageMaker mediante el paso del modelo Pipelines:
Definir un paso fallido para detener la canalización
El siguiente código define el paso de error de las canalizaciones para detener la ejecución de la canalización con un mensaje de error si la puntuación AUC no alcanza el umbral definido:
Defina un paso de condición para comprobar la puntuación AUC
El siguiente código define un paso de condición para comprobar la puntuación AUC y crear condicionalmente un modelo y ejecutar una transformación por lotes y registrar un modelo en el registro del modelo, o detener la ejecución de la canalización en un estado fallido:
Construya y ejecute la canalización
Después de definir todos los pasos del componente, puede ensamblarlos en un objeto Pipelines. No es necesario que especifique el orden de canalización porque Pipelines infiere automáticamente la secuencia de orden en función de las dependencias entre los pasos.
Ejecute el siguiente código en una celda de su cuaderno. Si la canalización ya existe, el código actualiza la canalización. Si la tubería no existe, crea una nueva.
Conclusión
En esta publicación, presentamos algunas de las nuevas funciones ahora disponibles con Pipelines junto con otras funciones integradas de SageMaker y el algoritmo XGBoost para desarrollar, iterar e implementar un modelo para la predicción de rotación. La solución se puede ampliar con fuentes de datos adicionales
para implementar su propio flujo de trabajo de ML. Para obtener más detalles sobre los pasos disponibles en el flujo de trabajo de Pipelines, consulte Canalización de creación de modelos de Amazon SageMaker y Flujos de trabajo de SageMaker. Ejemplos de AWS SageMaker El repositorio de GitHub tiene más ejemplos sobre varios casos de uso usando Pipelines.
Acerca de los autores
jerry peng es ingeniero de desarrollo de software en AWS SageMaker. Se centra en la construcción de un sistema MLOps a gran escala de extremo a extremo, desde la capacitación hasta el monitoreo de modelos en producción. También le apasiona llevar el concepto de MLOps a un público más amplio.
Qi Dewen es ingeniero de desarrollo de software en AWS. Actualmente se enfoca en desarrollar y mejorar SageMaker Pipelines. Fuera del trabajo, le gusta practicar violonchelo.
Gayatri Ghanakota es ingeniero sénior de aprendizaje automático en AWS Professional Services. Le apasiona desarrollar, implementar y explicar soluciones de IA/ML en varios dominios. Antes de este cargo, lideró múltiples iniciativas como científica de datos e ingeniera de ML con las principales firmas globales en el espacio financiero y minorista. Tiene una maestría en Ciencias de la Computación especializada en Ciencia de Datos de la Universidad de Colorado, Boulder.
Rupinder Grewal es un Arquitecto de Soluciones Sr. Ai/ML Especialista con AWS. Actualmente se enfoca en servir modelos y MLOps en SageMaker. Antes de este cargo, trabajó como ingeniero de aprendizaje automático creando y alojando modelos. Fuera del trabajo, le gusta jugar tenis y andar en bicicleta por senderos de montaña.
rayo li es un científico de datos sénior de los servicios profesionales de AWS. Su especialidad se centra en la creación y puesta en marcha de soluciones de IA/ML para clientes de distintos tamaños, desde empresas emergentes hasta organizaciones empresariales. Fuera del trabajo, a Ray le gusta hacer ejercicio y viajar.
- AI
- arte ai
- generador de arte ai
- robot ai
- Amazon SageMaker
- inteligencia artificial
- certificación de inteligencia artificial
- inteligencia artificial en banca
- robots de inteligencia artificial
- robots de inteligencia artificial
- software de inteligencia artificial
- Aprendizaje automático de AWS
- blockchain
- conferencia blockchain ai
- Coingenius
- inteligencia artificial conversacional
- criptoconferencia ai
- de dall
- deep learning
- google ai
- máquina de aprendizaje
- Platón
- platón ai
- Inteligencia de datos de Platón
- Juego de Platón
- PlatónDatos
- juego de platos
- escala ia
- sintaxis
- zephyrnet