Nociones de Deep Learning para Inteligencia Artificial Generativa de Texto

Profile Imagen
Joaquín Bogado
Doctor en Ciencias Informáticas
Experto en IA Generativa
Profile Imagen
Mayra Villarrubia
Directora de Proyectos de Purrfect AI
Coordinadora de Contenidos

Nuestro curso

Querés convertirte en un experto en Large Language Models (LLMs)? Querés saber cómo funciona ChatGPT? Querés entender cual es la diferencia entre un modelo basado en Llama y uno basado en BERT? Querés saber porqué DeepSeek-V3 es más eificiente que ChatGPT? Entonces este curso es para vos. En este curso no vamos a explicarte cómo escribir un prompt para ChatGPT. Vamos a enseñarte a programar tu propio ChatGPT, desde cero. 

En nuestro curso de Nociones de Deep Learning para Inteligencia Artificial Generativa de Texto en castellano, te mostramos todo lo que necesitas saber para entender cómo funciona ChatGPT y otros LLMs y que nadie más se animó a enseñarte.

Contenidos del Curso

Módulo 0: El Percerptró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 1: 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 2: 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 3: 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.

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.

Algunas nociones de PyTorch para realizar operaciones de cálculo de gradientes en grafos de operaciones de manera vectorizada (como en PequeGrad, 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 4: Más makemore y MLPs

Nos ponemos más serios respecto a los modelos de lenguajes e implementamos el modelo del paper "A Neural Probabilistic Language Model" de Bengio et al pero a nivel de caracteres en lugar de palabras.

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 5: Todavía más makemore (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 1,5 horas para ver la clase + 2,5 horas para resolver los ejercicios.

Módulo 6: Promesa que es lo último de makemore (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 1,5 horas para ver la clase + 2,5 horas para resolver los ejercicios.

Módulo 7: Implementando ChatGPT desde cero

Te explicamos qué es el Mecanismo de Atención y sus variantes (cross attention, self attention, multi-head attetion) y cómo se usa en los Transformers (encoders y decoders), la arquitectura en el corazón de ChatGPT y otros sistemas de Inteligencia Artificial Generativa.

Introducimos formalmente el concepto de token. Combinamos todo y entrenamos nuestro primer GPT (Generative Pre-trained Transformer).

Agregamos sal, pimienta, conexiones residuales, normalización por capas (Layer Normalization en lugar de Batch Normalization), Dropout y escalamos el modelo para que genere obras de teatro como si fuera José Hernandez.

Este módulo incluye un addendum que explica las diferencias entre un modelo fundacional, un modelo pre-entrenado, un modelo ajustado (fine-tuneado?) y un asistente y qué pasos más son necesarios para llegar desde un modelo fundacional a un asistente.

Este módulo insume unas 3,5 horas para ver las clases + 2,5 horas para resolver los ejercicios.

Módulo 8: 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-2.

Cómo y por qué es necesario entrenarlo, cuál es el impacto del tokenizador en el rendimiento del lenguaje.

Implementamos y entrenamos uno. Analizamos las diferencias entre el tokenizer de ChatGPT-2 y el de ChatGPT-4 (si, 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.

Te mostramos por qué a día de hoy, ChatGPT no puede generar nombres de personajes para novelas con exactamente 10 caracteres o contar cuantas letras 'm' hay en 'mi mamá me mima'.

Este módulo insume unas 2,5 horas para ver las clases + 1,5 horas para resolver los ejercicios.

Módulo 9: Aspectos éticos de los modelos de lenguajes.

Te contamos algunos de los aspectos éticos de los modelos de lenguajes y sus limitaciones de los modelos de lenguajes.

Este módulo tendrá una duración de 1 hora y no tiene práctica.

Modalidad del curso

El curso consta de varios módulos, los cuales se desarrollan en clases grabadas en video, donde se implementa en código cada concepto explicado. Es una buena idea ir pausando los videos, copiando el código y haciendo las pruebas que creas necesarias hasta que entiendas lo que está pasando en profundidad.

Cada módulo estará acompañado por una serie de ejercicios para ir fijando los conocimientos. En general consisten en extender alguna parte del código o explorar alguna parte que queda fuera de las explicaciones. Además de los Jupyter Notebooks con código para probar todo lo implementado en el curso, ofrecemos la posibilidad de hacer 3 encuentros sincrónicos (por videoconferencia) al finalizar los módulos 3, 6 y 9 para que puedas hacerles consultas a nuestros profes.

Los requisitos mínimos para el curso son conocimientos de programación, algorítmica básica (con que entiendas la diferencia entre un for y un while y entre una clase, un objeto y una función, alcanza), Python (si usas environments tipo venv o conda, genial!) por que aprender sobre la marcha va a hacerte todo cuesta arriba, nociones de cálculo y análisis matemático de primer año de la universidad o del último año de la escuela técnica (funciones, derivadas, matrices, sistemas de coordenadas) y algunas nociones de  probabilidades y estadística (distribuciones de probabilidad, probabilidad de un evento). Podés tomar un autotest nivelatorio para que puedas identificar aquellas áreas que pueden presentarte problemas y probablemente necesites reforzar para sacarle más partido al curso.

Abierta la inscripción!!

Inscribite llenando este formulario.