113 lines
4.1 KiB
Markdown

# LLM Training - Preparación de Datos
{{#include ../../banners/hacktricks-training.md}}
**Estas son mis notas del libro muy recomendado** [**https://www.manning.com/books/build-a-large-language-model-from-scratch**](https://www.manning.com/books/build-a-large-language-model-from-scratch) **con información adicional.**
## Información Básica
Deberías comenzar leyendo esta publicación para algunos conceptos básicos que deberías conocer sobre:
{{#ref}}
0.-basic-llm-concepts.md
{{#endref}}
## 1. Tokenización
> [!TIP]
> El objetivo de esta fase inicial es muy simple: **Dividir la entrada en tokens (ids) de una manera que tenga sentido**.
{{#ref}}
1.-tokenizing.md
{{#endref}}
## 2. Muestreo de Datos
> [!TIP]
> El objetivo de esta segunda fase es muy simple: **Muestrear los datos de entrada y prepararlos para la fase de entrenamiento, generalmente separando el conjunto de datos en oraciones de una longitud específica y generando también la respuesta esperada.**
{{#ref}}
2.-data-sampling.md
{{#endref}}
## 3. Embeddings de Tokens
> [!TIP]
> El objetivo de esta tercera fase es muy simple: **Asignar a cada uno de los tokens anteriores en el vocabulario un vector de las dimensiones deseadas para entrenar el modelo.** Cada palabra en el vocabulario será un punto en un espacio de X dimensiones.\
> Ten en cuenta que inicialmente la posición de cada palabra en el espacio se inicializa "aleatoriamente" y estas posiciones son parámetros entrenables (se mejorarán durante el entrenamiento).
>
> Además, durante el embedding de tokens **se crea otra capa de embeddings** que representa (en este caso) la **posición absoluta de la palabra en la oración de entrenamiento**. De esta manera, una palabra en diferentes posiciones en la oración tendrá una representación diferente (significado).
{{#ref}}
3.-token-embeddings.md
{{#endref}}
## 4. Mecanismos de Atención
> [!TIP]
> El objetivo de esta cuarta fase es muy simple: **Aplicar algunos mecanismos de atención**. Estos serán muchas **capas repetidas** que van a **capturar la relación de una palabra en el vocabulario con sus vecinos en la oración actual que se está utilizando para entrenar el LLM**.\
> Se utilizan muchas capas para esto, por lo que muchos parámetros entrenables van a capturar esta información.
{{#ref}}
4.-attention-mechanisms.md
{{#endref}}
## 5. Arquitectura del LLM
> [!TIP]
> El objetivo de esta quinta fase es muy simple: **Desarrollar la arquitectura del LLM completo**. Juntar todo, aplicar todas las capas y crear todas las funciones para generar texto o transformar texto a IDs y viceversa.
>
> Esta arquitectura se utilizará tanto para el entrenamiento como para predecir texto después de haber sido entrenada.
{{#ref}}
5.-llm-architecture.md
{{#endref}}
## 6. Pre-entrenamiento y Carga de Modelos
> [!TIP]
> El objetivo de esta sexta fase es muy simple: **Entrenar el modelo desde cero**. Para esto se utilizará la arquitectura LLM anterior con algunos bucles sobre los conjuntos de datos utilizando las funciones de pérdida y optimizador definidos para entrenar todos los parámetros del modelo.
{{#ref}}
6.-pre-training-and-loading-models.md
{{#endref}}
## 7.0. Mejoras de LoRA en el ajuste fino
> [!TIP]
> El uso de **LoRA reduce mucho la computación** necesaria para **ajustar finamente** modelos ya entrenados.
{{#ref}}
7.0.-lora-improvements-in-fine-tuning.md
{{#endref}}
## 7.1. Ajuste Fino para Clasificación
> [!TIP]
> El objetivo de esta sección es mostrar cómo ajustar finamente un modelo ya preentrenado para que en lugar de generar nuevo texto, el LLM seleccione y dé las **probabilidades de que el texto dado sea categorizado en cada una de las categorías dadas** (como si un texto es spam o no).
{{#ref}}
7.1.-fine-tuning-for-classification.md
{{#endref}}
## 7.2. Ajuste Fino para seguir instrucciones
> [!TIP]
> El objetivo de esta sección es mostrar cómo **ajustar finamente un modelo ya preentrenado para seguir instrucciones** en lugar de solo generar texto, por ejemplo, respondiendo a tareas como un chatbot.
{{#ref}}
7.2.-fine-tuning-to-follow-instructions.md
{{#endref}}
{{#include ../../banners/hacktricks-training.md}}