Descubriendo AWS DeepRacer: Entrenando tu Primer Modelo
Tags: aws, deepracer, machinelearning, iot
Published: 2023-11-14 12:35:09

---
series: Descubriendo AWS DeepRacer
---

En el [blog anterior](https://dev.to/aws-espanol/descubriendo-aws-deepracer-aprendizaje-en-la-pista-de-carreras-2d4c) hemos explorado la naturaleza de AWS DeepRacer, una plataforma educativa para experimentar con aprendizaje por refuerzo, detallando sus componentes y profundizando en aspectos técnicos que influyen en el entrenamiento de modelos de IA.

En el blog de hoy, mi compañero [Germán Arrocha](https://www.linkedin.com/in/arrocha/) y un servidor, te guiaremos paso a paso en el proceso de entrenar tu primer modelo con AWS DeepRacer. Al finalizar, habrás adquirido las habilidades necesarias para:

1/ Utilizar AWS DeepRacer para construir y enseñar a un modelo basado en las reglas del aprendizaje por refuerzo.

2/ Utilizar AWS DeepRacer para evaluar y comprender el funcionamiento de tu modelo entrenado.

3/ Utilizar AWS DeepRacer para mejorar la función de recompensa de tu modelo, optimizando así su proceso de aprendizaje de manera más efectiva.

Comencemos!

## Tarea 1: Creando nuestro modelo

Sigue los siguientes pasos para crear un modelo y empezar:

**1/** Accede a la [consola de AWS](https://us-east-1.console.aws.amazon.com/deepracer/home?region=us-east-1#league).

**2/**En el menú de **Servicios**, selecciona **_Machine Learning > AWS DeepRacer_**.
![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/v3bf1xw4hrrj4fgwasst.png)

**3/** En el panel de navegación izquierdo, elije **_Sus modelos_**.
![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/zn98lpdi4fdn51wvumg8.png)

**4/** Selecciona **_Crear modelo_**.
![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/duuovtbll8n73aiynvdx.png)

**5/** En la sección _Detalles de entrenamiento_, ingresa un nombre para tu modelo. En nuestro ejemplo: _DeepRacerWinner_.
![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/va15j51mfs674z12jj00.png)

**6/** En la sección _Simulación de entorno_, elije A to Z Speedway. Este es el circuito más sencillo con el que empezaremos a entrenar nuestro modelo.
![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/7bf4bjj3864erfbq9cqs.png)

**7/** Selecciona _Sentido horario_ como dirección de la pista _(**Track direction > Clockwise**)_

**8/** Le damos al botón _Siguiente_.

**9/** Elige _Contrarreloj_ (**Time trial**) como tipo de carrera. Puedes aprender más sobre todos los tipos de carreras disponibles [aquí](https://docs.aws.amazon.com/es_es/deepracer/latest/developerguide/deepracer-choose-race-type.html).
![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/1y45i2ftapgy7fa8w3fe.png)

**10/** Elige **PPO** como algoritmo de entrenamiento. 
![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/181sc9s7gjwolewhikju.png)
**Nota:** El algoritmo PPO (Proximal Policy Optimization) es una técnica de aprendizaje por refuerzo utilizada en inteligencia artificial (IA) y aprendizaje automático (ML). Es como tener un entrenador avanzado. Imagina que estás aprendiendo a jugar al fútbol y tienes un entrenador que te va dando consejos poco a poco, ajustando tu técnica de manera gradual. Así, mejoras constantemente sin sentirte agobiado por grandes cambios. PPO hace algo similar en el mundo de la inteligencia artificial: ayuda a los programas a mejorar en tareas, como jugar un videojuego, ajustando sus estrategias paso a paso para un aprendizaje más efectivo y estable. Puedes aprender más sobre los algoritmos de entrenamiento [aquí](https://docs.aws.amazon.com/es_es/deepracer/latest/developerguide/deepracer-how-it-works-reinforcement-learning-algorithm.html).

**11/** Expande la sección de **Hiperparámetros**.

**Nota:** Ajustar los Hiperparámetros es un tema avanzado (veremos un ejemplo práctico en otra entrada de blog). Para esta actividad y con el objetivo de obtener tantos puntos de datos como sea posible en tiempos de entrenamiento cortos, configuraremos lo siguiente:

- Tamaño del lote de descenso de gradiente: 32
- Número de épocas: 5
- Tasa de aprendizaje: 0.0003
- Entropía: 0.03
- Factor de descuento: 0.999
- Tipo de pérdida: Huber
- Número de episodios de experiencia entre cada iteración de actualización de políticas: 5
![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/4yb7s5udr00ki6euq45y.png)

**12/** Le damos al botón _Siguiente_.

**13/** Bajo la sección **Seleccionar espacio de acción**, elige **Espacio de acción discreto** (_Discrete action space_).

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/39h07ti194za0kdv34xs.png)

**Nota:** En el aprendizaje por refuerzo, el **_espacio de acción_** se refiere al conjunto completo de movimientos o decisiones que un agente, como un coche en AWS DeepRacer, puede tomar en su entorno. Piensa en esto como el menú de maniobras que el coche puede elegir mientras navega en una pista. En AWS DeepRacer, puedes configurar este "menú" para que sea de tipo **discreto** (con opciones claramente definidas y separadas) o **continuo** (donde las acciones pueden variar de forma más fluida).

Durante el entrenamiento, el coche utiliza sus sensores simulados para recoger información del entorno y prueba diferentes acciones de este "menú" para ver cuáles le brindan los mejores resultados, tanto inmediatos como a largo plazo. A medida que el entrenamiento avanza, el coche explora más combinaciones de situaciones y acciones, lo que ayuda a mejorar su capacidad de tomar decisiones. Este proceso de prueba y error no solo enseña al coche qué hacer, sino que también influye en la estructura interna de su red neuronal (el cerebro del coche, por así decirlo). Una vez creado el modelo no se puede cambiar el número de acciones. Se pueden modificar sus valores (speed, steering angle, etc.), pero no poner o quitar acciones.

**14/** Para nuestro modelo usaremos los valores predeterminados de Ángulo de dirección y Velocidad.

- Granularidad del ángulo de dirección: 5
- Ángulo máximo de dirección: 30
- Granularidad de la velocidad: 2
- Velocidad máxima: 1

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/p1aw83i2eckuu9n0109b.png)

**15/** Le damos al botón _Siguiente_.

**16/** Seleccionamos el **vehículo original DeepRacer**

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/irlp69b1ftcbpnjz9ixy.png)

**17/** Le damos al botón _Siguiente_.

**18/** **NO** modifiques el ejemplo de **función de recompensa** que aparece por defecto.

**Nota:** Ten en cuenta que la función de recompensa desempeña un papel esencial en el aprendizaje por refuerzo. Su propósito es motivar a tu vehículo autónomo (agente) a tomar acciones específicas mientras navega por la pista (entorno). De manera similar a cómo guiamos y desalentamos ciertos comportamientos en una mascota, esta herramienta te permite incentivar a tu vehículo a completar una vuelta lo más rápidamente posible y desincentivarlo de salirse de la pista o chocar con objetos. En este ejemplo, la función de recompensa se basa en la distancia del agente a la línea central de la pista; recompensa al agente con mayor puntaje cuando se encuentra más cerca del centro, alentándolo así a seguir la línea central con precisión. Para ello, utiliza el ancho de la pista y la distancia al centro como parámetros de entrada. Puedes obtener más información sobre ejemplos de funciones de recompensa [aquí](https://docs.aws.amazon.com/es_es/deepracer/latest/developerguide/deepracer-reward-function-examples.html).

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/yhmjl0osjlv3boe315m0.png)
**19/** En las **Condiciones de Parada**, selecciona 25 minutos.

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/smlcq6120gpmivg39s6c.png)

**20/** En la sección **Enviar automáticamente a la carrera DeepRacer**, desmarca la opción "_Enviar este modelo a la siguiente carrera después de completar el entrenamiento_".

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/7l6r6rxgcq9geq1r9yev.png)

**21/** Elige **Crear modelo** para comenzar a crear el modelo y aprovisionar la instancia de trabajo de entrenamiento.

**Nota:** El proceso de inicialización tarda unos minutos en cambiar de "_Inicializando_" a "_En progreso_".
Inspecciona el entrenamiento después de que se haya aprovisionado la instancia de trabajo y se haya inicializado el entrenamiento del modelo. Observa el progreso para ver cómo tu agente intenta completar la pista en el simulador.

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/33156x4zxmbz1b11bkwe.png)

## Tarea 2: Analizando la gráfica de Recompensa

Pasados los 25 minutos de entrenamiento, obtendremos una gráfica de recomepensa que muestra 3 líneas:

- La **línea verde** muestra la puntuación promedio que tu modelo ha obtenido a través de la función de recompensa. Debería aumentar con el tiempo a medida que tu modelo converja, lo que significa que la función de recompensa que creaste hace que el coche complete la vuelta.
- La **línea azul** muestra el porcentaje de finalización de la vuelta durante el entrenamiento, y es normal que esté por debajo del 100% porque el modelo está en **modo de exploración** durante el entrenamiento, lo que significa que está probando nuevas acciones para aprender cuál es el resultado.
- La **línea roja** representa la finalización promedio de la vuelta durante la evaluación.

La siguiente imagen muestra un modelo estable, ya que la línea roja está al 100% durante un varios puntos de datos. La línea verde también está creciendo, lo que significa que tenemos un modelo sólido.

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/zui0q7e1jtmh9lhp5jid.png)

**22/** Ahora te toca a ti interpretar tu gráfico de recompensas. Puedes utilizar un editor de texto para escribir tu interpretación.

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/20aonod311s5626xz2vl.png)

##Tarea 3: Evaluando tu modelo

Una vez completado el entrenamiento, podemos evaluar nuestro modelo. Durante la evaluación, el modelo seleccionará la mejor acción en función de la entrada actual.

**23/** Selecciona la pestaña **Evaluación**.

**24/** Elije **Iniciar evaluación**.

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/3r7s5cqbjear317fvavu.png)

**25/** En el campo **Tipo de carrera**, agrega un nombre para la evaluación que estás realizando en tu modelo. Por ejemplo, _20231114EvalModelo_.

**26/**Selecciona **Prueba de tiempo**.

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/35ap4amoorh184tshcdg.png)

**27/** En **Criterio de evaluación**, elige **A a Z Speedway** y mantén el número de trials en 3.

**28/** Selecciona **Sentido de la pista** como **En sentido horario**.

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/bxix0wig3dtpmylp4ib0.png)

**29/** En **Envío de carrera virtual**, volvemos a desmarcar la opción _Enviar este modelo a la siguiente carrera después de completar el entrenamiento_.

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/t19jz1fbg10tuphjypjb.png)

**30/** Elije **Iniciar evaluación**. La evaluación es un proceso que llevará algunos minutos para completarse. Durante este tiempo, el sistema realizará una serie de acciones, como cargar el modelo entrenado, configurar el entorno de evaluación, ejecutar simulaciones y recopilar datos sobre el rendimiento del modelo. Este proceso puede variar en duración según la complejidad del modelo y la cantidad de simulaciones que se estén llevando a cabo.

**31/** Verifica tus resultados de simulación y evaluación.

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/tzy7yf7o05xqs8u1xa9m.png)

## Tarea 4: Interpretando los resultados de la Evaluación

Durante la evaluación, nuestro modelo se incorporará al entorno de simulación y se evaluará su desempeño. Una vez que haya concluido la evaluación, se presentarán los resultados en forma de una tabla. En la Consola de AWS, encontrarás un control deslizante que te permite acceder a más campos de información de los que se muestran en la captura de pantalla que aparece a continuación. Uno de los campos más significativos es la columna **Fuera de pista** (Off-Track).

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/4dxe96zr641dphc682y9.png)

La columna **Fuera de pista** registra el número de veces que el vehículo se salió del trazado durante la simulación. Como se aprecia en este ejemplo, el modelo que estamos evaluando no se salió del trazado en ningún momento durante la evaluación, y los tiempos de vuelta son bastante uniformes, lo que indica que el modelo se comporta de manera estable. 

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ugrv4piq7b4pp1y9jta5.png)

Si quieres saber más sobre cómo entrenar y evaluar modelos, podrás encontrar más información [aquí](https://docs.aws.amazon.com/es_es/deepracer/latest/developerguide/create-deepracer-project.html).

**32/** Ahora te toca a ti interpretar los resultados de la evaluación. Utiliza tu editor de texto para escribir tu interpretación.

## Tarea 5: Desarrollando una estrategia para mejorar el modelo

En esta tarea, te enfrentarás al desafío de mejorar tu modelo existente. Durante el proceso de entrenamiento, existen diversas estrategias que puedes emplear para optimizar el rendimiento de tu modelo. Entre las opciones disponibles se encuentran:

- Ajustar la **función de recompensa**
- Modificar los elementos de acción en el **Espacio de Acción** 
- Afinar los **hiperparámetros**.

Una de las posibilidades es ajustar la <u>función de recompensa</u>, lo que puede implicar la inclusión de más parámetros o la modificación de cómo recompensas al modelo. Esto puede tener un impacto significativo en el comportamiento de tu vehículo autónomo.

Además, puedes explorar la variante de modificar los elementos de acción en el <u>Espacio de Acción</u>. Por ejemplo, puedes incrementar la velocidad de tu modelo si consideras que es estable pero no lo suficientemente rápido para cumplir con tus objetivos.

Por último, tienes la opción de afinar los <u>hiperparámetros</u>, lo que te permite controlar cómo el modelo aprende nuevas experiencias en relación con el conocimiento previo. Debes abordar estos ajustes de manera sistemática, cambiando solo un aspecto a la vez. Este enfoque te permitirá evaluar de manera efectiva si las modificaciones realizadas han mejorado o no el rendimiento del modelo.

Es importante recordar que cada cambio en el modelo puede tener un impacto en su comportamiento, por lo que es fundamental llevar un registro de las modificaciones realizadas y sus efectos. Te recomendamos utilizar tu editor de texto para ir registrando las modificaciones. 

## Tarea 6: Mejorando tu modelo y la función de recompensa

Para aprovechar el entrenamiento previo, puedes iniciar el nuevo entrenamiento **clonando** el modelo que acabamos de entrenar, transmitiendo el conocimiento previamente adquirido. Puedes seguir este patrón para gradualmente agregar más características a la función de recompensa y entrenar tu vehículo AWS DeepRacer.

En esta tarea, realizaremos un cambio a la vez (función de recompensa, elementos de acción, hiperparámetros o circuito) para comprender sus efectos en el modelo. Si realizas varios cambios a la vez, será difícil identificar cuál fue exitoso.

**33/** En la esquina superior derecha de la página, haz clic en **Acciones** para abrir el menú desplegable. Elige **Clonar**.

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/9gwgg0aaehq35pd3yn87.png)

**34/** En **Detalles del entrenamiento**, agrega un nombre para el nuevo modelo. Por ejemplo, _ModeloClonado_.

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/y5emt911gzhge1825gi5.png)

**35/** En **Simulación del entorno**, elige **A to Z Speedway**.

**36/** Selecciona **En sentido horario** como la dirección de la pista.

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ewkht59j61o991bcv7sv.png)

**37/** Haz clic en **Siguiente**.

**38/** En **Tipo de carrera**, elige **Prueba de tiempo**.

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/65lfc7exjtoyb2x8jtwb.png)

**Nota:** Es importante destacar que al clonar un modelo, no tienes la capacidad de modificar el algoritmo subyacente en sí. El algoritmo del modelo clonado permanece igual al modelo original del cual se clonó.

La principal flexibilidad que obtenemos al clonar un modelo radica en la capacidad de ajustar los hiperparámetros específicos para adaptar el comportamiento del modelo a tus necesidades. Sin embargo, en nuestro ejemplo, vamos a mantener los hiperparámetros tal como están, lo que significa que estamos evaluando cómo un modelo idéntico al original se desempeña en el mismo entorno.

**39/** Haz clic en **Siguiente.**

**40/** **No** cambies ningún parámetro en **Definir espacio de acción discreto**.

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/fpfmj32mzfz6sjrr6818.png)

**41/** Haz clic en **Siguiente.**

**42/** En **la configuración del vehículo con sensores**, selecciona **El vehículo DeepRacer original**.

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/e9tao0yzi1ep2ocb3g2l.png)

**43/** Haz clic en **Siguiente.**

**44/** En la sección de **Función de recompensa**, modifica el código de ejemplo para mejorar tu función de recompensa. 

Aquí, debes multiplicar la recompensa por la velocidad, lo que significa que mayores velocidades llevarán a más puntos de recompensa y, en última instancia, vueltas más rápidas.

- Después de la línea 8, agrega **speed = params['speed']**
- Después de la línea 24, inserta un espacio y agrega **reward = speed*reward**

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/q2qllykjdl7l8cz0c05g.png)

**45/** En **Condiciones de Parada**, establece **25** como el tiempo máximo.

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/7k1qqoxn23wggxjvri0c.png)

**46/** En la sección **Enviar automáticamente a la carrera DeepRacer**, desmarca la opción _Enviar este modelo a la siguiente carrera después de completar el entrenamiento_.

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/0ym46rb5k20rps01p2do.png)

**47/** Haz clic en **Crear modelo**.

**Nota:** El proceso de inicialización tarda unos minutos en cambiar de _Inicializando_ a _En progreso_.

**48/** Observa el gráfico de recompensas y el flujo de video de la simulación para seguir el progreso de tu entrenamiento. Puedes elegir el botón de actualización junto al gráfico de recompensas periódicamente para refrescar el gráfico de recompensas hasta que el entrenamiento esté completo.

**49/** Compara el nuevo gráfico de recompensas con el gráfico de recompensas obtenido en la **Tarea 2**. Utiliza tu editor de texto para registrar tu análisis.

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/jyj73ch3npqb9wjwve3o.png)

**50/** Evalúa tu nuevo modelo.

**50/** Compara los dos modelos y decide cuál es mejor y por qué. Utiliza tu editor de texto para registrar tus resultados y análisis.

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/xhrro5tp7u1pn8mi3uzi.png)

## Conclusiones

A través de diversas tareas, hemos aprendido a entrenar y mejorar modelos en AWS DeepRacer. Comenzamos con la configuración inicial y la observación de resultados, luego exploramos estrategias para ajustar modelos y finalmente aprendimos a clonar modelos y mejorar sus funciones de recompensa. 

En definitiva, hemos adquirido conocimientos clave para mejorar la eficacia y el rendimiento de los vehículos autónomos en entornos de simulación.

Nos vemos en el siguiente tutorial!