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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
Inscribite llenando este formulario.