[ad_1]
Amazon SageMaker Pipelines es un servicio de AWS totalmente administrado para crear y orquestar flujos de trabajo de aprendizaje automático (ML). SageMaker Pipelines brinda a los desarrolladores de aplicaciones de ML la capacidad de orquestar varios pasos del flujo de trabajo de ML, incluida la carga de datos, la transformación de datos, la capacitación, la optimización y la entrega. Puede utilizar SageMaker Pipelines para organizar trabajos de aprendizaje automático en SageMaker, y la integración con el ecosistema más amplio de AWS también le permite aprovechar recursos como funciones de AWS Lambda, trabajos de Amazon EMR y más. Esto le permite crear un proceso individual y reproducible para requisitos específicos en sus flujos de trabajo de ML.
En esta publicación, compartimos algunas de las mejores prácticas para maximizar el valor de los canales de SageMaker y hacer que la experiencia de desarrollo sea perfecta. También analizamos algunos escenarios y patrones de diseño comunes al crear canalizaciones de SageMaker y brindamos ejemplos de cómo superarlos.
Mejores prácticas para canalizaciones de SageMaker
En esta sección, analizamos algunas de las mejores prácticas a seguir al diseñar flujos de trabajo utilizando SageMaker Pipelines. Su introducción puede mejorar el proceso de desarrollo y agilizar la gestión operativa de SageMaker Pipelines.
Utilice Pipeline Session para cargar la tubería de forma diferida
La sesión de canalización permite la inicialización diferida de los recursos de canalización (los trabajos no se inician hasta el tiempo de ejecución de la canalización). El PipelineSession
El contexto hereda la sesión de SageMaker e implementa métodos convenientes para interactuar con otras entidades y recursos de SageMaker, p. B. Trabajos de capacitación, puntos finales, conjuntos de datos de entrada en Amazon Simple Storage Service (Amazon S3), etc. Al definir canalizaciones de SageMaker, debe utilizar PipelineSession
a través de la sesión regular de SageMaker:
Ejecute canalizaciones en modo local para realizar iteraciones rápidas y económicas durante el desarrollo.
Puede utilizar para ejecutar una canalización en modo local. LocalPipelineSession
Contexto. En este modo, la canalización y los trabajos se ejecutan localmente utilizando recursos en la computadora local en lugar de los recursos administrados por SageMaker. El modo local proporciona una forma económica de iterar a través del código canalizado con un subconjunto más pequeño de datos. Una vez que la canalización se haya probado localmente, se puede escalar para ejecutarla utilizando el contexto PipelineSession.
Administre una canalización de SageMaker a través del control de versiones
El control de versiones de artefactos y definiciones de canalizaciones es un requisito común en el ciclo de vida del desarrollo. Puede crear varias versiones de la canalización nombrando los objetos de la canalización con un prefijo o sufijo único. El uso más común es una marca de tiempo, como se muestra en el siguiente código:
Organice y realice un seguimiento de las ejecuciones del proceso de SageMaker mediante la integración con SageMaker Experiments
SageMaker Pipelines se integra fácilmente con SageMaker Experiments para organizar y realizar un seguimiento de las ejecuciones de canalizaciones. Esto se logra especificando PipelineExperimentConfig en el momento en que se crea un objeto Pipeline. Este objeto de configuración le permite especificar un nombre de experimento y un nombre de prueba. Los detalles de ejecución de una canalización de SageMaker se organizan según el experimento y la prueba especificados. Si no especifica explícitamente un nombre de experimento, se utiliza un nombre de canalización como nombre del experimento. De manera similar, si no especifica explícitamente un nombre de prueba, se utiliza un ID de ejecución de canalización para la prueba o el nombre del grupo de ejecución. Vea el siguiente código:
Ejecute canalizaciones de SageMaker de forma segura en una VPC privada
Para proteger las cargas de trabajo de ML, se recomienda que los trabajos orquestados por SageMaker Pipelines se implementen en una configuración de red segura dentro de una VPC privada, subredes privadas y grupos de seguridad. Para garantizar y hacer cumplir el uso de este entorno seguro, puede implementar la siguiente política de AWS Identity and Access Management (IAM) para el rol de ejecución de SageMaker (este es el rol que asume la canalización durante su ejecución). También puede agregar la política para ejecutar los trabajos orquestados por SageMaker Pipelines en modo de aislamiento de red.
Para ver un ejemplo de implementación de canalización con estos controles de seguridad, consulte Orquestación de trabajos, registro de modelos y entrega continua con Amazon SageMaker en un entorno seguro.
Supervise el costo de las ejecuciones de canalizaciones mediante etiquetas
Usar solo las canalizaciones de SageMaker es gratis; Paga por los recursos informáticos y de almacenamiento que compromete en cada paso del proceso, como el procesamiento, la capacitación y la inferencia por lotes. Para agregar el costo por ejecución de canalización, puede incluir etiquetas en cada paso de canalización que crea un recurso. Luego se puede hacer referencia a estas etiquetas en el Explorador de costos para filtrar y agregar los costos totales de ejecución de la canalización, como se muestra en el siguiente ejemplo:
En el Explorador de costos, ahora puede ver los costos filtrados por la siguiente etiqueta:
Patrones de diseño para algunos escenarios comunes.
En esta sección, analizamos patrones de diseño para algunos casos de uso comunes con SageMaker Pipelines.
Ejecute una función Python simple con un paso Lambda
Las funciones de Python son omnipresentes en los flujos de trabajo de ML; Se utilizan en preprocesamiento, posprocesamiento, evaluación y más. Lambda es un servicio informático sin servidor que le permite ejecutar código sin implementar ni administrar servidores. Con Lambda, puede ejecutar código en su lenguaje favorito, que incluye Python. Le permite ejecutar código Python personalizado como parte de su canalización. Una etapa Lambda le permite ejecutar funciones Lambda como parte de su canalización de SageMaker. Comience con el siguiente código:
Cree la función Lambda utilizando el asistente Lambda del SDK de Python de SageMaker:
Llame al paso Lambda:
Pasar datos entre pasos
Los datos de entrada para un paso de la canalización son una ubicación de datos accesible o datos generados por uno de los pasos anteriores de la canalización. Puede proporcionar esta información como ProcessingInput
Parámetro. Veamos algunos escenarios sobre cómo se puede utilizar ProcessingInput.
Escenario 1: pasar la salida (tipos de datos primitivos) de un paso de Lambda a un paso de procesamiento
Los tipos de datos primitivos se refieren a tipos de datos escalares como cadena, entero, booleano y flotante.
El siguiente fragmento de código define una función Lambda que devuelve un diccionario de variables con tipos de datos primitivos. Su código de función Lambda devuelve un JSON que contiene pares clave-valor cuando se invoca desde la etapa Lambda dentro de la canalización de SageMaker.
En la definición de la canalización, puede definir los parámetros de la canalización de SageMaker que tienen un tipo de datos específico y establecer la variable en la salida de la función Lambda:
Escenario 2: pasar la salida (tipos de datos no primitivos) de un paso de Lambda a un paso de procesamiento
Los tipos de datos no primitivos se refieren a tipos de datos no escalares (p. ej. NamedTuple
). Puede haber ocasiones en las que necesite devolver un tipo de datos no primitivo desde una función Lambda. Para hacer esto, necesita convertir su tipo de datos no primitivo en una cadena:
Luego puede usar esa cadena como entrada para un paso posterior en la canalización. Para usar la tupla nombrada en el código, use eval()
Para analizar la expresión de Python en la cadena:
Escenario 3: pasar el resultado de un paso a través de un archivo de propiedades
También puede almacenar el resultado de un paso de procesamiento en un archivo JSON de propiedades para uso posterior. ConditionStep
u otro ProcessingStep
. Puede utilizar la función JSONGet para consultar un archivo de propiedades. Vea el código a continuación:
Supongamos que el contenido del archivo de propiedades es el siguiente:
En este caso, se puede consultar un valor específico utilizando la función JsonGet y utilizarlo en los pasos siguientes:
Parametrizar una variable en la definición de canalización
A menudo es deseable parametrizar variables para que puedan usarse en tiempo de ejecución, por ejemplo, para crear un URI de S3. Puede parametrizar una cadena para ser evaluada en tiempo de ejecución Join
Función. El siguiente fragmento de código muestra cómo definir la variable usando Join
Funcione y utilice esto para establecer la ubicación de salida en un paso de procesamiento:
Ejecute código paralelo sobre un iterable
Algunos flujos de trabajo de ML ejecutan código en paralelo para bucles sobre un conjunto estático de elementos (un repetible). Puede ser el mismo código ejecutado para diferentes datos o un fragmento de código diferente que debe ejecutarse para cada elemento. Por ejemplo, si tiene una gran cantidad de líneas en un archivo y desea acelerar el tiempo de procesamiento, puede utilizar el patrón anterior. Si desea realizar diferentes transformaciones en subconjuntos específicos de los datos, es posible que necesite ejecutar un código diferente para cada subconjunto de los datos. Los dos escenarios siguientes ilustran cómo se pueden diseñar canalizaciones de SageMaker para este fin.
Escenario 1: implementar lógica de procesamiento para diferentes datos
Puede ejecutar un trabajo de procesamiento con múltiples instancias (mediante configuración). instance_count
a un valor mayor que 1). Esto distribuye los datos de entrada de Amazon S3 entre todas las instancias de procesamiento. Luego puede usar un script (process.py) para procesar un dato específico en función del número de instancia y el elemento correspondiente en la lista de elementos. La lógica de programación en Process.py se puede escribir para ejecutar un módulo o código diferente según la lista de elementos que se procesan. El siguiente ejemplo define un procesador que se puede utilizar en un ProcessingStep:
Escenario 2: seguir una secuencia de pasos
Si tiene una secuencia de pasos que deben ejecutarse en paralelo, puede definir cada secuencia como una canalización de SageMaker independiente. La ejecución de estas canalizaciones de SageMaker puede activarse mediante una función Lambda que forma parte de un LambdaStep
en la tubería principal. La siguiente sección de código ilustra el escenario en el que se activan dos ejecuciones diferentes de canalización de SageMaker:
Diploma
En esta publicación, analizamos algunas de las mejores prácticas para usar y mantener eficientemente las canalizaciones de SageMaker. También proporcionamos patrones específicos que puede adoptar al diseñar flujos de trabajo utilizando SageMaker Pipelines, ya sea que esté creando nuevas canalizaciones o migrando flujos de trabajo de ML desde otras herramientas de orquestación. Para comenzar con SageMaker Pipelines para la orquestación del flujo de trabajo de ML, consulte los ejemplos de código en GitHub y Amazon SageMaker Model Building Pipelines.
Sobre los autores
Panigrahi rosa trabaja con clientes para desarrollar soluciones basadas en aprendizaje automático para resolver problemas comerciales estratégicos en AWS. Cuando no está ocupado con el aprendizaje automático, se le puede encontrar caminando, leyendo un libro o viendo deportes.
Meenakshisundaram Thandavarayan Trabaja para AWS como especialista en IA/ML. Su pasión es diseñar, construir e impulsar experiencias de análisis y datos centradas en el ser humano. Meena se centra en la creación de sistemas sostenibles que ofrezcan ventajas competitivas mensurables para los clientes estratégicos de AWS. Meena es conectora, pensadora de diseño y se esfuerza por transformar las empresas en nuevas formas de trabajar a través de la innovación, la incubación y la democratización.
[ad_2]