Nuestros Cursos

Los Cursos de Purrfect AI buscan 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 nuestros cursos 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.

Modalidad
Todos nuestros cursos tienen la misma modalidad. Cada curso se divide en varios módulos donde se abordan los temas de la currícula. Un módulo tiene una o dos 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 unos de los conceptos necesarios para encarar los siguientes temas. Como las clases son en video, se espera que los alumnos pausen e implementen el código a la vez en sus propios notebooks. Esto brinda la posibilidad a los alumnos hagan las pruebas que necesiten durante el proceso de aprendizaje.

Tanto los videos como el código inicial de los notebooks se distribuyen a través de nuestra plataforma Moodle, la cual también incluye espacios para videoconferencias para las clases sincrónicas y foros para realizar consultas. Una vez cada 2 meses realizamos clases sincrónicas en las cuales es posible interactuar con los docentes de los cursos directamente, para lo cual es necesario suscribirse y preparar la consultas de antemano para optimizar el tiempo de los alumnos y tutores.

Cada curso cuenta con actividades, las cuales una vez completadas permiten la emisión de un micro certificado con tecnología pok.tech. Aquellos que lo deseen pueden tomar un examen con calificación

Redes Neuronales para Modelos de Lenguajes

Los modelos de lenguajes generativos modernos están implementados usando Redes Neuronales Profundas. Estas redes tienen pesos o parámetros que se aprenden durante el entrenamiento y los LLMs modernos tienen de cientos a miles de millones de parámetros. Este curso te enseña los principales fundamentos de las redes neuronales, desde el perceptrón hasta la construcción de tu primera red neuronal en Python y aplica estos conocimientos para programar tu primer modelo de lenguajes para generar texto basado en bi-gramas.

Este curso está orientado a estudiantes y profesionales de las carreras de sistemas que no hayan visto estos conceptos durante la carrera o quieran refrescar y profundizar en estos temas pensando en comprender los conceptos aplicados a modelos de lenguajes. Se requieren conocimientos de Python y matemáticas pre-universitarias.

Puede tomar un auto-test nivelatorio en este enlace.

Videos: 10.5 horas
Prácticas: 6 – 7 horas

Incluye micro-certificado con tecnología pok.tech.

No residentes en Argentina: € 200 Residentes Argentinos: AR$ 200.000 Estudiantes, docentes e investigadores de instituciones públicas de Argentina: AR$ 100.000 Incluye acceso a las clases en video, material de lectura, repositorios de código y foros de consulta + una clase sincrónica por videoconferencia con los docentes del curso.

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

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.

Deep Learning para Modelos de Lenguajes

A partir de 2014 comenzaron a aparecer arquitecturas de modelos de redes neuronales con cientos de capas ocultas. Entrenar este tipo de modelos solo es posibles mediante la aparición de técnicas de normalización y algoritmos más robustos que el descenso por gradientes, que minimizan el impacto del los fenómenos conocidos como explosión y desvanecimiento de los gradientes. Este es el límite entre las redes neuronales tradicionales y lo que posteriormente pasó a llamarse Deep Learning. Este curso explora los fundamentos de estos modelos y las técnicas que los hacen posibles, siempre en el ámbito de los modelos de lenguajes generativos.

El curso está orientado a estudiantes y profesionales de las carreras de sistemas. Se requieren conocimientos de programación en Python y matemáticas pre-universitarias, además de conocimientos de Redes Neuronales y modelos de lenguajes probabilísticos. Estos temas están cubiertos en nuestro curso Redes Neuronales para Modelos de Lenguajes.

Videos: 8 horas
Prácticas: 6 – 7 horas

Incluye micro-certificado con tecnología pok.tech.

No residentes en Argentina: € 200 Residentes Argentinos: AR$ 200.000 Estudiantes, docentes e investigadores de instituciones públicas de Argentina: AR$ 100.000 Incluye acceso a las clases en video, material de lectura, repositorios de código y foros de consulta + una clase sincrónica por videoconferencia con los docentes del curso.

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

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.

Arquitectura de Grandes Modelos de Lenguajes

Los Grandes Modelos de Lenguajes (LLMs por sus siglas en inglés) han revolucionado la industria y lo seguirán haciendo durante los próximos años. Si bien su impacto todavía no puede medirse a ciencia cierta, ya nadie duda que la aparición de ChatGPT marcó un antes y un después y gracias a esto, la Inteligencia Artificial como campo de estudio está viviendo una tercera primavera.
Entender como funcionan estos modelos sin embargo ya no es cosa solamente de los especialistas en IA sino de todo informático que se precie. Muchas de las decisiones profesionales pasarán por saber si tal o cual modelo sirve para solucionar el problema o no, por saber cuales son las fortalezas y debilidades de cada arquitectura o por entender la forma en la cual estos modelos funcionan.
En este curso te mostramos todo esto de la forma más práctica posible, guiándote en la implementación de tu propio ChatGPT.

Este curso está orientado a estudiantes y profesionales que buscan aprender las diferencias entre los diferentes modelos a nivel arquitectural. Requiere programación en Python y matemáticas pre-universitarias, conocimientos de modelos probabilisticos y de lenguajes, redes neuronales profundas y técnicas de normalización. Estos contenidos están cubiertos en nuestro curso Deep Learning para Modelos de Lenguajes.

Videos: 8 horas
Prácticas: 6 – 7 horas

Incluye micro-certificado con tecnología pok.tech.

No residentes en Argentina: € 350
Residentes Argentinos: AR$ 400.000
Estudiantes, docentes e investigadores de instituciones públicas de Argentina: AR$ 200.000
Si tomaste los cursos Inicial e Intermedio, pagas solamente AR$ 200.000.
Incluye acceso a las clases en video, material de lectura, repositorios de código y foros de consulta + una clase sincrónica por videoconferencia con los docentes del curso.

Módulo 1: 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 2: 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 3: 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 4: É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.

Deep Learning para Inteligencia Artificial Generativa de texto

Este curso incluye el contenido de nuestros cursos Inicial, Intermedio y Avanzado en para Modelos de Lenguajes Generativos de Texto.
Está orientado a profesionales y estudiantes avanzados de las carreras de sistemas que buscan comprender los pormenores de las arquitecturas para LLMs.

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

Incluye certificado en la blockchain con tecnología pok.tech.

No residentes en Argentina: € 450
Residentes Argentinos: AR$ 500.000
Estudiantes, docentes e investigadores de instituciones públicas de Argentina: AR$ 250.000
Incluye acceso a las clases en video, material de lectura, repositorios de código y foros de consulta + tres clase sincrónicas por videoconferencia con los docentes del curso.

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.