Nuestro Curso: Deep Learning para IA Generativa de Texto

Este curso de Purrfect AI busca cubrir aquellos tópicos de Inteligencia Artificial que quedan fuera de las currículas de las carreras de sistemas para actualizar las bases de conocimiento de los profesionales de informática modernos. Las técnicas y conocimientos que transmitimos en este curso son hoy necesarios no solo para los especialistas en Inteligencia Artificial, sino para cualquier profesional íntegro. A la hora de tomar decisiones de diseño para un problema, es necesario saber diferenciar un modelo BERT de un GPT, de la misma manera que necesitamos diferenciar un árbol de un grafo o una lista doblemente enlazada.

Es un curso que está orientado a profesionales y estudiantes avanzados de las carreras de sistemas que buscan comprender los pormenores de las arquitecturas para LLMs.

100% GRATUITO y de acceso abierto

Toda la currícula del curso está disponible en YouTube. No es necesario inscribirse ni registrarse: cualquier persona que quiera aprender puede acceder libremente, desde cualquier lugar y en cualquier momento.


Modalidad


Este curso se divide en varios módulos, donde se abordan los temas de la currícula. Cada módulo tiene varias clases grabadas en video.
Durante la clase, el docente arranca con un Jupyter notebook vacío o casi vacío sobre el cual va programando y explicando cada uno de los conceptos necesarios para encarar los siguientes temas. Como las clases son en video, se espera que quienes las vean pausen e implementen el código a la vez en sus propios notebooks. Esto brinda la posibilidad de hacer las pruebas que necesiten durante el proceso de aprendizaje.

El contenido completo está publicado de forma gratuita en nuestro canal de YouTube. No se requiere inscripción, registro ni pago para acceder a las clases.

Videos: ~30 horas
Prácticas: ~20 horas

Módulo 1: El Perceptrón

Te explicamos qué es y te mostramos como se entrena un Perceptrón. La mínima estructura de datos de las redes neuronales modernas.
Este módulo insume alrededor de 2,5 horas para ver la clase + otras 1,5 horas para resolver los ejercicios.

Módulo 2: Autograd

Te explicamos qué es y te mostramos cómo implementar un motor de cálculo de gradientes automático (MichiGrad) para entrenar redes neuronales en Python pelado (unas 200 líneas, con comentarios). Te explicamos qué es y cómo hacer Backpropagation a mano, y cómo automatizarlo. Refrescaremos algunos conceptos matemáticos básicos como los de función diferenciable, derivadas parciales y regla de la cadena. Introduciremos conceptos cómo descenso por gradientes y función de perdida (loss function). Este módulo insume alrededor de 1,5 horas para ver la clase + otras 1,5 horas para resolver los ejercicios.

Módulo 3: MyNN

Te guiamos para que implementes tu propia librería de Redes Neuronales (Neural Networks o NN) desde una simple neurona (Perceptron), pasando por una capa de neuronas (Layer) y finalmente varias capas de neuronas (Multi Layer Perceptron o MLP).
Además introducimos a las funciones de activación, en particular a la tangente hiperbólica (tanh) y la unidad lineal regularizada (Regularized Linear Unit o ReLU), entre otras.
Este módulo insume unas 1,5 horas para ver la clase + 1 hora para resolver los ejercicios.

Módulo 4: Makemore y bi-gramas

Te explicamos qué es un modelo auto-regresivo estadístico de bi-gramas y te enseñamos a implementar uno. Estos modelos se asemejan mucho a los GPTs en cuanto a su forma de generar texto. Este módulo nos ayudará a introducir los conceptos de función logarítmica negativa de verosimilitud (Negative Log Likelihood) para medir la eficiencia de un modelo de lenguajes, logits, softmax, one-hot enconding. Además veremos algunas nociones de PyTorch para realizar operaciones de cálculo de gradientes en grafos de operaciones de manera vectorizada (como en MichiGrad, pero en serio y de manera eficiente). Además, re-implementaremos el modelo de bi-gramas con una red neuronal de una capa y veremos que este enfoque nos permite generalizar fácilmente a tri-gramas, cuatri-gramas y n-gramas. Este módulo insume unas 3,5 horas para ver las clases + 2 horas para resolver los ejercicios.

Módulo 5: Makemore y MLPs

