<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
    <channel>
        <title>KV Cache on KnightLi Blog</title>
        <link>https://knightli.com/es/tags/kv-cache/</link>
        <description>Recent content in KV Cache on KnightLi Blog</description>
        <generator>Hugo -- gohugo.io</generator>
        <language>es</language>
        <lastBuildDate>Mon, 18 May 2026 18:38:26 +0800</lastBuildDate><atom:link href="https://knightli.com/es/tags/kv-cache/index.xml" rel="self" type="application/rss+xml" /><item>
        <title>DeepSeek-V4 KV Cache explicado: por qué el contexto de 1M usa menos VRAM</title>
        <link>https://knightli.com/es/2026/05/18/deepseek-v4-kv-cache-compressed-attention/</link>
        <pubDate>Mon, 18 May 2026 18:38:26 +0800</pubDate>
        
        <guid>https://knightli.com/es/2026/05/18/deepseek-v4-kv-cache-compressed-attention/</guid>
        <description>&lt;p&gt;El costo real de los modelos de contexto largo no suele estar en si aceptan un millón de tokens, sino en cuánta VRAM consume el KV Cache durante la inferencia.&lt;/p&gt;
&lt;p&gt;Durante la decodificación Transformer, cada nuevo token generado necesita acceder a los estados Key y Value de los tokens anteriores. Cuanto más largo es el contexto, más grande es el KV Cache. Un KV Cache mayor presiona VRAM, ancho de banda de memoria, tiempo al primer token y throughput.&lt;/p&gt;
&lt;p&gt;DeepSeek-V4 es interesante porque no solo reduce caché en la dimensión de cabezas de atención. Lleva la compresión a la dimensión de longitud de secuencia. Según el análisis de Hugging Face sobre DeepSeek-V4, en un escenario de 1M tokens, el KV Cache de DeepSeek-V4-Pro es alrededor del 10% del de DeepSeek-V3.2, y alrededor del 2% de una arquitectura GQA bf16 común.&lt;/p&gt;
&lt;p&gt;Esa es la diferencia clave: DeepSeek-V4 no solo guarda cada entrada KV en un formato más pequeño. Reduce la cantidad de entradas KV que deben conservarse y buscarse en una historia larga.&lt;/p&gt;
&lt;h2 id=&#34;varias-generaciones-de-optimización-de-kv-cache&#34;&gt;Varias generaciones de optimización de KV Cache
&lt;/h2&gt;&lt;p&gt;La optimización de KV Cache ha seguido varias rutas.&lt;/p&gt;
&lt;p&gt;La primera es MHA tradicional, Multi-Head Attention. Cada cabeza Query suele tener sus propias cabezas Key/Value. La estructura es directa, pero en contextos largos la caché crece linealmente con la longitud de secuencia, generando mucha presión de VRAM.&lt;/p&gt;
&lt;p&gt;La segunda es GQA, Grouped Query Attention. Varias cabezas Query comparten menos cabezas Key/Value. Muchos modelos modernos como LLaMA, Mistral y Qwen usan ideas similares. Reduce mucho el número de cabezas KV y hoy es una optimización común para contexto largo.&lt;/p&gt;
&lt;p&gt;La tercera es MLA, Multi-head Latent Attention. DeepSeek-V2 y DeepSeek-V3 usan esta ruta, comprimiendo Key/Value en representaciones latentes de bajo rango y reduciendo aún más la caché en la dimensión de cabezas.&lt;/p&gt;
&lt;p&gt;La cuarta es la atención comprimida híbrida de DeepSeek-V4. Se centra en la longitud de secuencia: no solo reduce cuánto KV guarda cada token, sino que comprime múltiples tokens históricos en menos entradas KV y las recupera mediante atención dispersa o densa.&lt;/p&gt;
&lt;p&gt;En términos simples:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;MHA: cada cabeza recuerda por separado.&lt;/li&gt;
&lt;li&gt;GQA: varias cabezas Query comparten memoria.&lt;/li&gt;
&lt;li&gt;MLA: la representación KV de cada token se comprime en un vector latente.&lt;/li&gt;
&lt;li&gt;DeepSeek-V4: muchos tokens históricos se agregan en menos bloques de memoria comprimida.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;cambio-clave-de-comprimir-cabezas-a-comprimir-secuencia&#34;&gt;Cambio clave: de comprimir cabezas a comprimir secuencia
&lt;/h2&gt;&lt;p&gt;GQA y MLA optimizan principalmente cuánto KV guarda cada token. Funciona bien, pero cuando el contexto llega a 1M tokens, el número de tokens se vuelve el problema principal.&lt;/p&gt;
&lt;p&gt;DeepSeek-V4 comprime el contexto antiguo en bloques. El modelo no necesita preservar KV completo para cada token lejano. En su lugar, varios tokens forman entradas comprimidas.&lt;/p&gt;
&lt;p&gt;Es parecido a leer un libro muy largo: recuerdas con detalle las páginas recientes, mientras que los capítulos anteriores quedan como resúmenes, temas y pistas importantes. La atención de DeepSeek-V4 sigue una división similar: conservar detalle cerca y usar representación comprimida lejos.&lt;/p&gt;
&lt;h2 id=&#34;csa-compresión-4x-más-recuperación-dispersa&#34;&gt;CSA: compresión 4x más recuperación dispersa
&lt;/h2&gt;&lt;p&gt;CSA significa Compressed Sparse Attention. Es el mecanismo de compresión de largo alcance de grano más fino.&lt;/p&gt;
&lt;p&gt;En CSA, el modelo comprime tokens vecinos en menos entradas KV. La documentación de Hugging Face Transformers da una razón de compresión por defecto &lt;code&gt;m=4&lt;/code&gt;, es decir, aproximadamente cada cuatro tokens forman una entrada comprimida.&lt;/p&gt;
&lt;p&gt;No es un promedio simple. CSA usa un pool de compresión aprendido y ventanas solapadas para preservar información útil. Después de comprimir, la consulta no atiende a todos los bloques comprimidos directamente. Primero usa Lightning Indexer para puntuarlos, selecciona los bloques top-k más relevantes y luego realiza la atención principal.&lt;/p&gt;
&lt;p&gt;Esto aporta dos beneficios:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;El número de entradas KV históricas disminuye.&lt;/li&gt;
&lt;li&gt;Cada consulta mira solo un subconjunto relevante de bloques comprimidos.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;CSA encaja con contextos lejanos donde todavía importan detalles: bases de código, documentos largos e historiales de llamadas a herramientas.&lt;/p&gt;
&lt;h2 id=&#34;hca-compresión-128x-más-atención-densa&#34;&gt;HCA: compresión 128x más atención densa
&lt;/h2&gt;&lt;p&gt;HCA significa Heavily Compressed Attention, y es más agresivo.&lt;/p&gt;
&lt;p&gt;La documentación de Transformers da una razón por defecto &lt;code&gt;m&#39;=128&lt;/code&gt;. HCA comprime un tramo mucho más largo de contexto en una sola entrada comprimida. Como la secuencia resultante ya es muy corta, no necesita recuperación dispersa top-k como CSA. La consulta puede hacer atención densa sobre todas las entradas HCA comprimidas.&lt;/p&gt;
&lt;p&gt;HCA se parece más a un resumen global. No intenta conservar todos los detalles. Cubre una historia muy larga a costo muy bajo, ayudando al modelo a mantener conciencia de contexto global, temas de largo alcance e información lejana.&lt;/p&gt;
&lt;p&gt;Si CSA es &amp;ldquo;notas comprimidas consultables&amp;rdquo;, HCA es más bien un &amp;ldquo;índice global y resumen&amp;rdquo;.&lt;/p&gt;
&lt;h2 id=&#34;ventana-deslizante-el-contexto-reciente-conserva-detalle&#34;&gt;Ventana deslizante: el contexto reciente conserva detalle
&lt;/h2&gt;&lt;p&gt;DeepSeek-V4 no comprime todo.&lt;/p&gt;
&lt;p&gt;Además de CSA y HCA, mantiene una rama de ventana deslizante para el contexto reciente sin comprimir. La documentación de Transformers indica que los attention blocks de DeepSeek-V4 concatenan ramas comprimidas de largo alcance con K/V de ventana deslizante.&lt;/p&gt;
&lt;p&gt;Esto importa. Al generar el siguiente token, el contexto más cercano suele ser el más importante: nombres de variables, firmas de funciones, la frase actual, resultados recientes de herramientas o la última instrucción del usuario. Si se comprimiera demasiado, la calidad de salida caería.&lt;/p&gt;
&lt;p&gt;La idea de DeepSeek-V4 es:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Cerca: conservar detalles sin comprimir.&lt;/li&gt;
&lt;li&gt;Medio y largo alcance: usar CSA para compresión consultable.&lt;/li&gt;
&lt;li&gt;Más lejos: usar HCA para resumen global muy comprimido.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;pila-híbrida-de-capas-distintas-capas-usan-distinta-atención&#34;&gt;Pila híbrida de capas: distintas capas usan distinta atención
&lt;/h2&gt;&lt;p&gt;DeepSeek-V4 no usa el mismo mecanismo de atención en todas las capas.&lt;/p&gt;
&lt;p&gt;El artículo de Hugging Face sobre DeepSeek-V4 señala que la estructura de 61 capas de V4-Pro usa HCA en las dos primeras capas, alterna CSA y HCA después, y usa una sliding-window MTP block al final. La documentación de Transformers también describe V4-Pro como dos capas HCA bootstrap seguidas por capas alternas CSA/HCA.&lt;/p&gt;
&lt;p&gt;Esto muestra que DeepSeek-V4 trata la atención como un sistema por capas. Algunas capas favorecen compresión global, otras recuperación dispersa, y otras conservan ventanas locales.&lt;/p&gt;
&lt;p&gt;Es más complejo que usar un solo tipo de atención en todas partes, pero se ajusta mejor a contextos extremos de 1M tokens.&lt;/p&gt;
&lt;h2 id=&#34;fp8-y-fp4-reducen-aún-más-el-costo-de-caché&#34;&gt;FP8 y FP4 reducen aún más el costo de caché
&lt;/h2&gt;&lt;p&gt;El ahorro de DeepSeek-V4 no viene solo de la razón de compresión.&lt;/p&gt;
&lt;p&gt;El artículo de Hugging Face indica que la mayoría de entradas KV en V4 usan almacenamiento FP8, las dimensiones relacionadas con RoPE permanecen en BF16, y el Lightning Indexer de CSA usa FP4. La combinación de compresión, baja precisión y recuperación dispersa produce un uso muy bajo de KV Cache.&lt;/p&gt;
&lt;p&gt;Esto recuerda algo importante: no basta mirar el número de longitud de contexto. La viabilidad de despliegue depende de VRAM, presión de ancho de banda, latencia y calidad de implementación bajo contexto largo.&lt;/p&gt;
&lt;h2 id=&#34;diferencias-con-otros-modelos&#34;&gt;Diferencias con otros modelos
&lt;/h2&gt;&lt;p&gt;Frente a MHA tradicional, DeepSeek-V4 ya no mantiene memoria de atención completa para cada token en una historia larga, así que la presión de caché cae mucho.&lt;/p&gt;
&lt;p&gt;Frente a GQA, DeepSeek-V4 no solo reduce el número de cabezas KV. También reduce el número de entradas KV para historia larga. GQA sigue acumulando caché linealmente con la longitud de secuencia; V4 comprime el contexto lejano en bloques.&lt;/p&gt;
&lt;p&gt;Frente al MLA de DeepSeek-V3, V4 extiende la optimización desde &amp;ldquo;hacer más compacta la representación de cada token&amp;rdquo; hacia &amp;ldquo;comprimir también la cantidad de entradas históricas&amp;rdquo;. MLA ya reduce mucho el costo KV por token, pero en contexto de millones de tokens la longitud de secuencia sigue siendo un cuello de botella.&lt;/p&gt;
&lt;p&gt;Frente a atención dispersa ordinaria, CSA primero comprime y luego recupera de forma dispersa sobre una secuencia comprimida más corta. HCA va más lejos: con compresión 128x, incluso la atención densa resulta barata.&lt;/p&gt;
&lt;h2 id=&#34;qué-significa-para-agentes-y-tareas-largas&#34;&gt;Qué significa para agentes y tareas largas
&lt;/h2&gt;&lt;p&gt;Los workflows de agentes consumen mucho contexto. Leen archivos, llaman herramientas, reciben resultados, generan planes, corrigen planes y vuelven a llamar herramientas. Cuanto más largo es el contexto, más probable es que KV Cache sea el cuello de botella.&lt;/p&gt;
&lt;p&gt;El diseño de caché de DeepSeek-V4 puede ayudar en varias formas:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Manejar bases de código largas, documentos extensos e historiales de herramientas de muchas rondas.&lt;/li&gt;
&lt;li&gt;Reducir presión sobre tiempo al primer token y throughput causada por KV Cache.&lt;/li&gt;
&lt;li&gt;Ejecutar contextos más largos o más solicitudes concurrentes con el mismo hardware.&lt;/li&gt;
&lt;li&gt;Acercar el contexto de un millón de tokens a un despliegue práctico, no solo a un número de benchmark.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Pero la atención comprimida no es gratis. Comprimir tokens históricos en bloques implica elegir qué información se conserva. El modelo debe equilibrar ahorro de VRAM con retención de detalles recuperables. El rendimiento real depende de la tarea: navegación de código, documentos legales, QA largo y toolchains de agentes tienen necesidades distintas de recuperación de detalles.&lt;/p&gt;
&lt;h2 id=&#34;no-leas-2-como-2-de-todo-el-costo&#34;&gt;No leas 2% como 2% de todo el costo
&lt;/h2&gt;&lt;p&gt;&amp;ldquo;KV Cache alrededor del 2% de GQA&amp;rdquo; puede malinterpretarse.&lt;/p&gt;
&lt;p&gt;Se refiere principalmente al tamaño de memoria de KV Cache. No significa que el costo total de inferencia caiga al 2%, ni que todos los escenarios sean 50 veces más rápidos. La inferencia también incluye lectura de pesos, enrutamiento MoE, redes feed-forward, cómputo de atención, scheduling y comunicación.&lt;/p&gt;
&lt;p&gt;El artículo de Hugging Face separa dos números: en contexto de 1M tokens, los FLOPs por token de DeepSeek-V4-Pro son 27% de DeepSeek-V3.2, mientras que KV Cache es 10%. Caché y cómputo son dimensiones distintas.&lt;/p&gt;
&lt;p&gt;La afirmación más segura es: DeepSeek-V4 reduce mucho la presión de KV Cache en contexto ultralargo, mejorando la viabilidad de despliegue en escenarios de un millón de tokens. Latencia y throughput reales dependen de implementación, hardware, batching, cuantización y framework de inferencia.&lt;/p&gt;
&lt;h2 id=&#34;resumen&#34;&gt;Resumen
&lt;/h2&gt;&lt;p&gt;La mayor diferencia entre DeepSeek-V4 y otros modelos grandes es que mueve la optimización de KV Cache desde la dimensión de cabezas de atención hacia la dimensión de longitud de secuencia.&lt;/p&gt;
&lt;p&gt;GQA guarda menos cabezas KV. MLA hace más compacta la representación KV de cada token. DeepSeek-V4 además agrega tokens lejanos en bloques comprimidos y combina CSA, HCA, ventanas deslizantes y almacenamiento de baja precisión, para que el contexto de un millón de tokens no quede bloqueado de inmediato por KV Cache.&lt;/p&gt;
&lt;p&gt;No es un truco único. Es una arquitectura de inferencia para contexto largo: conservar detalles cerca, comprimir lo lejano, recuperar detalles cuando hacen falta y resumir globalmente cuando es posible.&lt;/p&gt;
&lt;p&gt;Para desarrolladores y aplicaciones de agentes, el significado es directo: contexto largo no es solo aceptar más entrada. Debe poder ejecutarse, ser estable y tener costo aceptable. Eso es lo que DeepSeek-V4 cambia.&lt;/p&gt;
&lt;h2 id=&#34;referencias&#34;&gt;Referencias
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://huggingface.co/blog/deepseekv4&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Hugging Face: DeepSeek-V4: a million-token context that agents can actually use&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://huggingface.co/docs/transformers/model_doc/deepseek_v4&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Hugging Face Transformers: DeepSeek-V4 model documentation&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://arxiv.org/abs/2412.19437&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;DeepSeek-V3 Technical Report&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</description>
        </item>
        <item>
        <title>Cómo ajustar llama.cpp con 8GB de VRAM: por qué 32K es más seguro y 64K necesita cuantización de KV Cache</title>
        <link>https://knightli.com/es/2026/04/23/llama-cpp-8g-vram-32k-64k-kv-cache-tuning/</link>
        <pubDate>Thu, 23 Apr 2026 12:13:04 +0800</pubDate>
        
        <guid>https://knightli.com/es/2026/04/23/llama-cpp-8g-vram-32k-64k-kv-cache-tuning/</guid>
        <description>&lt;p&gt;Si &lt;code&gt;8GB&lt;/code&gt; de VRAM bastan para ejecutar LLMs locales con fluidez, especialmente con contextos largos, es una de las preguntas más comunes al usar &lt;code&gt;llama.cpp&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;Tres conclusiones clave:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Con &lt;code&gt;8GB&lt;/code&gt; de VRAM, contexto &lt;code&gt;32K&lt;/code&gt; suele ser el equilibrio más seguro&lt;/li&gt;
