inteligencia_artificial:ia_generativa
Diferencias
Muestra las diferencias entre dos versiones de la página.
| Próxima revisión | Revisión previa | ||
| inteligencia_artificial:ia_generativa [2026/06/16 14:20] – creado alberto | inteligencia_artificial:ia_generativa [2026/06/16 14:54] (actual) – alberto | ||
|---|---|---|---|
| Línea 1: | Línea 1: | ||
| - | ====== | + | ====== |
| - | ===== 1. La Arquitectura Base: El Transformer ===== | + | |
| - | El Transformer (Vaswani et al., 2017) supuso una ruptura absoluta con las redes secuenciales anteriores (como RNN y LSTM) al tratar el procesamiento del lenguaje como un problema relacional global en lugar de una cadena temporal paso a paso. | + | * [[inteligencia |
| - | + | ||
| - | ==== El Mecanismo de Autoatención (Scaled Dot-Product Attention) ==== | + | |
| - | En lugar de procesar palabra por palabra, el modelo proyecta cada token en tres vectores distintos mediante matrices de pesos entrenables: | + | |
| - | * **Query (Consulta): | + | |
| - | * **Key (Clave):** Qué ofrece esa palabra al resto. | + | |
| - | * **Value (Valor):** El contenido semántico real de la palabra una vez que se encuentra la relación. | + | |
| - | + | ||
| - | La operación matemática fundamental que ocurre en cada capa es: | + | |
| - | + | ||
| - | $$\text{Attention}(Q, | + | |
| - | + | ||
| - | Donde $d_k$ es la dimensión de los vectores de clave. Esto genera una matriz de atención donde cada token recibe un peso de importancia respecto a todos los demás tokens del contexto, resolviendo de forma nativa la dependencia a larga distancia. | + | |
| - | + | ||
| - | + | ||
| - | + | ||
| - | ==== Procesamiento en Paralelo vs. Secuencial ==== | + | |
| - | Las redes antiguas mantenían un " | + | |
| - | + | ||
| - | [Image comparing RNN sequential processing vs Transformer parallel processing] | + | |
| - | + | ||
| - | ==== Codificación Posicional Rotatoria (RoPE) ==== | + | |
| - | Como el procesamiento es paralelo, la red no sabe inherentemente qué palabra va antes y cuál después. Los LLM modernos sustituyen las funciones trigonométricas fijas del Transformer original por **RoPE** (//Rotary Position Embedding// | + | |
| - | RoPE aplica una matriz de rotación interna a los vectores $Q$ y $K$. La propiedad matemática clave de RoPE es que el producto escalar entre dos tokens codificados conserva la información de la **distancia relativa** entre ellos, lo que permite al modelo extrapolar su comprensión a contextos masivos (de 32k a más de un millón de tokens) sin que la geometría espacial del modelo se rompa. | + | |
| - | + | ||
| - | ---- | + | |
| - | + | ||
| - | ===== 2. El Pipeline de un LLM: Del Texto al Asistente ===== | + | |
| - | Un modelo no nace sabiendo chatear o seguir órdenes; se le esculpe | + | |
| - | + | ||
| - | ==== Fase 1: Tokenización y Embeddings ==== | + | |
| - | El texto plano es indigerible para una red neuronal. Un algoritmo (como //Byte-Pair Encoding//) fragmenta el texto en tokens (raíces de palabras, prefijos o signos de puntuación). Cada token se asocia a un ID entero dentro de un vocabulario fijo (por ejemplo, 128,000 tokens en la familia Llama 3). | + | |
| - | Ese ID recupera un vector continuo de alta dimensión (ej. 4096 dimensiones) de la matriz de // | + | |
| - | + | ||
| - | ==== Fase 2: Preentrenamiento (Pre-training) ==== | + | |
| - | Es un aprendizaje autosupervisado a escala masiva que requiere meses de computación en clústeres de miles de GPUs. El objetivo es el **Modelado de Lenguaje Causal**: maximizar la probabilidad de predecir el token correcto dada una ventana de tokens anteriores. | + | |
| - | + | ||
| - | $$\mathcal{L} = \sum_{i} \log P(x_i \mid x_{<i}; \Theta)$$ | + | |
| - | + | ||
| - | Donde $\Theta$ representa | + | |
| - | + | ||
| - | + | ||
| - | + | ||
| - | ==== Fase 3: Ajuste Fino Instructivo (SFT) y Alineación (RLHF/DPO) ==== | + | |
| - | El modelo base se refina para convertirlo en un asistente mediante dos pasos: | + | |
| - | * **SFT (Supervised Fine-Tuning): | + | |
| - | * **DPO (Direct Preference Optimization) / RLHF:** Se entrena al modelo exponiéndolo a pares de respuestas (una preferida por humanos y otra rechazada) mediante una función de pérdida que penaliza comportamientos dañinos, mentiras (alucinaciones) o salidas incoherentes. **En esta fase es donde el modelo aprende conceptualmente a obedecer las directrices del //System Prompt// | + | |
| - | + | ||
| - | < | + | |
| - | < | + | |
| - | </ | + | |
| - | + | ||
| - | ---- | + | |
| - | + | ||
| - | ===== 3. Modificación y Personalización de Modelos de Pesos Abiertos ===== | + | |
| - | Tener acceso a los pesos libres del modelo permite alterar su estructura interna o su comportamiento directamente mediante código de Python. | + | |
| - | + | ||
| - | ==== " | + | |
| - | La penúltima capa de un LLM genera un vector denso que condensa toda la información semántica del contexto (el //hidden state//). Normalmente, | + | |
| - | + | ||
| - | Si eliminamos esa capa con el comando '' | + | |
| - | + | ||
| - | ==== LoRA y QLoRA (Adaptación de Bajo Rango) ==== | + | |
| - | Modificar todos los pesos de un modelo durante un entrenamiento tradicional requiere actualizar matrices gigantescas de dimensiones $d \times k$, algo inviable en hardware doméstico. LoRA (//Low-Rank Adaptation// | + | |
| - | + | ||
| - | En lugar de modificar la matriz original $W_0$ (que se congela), LoRA añade dos matrices auxiliares paralelas y delgadas, $A$ y $B$, de rango $r$ (donde $r \ll d$). | + | |
| - | + | ||
| - | $$W = W_0 + \Delta W = W_0 + B \cdot A$$ | + | |
| - | + | ||
| - | Si el peso original es una matriz de $4096 \times 4096$ (16 millones de parámetros), | + | |
| - | + | ||
| - | **QLoRA** lleva esta técnica al límite: mantiene la matriz base $W_0$ comprimida en un formato ultra-reducido de **4 bits** (NF4) y calcula los gradientes exclusivamente sobre los adaptadores LoRA en precisión FP16, permitiendo entrenar modelos en GPUs de consumo. | + | |
| - | + | ||
| - | + | ||
| - | + | ||
| - | ---- | + | |
| - | + | ||
| - | ===== 4. Técnicas de Cuantización ===== | + | |
| - | La cuantización consiste en mapear un espacio continuo de alta precisión (como los números en punto flotante de 16 bits, FP16, donde cada peso ocupa 2 bytes) a un espacio discreto de baja precisión (como enteros de 4 bits, INT4, donde cada peso ocupa 0,5 bytes). | + | |
| - | + | ||
| - | La fórmula básica de cuantización lineal es: | + | |
| - | + | ||
| - | $$Q(X) = \text{round}\left(\frac{X}{S}\right) + Z$$ | + | |
| - | + | ||
| - | Donde $S$ es el factor de escala (//scale//) y $Z$ es el punto cero (// | + | |
| - | + | ||
| - | + | ||
| - | + | ||
| - | ==== Formatos de Cuantización Principales ==== | + | |
| - | + | ||
| - | ^ Formato ^ Entorno de Ejecución ^ Características Clave ^ | + | |
| - | | **GGUF** | CPU / GPU (Local) | Formato contenedor binario unificado (pesos + tokenizador). Permite **offloading** (repartir capas de forma dinámica entre la VRAM de la gráfica y la RAM del sistema mediante la CPU). Es el motor nativo de Ollama. | | + | |
| - | | **AWQ** | 100% GPU (Servidores) | Analiza las activaciones del modelo con datos reales para identificar el **1% de pesos críticos** que dictan la lógica. Aplica un factor de escala para proteger estos pesos antes de comprimir el resto a 4 bits rígidos. Optimizado para //Tensor Cores//. | | + | |
| - | | **EXL2** | 100% GPU (Consumo) | Diseñado exclusivamente para exprimir tarjetas NVIDIA en local. Permite cuantizaciones con precisión fraccionaria (ej. 4.25 o 4.65 bits) para ajustar el tamaño del modelo exactamente al límite físico de la VRAM disponible. | | + | |
| - | + | ||
| - | ---- | + | |
| - | + | ||
| - | ===== 5. Anatomía de la VRAM y Gestión | + | |
| - | Durante el proceso de inferencia (generación de texto en tiempo real), el consumo | + | |
| - | + | ||
| - | '' | + | |
| - | + | ||
| - | ==== El KV Cache y Grouped-Query Attention (GQA) ==== | + | |
| - | En la atención tradicional (MHA), cada cabeza de consulta ($Q$) tiene su propia cabeza de clave ($K$) y valor ($V$). En textos largos, almacenar todas estas matrices $K$ y $V$ para no recalcularlas satura la VRAM. | + | |
| - | + | ||
| - | Los modelos modernos optimizan este espacio usando **GQA** (// | + | |
| - | + | ||
| - | + | ||
| - | + | ||
| - | ==== El cálculo preciso de memoria para el KV Cache ==== | + | |
| - | Para estimar la memoria exacta del KV Cache en bytes para una longitud de contexto $L$, la fórmula de ingeniería es: | + | |
| - | + | ||
| - | $$\text{Memoria}_{KVCache} = 2 \times 2 \times L \times N_{\text{capas}} \times H_{kv} \times D_{\text{cabeza}}$$ | + | |
| - | + | ||
| - | Donde $L$ es la longitud del contexto, $N_{\text{capas}}$ es el número de bloques del modelo, $H_{kv}$ es el número de cabezas de clave/valor (reducido por GQA) y $D_{\text{cabeza}}$ es la dimensión interna de la cabeza. | + | |
| - | * **Regla de oro:** En arquitecturas GQA de la escala de **8B de parámetros**, | + | |
| - | + | ||
| - | **Importante: | + | |
| - | + | ||
| - | ==== Desbordamiento del Contexto (num_ctx) ==== | + | |
| - | Cuando la conversación se alarga tanto que el KV Cache alcanza el límite configurado en el motor de inferencia ('' | + | |
| - | - **Truncado (Bruto):** Elimina los tokens más antiguos de la conversación, | + | |
| - | - **Resumen por Inferencia (Inteligente): | + | |
| - | + | ||
| - | ---- | + | |
| - | + | ||
| - | ===== 6. Estructura de Software en Entornos Locales ===== | + | |
| - | En un entorno de desarrollo o producción local, las herramientas interactúan mediante una arquitectura de capas bien definida: | + | |
| - | + | ||
| - | < | + | |
| - | [Open WebUI] | + | |
| - | (UI/ | + | |
| - | | + | |
| - | </ | + | |
| - | + | ||
| - | - **Capa de Abstracción y UI (Ej. Open WebUI / LangChain): | + | |
| - | - **Motor de Inferencia (Ej. Ollama / Llama.cpp): | + | |
| - | - **Entorno de Contenerización (Ej. Docker):** Proporciona un entorno seguro y aislado (// | + | |
| - | - **Capa Matemática de Bajo Nivel (Ej. PyTorch / CUDA):** Framework subyacente que traduce las operaciones de tensores del script a instrucciones binarias de álgebra lineal ejecutables directamente por el silicio de la GPU. | + | |
inteligencia_artificial/ia_generativa.1781612458.txt.gz · Última modificación: por alberto
