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. 

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.

AWS Management Console

b. Seleccione los usuarios

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

3b-new

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.

3c

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).

3d-new

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).

3e-new

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).

 

3f-new

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.

step_2

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).

step_4a-new

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]).

step_4b-new

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).

step_4c-new

e. Lance su instancia

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

step_4d-new

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.

step_4e-new

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. 

step_4f-new

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).

step_5a-new

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>
step_5b-new

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í.

step_6a-new

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.

 

step_6b-new

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.

 

7a-new

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
7b-new

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.

 

7c-new

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).

 

8a-new

b. Finalice la instancia EC2

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

8b-new

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.

 

8c-new

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.

¿Le resultó útil este tutorial?

Gracias
Indíquenos lo que le gustó.
Lamentamos haberlo decepcionado
¿Hay información desactualizada, confusa o inexacta? Ayúdenos a mejorar este tutorial con sus comentarios.