&lt;li&gt;Si realmente quieres &lt;code&gt;64K&lt;/code&gt;, la cuantización de &lt;code&gt;KV Cache&lt;/code&gt; suele ser esencial&lt;/li&gt;
&lt;li&gt;En inferencia full-GPU, subir a ciegas el número de hilos &lt;code&gt;CPU&lt;/code&gt; puede empeorar el rendimiento&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;1-qué-significan-32k-64k-y-kv-cache&#34;&gt;1. Qué significan 32K, 64K y KV Cache
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;32K&lt;/code&gt; y &lt;code&gt;64K&lt;/code&gt; se refieren a longitud de contexto, es decir, cuántos &lt;code&gt;tokens&lt;/code&gt; puede procesar el modelo a la vez. &lt;code&gt;K&lt;/code&gt; significa miles: &lt;code&gt;32K&lt;/code&gt; son unos &lt;code&gt;32000 tokens&lt;/code&gt;, y &lt;code&gt;64K&lt;/code&gt; unos &lt;code&gt;64000 tokens&lt;/code&gt;. Cuanto más largo el contexto, más contenido previo puede ver el modelo.&lt;/p&gt;
&lt;p&gt;&lt;code&gt;KV Cache&lt;/code&gt; es una caché de resultados intermedios que el modelo mantiene para acelerar la generación autoregresiva. Una vez que el modelo leyó parte del contexto, no necesita recalcular todo desde cero cada vez. Guarda información intermedia y la reutiliza. &lt;code&gt;K&lt;/code&gt; y &lt;code&gt;V&lt;/code&gt; vienen de &lt;code&gt;Key&lt;/code&gt; y &lt;code&gt;Value&lt;/code&gt; en Transformers.&lt;/p&gt;
&lt;p&gt;Estos términos aparecen juntos porque:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;32K&lt;/code&gt; y &lt;code&gt;64K&lt;/code&gt; definen cuánto contenido quieres recordar&lt;/li&gt;
&lt;li&gt;&lt;code&gt;KV Cache&lt;/code&gt; determina cuánta VRAM extra hace falta para mantener esa memoria&lt;/li&gt;
&lt;li&gt;cuanto más largo el contexto, más grande suele ser la &lt;code&gt;KV Cache&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Cuando la inferencia de contexto largo se ralentiza, el problema raíz suele ser que la caché creció hasta presionar el límite de VRAM.&lt;/p&gt;
&lt;h2 id=&#34;2-por-qué-32k-y-64k-se-comportan-tan-distinto&#34;&gt;2. Por qué 32K y 64K se comportan tan distinto
&lt;/h2&gt;&lt;p&gt;Usando unas &lt;code&gt;30000&lt;/code&gt; letras chinas de &lt;em&gt;The Three-Body Problem&lt;/em&gt; como stress test, la comparación entre &lt;code&gt;32K&lt;/code&gt; y &lt;code&gt;64K&lt;/code&gt; puede verse dramática: con tamaño de documento similar, &lt;code&gt;64K&lt;/code&gt; puede volverse mucho más lento.&lt;/p&gt;
&lt;p&gt;La razón no es que el modelo empeore de repente. El problema real es tocar el límite de VRAM.&lt;/p&gt;
&lt;p&gt;En &lt;code&gt;32K&lt;/code&gt;, pesos del modelo más caché quizá aún caben en &lt;code&gt;8GB&lt;/code&gt;, así que la mayoría del tráfico se queda en la memoria de la GPU. Al pasar a &lt;code&gt;64K&lt;/code&gt;, la caché crece, el uso total se acerca o supera el techo de VRAM, y parte de los datos se empuja a memoria compartida o del sistema.&lt;/p&gt;
&lt;p&gt;En ese punto no colapsa el cómputo bruto, sino el ancho de banda.&lt;/p&gt;
&lt;p&gt;Lo que parece &amp;ldquo;el contexto se duplicó y el rendimiento se hundió&amp;rdquo; suele ser que la ruta de datos salió de VRAM hacia memoria mucho más lenta.&lt;/p&gt;
&lt;h2 id=&#34;3-para-64k-la-cuantización-de-kv-cache-importa-mucho&#34;&gt;3. Para 64K, la cuantización de KV Cache importa mucho
&lt;/h2&gt;&lt;p&gt;Para usuarios de &lt;code&gt;8GB&lt;/code&gt; de VRAM, una conclusión importante es que cuantizar &lt;code&gt;KV Cache&lt;/code&gt; importa muchísimo.&lt;/p&gt;
&lt;p&gt;Sin cambiar el modelo, cuantizar solo la caché reduce directamente el uso de memoria en contexto largo. Eso permite que parte de los datos que antes salían de VRAM vuelvan a caber. &lt;code&gt;64K&lt;/code&gt; seguirá siendo más pesado que &lt;code&gt;32K&lt;/code&gt;, pero es menos probable que caiga en la zona más lenta.&lt;/p&gt;
&lt;p&gt;En simple:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;32K&lt;/code&gt; es el rango predeterminado más práctico para &lt;code&gt;8GB&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;64K&lt;/code&gt; no es imposible&lt;/li&gt;
&lt;li&gt;pero sin cuantización de caché, puede pasar de usable a difícil de usar&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Prioridad habitual:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Revisar si la VRAM ya está cerca del techo&lt;/li&gt;
&lt;li&gt;Decidir si activar cuantización de &lt;code&gt;KV Cache&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Solo después experimentar con ajustes de throughput&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;4-baja-utilización-gpu-no-significa-que-esté-inactiva&#34;&gt;4. Baja utilización GPU no significa que esté inactiva
&lt;/h2&gt;&lt;p&gt;Este punto rompe la intuición.&lt;/p&gt;
&lt;p&gt;Cuando Task Manager muestra 20% o 30% de &lt;code&gt;GPU&lt;/code&gt;, mucha gente asume:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;los parámetros están mal&lt;/li&gt;
&lt;li&gt;el modelo no corre realmente en GPU&lt;/li&gt;
&lt;li&gt;la GPU no se usa completa&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Pero en inferencia &lt;code&gt;llama.cpp&lt;/code&gt;, lo más probable es que el cuello de botella no sea cómputo del core, sino lecturas y escrituras de memoria.&lt;/p&gt;
&lt;p&gt;Los cores GPU pueden terminar rápido un lote de cálculo y pasar el resto del tiempo esperando el siguiente lote de pesos o datos cacheados.&lt;/p&gt;
&lt;p&gt;Por eso:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;la utilización de cores no parece alta&lt;/li&gt;
&lt;li&gt;pero la velocidad end-to-end no mejora&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;No es una GPU perezosa. Es una ruta de datos estrecha.&lt;/p&gt;
&lt;h2 id=&#34;5-aumentar-parámetros-de-throughput-ayuda-solo-si-la-vram-aguanta&#34;&gt;5. Aumentar parámetros de throughput ayuda solo si la VRAM aguanta
&lt;/h2&gt;&lt;p&gt;Si los cores GPU no están saturados, aumentar parámetros relacionados con throughput puede hacer que la GPU procese más datos a la vez y use mejor el paralelismo.&lt;/p&gt;
&lt;p&gt;Puede mejorar velocidad, pero con una condición: debe quedar margen de VRAM.&lt;/p&gt;
&lt;p&gt;Si ya estás en &lt;code&gt;64K&lt;/code&gt;, con una caché grande y VRAM casi agotada, subir esos parámetros puede terminar en:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;crash&lt;/li&gt;
&lt;li&gt;fallback a memoria compartida mucho más lenta&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;La secuencia más segura:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;proteger primero el límite de VRAM&lt;/li&gt;
&lt;li&gt;luego probar optimizaciones de throughput&lt;/li&gt;
&lt;li&gt;tras cada cambio, revisar velocidad y estabilidad&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;6-más-hilos-cpu-no-siempre-son-mejores&#34;&gt;6. Más hilos CPU no siempre son mejores
&lt;/h2&gt;&lt;p&gt;Es una trampa fácil.&lt;/p&gt;
&lt;p&gt;Parece natural pensar que más hilos dan más velocidad. Pero si el modelo ya corre casi todo en GPU, forzar más hilos &lt;code&gt;CPU&lt;/code&gt; puede empeorar claramente el rendimiento.&lt;/p&gt;
&lt;p&gt;En inferencia full-GPU, la &lt;code&gt;CPU&lt;/code&gt; es más scheduler y ayudante de preprocesamiento que motor principal. Demasiados hilos aumentan contención, overhead de scheduling y cambios de contexto, interrumpiendo el flujo de datos.&lt;/p&gt;
&lt;p&gt;Resultado:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;la &lt;code&gt;CPU&lt;/code&gt; parece más ocupada&lt;/li&gt;
&lt;li&gt;la velocidad general baja&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;En este setup, valores predeterminados o hilos más bajos suelen ser más fiables que maximizar todo.&lt;/p&gt;
&lt;h2 id=&#34;7-enfoque-práctico-para-8gb-de-vram&#34;&gt;7. Enfoque práctico para 8GB de VRAM
&lt;/h2&gt;&lt;h3 id=&#34;1-trata-32k-como-objetivo-predeterminado&#34;&gt;1. Trata 32K como objetivo predeterminado
&lt;/h3&gt;&lt;p&gt;Con una GPU de &lt;code&gt;8GB&lt;/code&gt;, no persigas &lt;code&gt;64K&lt;/code&gt; de inmediato. &lt;code&gt;32K&lt;/code&gt; suele equilibrar mejor velocidad, estabilidad y memoria.&lt;/p&gt;
&lt;h3 id=&#34;2-si-quieres-64k-resuelve-primero-la-caché&#34;&gt;2. Si quieres 64K, resuelve primero la caché
&lt;/h3&gt;&lt;p&gt;Confirma si &lt;code&gt;KV Cache&lt;/code&gt; está cuantizada y si la VRAM ya está al límite.&lt;/p&gt;
&lt;h3 id=&#34;3-no-juzgues-todo-por-utilización-gpu&#34;&gt;3. No juzgues todo por utilización GPU
&lt;/h3&gt;&lt;p&gt;Baja utilización no implica ajustes incorrectos. Puede indicar que el cuello de botella es memoria.&lt;/p&gt;
&lt;h3 id=&#34;4-optimiza-throughput-sin-cruzar-el-límite-de-vram&#34;&gt;4. Optimiza throughput sin cruzar el límite de VRAM
&lt;/h3&gt;&lt;p&gt;Estos parámetros pueden ayudar, pero solo con margen suficiente.&lt;/p&gt;
&lt;h3 id=&#34;5-sé-conservador-con-hilos-cpu&#34;&gt;5. Sé conservador con hilos CPU
&lt;/h3&gt;&lt;p&gt;Si el modelo corre principalmente en GPU, más hilos CPU no son automáticamente mejores.&lt;/p&gt;
&lt;h2 id=&#34;conclusión&#34;&gt;Conclusión
&lt;/h2&gt;&lt;p&gt;El valor de esta discusión no son solo números de benchmark, sino una verdad fácil de olvidar:&lt;/p&gt;
&lt;p&gt;ajustar LLMs locales no consiste en poner cada valor al máximo. Consiste en entender si tu cuello de botella real es cómputo, capacidad de VRAM, ancho de banda de memoria o scheduling de &lt;code&gt;CPU&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;Para usuarios de &lt;code&gt;8GB&lt;/code&gt;, la estrategia más segura suele ser proteger primero el límite de VRAM y solo entonces decidir cuánto más empujar.&lt;/p&gt;
&lt;p&gt;Si recuerdas una frase:&lt;/p&gt;
&lt;p&gt;&lt;code&gt;32K&lt;/code&gt; suele ser el rango de trabajo más estable para &lt;code&gt;8GB&lt;/code&gt; de VRAM; &lt;code&gt;64K&lt;/code&gt; es posible, pero solo si ya controlaste &lt;code&gt;KV Cache&lt;/code&gt; y uso de VRAM.&lt;/p&gt;
</description>
        </item>
        
    </channel>
</rss>
