
A medida que más clientes buscan llevar las cargas de trabajo de aprendizaje automático (ML) a la producción, las organizaciones están trabajando para acortar el ciclo de desarrollo del código ML. Muchas organizaciones prefieren escribir su código ML en un estilo listo para producción en forma de métodos y clases de Python en lugar de un estilo exploratorio (escribir código sin usar métodos o clases) porque les ayuda a enviar más código listo para producción rápidamente.
Con Amazon SageMaker, puede usar el decorador @remote para ejecutar un trabajo de capacitación de SageMaker simplemente anotando su código de Python con un decorador @remote. EL SDK de Python de SageMaker traducirá automáticamente su entorno de espacio de trabajo existente y cualquier conjunto de datos y código de procesamiento de datos asociado a un trabajo de capacitación de SageMaker que se ejecuta en la plataforma de capacitación de SageMaker.
Ejecutar una función de Python localmente a menudo requiere múltiples dependencias, que pueden no venir con el tiempo de ejecución local de Python. Puede instalarlos a través de herramientas de administración de paquetes y dependencias como semilla O Contar.
Sin embargo, las organizaciones que operan en industrias reguladas, como la banca, los seguros y la atención médica, operan en entornos donde existen estrictos controles de redes y privacidad de datos. Estos controles a menudo requieren que no haya acceso a Internet disponible para ninguno de sus entornos. El motivo de tal restricción es tener un control total sobre el tráfico saliente y entrante para reducir las posibilidades de que actores sin escrúpulos envíen o reciban información no verificada a través de su red. A menudo, también es obligatorio tener dicho aislamiento de red como parte de las reglas de cumplimiento auditivo e industrial. En lo que respecta a ML, esto evita que los científicos de datos descarguen cualquier paquete de repositorios públicos como APIPy, AnacondaO Fragua Conda.
Para proporcionar a los científicos de datos acceso a las herramientas de su elección respetando las limitaciones del entorno, las organizaciones a menudo configuran su propio repositorio de paquetes privado alojado en su propio entorno. Puede configurar repositorios de paquetes privados en AWS de varias maneras:
En este artículo, nos enfocamos en la primera opción: usar CodeArtifact.
Descripción general de la solución
El siguiente diagrama de arquitectura muestra la arquitectura de la solución.
Los pasos de alto nivel para implementar la solución son los siguientes
- Configure una nube privada virtual (VPC) sin acceso a Internet mediante una plantilla de AWS CloudFormation.
- Utilice una segunda plantilla de CloudFormation para configurar CodeArtifact como un repositorio de PyPI privado y proporcione conectividad de VPC, y configure un entorno de Amazon SageMaker Studio para usar el repositorio de PyPI privado.
- Entrenar un modelo de clasificación basado en el MNIST conjunto de datos con un decorador @remote del SDK de SageMaker Python de código abierto. Todas las dependencias se descargarán del repositorio privado de PyPI.
Tenga en cuenta que el uso de SageMaker Studio en este artículo es opcional. Puede optar por trabajar en cualquier entorno de desarrollo integrado (IDE) de su elección. Solo necesita configurar correctamente sus credenciales de la interfaz de línea de comandos de AWS (AWS CLI). Para obtener más información, consulte Configurar la CLI de AWS.
condiciones previas
Necesita una cuenta de AWS con un rol de AWS Identity and Access Management (IAM) con permisos para administrar los recursos creados como parte de la solución. Para obtener más información, consulte Creación de una cuenta de AWS.
Configurar una VPC sin conexión a Internet
Cree una nueva pila de CloudFormation usando vpc.yaml modelo. Esta plantilla crea los siguientes recursos:
- Una VPC con dos subredes privadas en dos zonas de disponibilidad sin conexión a Internet
- Un punto de enlace de la VPC de la puerta de enlace para acceder a Amazon S3
- Puntos de enlace de VPC de interfaz para SageMaker, CodeArtifact y algunos otros servicios para permitir que los recursos de VPC se conecten a los servicios de AWS a través de AWS PrivateLink
Especifique un nombre de pila, como No-Internet
y complete el proceso de creación de la pila.
Espere a que se complete el proceso de creación de la pila.
Configurar un repositorio privado y SageMaker Studio mediante VPC
El siguiente paso es implementar otra pila de CloudFormation usando sagemaker_studio_codeartifact.yaml modelo. Esta plantilla crea los siguientes recursos:
Especifique un nombre de pila y mantenga los valores predeterminados o ajuste la configuración para Nombre de dominio CodeArtifact, nombre del repositorio privado, nombre de perfil de usuario para SageMaker Studio y nombre de repositorio PyPI público ascendente. También debe proporcionarnos la Nombre de pila de VPC creado en el paso anterior.
Cuando se complete la creación de la pila, el dominio de SageMaker debería estar visible en la consola de SageMaker.
Para verificar que no haya conexión a Internet disponible en SageMaker Studio, inicie SageMaker Studio. Elegir File
, New
Y Terminal
para iniciar una terminal e intentar bucle cualquier recurso de Internet. Debería fallar al conectarse como se muestra en la siguiente captura de pantalla.
Entrene un clasificador de imágenes usando un decorador @remote con el repositorio privado de PyPI
En esta sección, usamos el decorador @remote para ejecutar un AntorchaPy tarea de entrenamiento que produce un modelo de clasificación de imágenes MNIST. Para hacer esto, configuramos un archivo de configuración, desarrollamos el script de entrenamiento y ejecutamos el código de entrenamiento.
Configurar un archivo de configuración
hemos establecido un config.yaml
y proporcione las configuraciones necesarias para hacer lo siguiente:
- Ejecute un trabajo de capacitación de SageMaker en la VPC sin Internet creada anteriormente
- Descargue los paquetes necesarios conectándose al repositorio privado de PyPI creado anteriormente
El archivo se parece al siguiente código:
EL Dependencies
el campo contiene la ruta a requirements.txt
, que contiene todas las dependencias necesarias. Tenga en cuenta que todas las dependencias se descargarán del repositorio privado. EL requirements.txt
archivo contiene el siguiente código:
EL PreExecutionCommands
La sección contiene el comando para conectarse al repositorio privado de PyPI. Para obtener la URL del punto final de la VPC de CodeArtifact, use el siguiente código:
Por lo general, obtenemos dos puntos de enlace de la VPC para CodeArtifact y podemos usar cualquiera de ellos en los comandos de conexión. Para obtener más información, consulte Uso de CodeArtifact desde una VPC.
Además, configuraciones como execution role
, output location
Y VPC configurations
se proporcionan en el archivo de configuración. Estas configuraciones son necesarias para ejecutar el trabajo de capacitación de SageMaker. Para obtener información sobre todas las configuraciones admitidas, consulte Archivo de configuración.
No es obligatorio utilizar el config.yaml
para trabajar con @remote decorador. Esta es solo una forma más limpia de proporcionar todas las configuraciones al decorador @remote. Todas las configuraciones también podrían proporcionarse directamente en argumentos de decorador, pero esto reduce la legibilidad y la capacidad de mantenimiento de los cambios a largo plazo. Además, un administrador puede crear el archivo de configuración y compartirlo con todos los usuarios de un entorno.
Desarrollo del guión de entrenamiento.
A continuación, preparamos el código de entrenamiento en archivos simples de Python. Hemos dividido el código en tres archivos:
- cargar_datos.py – Contiene el código para descargar el conjunto de datos MNIST
- modelo.py – Contiene el código de arquitectura de red neuronal para el modelo.
- tren.py – Contiene código para entrenar el modelo usando load_data.py y model.py
Dentro train.py
necesitamos decorar la función de entrenamiento principal de la siguiente manera:
Ahora estamos listos para ejecutar el código de entrenamiento.
Ejecute el código de entrenamiento con un decorador @remote
Podemos ejecutar el código desde una terminal o desde cualquier indicador ejecutable. En este artículo, usamos una celda de notebook de SageMaker Studio para demostrar esto:
La ejecución del comando anterior desencadena el trabajo de entrenamiento. En los logs podemos ver que está descargando los paquetes del repositorio privado de PyPI.
Con esto concluye la implementación de un decorador @remote trabajando con un repositorio privado en un ambiente sin acceso a internet.
Limpiar
Para limpiar los recursos, siga las instrucciones en LIMPIEZA.md.
Conclusión
En este artículo, aprendimos cómo usar de manera efectiva las capacidades del decorador @remote mientras trabajamos en entornos restrictivos sin acceso a Internet. También aprendimos a integrar la funcionalidad del repositorio privado de CodeArtifact mediante la compatibilidad con archivos de configuración en SageMaker. Esta solución hace que el desarrollo iterativo sea mucho más simple y rápido. Otro beneficio adicional es que aún puede continuar escribiendo código de capacitación de una manera más natural y orientada a objetos y seguir usando las funciones de SageMaker para ejecutar trabajos de capacitación en un clúster remoto con cambios mínimos en su código. Todo el código que se muestra como parte de este artículo está disponible en el repositorio GitHub.
Como siguiente paso, le recomendamos que compruebe la función de decorador @remote y API del SDK de Python y utilícelo en su elección de entorno e IDE. Hay ejemplos adicionales disponibles en el amazon-sagemaker-ejemplos repositorio para comenzar rápidamente. También puede ver la publicación Ejecute su código local de aprendizaje automático como trabajos de capacitación de Amazon SageMaker con cambios mínimos de código para obtener más detalles.
Sobre el Autor
vikesh pandey es un arquitecto de soluciones especializado en aprendizaje automático en AWS, que ayuda a los clientes de la industria financiera a diseñar y crear soluciones en IA y ML generativos. Fuera del trabajo, a Vikesh le gusta probar diferentes cocinas y practicar deportes al aire libre.