Entrenamiento de un modelo de aprendizaje profundo
AWS Deep Learning Containers en Amazon EC2
AWS Deep Learning Containers (DL Containers) son imágenes de Docker preinstaladas con marcos de aprendizaje profundo que facilitan la implementación rápida de entornos de aprendizaje automático personalizados porque le permiten omitir el complejo proceso de crear y optimizar sus entornos desde cero.
Con AWS DL Containers, los desarrolladores y los científicos de datos pueden agregar rápidamente el aprendizaje automático a sus aplicaciones en contenedores implementadas en Amazon Elastic Container Service for Kubernetes (Amazon EKS), Kubernetes autoadministrado, Amazon Elastic Container Service (Amazon ECS) y Amazon EC2.
En este tutorial, entrenará un modelo de aprendizaje automático de TensorFlow en una instancia de Amazon EC2 con AWS Deep Learning Containers.
Acerca de este tutorial | |
---|---|
Duración | 10 minutos |
Costo | Menos de 1 USD |
Caso de uso | Machine Learning |
Productos | AWS Deep Learning Containers, Amazon EC2, Amazon ECR |
Público | Desarrolladores, científicos de datos |
Nivel | Principiante |
Última actualización | 27 de marzo de 2019 |
1. Regístrese en AWS
Necesita una cuenta de AWS para continuar con este tutorial. No hay ningún cargo adicional por usar AWS Deep Learning Containers con este tutorial, Solo paga por la instancia c5.large de Amazon que se utiliza durante el tutorial, que será menos de 1 USD si siguen los pasos de finalización que se indican al final de la instrucción.
¿Ya tiene una cuenta? Inicie sesión en su cuenta
2. Añada permisos para acceder a Amazon ECR
Las imágenes de AWS Deep Learning están alojadas en Amazon Elastic Container Registry (ECR), que es un registro de contenedores de Docker completamente administrado que facilita a los desarrolladores realizar las tareas de almacenamiento, administración e implementación de imágenes de contenedores de Docker. En este paso, otorgará permisos de usuario de IAM existentes para acceder a Amazon ECR (utilizando AmazonECS_FullAccess Policy).
Si no tiene un usuario de IAM existente, consulte la documentación de IAM para obtener más información.
a. Navegue a la consola de IAM
Abra la consola de administración de AWS para poder mantener abierta esta guía detallada. Cuando la pantalla se cargue, escriba su nombre de usuario y contraseña para comenzar. Luego escriba IAM en la barra de búsqueda y seleccione IAM para abrir la consola del servicio.

b. Seleccione los usuarios
En el panel de navegación a la izquierda, seleccione Users (Usuarios).

c. Agregue permisos
Ahora agregará permisos a un nuevo usuario de IAM que creó o a un usuario de IAM existente. Seleccione Add Permissions (Añadir permisos) en la página de resumen de usuarios de IAM.

d. Añada la política de acceso completo de ECS
Seleccione Attach existing policies directly (Asociar directamente políticas existentes) y busque ECS_FullAccess. Seleccione la política Amazon_FullAccess y haga clic en Review (Revisar) y Add Permissions (Añadir permisos).

e. Añada una política en línea
En la página de resumen de usuarios de IAM, seleccione Add inline policy (Añadir política en línea).

f. Pegue la política de JSON
Seleccione la pestaña JSON y pegue la siguiente política:
{
"Version": "2012-10-17",
"Statement": [
{
"Action": "ecr:*",
"Effect": "Allow",
"Resource": "*"
}
]
}
Guarde la política como “ECR” y seleccione Create Policy (Crear política).

3. Lance una instancia de AMI de AWS Deep Learning Base
En este tutorial, utilizaremos AWS Deep Learning Containers en una imagen de Amazon Machine (AMI) de AWS Deep Learning Base, la cual viene preempaquetada con las dependencias necesarias, como controladores de Nvidia, docker y nvidia-docker. Puede ejecutar Deep Learning Containers en cualquier AMI con estos paquetes.
a. Navegue a la consola de EC2
Regrese a la pantalla de inicio de la consola de administración de AWS y escriba EC2 en la barra de búsqueda y seleccione EC2 para abrir la consola del servicio.

b. Lance una instancia de Amazon EC2
Vuelva a navegar a la consola de Amazon EC2 y seleccione el botón Launch Instance (Iniciar instancia).

c. Seleccione la AMI de AWS Deep Learning Base
Elija la pestaña AWS Marketplace a la izquierda y luego busque deep learning base ubuntu (aprendizaje profundo de ubuntu). Seleccione Deep Learning Base AMI (Ubuntu) (AMI de Deep Learning Base - [Ubuntu]). También puede seleccionar Deep Learning Base AMI (Amazon Linux) (AMI de Deep Learning Base - [Amazon Linux]).

d. Seleccione el tipo de instancia
Elija un tipo de instancia de Amazon EC2. Amazon Elastic Compute Cloud (EC2) es el servicio de Amazon Web Services que se utiliza para crear y ejecutar máquinas virtuales en la nube. AWS llama a estas máquinas virtuales “instancias”.
Para este tutorial, utilizaremos una instancia de c5.large, pero puede elegir tipos de instancias adicionales, incluidas instancias P3 basadas en GPU.
Seleccione Review and Launch. (Revisar y lanzar).

e. Lance su instancia
Revise los detalles de su instancia y seleccione Launch (Lanzar).

