Introducción
Los microcontroladores (MCUs) son componentes electrónicos baratos, usualmente con apenas unos kilobytes de RAM, y diseñados para consumir pequeñas cantidades de energía. Hoy en día, los MCUs pueden encontrarse embebidos en todos los dispositivos residenciales, médicos, automotrices e industriales. Se estima que anualmente se comercializan más de 40 mil millones de microcontroladores, y cientos de miles de millones están actualmente en servicio. Pero curiosamente, estos dispositivos reciben poca atención porque, muchas veces, son utilizados solo para reemplazar funcionalidades que los sistemas electromecánicos más antiguos enfrentan en autos, lavadoras o controles remotos.
Más recientemente, con la era del IoT (Internet de las Cosas), una parte significativa de estos MCUs está generando «quintillones» de datos, que, en su mayoría, no son utilizados debido al alto costo y complejidad de su transmisión de datos (ancho de banda y latencia).
Por otro lado, en las últimas décadas, hemos sido testigos del desarrollo de modelos de Machine Learning (subárea de la Inteligencia Artificial) entrenados con «toneladas» de datos y potentes mainframes. Pero ahora, de repente, es posible extraer significado de señales «ruidosas» y complejas, como imágenes, audio o acelerómetros, a través de redes neuronales. Más importante aún, podemos ejecutar estos modelos de redes neuronales en microcontroladores y sensores utilizando muy poca energía y extraer mucho más significado de los datos generados por estos sensores, que actualmente ignoramos.
TinyML, una nueva área de IA aplicada, permite la extracción de «inteligencia de máquina» del mundo físico (donde se generan los datos).
Descripción general del track de IA aplicada
El track de IA aplicada es un curso introductorio sobre la intersección entre el aprendizaje automático y los dispositivos integrados. La difusión de dispositivos integrados con un consumo de energía ultrabajo (del orden de milivatios), junto con la introducción de marcos de aprendizaje automático dedicados a dispositivos integrados, como TensorFlow Lite para microcontroladores (TF Lite Micro), permite la proliferación masiva de dispositivos IoT potenciados por IA («AioT»). Este curso de 20 horas cubre los fundamentos y las aplicaciones del aprendizaje profundo y el aprendizaje automático integrado.
Pre-requisitos
- Se recomienda hacer un repaso rápido del lenguaje Python antes de realizar el taller, ya que será requerido en el desarrollo del track. Para ello invitamos a los participantes a tomar el curso de Python de Kaggle (https://www.kaggle.com/learn/python) el cual está diseñado para ser completado en 5 horas y consta de siete lecciones.
- Zoom (actualizado a la última versión), cámara web y micrófono para participar en las sesiones de videoconferencia. Es necesario actualizar tu cliente de Zoom ANTES de que inicie el taller para poder participar en los laboratorios virtuales con el resto de los participantes.
- WhatsApp como canal de comunicación durante la semana del taller.
Material
- La clase será principalmente en español (con algunas secciones en inglés).
- Las diapositivas, cuadernos, códigos y documentos están principalmente en inglés.
- Los estudiantes deben tener una Tablet o laptop con acceso a internet.
- Secciones prácticas con teléfonos inteligentes (cada estudiante debe tener un teléfono celular)
Programa académico definitivo
1. Acerca del temario y el programa de estudio – M Rovai • Esta sección presenta la estructura del taller y una descripción general de lo que los participantes aprenderán durante los 5 días.
2. Descripción general de la inteligencia artificial – J. López • Introducción a la inteligencia artificial (IA) y su historia. • La definición de IA es un sistema informático que realiza tareas que requieren inteligencia humana. • Una breve cronología del desarrollo de la IA, incluida la Escuela de verano de Dartmouth (1956). • Explicación de los inviernos y resurgimientos de la IA. • Introducción al aprendizaje automático como un subconjunto de la IA. • Tipos de datos utilizados en los modelos de IA: datos tabulados/estructurados, imágenes y datos de lenguaje.
3. Introducción a EdgeAI – M, Rovai • Definición de Edge AI/ML: procesamiento de algoritmos de IA en dispositivos de borde o puntos finales de IoT. • Introducción a TinyML como un subconjunto de Edge ML, centrado en dispositivos de consumo de energía ultra bajo. • Explicación del panorama de IoT y la transición a AIoT (IA + IoT). • Discusión de los desafíos en proyectos típicos de AIoT. • Introducción a la «inteligencia de las cosas» o IoT 2.0, donde el ML se acerca a la fuente de datos. • Descripción general de las previsiones del mercado de TinyML y el potencial de crecimiento. • Ejemplos de aplicaciones de TinyML. • Una breve introducción a los diferentes tipos de tareas de ML adecuadas para dispositivos de borde. • Discusión sobre consideraciones de hardware para TinyML, incluidas varias opciones de microcontroladores y sus especificaciones. • Introducción a los desafíos y consideraciones del software en las implementaciones de TinyML.
4. Configuración de herramientas (Google CoLab) y revisión de Python – S. Arciniegas • Introducción a Google Colab como entorno de desarrollo. • Configuración de Google Colab para proyectos de IA/ML. • Conceptos básicos de programación de Python relevantes para IA/ML. • Ejercicios prácticos para familiarizarse con el software y las herramientas de aprendizaje automático.
1. Fundamentos de Machine Learning – Parte I – D. Méndez
• Introducción.
• El paradigma de ML.
• Exploración de la función de pérdida y costo.
• Redes neuronales artificiales..
2. Fundamentos de Machine Learning – Parte II – D. Méndez
• DNN – Regresión.
• DNN – Clasificación.
• Métricas de ML.
3. Convoluciones – Parte 1 – M. Rovai
• Introducción a las convoluciones.
• Operación de convolución.
• Redes neuronales convolucionales (CNN).
• Desafíos y consideraciones.
4. Configuración de herramientas (Edge Impulse Studio) – S. Arciniegas
• Introducción a Edge Impulse Studio.
• Configuración de una cuenta y creación de un nuevo proyecto.
• Descripción general de la interfaz de Edge Impulse Studio.
5. Cifar10 práctico – Edge Impulse Studio – M. Rovai
Marcelo Rovai | TinyM
• Carga y preprocesamiento del conjunto de datos CIFAR-10 en Edge Impulse.
• Configuración de un modelo de red neuronal para la clasificación de imágenes.
• Entrenamiento del modelo en el conjunto de datos CIFAR-10.
• Evaluación del rendimiento del modelo y ajuste de parámetros.
• Implementación del modelo entrenado para inferencia (teléfono inteligente).
1. Convoluciones – Parte 2 – M. Zennaro
• Análisis de las compensaciones entre la precisión del modelo y la velocidad de inferencia.
• Optimización de modelos para dispositivos de borde.
• Exploración de diferentes técnicas de preprocesamiento y su impacto.
• Transferencia de aprendizaje con modelos entrenados previamente.
• Técnicas de aumento de datos para un mejor rendimiento.
2. Clasificación de imágenes con un teléfono inteligente – M. Zennaro
• Recopilación de datos de imágenes con la cámara de un teléfono inteligente.
• Carga y organización de datos en Edge Impulse.
• Preprocesamiento de imágenes (cambio de tamaño, normalización).
• Diseño y entrenamiento de un modelo CNN para clasificación.
• Evaluación del rendimiento del modelo.
• Prueba del modelo con inferencia en vivo en el teléfono inteligente.
3. Detección de objetos Uso de teléfonos inteligentes: M. Rovai
• Introducción al algoritmo FOMO (Objetos más rápidos, más objetos).
• Recopilación y etiquetado de datos de detección de objetos.
• Entrenamiento de un modelo FOMO en Edge Impulse.
• Evaluación del rendimiento de la detección de objetos.
• Prueba de detección de objetos en tiempo real en el teléfono inteligente.
1. Introducción al procesamiento de sonido: J. López:
• Explicación de cómo los micrófonos capturan el sonido y lo convierten en señales digitales.
• Debate sobre los desafíos del procesamiento de señales de audio 1D (16 000 muestras por segundo para audio de 16 kHz).
2. Técnicas de análisis de señales: J. López:
• Introducción a la convolución 1D para el procesamiento de audio.
• Explicación de la transformada de Fourier para analizar los componentes de la señal.
• Visualización de los dominios de tiempo y frecuencia.
3. Métodos de preprocesamiento de audio: J Lopez:
• Creación de espectrogramas para visualizar información de tiempo y frecuencia.
• Introducción a los coeficientes cepstrales de frecuencia Mel (MFCC) para la extracción de características.
• Comparación de espectrogramas y MFCC.
4. Detección de palabras clave (KWS) – J. López:
• Definición y aplicaciones de KWS.
• Desafíos y limitaciones en la implementación de KWS en dispositivos de borde.
5. Arquitectura del modelo KWS – J. López:
• Adaptación de modelos de clasificación de imágenes para procesamiento de audio.
• Uso de espectrogramas o MFCC como entrada para redes neuronales convolucionales.
6. Flujo de trabajo de KWS – S. Arciniegas:
• Recopilación y preprocesamiento de datos.
• Entrenamiento y evaluación de modelos.
• Implementación en dispositivos de borde.
7. Aplicación práctica de KWS – S Arciniegas:
• Escucha continua en el dispositivo.
• Procesamiento de datos con TinyML en el borde.
• Envío de datos activados a la nube para su posterior procesamiento.
8. Ejercicio práctico – S Arciniegas:
• Creación de un modelo KWS utilizando datos de audio.
• Preprocesamiento de audio en MFCC.
• Entrenamiento de un modelo para reconocer palabras clave específicas.
• Implementación del modelo para inferencia en un dispositivo de borde.
1. Clasificación de movimiento y detección de anomalías – S Arciniegas
Teoría
• Introducción a la clasificación de movimiento y sus aplicaciones (p. ej., análisis de estrés de transporte).
• Descripción general del preprocesamiento de datos para datos de movimiento.
• Técnicas de análisis espectral para extracción de características.
• Diseño de clasificador de red neuronal para datos de movimiento.
• Introducción a la detección de anomalías en el contexto de datos de movimiento.
Práctica
• Sesión práctica con Edge Impulse Studio.
• Recopilación y preprocesamiento de datos de movimiento.
• Implementación de un clasificador de red neuronal para clases de movimiento (p. ej., Ascensor, Terrestre, Marítimo, Inactivo).
• Extensión del modelo para incluir la detección de anomalías mediante la agrupación en closters de K-Means.
2. Modelos de lenguaje grandes (LLM) y modelos de lenguaje pequeños (SLM) en el borde
Teoría (J Lopez)
• Introducción a los modelos de lenguaje y su evolución.
• Descripción general de la arquitectura del transformador y su impacto en el procesamiento del lenguaje natural.
• Explicación de los LLM frente a los SLM y sus aplicaciones.
• Debate sobre los desafíos de ejecutar grandes modelos en dispositivos de borde.
• Técnicas de optimización para la implementación en el borde (cuantificación, poda, destilación de conocimiento).
Aspectos prácticos (M Rovai)
• Demostración de la ejecución de SLM en dispositivos de borde (p. ej., Raspberry Pi).
• Introducción a herramientas como Ollama para implementar modelos de lenguaje.
o Descripción general de las técnicas de optimización de LLM
1. Ingeniería rápida.
2. Generación aumentada por recuperación (RAG).
3. Ajuste fino.
• Ejemplo práctico de uso de RAG para mejorar el rendimiento del modelo.
Coordinador
Marcelo José Rovai
Instructores
- Marcelo José Rovai – UNIFEI – Universidade Federal de Itajubá, Brasil.
- Marco Zennaro – ICTP – International Centre for Theoretical Physics, Trieste – Italia.
- Diego Méndez Chávez – Universidad Javeriana, Bogotá – Colombia.
- Jesús López – Universidad Autónoma de Occidente, Cali – Colombia.
- Stalin Arciniegas – PUCE – Ibarra – Ecuador.
Cupo y duración
- 30 participantes
- Horario:
Del 11 al 15 de noviembre 2024: 4 horas diarias con un descanso de 15 minutos.
UTC-3: 11:00 – 15:00 (Argentina, Brasil, Chile, Paraguay, Uruguay).
UTC-4: 10:00 – 14:00 (Bolivia, República Dominicana, Venezuela).
UTC-5: 09:00 – 13:00 (Colombia, Cuba, Ecuador, Panamá, Perú).
UTC-6: 08:00 – 12:00 (Costa Rica, El Salvador, Guatemala, Honduras, México, Nicaragua).