Nos ponemos serios respecto a los modelos de lenguajes e implementamos el modelo del paper “A Neural Probabilistic Language Model” de Bengio et al a nivel de caracteres.
Introducimos el concepto de Embeddings y nos adentramos más en las funcionalidades que ofrece PyTorch para trabajar con modelos de redes neuronales.
Vamos a fondo con perceptrones multi capa y mostramos los principales problemas de entrenar redes neuronales con multiples capas. Vemos el concepto de taza de aprendizaje (Learning Rate) e hiperparámetros y justificamos la necesidad de dividir el conjunto datos en datos de entrenamiento, validación y pruebas (train/validation/test splitting).
Este módulo insume unas 1,5 horas para ver la clase + 1 hora para resolver los ejercicios.

Módulo 6: Makemore y ResNet50

Introducimos el problema de la desaparición y la explosión de los gradientes en redes neuronales con multiples capas y su solución mediante técnicas especiales de inicialización de las matrices de peso (Kaiming Init) y más en general, mediante la implementación de normalización por lotes (Batch Normalization). Veremos en detalle cómo visualizar y detectar este problema mediante gráficos de saturación de neuronas. Además, aplicamos esto para entender cómo funciona la arquitectura de ResNet50, un modelo revolucionario en su momento, por el uso de residuos, por su profundidad (más de 50 capas) y cuyo entrenamiento sólo es posible mediante el uso de capas de normalización. Este módulo insume unas 2,5 horas para ver la clase + 2,5 horas para resolver los ejercicios.

Módulo 7: Makemore y WaveNet

Implementamos WaveNet desde cero para descubrir el poder de las convoluciones. Estas operaciones nos permiten transformar las entradas del modelo de manera eficiente, algo crucial para poder entrenar modelos más grandes en tiempos razonables. Empezamos a hacer uso intensivo de las herramientas que proporciona PyTorch y nos ponemos a hacer gimnasia con las operaciones vectorizadas y el cálculo de dimensiones de entrada y salida de las capas. Este módulo insume unas 2,5 horas para ver la clase + 2,5 horas para resolver los ejercicios.

Módulo 8: El Mecanismo de Attention

En este módulo te mostramos los diferentes tipos de Attention. Cross-Attention, Self-Attention y Masked Self Attention. Implementamos todo a partir de la info del paper “Attention is all you need”, incluyendo Dot Product Attention que permite calcular el mecanismo de atención de manera eficiente. Este módulo insume unas 1.5 horas de clases y 1 de práctica.

Módulo 9: Makemore y Transformers (ChatGPT)

Te mostramos como se usa el mecanismo de atención para implementar los Transformers, la arquitectura en el corazón de ChatGPT y otros sistemas de Inteligencia Artificial Generativa. Además implementamos Layer Normalization, Residual connections y Dropout. Introducimos formalmente el concepto de Token y entrenamos nuestro primer GPT para generar texto.
Este módulo insume unas 2 horas de clases y 1.5 horas de práctica.

Módulo 10: El Tokenizer de ChatGPT

Te mostramos qué es, cómo funciona y cómo se implementa un Byte Pair Encoder (BPE), el generador de Tokens de ChatGPT. Cómo y por qué es necesario entrenarlo, cuál es el impacto del tokenizador en el rendimiento del modelo de lenguaje. Implementamos y entrenamos uno. Analizamos las diferencias entre el tokenizer de ChatGPT-2/3 y el de ChatGPT-4 .Introducimos a tiktoken, una librería para entrenar y trabajar con tokenizers. Vemos cómo usar tokenizers para codificar no sólo texto sino imágenes y sonido e introducimos a los modelos multi-modales. Revisamos sentencepiece, el tokenizer de Llama2. Este módulo insume unas 2,5 horas para ver las clases + 1,5 horas para resolver los ejercicios.

Módulo 11: Ética y Modelos de lenguajes

Te contamos algunos de los aspectos éticos de los modelos de lenguajes, sus limitaciones, usos indebidos. Este módulo insume 1 hora de clases.

Joaquin Bogado: Es docente en la Facultad de Informática de la Universidad Nacional de La Plata, en las cátedras de Organización y Arquitectura de Computadoras (desde 2007) y Lógica y Elementos de Inteligencia Artificial.
En 2017 comenzó a subir sus clases a su canal de Youtube. Estas clases son de gran ayuda para cientos de alumnos que ingresan a las carreras de Informática, Sistemas e Ingeniería todos los años.