f. Cree un nuevo archivo de clave privada
En la siguiente pantalla, se le pedirá que elija un par de claves existente o que cree uno nuevo. Un par de claves se utiliza para obtener acceso seguro a una instancia mediante SSH. AWS almacena la sección pública del par de claves, que es como la cerradura de una casa. Usted debe descargar y usar la sección privada del par de claves, que funciona como la llave de una casa.
Seleccione Create a new key pair (Crear par de claves nuevo) y dé un nombre. Luego, seleccione Download Key Pair (Descargar par de claves) y guarde la clave en un lugar seguro. Si pierde la clave, no podrá obtener acceso a la instancia. Si alguien tiene acceso a la clave, podrá obtener acceso a su instancia.
Si ha creado previamente un archivo de clave privada al que todavía puede acceder, seleccione Choose an existing key pair (Elegir un par de claves existente) y elija la clave existente.

g. Vea los detalles de la instancia
Seleccione instance ID (ID de la instancia) para ver los detalles de nueva instancia de Amazon EC2 en la consola.

4. Conéctese a la instancia
En este paso, se conectará a su instancia recién lanzada utilizando SSH. Las siguientes instrucciones utilizan un entorno Mac / Linux. Si estás usando Windows, siga el paso 4 de este tutorial.
a. Encuentre el DNS público de su instancia y cópielo
En la pestaña Description (Descripción), copie la DNS pública de la instancia de Amazon EC2 (IPv4).

b. Abra su terminal de línea de comandos
En la terminal, use los siguientes comandos para cambiar al directorio donde se encuentra su clave de seguridad, luego conéctese a su instancia con SSH.
cd /Users/<your_username>/Downloads/
chmod 0400 <your .pem filename>
ssh -L localhost:8888:localhost:8888 -i <your .pem filename> ubuntu@<your instance DNS>

5. Inicie sesión en Amazon ECR
Las imágenes de AWS Deep Learning están alojadas en Amazon Elastic Container Registry (ECR), que es un registro de contenedores de Docker completamente administrado que facilita a los desarrolladores realizar las tareas de almacenamiento, administración e implementación de imágenes de contenedores de Docker. En este paso, iniciará sesión y verificará el acceso a Amazon ECR.
a. Configure su instancia EC2 con sus credenciales de AWS
Debe dar el ID de su clave de acceso de AWS y su clave de acceso secreta. Si aún no tiene esta información, puede crear un ID de clave de acceso y una clave de acceso secreta aquí.

b. Inicie sesión en Amazon ECR
Utilizará el siguiente comando para iniciar sesión en Amazon ECR:
$(aws ecr get-login --region us-east-1 --no-include-email --registry-ids 763104351884)
Nota: Debe incluir “$” y paréntesis en su comando. Verá “Login Succeeded” (Inicio de sesión correcto) cuando finalice este paso.

6. Ejecute el entrenamiento de TensorFlow con Deep Learning Containers
En este paso, utilizaremos una imagen de AWS Deep Learning Container para el entrenamiento de TensorFlow en instancias de CPU con Python 3.6.
a. Ejecute AWS Deep Learning Containers
Ahora ejecutará las imágenes de AWS Deep Learning Container en su instancia EC2 con el siguiente comando. Este comando extraerá automáticamente la imagen de Deep Learning Container si no existe localmente.
docker run -it 763104351884.dkr.ecr.us-east-1.amazonaws.com/tensorflow-training:1.13-cpu-py36-ubuntu16.04
Nota: Este paso puede demorar unos minutos según el tamaño de la imagen. Si está utilizando una instancia de GPU, use “nvidia-docker” en lugar de “docker”. Una vez que este paso se complete correctamente, introducirá un indicador de bash para su contenedor.

b. Incorpore de un modelo de ejemplo para entrenar
Vamos a clonar el repositorio Keras, que incluye scripts de Python de ejemplo para entrenar modelos.
git clone https://github.com/fchollet/keras.git

c. Comience el entrenamiento
Comience a entrenar el modelo canónico MNIST CNN con el siguiente comando:
python keras/examples/mnist_cnn.py
Acaba de comenzar correctamente el entrenamiento con su AWS Deep Learning Container.

7. Finalice los recursos
En este paso, finalizará la instancia de Amazon EC2 que creó durante este tutorial.
Importante: Al finalizar los recursos que no se están utilizando de forma activa reduce los costos y es una práctica recomendada. Si no finaliza los recursos, se pueden generar cargos en su cuenta.
a. Seleccione la instancia en ejecución
En la consola de Amazon EC2, seleccione Running Instances (Ejecutar instancias).

b. Finalice la instancia EC2
Seleccione la instancia de EC2 que creó y elija Actions (Acciones) > Instance State (Estado de la instancia) > Terminate (Finalizar).

c. Confirme la finalización del recurso
Se le pedirá que confirme la finalización de la instancia. Seleccione Yes, Terminate (Sí, finalizar).
Nota: Este proceso puede tardar varios segundos en completarse. Una vez que su instancia haya finalizado, el estado de la instancia cambiará a finalizada en su consola de EC2.

Felicitaciones
Ha entrenado correctamente un modelo MNIST CNN con TensorFlow utilizando AWS Deep Learning Containers.
Puede usar AWS DL Containers para el entrenamiento y la inferencia sobre recursos de CPU y GPU en Amazon EC2, Amazon ECS, Amazon EKS y Kubernetes.
Utilice estas imágenes estables de aprendizaje profundo, que han sido optimizadas para el rendimiento y el escalado en AWS, para crear sus propios entornos de aprendizaje profundo personalizados.