<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
    <channel>
        <title>Llama.cpp on KnightLi Blog</title>
        <link>https://knightli.com/es/tags/llama.cpp/</link>
        <description>Recent content in Llama.cpp on KnightLi Blog</description>
        <generator>Hugo -- gohugo.io</generator>
        <language>es</language>
        <lastBuildDate>Mon, 18 May 2026 23:20:00 +0800</lastBuildDate><atom:link href="https://knightli.com/es/tags/llama.cpp/index.xml" rel="self" type="application/rss+xml" /><item>
        <title>Actualización llama.cpp b9196: los binarios precompilados para Windows soportan CUDA 13.1, Vulkan, HIP y SYCL</title>
        <link>https://knightli.com/es/2026/05/18/llama-cpp-windows-cuda-vulkan-gguf/</link>
        <pubDate>Mon, 18 May 2026 23:20:00 +0800</pubDate>
        
        <guid>https://knightli.com/es/2026/05/18/llama-cpp-windows-cuda-vulkan-gguf/</guid>
        <description>&lt;p&gt;La versión reciente de &lt;code&gt;llama.cpp&lt;/code&gt; para Windows es más amigable para usuarios de LLM locales. Antes, ejecutar modelos GGUF en Windows solía atascarse por problemas de entorno: versiones de CUDA incompatibles, DLL faltantes, drivers no compatibles, fallos de compilación con CMake, variables de entorno incorrectas o configuración complicada de Vulkan / HIP / SYCL.&lt;/p&gt;
&lt;p&gt;Ahora la página oficial de Release ofrece varios paquetes precompilados para Windows. En muchos casos ya no hace falta compilar desde código fuente. Descargas la versión correcta, la descomprimes, colocas el archivo del modelo y puedes arrancar directamente un servicio local de inferencia.&lt;/p&gt;
&lt;h2 id=&#34;para-qué-sirve-llamacpp&#34;&gt;Para qué sirve llama.cpp
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;llama.cpp&lt;/code&gt; es uno de los frameworks más usados para inferencia local con modelos GGUF. Es ligero, multiplataforma, puede usar CPU o GPU, y alrededor de GGUF ya existe un ecosistema amplio de modelos.&lt;/p&gt;
&lt;p&gt;Familias de modelos comunes:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Qwen&lt;/li&gt;
&lt;li&gt;Llama&lt;/li&gt;
&lt;li&gt;DeepSeek&lt;/li&gt;
&lt;li&gt;Gemma&lt;/li&gt;
&lt;li&gt;Mistral&lt;/li&gt;
&lt;li&gt;Mixtral&lt;/li&gt;
&lt;li&gt;Hermes&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;A medida que los modelos cuantizados en GGUF se popularizan, muchos modelos open source publican versiones GGUF aptas para despliegue local. Para usuarios normales, el valor de &lt;code&gt;llama.cpp&lt;/code&gt; está en que no necesitas montar un stack de inferencia complejo para correr un servicio de chat usable en tu propia máquina.&lt;/p&gt;
&lt;h2 id=&#34;cómo-elegir-una-versión-precompilada-para-windows&#34;&gt;Cómo elegir una versión precompilada para Windows
&lt;/h2&gt;&lt;p&gt;Los usuarios de Windows pueden elegir distintos builds según su hardware:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Windows x64 CPU&lt;/li&gt;
&lt;li&gt;Windows x64 CUDA 12.4&lt;/li&gt;
&lt;li&gt;Windows x64 CUDA 13.1&lt;/li&gt;
&lt;li&gt;Windows x64 Vulkan&lt;/li&gt;
&lt;li&gt;Windows x64 HIP Radeon&lt;/li&gt;
&lt;li&gt;Windows x64 SYCL&lt;/li&gt;
&lt;li&gt;Windows ARM64 CPU&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Si usas una GPU NVIDIA, normalmente conviene priorizar la versión CUDA. Tarjetas como RTX 3060, 4060, 4070, 4080 y 4090 encajan mejor con la ruta CUDA.&lt;/p&gt;
&lt;p&gt;Si usas una GPU AMD, puedes probar HIP o Vulkan. En la práctica, Vulkan a veces resulta más sencillo que HIP, sobre todo si no quieres montar un entorno ROCm completo.&lt;/p&gt;
&lt;p&gt;Si usas gráficos integrados Intel o una GPU Arc, puedes probar SYCL o Vulkan. El rendimiento suele quedar por detrás de NVIDIA CUDA, pero ya basta para probar muchos modelos GGUF pequeños y medianos.&lt;/p&gt;
&lt;p&gt;La versión CPU sirve para usuarios sin GPU dedicada o para quienes solo quieren verificar un modelo o correr modelos pequeños. No será rápida, pero es la ruta más simple.&lt;/p&gt;
&lt;h2 id=&#34;arrancar-un-modelo-gguf-normal&#34;&gt;Arrancar un modelo GGUF normal
&lt;/h2&gt;&lt;p&gt;Supongamos que ya descargaste el paquete precompilado de &lt;code&gt;llama.cpp&lt;/code&gt; para Windows y colocaste el modelo en el directorio &lt;code&gt;models&lt;/code&gt;. Entra en la carpeta descomprimida de &lt;code&gt;llama.cpp&lt;/code&gt; y ejecuta:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-powershell&#34; data-lang=&#34;powershell&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;llama-server&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;py&#34;&gt;exe&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;-m&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;models&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;\&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;your-model&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;py&#34;&gt;gguf&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;-ngl&lt;/span&gt; &lt;span class=&#34;mf&#34;&gt;999&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Aquí &lt;code&gt;-m&lt;/code&gt; apunta al archivo GGUF, y &lt;code&gt;-ngl 999&lt;/code&gt; intenta cargar la mayor cantidad posible de capas en la GPU. Cuántas se cargan realmente depende de la VRAM, el tamaño del modelo y el formato de cuantización.&lt;/p&gt;
&lt;p&gt;Cuando arranque correctamente, abre en el navegador:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;http://127.0.0.1:8080
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Entrarás en la interfaz web local de chat.&lt;/p&gt;
&lt;p&gt;Si la VRAM no alcanza, cambia a un modelo más pequeño o a una cuantización más baja, como archivos GGUF Q4 o Q5. No mires solo el número de parámetros; revisa también el formato de cuantización y la longitud de contexto.&lt;/p&gt;
&lt;h2 id=&#34;arrancar-un-modelo-visual-multimodal&#34;&gt;Arrancar un modelo visual multimodal
&lt;/h2&gt;&lt;p&gt;Los modelos visuales multimodales normalmente necesitan algo más que el archivo principal. También necesitan un archivo de proyección visual &lt;code&gt;mmproj&lt;/code&gt;. Al arrancar, especifica ambos:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-powershell&#34; data-lang=&#34;powershell&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;llama-server&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;py&#34;&gt;exe&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;-m&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;models\main-model.gguf&amp;#34;&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;-mmproj&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;models\mmproj-model.gguf&amp;#34;&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;-ngl&lt;/span&gt; &lt;span class=&#34;mf&#34;&gt;999&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Usos comunes:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Reconocimiento OCR&lt;/li&gt;
&lt;li&gt;Comprensión de capturas de pantalla&lt;/li&gt;
&lt;li&gt;Análisis de capturas de páginas web&lt;/li&gt;
&lt;li&gt;Preguntas y respuestas sobre imágenes&lt;/li&gt;
&lt;li&gt;Juicio simple de contenido visual&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Por ejemplo, modelos como Qwen2-VL / Qwen2.5-VL son útiles para entender capturas en chino, OCR y preguntas sobre imágenes. Asegúrate de que el modelo principal y el archivo &lt;code&gt;mmproj&lt;/code&gt; correspondan entre sí; una versión no compatible puede causar fallos de carga o resultados extraños.&lt;/p&gt;
&lt;h2 id=&#34;gestionar-varios-modelos-con-un-script-bat&#34;&gt;Gestionar varios modelos con un script bat
&lt;/h2&gt;&lt;p&gt;Si tienes varios modelos locales, puedes escribir un &lt;code&gt;.bat&lt;/code&gt; sencillo para alternarlos con un menú. Este ejemplo requiere cambiar ruta y nombres de modelos por los tuyos:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt; 1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 8
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 9
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;10
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;11
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;12
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;13
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;14
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;15
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;16
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bat&#34; data-lang=&#34;bat&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;@&lt;/span&gt;&lt;span class=&#34;k&#34;&gt;echo&lt;/span&gt; off
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;chcp 65001 &lt;span class=&#34;p&#34;&gt;&amp;gt;&lt;/span&gt;nul
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;cd&lt;/span&gt; /d C:\path\to\llama-b9196-bin-win-cuda-13.1-x64
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;echo&lt;/span&gt; 请选择模型：
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;echo&lt;/span&gt; 1. Gemma
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;echo&lt;/span&gt; 2. Qwen VL 多模态
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;echo&lt;/span&gt; 3. DeepSeek
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;set&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;/p&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;choice&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;=&lt;/span&gt;输入数字：
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;%choice%&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;==&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;1&amp;#34;&lt;/span&gt; llama-server.exe -m &lt;span class=&#34;s2&#34;&gt;&amp;#34;models\gemma.gguf&amp;#34;&lt;/span&gt; -ngl 999
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;%choice%&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;==&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;2&amp;#34;&lt;/span&gt; llama-server.exe -m &lt;span class=&#34;s2&#34;&gt;&amp;#34;models\qwen-vl.gguf&amp;#34;&lt;/span&gt; --mmproj &lt;span class=&#34;s2&#34;&gt;&amp;#34;models\mmproj.gguf&amp;#34;&lt;/span&gt; -ngl 999
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;%choice%&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;==&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;3&amp;#34;&lt;/span&gt; llama-server.exe -m &lt;span class=&#34;s2&#34;&gt;&amp;#34;models\deepseek.gguf&amp;#34;&lt;/span&gt; -ngl 999
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;pause&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Guárdalo en UTF-8 y luego cambia la extensión a &lt;code&gt;.bat&lt;/code&gt;. Al hacer doble clic, podrás elegir distintos modelos por número.&lt;/p&gt;
&lt;h2 id=&#34;tres-cosas-que-mirar-al-elegir-modelos&#34;&gt;Tres cosas que mirar al elegir modelos
&lt;/h2&gt;&lt;p&gt;Primero, el hardware. Cuanta más VRAM tengas, modelos más grandes podrás correr. Si la VRAM es limitada, no fuerces un modelo grande; empieza con 7B, 8B o una cuantización más baja.&lt;/p&gt;
&lt;p&gt;Segundo, el uso. Para preguntas diarias, resúmenes y reescritura, un modelo pequeño o una cuantización media suele bastar. Para código, análisis de documentos largos o comprensión multimodal, necesitas modelos más fuertes y más VRAM.&lt;/p&gt;
&lt;p&gt;Tercero, licencias y límites de seguridad. En internet hay muchos modelos modificados por la comunidad, con capacidades, restricciones y licencias distintas. Antes de descargar, confirma origen, licencia, escenario de uso y riesgos. No conviene entregar tareas de producción directamente a modelos de origen poco claro.&lt;/p&gt;
&lt;h2 id=&#34;problemas-comunes&#34;&gt;Problemas comunes
&lt;/h2&gt;&lt;p&gt;Si al arrancar aparece un error de DLL faltante, primero confirma que el paquete descargado corresponde a tu ruta de GPU. Los usuarios de NVIDIA no deberían descargar por error la versión HIP, y los usuarios de AMD no deberían descargar la versión CUDA.&lt;/p&gt;
&lt;p&gt;Si el modelo carga muy lento, puede ser demasiado grande, el disco puede ser lento, o parte de las capas puede estar cayendo a CPU por falta de VRAM.&lt;/p&gt;
&lt;p&gt;Si la página web no abre, revisa primero si el servicio arrancó correctamente en la consola y confirma que el puerto sea &lt;code&gt;8080&lt;/code&gt;. Si el puerto está ocupado, consulta los parámetros de &lt;code&gt;llama-server&lt;/code&gt; para cambiarlo.&lt;/p&gt;
&lt;p&gt;Si un modelo multimodal da resultados raros, revisa primero si el archivo &lt;code&gt;mmproj&lt;/code&gt; corresponde al modelo principal, antes de limitarte a cambiar prompts.&lt;/p&gt;
&lt;h2 id=&#34;resumen&#34;&gt;Resumen
&lt;/h2&gt;&lt;p&gt;El valor de estos paquetes precompilados para Windows está en bajar la barrera de entrada a la IA local. Antes muchos usuarios se quedaban atrapados en compilación y dependencias; ahora pueden llegar más rápido a descargar modelos, arrancar un servicio y probar resultados.&lt;/p&gt;
&lt;p&gt;Para usuarios de Windows, la ruta puede resumirse así:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;NVIDIA: prioriza CUDA.&lt;/li&gt;
&lt;li&gt;AMD: prueba primero Vulkan, luego HIP.&lt;/li&gt;
&lt;li&gt;Intel: prueba SYCL o Vulkan.&lt;/li&gt;
&lt;li&gt;Sin GPU dedicada: usa la versión CPU para modelos pequeños.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Antes de usarlo en serio, confirma origen del modelo, licencia, requisitos de VRAM y resultados reales. La IA local ofrece control, uso offline y baja latencia, pero no significa coste cero: gestión de modelos, recursos de hardware y calidad de salida siguen siendo responsabilidad tuya.&lt;/p&gt;
&lt;p&gt;Fuente: &lt;a class=&#34;link&#34; href=&#34;https://www.freedidi.com/24211.html&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://www.freedidi.com/24211.html&lt;/a&gt;&lt;/p&gt;
</description>
        </item>
        <item>
        <title>Cómo medir el rendimiento multi-GPU en llama.cpp: ¿2x V100 16GB son más rápidas que una sola GPU de 32GB?</title>
        <link>https://knightli.com/es/2026/05/09/llama-cpp-multi-gpu-offload-performance/</link>
        <pubDate>Sat, 09 May 2026 15:05:41 +0800</pubDate>
        
        <guid>https://knightli.com/es/2026/05/09/llama-cpp-multi-gpu-offload-performance/</guid>
        <description>&lt;p&gt;La conclusión rápida: el multi-GPU offload de llama.cpp no significa rendimiento gratis por añadir una segunda tarjeta. Si el modelo ya cabe completo en una GPU de 32GB, 2x V100 16GB suele ser menos cómodo que una sola tarjeta de 32GB, e incluso puede ser más lento. Si el modelo no cabe en una sola tarjeta de 16GB, el valor principal de usar dos GPU es mantener el modelo en GPU, y ahí la mejora sí puede ser clara.&lt;/p&gt;
&lt;h2 id=&#34;primero-separa-los-split-mode&#34;&gt;Primero, separa los split mode
&lt;/h2&gt;&lt;p&gt;El uso multi-GPU en llama.cpp gira principalmente alrededor de &lt;code&gt;--split-mode&lt;/code&gt; y &lt;code&gt;--tensor-split&lt;/code&gt;. Para hablar de rendimiento, conviene distinguir primero estos modos:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;layer&lt;/code&gt;: divide capas entre distintas GPU. Suele ser el punto de partida más compatible.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;tensor&lt;/code&gt;: divide el cálculo de tensores entre varias GPU. Se acerca más al paralelismo real, pero depende mucho del ancho de banda entre GPU y del soporte del backend.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;row&lt;/code&gt;: un modo antiguo de división por filas. Todavía aparece en algunas configuraciones, pero normalmente no es la primera opción para despliegues nuevos.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;En términos simples, &lt;code&gt;layer&lt;/code&gt; es como poner diferentes pisos en diferentes tarjetas. Durante la generación de un solo token, no siempre mantiene ambas GPU completamente ocupadas. &lt;code&gt;tensor&lt;/code&gt; se parece más a hacer que ambas tarjetas trabajen juntas en la misma capa. Tiene más paralelismo teórico, pero la comunicación entre GPU puede convertirse en el cuello de botella.&lt;/p&gt;
&lt;h2 id=&#34;si-una-gpu-de-32gb-puede-cargar-el-modelo-dos-de-16gb-no-siempre-son-más-rápidas&#34;&gt;Si una GPU de 32GB puede cargar el modelo, dos de 16GB no siempre son más rápidas
&lt;/h2&gt;&lt;p&gt;Si el modelo y la KV cache caben completos en una GPU de 32GB, una sola tarjeta suele ser más estable y a menudo más rápida. En hardware de la misma generación, como 1x V100 32GB frente a 2x V100 16GB, la configuración de dos tarjetas no tiene por qué ganar.&lt;/p&gt;
&lt;p&gt;Una expectativa conservadora es que 2x V100 16GB pueda ser entre un 10% y un 40% más lenta que una sola V100 32GB, sobre todo en chat de un solo usuario, Continue Agent y preguntas de código, donde una petición suele generar una sola respuesta.&lt;/p&gt;
&lt;p&gt;La razón es sencilla: multi-GPU no convierte la VRAM en un único gran bloque rápido. Con división por capas, la inferencia pasa entre GPU y una tarjeta puede esperar a la otra durante la generación. Con división por tensores, ambas tarjetas pueden calcular juntas, pero los resultados intermedios necesitan sincronización entre GPU, y el ancho de banda y la latencia afectan directamente el throughput.&lt;/p&gt;
&lt;p&gt;Así que si tus opciones son:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;1x V100 32GB&lt;/li&gt;
&lt;li&gt;2x V100 16GB&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;y el modelo objetivo ya cabe completo en una sola tarjeta de 32GB, la GPU única de 32GB suele ser la opción más cómoda.&lt;/p&gt;
&lt;h2 id=&#34;si-una-gpu-de-16gb-no-puede-cargar-el-modelo-dos-tarjetas-sí-aportan-mucho&#34;&gt;Si una GPU de 16GB no puede cargar el modelo, dos tarjetas sí aportan mucho
&lt;/h2&gt;&lt;p&gt;La situación cambia por completo cuando el modelo no cabe en una GPU de 16GB, pero sí cabe repartido entre dos tarjetas de 16GB.&lt;/p&gt;
&lt;p&gt;En ese caso, el valor de dos GPU es directo:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Una tarjeta de 16GB: puede requerir mucho CPU offload, con una caída clara de velocidad.&lt;/li&gt;
&lt;li&gt;2x 16GB: los pesos pueden quedarse en gran parte en GPU, lo que puede ser mucho más rápido que una ejecución mixta CPU/GPU.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;En este escenario, 2x V100 16GB no garantiza superar a una sola tarjeta de 32GB, pero puede ser varias veces más rápida que una sola 16GB con mucho offload a memoria del sistema. Es decir, el primer valor de dos tarjetas no es acelerar; es evitar que los pesos del modelo caigan en una RAM del sistema mucho más lenta.&lt;/p&gt;
&lt;h2 id=&#34;v100-pcie-y-v100-sxm2-son-muy-diferentes&#34;&gt;V100 PCIe y V100 SXM2 son muy diferentes
&lt;/h2&gt;&lt;p&gt;Lo que más se pasa por alto en inferencia multi-GPU es el interconnect.&lt;/p&gt;
&lt;p&gt;Si tienes V100 SXM2 con NVLink, el ancho de banda entre GPU es mucho mayor. La documentación de NVIDIA para V100 indica que NVLink puede llegar hasta 300GB/s de ancho de banda de interconexión. En ese entorno, &lt;code&gt;tensor&lt;/code&gt; o cargas con batch más alto tienen más posibilidades de acercarse o incluso superar el rendimiento de una sola tarjeta.&lt;/p&gt;
&lt;p&gt;Si tienes V100 PCIe, conviene ser mucho más conservador. V100 PCIe usa principalmente PCIe Gen3, y el interconnect bandwidth indicado es 32GB/s. No está en la misma categoría que NVLink, por eso dos tarjetas PCIe a menudo dan VRAM suficiente, pero no duplican la velocidad.&lt;/p&gt;
&lt;p&gt;Por eso, para decidir si 2x V100 16GB merece la pena, no basta con sumar VRAM y decir que son 32GB. También hay que comprobar si son tarjetas PCIe o SXM2/NVLink.&lt;/p&gt;
&lt;h2 id=&#34;cómo-elegir-de-forma-práctica&#34;&gt;Cómo elegir de forma práctica
&lt;/h2&gt;&lt;p&gt;Si el modelo cabe en una sola GPU de 32GB, prioriza una sola tarjeta. Su latencia, estabilidad y coste de ajuste suelen ser mejores.&lt;/p&gt;
&lt;p&gt;Si el modelo no cabe en una GPU de 16GB, pero sí en dos de 16GB, merece la pena usar dos tarjetas. En ese caso, el objetivo es mantener los pesos en GPU tanto como sea posible, no esperar una mejora lineal de rendimiento.&lt;/p&gt;
&lt;p&gt;Si tienes dos V100 PCIe, empieza con &lt;code&gt;--split-mode layer&lt;/code&gt; y busca ejecución estable con menos caída a CPU.&lt;/p&gt;
&lt;p&gt;Si tienes V100 SXM2/NVLink, vale más la pena probar modos relacionados con &lt;code&gt;tensor&lt;/code&gt;, especialmente en prefill, batch más grande o servicio concurrente.&lt;/p&gt;
&lt;h2 id=&#34;cuándo-comprar-2x16gb-y-cuándo-comprar-1x32gb&#34;&gt;Cuándo comprar 2x16GB y cuándo comprar 1x32GB
&lt;/h2&gt;&lt;p&gt;Si solo atiendes a un usuario y trabajas sobre todo con chat, completado de código, Continue Agent o preguntas con contexto largo, y el modelo objetivo cabe en 32GB, 1x32GB suele ser mejor. Evita la planificación entre GPU, ofrece latencia más estable y simplifica la depuración.&lt;/p&gt;
&lt;p&gt;Si ya tienes una tarjeta de 16GB y quieres una forma más barata de ejecutar modelos de 30B, 32B o cuantizaciones más grandes, 2x16GB tiene sentido. No necesariamente duplicará los token/s, pero puede mantener en GPU pesos que de otro modo tendrían que ir a CPU offload.&lt;/p&gt;
&lt;p&gt;Si vas a comprar desde cero, puedes priorizar así:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Un solo modelo, un solo usuario, latencia importante: preferir 1x32GB.&lt;/li&gt;
&lt;li&gt;El modelo no cabe en una sola tarjeta y el presupuesto es limitado: considerar 2x16GB.&lt;/li&gt;
&lt;li&gt;Hay una máquina con NVLink o SXM2: 2x16GB es mucho más interesante que dos tarjetas PCIe comunes.&lt;/li&gt;
&lt;li&gt;Quieres usar contextos más largos en el futuro: no mires solo el tamaño de los pesos; reserva VRAM para KV cache.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;consejos-prácticos-para-layer-split-y-tensor-split&#34;&gt;Consejos prácticos para layer split y tensor split
&lt;/h2&gt;&lt;p&gt;La regla práctica es: empieza con &lt;code&gt;layer&lt;/code&gt; y luego mide &lt;code&gt;tensor&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;&lt;code&gt;layer&lt;/code&gt; es un buen punto de partida. Divide el modelo por capas, tiene mejor compatibilidad y funciona mejor en sistemas PCIe de dos tarjetas. Su desventaja es que la generación puede comportarse como una tubería: en algunos momentos una tarjeta está ocupada mientras la otra espera.&lt;/p&gt;
&lt;p&gt;&lt;code&gt;tensor&lt;/code&gt; encaja mejor en máquinas con buena interconexión, como V100 SXM2/NVLink. Divide parte del cálculo de una misma capa entre varias GPU, así que tiene más paralelismo teórico, pero también sincroniza más a menudo entre tarjetas. En dos GPU PCIe, el coste de comunicación puede comerse la ganancia.&lt;/p&gt;
&lt;p&gt;Puedes empezar con estas pruebas:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;llama-bench -m model.gguf -ngl &lt;span class=&#34;m&#34;&gt;99&lt;/span&gt; --split-mode layer --tensor-split 1,1
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;llama-bench -m model.gguf -ngl &lt;span class=&#34;m&#34;&gt;99&lt;/span&gt; --split-mode tensor --tensor-split 1,1
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;llama-bench -m model.gguf -ngl &lt;span class=&#34;m&#34;&gt;99&lt;/span&gt; --split-mode layer --tensor-split 1,0
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;El tercer comando no es para uso permanente. Sirve como referencia de una sola tarjeta, para saber si dos GPU realmente son más rápidas o solo están repartiendo la presión de VRAM.&lt;/p&gt;
&lt;h2 id=&#34;por-qué-prefill-y-decode-se-comportan-distinto&#34;&gt;Por qué prefill y decode se comportan distinto
&lt;/h2&gt;&lt;p&gt;El rendimiento de un LLM local suele dividirse en dos fases:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;prefill&lt;/code&gt;: procesa el prompt de entrada. Una métrica típica es el throughput de prompt processing, como &lt;code&gt;pp512&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;decode&lt;/code&gt;: genera la respuesta token por token. Una métrica típica es el throughput de token generation, como &lt;code&gt;tg128&lt;/code&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;code&gt;prefill&lt;/code&gt; se parece más a cálculo matricial con batch grande. Con batch más alto es más fácil mantener las GPU ocupadas y obtener beneficio del paralelismo multi-GPU. &lt;code&gt;decode&lt;/code&gt; genera un token tras otro. El batch es pequeño y la sincronización es frecuente, así que la comunicación entre tarjetas y la latencia de planificación se notan más.&lt;/p&gt;
&lt;p&gt;Por eso puedes ver que dos GPU mejoran &lt;code&gt;pp512&lt;/code&gt;, pero &lt;code&gt;tg128&lt;/code&gt; apenas mejora o incluso empeora. Para chat y agentes, la experiencia del usuario se parece más a &lt;code&gt;tg128&lt;/code&gt;. Para ingestión de documentos largos, prefill por lotes o servicio concurrente, &lt;code&gt;pp512&lt;/code&gt; también importa.&lt;/p&gt;
&lt;h2 id=&#34;puede-kv-cache-convertirse-en-el-segundo-cuello-de-botella-de-vram&#34;&gt;¿Puede KV cache convertirse en el segundo cuello de botella de VRAM?
&lt;/h2&gt;&lt;p&gt;Sí. Muchas personas solo calculan los pesos del modelo y olvidan la KV cache.&lt;/p&gt;
&lt;p&gt;Los pesos determinan si el modelo puede cargarse. La KV cache determina si puedes usar la longitud de contexto que quieres. Cuanto más largo sea el contexto, mayor la concurrencia y más grande el batch, más visible será el consumo de KV cache. Puede pasar que el modelo base quepa en 32GB, pero al abrir 32K o 64K de contexto vuelva a faltar VRAM.&lt;/p&gt;
&lt;p&gt;Como mínimo, deja margen de VRAM para:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;KV cache&lt;/li&gt;
&lt;li&gt;CUDA graph o sobrecarga del runtime del backend&lt;/li&gt;
&lt;li&gt;prompt batch y ubatch&lt;/li&gt;
&lt;li&gt;escritorio, driver y otros procesos&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Si usas 2x16GB, la VRAM no es un pool único de 32GB completamente equivalente. Algunos buffers, KV cache o tensores intermedios todavía pueden quedar limitados por la memoria restante en una sola tarjeta. Para probar contexto largo, usa directamente el &lt;code&gt;--ctx-size&lt;/code&gt; objetivo y la concurrencia objetivo, no solo compruebes si el modelo arranca.&lt;/p&gt;
&lt;h2 id=&#34;cómo-medir-tus-dos-tarjetas-con-llama-bench&#34;&gt;Cómo medir tus dos tarjetas con llama-bench
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;llama-bench&lt;/code&gt; es mejor que chatear directamente para comparar hardware, porque separa prompt processing y token generation en métricas comparables. El ejemplo básico del README oficial es:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;llama-bench -m model.gguf
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Para dos V100, al menos mide estos grupos:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;8
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# Single-card baseline&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;CUDA_VISIBLE_DEVICES&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;m&#34;&gt;0&lt;/span&gt; llama-bench -m model.gguf -ngl &lt;span class=&#34;m&#34;&gt;99&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# Dual-card layer split&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;CUDA_VISIBLE_DEVICES&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;0,1 llama-bench -m model.gguf -ngl &lt;span class=&#34;m&#34;&gt;99&lt;/span&gt; --split-mode layer --tensor-split 1,1
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# Dual-card tensor split&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;CUDA_VISIBLE_DEVICES&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;0,1 llama-bench -m model.gguf -ngl &lt;span class=&#34;m&#34;&gt;99&lt;/span&gt; --split-mode tensor --tensor-split 1,1
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Fíjate sobre todo en dos columnas:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;pp512&lt;/code&gt;: prompt processing, más relevante para entradas largas y prefill por lotes.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;tg128&lt;/code&gt;: token generation, más relevante para chat de un solo usuario y respuesta de agentes.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Mantén fijos el modelo, la cuantización, el contexto, batch, versión del driver y versión de llama.cpp. Ejecuta cada grupo varias veces y compara medianas, no un único resultado. Por último, prueba también tu flujo real, como Continue Agent, un OpenAI-compatible server o tus propias peticiones RAG, porque un benchmark bonito no siempre significa una mejor experiencia interactiva.&lt;/p&gt;
&lt;h2 id=&#34;conclusión-en-una-frase&#34;&gt;Conclusión en una frase
&lt;/h2&gt;&lt;p&gt;La ventaja principal de 2x V100 16GB es la capacidad de VRAM, no una velocidad de generación garantizada. Si el modelo cabe en una sola tarjeta, una GPU de 32GB suele ser más rápida y estable. Si el modelo no cabe en una sola 16GB, dos tarjetas de 16GB valen mucho porque evitan gran parte del CPU offload. Que sean más rápidas o no depende del split mode, batch, tamaño del modelo y de si las dos V100 están conectadas por PCIe o NVLink.&lt;/p&gt;
&lt;p&gt;Referencias:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/ggml-org/llama.cpp/blob/master/tools/server/README.md&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;llama.cpp server README&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://www.mintlify.com/ggml-org/llama.cpp/concepts/backends&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;llama.cpp Compute Backends&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://www.nvidia.com/en-gb/data-center/tesla-v100/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;NVIDIA Tesla V100&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://images.nvidia.com/content/technologies/volta/pdf/tesla-volta-v100-datasheet.pdf&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;NVIDIA V100 Datasheet&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</description>
        </item>
        <item>
        <title>Modelos LLM locales recomendados para una GPU RTX 3060</title>
        <link>https://knightli.com/es/2026/05/08/rtx-3060-local-llm-models/</link>
        <pubDate>Fri, 08 May 2026 09:25:24 +0800</pubDate>
        
        <guid>https://knightli.com/es/2026/05/08/rtx-3060-local-llm-models/</guid>
        <description>&lt;p&gt;La versión más común de la RTX 3060 tiene 12GB de VRAM. No es una GPU de IA de gama alta, pero funciona muy bien para LLM locales, especialmente modelos de 7B, 8B, 9B y 12B.&lt;/p&gt;
&lt;p&gt;Si solo quieres una regla rápida:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;En una RTX 3060 12GB, prioriza modelos de alrededor de 8B en cuantización Q4_K_M o Q5_K_M. Elige Q4 para más estabilidad y prueba Q5 si quieres mejor calidad.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;No empieces persiguiendo modelos de 32B o 70B. Aunque puedan ejecutarse con cuantización muy baja y CPU offload, la velocidad y la experiencia normalmente no son adecuadas para uso diario.&lt;/p&gt;
&lt;h2 id=&#34;primero-mira-el-límite-de-vram&#34;&gt;Primero mira el límite de VRAM
&lt;/h2&gt;&lt;p&gt;Al ejecutar LLM locales en una RTX 3060 12GB, el límite real es la VRAM.&lt;/p&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;Tamaño del modelo&lt;/th&gt;
          &lt;th&gt;Cuantización recomendada&lt;/th&gt;
          &lt;th&gt;Experiencia en RTX 3060 12GB&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;3B / 4B&lt;/td&gt;
          &lt;td&gt;Q4, Q5, Q8&lt;/td&gt;
          &lt;td&gt;Muy fácil, rápido&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;7B / 8B / 9B&lt;/td&gt;
          &lt;td&gt;Q4_K_M, Q5_K_M&lt;/td&gt;
          &lt;td&gt;Lo más recomendado; buen equilibrio&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;12B / 14B&lt;/td&gt;
          &lt;td&gt;Q4_K_M&lt;/td&gt;
          &lt;td&gt;Se puede probar, cuidado con contexto grande&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;30B+&lt;/td&gt;
          &lt;td&gt;Q2 / Q3 o offload parcial&lt;/td&gt;
          &lt;td&gt;Se puede experimentar, no diario&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;70B+&lt;/td&gt;
          &lt;td&gt;Cuantización extrema o mucha CPU/RAM&lt;/td&gt;
          &lt;td&gt;Más bien experimental&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;Un LLM local no solo consume VRAM por el archivo del modelo. También consumen contexto, KV cache, batch size, framework de inferencia y drivers.&lt;/p&gt;
&lt;p&gt;Por eso 12GB de VRAM no significa cargar sin más un archivo de modelo de 12GB. Es mejor dejar margen para el sistema y el contexto.&lt;/p&gt;
&lt;h2 id=&#34;recomendación-1-qwen3-8b&#34;&gt;Recomendación 1: Qwen3 8B
&lt;/h2&gt;&lt;p&gt;Si usas principalmente chino, &lt;code&gt;Qwen3 8B&lt;/code&gt; es uno de los primeros modelos que vale la pena probar en una RTX 3060.&lt;/p&gt;
&lt;p&gt;Sirve para:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Preguntas y respuestas en chino.&lt;/li&gt;
&lt;li&gt;Resumen y reescritura.&lt;/li&gt;
&lt;li&gt;Asistente diario de conocimiento.&lt;/li&gt;
&lt;li&gt;Explicación simple de código.&lt;/li&gt;
&lt;li&gt;RAG local.&lt;/li&gt;
&lt;li&gt;Flujos Agent ligeros.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Elección recomendada:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Qwen3 8B GGUF
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Q4_K_M: primera opción
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Q5_K_M: mejor calidad, más presión de VRAM
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;La familia Qwen suele funcionar bien con chino. Para escritura diaria, organización de información y comprensión de instrucciones en chino, Qwen3 8B es un buen punto de partida.&lt;/p&gt;
&lt;h2 id=&#34;recomendación-2-llama-31-8b-instruct&#34;&gt;Recomendación 2: Llama 3.1 8B Instruct
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;Llama 3.1 8B Instruct&lt;/code&gt; es un modelo general estable, con buena capacidad en inglés y ecosistema maduro.&lt;/p&gt;
&lt;p&gt;Sirve para:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Preguntas en inglés.&lt;/li&gt;
&lt;li&gt;Ayuda ligera con código.&lt;/li&gt;
&lt;li&gt;Chat general.&lt;/li&gt;
&lt;li&gt;Resumen de documentos.&lt;/li&gt;
&lt;li&gt;Pruebas de prompts.&lt;/li&gt;
&lt;li&gt;Comparar herramientas de inferencia.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Elección recomendada:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Llama 3.1 8B Instruct GGUF
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Q4_K_M: mejor velocidad y estabilidad de VRAM
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Q5_K_M: mejor calidad de respuesta
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Si procesas sobre todo material en inglés, o quieres un modelo con muchos tutoriales y buena compatibilidad, Llama 3.1 8B sigue siendo una buena base.&lt;/p&gt;
&lt;h2 id=&#34;recomendación-3-gemma-3-12b&#34;&gt;Recomendación 3: Gemma 3 12B
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;Gemma 3 12B&lt;/code&gt; está más cerca del límite práctico de una RTX 3060 12GB.&lt;/p&gt;
&lt;p&gt;Consume más VRAM que los modelos 8B, pero con cuantización Q4 todavía puede funcionar en una tarjeta de 12GB. Es una opción para quien quiera probar un modelo algo mayor en una sola GPU.&lt;/p&gt;
&lt;p&gt;Sirve para:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Preguntas generales de mayor calidad.&lt;/li&gt;
&lt;li&gt;Procesamiento de contenido en inglés.&lt;/li&gt;
&lt;li&gt;Resúmenes y análisis algo más complejos.&lt;/li&gt;
&lt;li&gt;Probar una mejora sobre modelos 8B.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Elección recomendada:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Gemma 3 12B GGUF
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Q4_K_M u oficial QAT Q4
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;No abras demasiado el contexto
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Si falta VRAM, reduce primero la longitud de contexto o vuelve a un modelo 8B. Para una 3060, 12B es &amp;ldquo;probable&amp;rdquo;, no una recomendación automática.&lt;/p&gt;
&lt;h2 id=&#34;recomendación-4-deepseek-r1-distill-qwen-8b&#34;&gt;Recomendación 4: DeepSeek R1 Distill Qwen 8B
&lt;/h2&gt;&lt;p&gt;Si quieres probar modelos locales con estilo de razonamiento, puedes usar modelos como &lt;code&gt;DeepSeek R1 Distill Qwen 8B&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;Sirve para:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Problemas simples de razonamiento.&lt;/li&gt;
&lt;li&gt;Análisis por pasos.&lt;/li&gt;
&lt;li&gt;Aprender el estilo de salida de modelos de razonamiento.&lt;/li&gt;
&lt;li&gt;Experimentos locales de bajo costo.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Elección recomendada:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;DeepSeek R1 Distill Qwen 8B GGUF
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Q4_K_M
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Estos modelos a veces generan procesos de razonamiento más largos, así que la velocidad y el uso de contexto pueden sentirse más pesados que en modelos instruct normales. Para chat diario no siempre son más cómodos que Qwen3 8B, pero sirven bien para experimentar.&lt;/p&gt;
&lt;h2 id=&#34;recomendación-5-phi--minicpm--modelos-pequeños&#34;&gt;Recomendación 5: Phi / MiniCPM / modelos pequeños
&lt;/h2&gt;&lt;p&gt;Si tu 3060 es de 8GB, o tu RAM también es limitada, considera primero modelos de 3B o 4B.&lt;/p&gt;
&lt;p&gt;Sirven para:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Preguntas rápidas.&lt;/li&gt;
&lt;li&gt;Resúmenes simples.&lt;/li&gt;
&lt;li&gt;Integración en pequeñas herramientas locales.&lt;/li&gt;
&lt;li&gt;Chat de baja latencia.&lt;/li&gt;
&lt;li&gt;Pruebas en equipos antiguos.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;No siempre igualan la calidad de 8B o 12B, pero son ligeros, rápidos y fáciles de desplegar.&lt;/p&gt;
&lt;h2 id=&#34;cómo-elegir-cuantización&#34;&gt;Cómo elegir cuantización
&lt;/h2&gt;&lt;p&gt;El formato local común es &lt;code&gt;GGUF&lt;/code&gt;, con cuantizaciones como Q4, Q5, Q6 y Q8.&lt;/p&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;Cuantización&lt;/th&gt;
          &lt;th&gt;Características&lt;/th&gt;
          &lt;th&gt;Mejor para&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;Q4_K_M&lt;/td&gt;
          &lt;td&gt;Pequeña, rápida, calidad suficiente&lt;/td&gt;
          &lt;td&gt;Primera opción en 3060&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Q5_K_M&lt;/td&gt;
          &lt;td&gt;Mejor calidad, más consumo&lt;/td&gt;
          &lt;td&gt;Probar con modelos 8B&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Q6 / Q8&lt;/td&gt;
          &lt;td&gt;Más cerca de calidad original, más grande&lt;/td&gt;
          &lt;td&gt;Modelos pequeños o más VRAM&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Q2 / Q3&lt;/td&gt;
          &lt;td&gt;Ahorra VRAM, baja calidad notable&lt;/td&gt;
          &lt;td&gt;Experimentar con modelos grandes&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;Para RTX 3060 12GB, lo más práctico es:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Modelos 8B: Q4_K_M o Q5_K_M
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Modelos 12B: primero Q4_K_M
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Modelos mayores: no recomendados como uso diario
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h2 id=&#34;qué-herramienta-usar&#34;&gt;Qué herramienta usar
&lt;/h2&gt;&lt;p&gt;Los principiantes pueden empezar con &lt;code&gt;Ollama&lt;/code&gt;, porque instalar y ejecutar modelos es sencillo.&lt;/p&gt;
&lt;p&gt;Comandos comunes:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;ollama run qwen3:8b
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;ollama run llama3.1:8b
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Si quieres controlar mejor archivos GGUF, GPU layers y longitud de contexto, usa &lt;code&gt;llama.cpp&lt;/code&gt; o herramientas gráficas basadas en llama.cpp.&lt;/p&gt;
&lt;p&gt;Opciones comunes:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;Ollama&lt;/code&gt;: lo más simple, ideal para empezar.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;LM Studio&lt;/code&gt;: interfaz gráfica amigable, útil para descargar y cambiar modelos.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;llama.cpp&lt;/code&gt;: control más fino, bueno para ajustar rendimiento.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;text-generation-webui&lt;/code&gt;: muchas funciones, útil para probar backends.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Para chat local y preguntas simples, Ollama o LM Studio bastan.&lt;/p&gt;
&lt;h2 id=&#34;no-abras-demasiado-el-contexto&#34;&gt;No abras demasiado el contexto
&lt;/h2&gt;&lt;p&gt;Muchos modelos anuncian soporte de contexto largo, pero en una RTX 3060 no conviene usar siempre el máximo.&lt;/p&gt;
&lt;p&gt;Cuanto más largo el contexto, más KV cache se usa y mayor presión de VRAM. Incluso si el modelo carga, un contexto largo puede reducir la velocidad.&lt;/p&gt;
&lt;p&gt;Sugerencia:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Chat normal: 4K a 8K
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Resumen de documentos: 8K a 16K
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;RAG de documentos largos: divide primero; no pegues todo de una vez
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;La 3060 funciona mejor con &amp;ldquo;contexto medio + buen modelo + buena recuperación&amp;rdquo; que intentando meter cientos de miles de tokens.&lt;/p&gt;
&lt;h2 id=&#34;elegir-según-uso&#34;&gt;Elegir según uso
&lt;/h2&gt;&lt;p&gt;Si escribes principalmente en chino:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Primero: Qwen3 8B Q4_K_M
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Alternativa: DeepSeek R1 Distill Qwen 8B
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Si escribes principalmente en inglés:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Primero: Llama 3.1 8B Instruct Q4_K_M
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Alternativa: Gemma 3 12B Q4_K_M
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Si quieres velocidad:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Modelos 3B / 4B
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;8B Q4_K_M
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Contexto entre 4K y 8K
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Si quieres más calidad:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;8B Q5_K_M
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;12B Q4_K_M
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Acepta menor velocidad
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Si quieres ayuda con código:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Modelos de código 8B sirven para explicar y pequeños cambios
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Para ingeniería compleja, usa modelos cloud más fuertes
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Los modelos locales en 3060 son útiles para explicar código, completar funciones, generar scripts pequeños y ayudar sin conexión. Para grandes refactors, bugs complejos y tareas Agent entre archivos, no esperes rendimiento al nivel de Claude Sonnet o GPT-5.&lt;/p&gt;
&lt;h2 id=&#34;expectativas-razonables&#34;&gt;Expectativas razonables
&lt;/h2&gt;&lt;p&gt;La RTX 3060 12GB puede convertir los LLM locales de &amp;ldquo;juguete&amp;rdquo; en herramienta diaria, pero no replica modelos cloud de primera línea en casa.&lt;/p&gt;
&lt;p&gt;Ventajas:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Bajo costo.&lt;/li&gt;
&lt;li&gt;Más VRAM que tarjetas de 8GB.&lt;/li&gt;
&lt;li&gt;Buena experiencia con modelos 8B.&lt;/li&gt;
&lt;li&gt;Uso offline.&lt;/li&gt;
&lt;li&gt;Procesamiento local de datos sensibles.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Límites:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Modelos grandes no van fluidos.&lt;/li&gt;
&lt;li&gt;Contexto largo consume VRAM.&lt;/li&gt;
&lt;li&gt;Menor velocidad que tarjetas de gama alta.&lt;/li&gt;
&lt;li&gt;Modelos locales pequeños tienen razonamiento complejo limitado.&lt;/li&gt;
&lt;li&gt;Multimodalidad y flujos Agent consumen más recursos.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;La ruta estable es: usar 8B como asistente local diario, probar 12B para mejor calidad y dejar tareas complejas a modelos cloud.&lt;/p&gt;
&lt;h2 id=&#34;resumen&#34;&gt;Resumen
&lt;/h2&gt;&lt;p&gt;Modelos locales recomendados para RTX 3060 12GB:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Chino general: &lt;code&gt;Qwen3 8B Q4_K_M&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Inglés general: &lt;code&gt;Llama 3.1 8B Instruct Q4_K_M&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Prueba de más calidad: &lt;code&gt;Gemma 3 12B Q4_K_M&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Experimento de razonamiento: &lt;code&gt;DeepSeek R1 Distill Qwen 8B Q4_K_M&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Experiencia rápida con poca VRAM: modelos pequeños 3B / 4B&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Elige primero &lt;code&gt;Q4_K_M&lt;/code&gt;; en modelos 8B puedes probar &lt;code&gt;Q5_K_M&lt;/code&gt;. Empieza con Ollama o LM Studio.&lt;/p&gt;
&lt;p&gt;No trates la 3060 como un servidor de grandes modelos. Úsala como asistente local de conocimiento, procesador privado de documentos, ayuda ligera de código y tarjeta de experimentación, y encajará mejor con sus capacidades reales.&lt;/p&gt;
&lt;h2 id=&#34;referencias&#34;&gt;Referencias
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;Qwen3 8B GGUF: &lt;a class=&#34;link&#34; href=&#34;https://huggingface.co/Qwen/Qwen3-8B-GGUF&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://huggingface.co/Qwen/Qwen3-8B-GGUF&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Llama 3.1 8B GGUF: &lt;a class=&#34;link&#34; href=&#34;https://huggingface.co/macandchiz/Llama-3.1-8B-Instruct-GGUF&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://huggingface.co/macandchiz/Llama-3.1-8B-Instruct-GGUF&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Gemma 3 12B GGUF: &lt;a class=&#34;link&#34; href=&#34;https://huggingface.co/unsloth/gemma-3-12b-it-GGUF&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://huggingface.co/unsloth/gemma-3-12b-it-GGUF&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;llama.cpp: &lt;a class=&#34;link&#34; href=&#34;https://github.com/ggml-org/llama.cpp&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://github.com/ggml-org/llama.cpp&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Ollama: &lt;a class=&#34;link&#34; href=&#34;https://ollama.com&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://ollama.com&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</description>
        </item>
        <item>
        <title>Hermes &#43; Qwen3.6: una solucion barata para desplegar un Agent local</title>
        <link>https://knightli.com/es/2026/05/04/hermes-qwen36-local-agent/</link>
        <pubDate>Mon, 04 May 2026 06:40:30 +0800</pubDate>
        
        <guid>https://knightli.com/es/2026/05/04/hermes-qwen36-local-agent/</guid>
        <description>&lt;p&gt;La idea es ejecutar el modelo Qwen3.6 GGUF con &lt;code&gt;llama.cpp&lt;/code&gt; dentro de WSL2 y conectar Hermes Agent a una API local compatible con OpenAI. Asi puedes tener un asistente de IA local siempre disponible en tu propio ordenador, sin depender de cuotas de tokens de servicios online.&lt;/p&gt;
&lt;p&gt;Esta solucion encaja con usuarios que quieren probar un AI Agent local y, al mismo tiempo, conservar privacidad de datos y control a largo plazo. Puede servir para preguntas diarias, escritura, ayuda con codigo, organizacion de informacion y automatizacion simple. Hay que tener en cuenta que cuanto mayor sea el modelo, mas VRAM necesitara; el ejemplo original usa Qwen3.6-27B y va mas estable con 24GB de VRAM. Si tienes menos VRAM, conviene elegir un modelo mas pequeno o una cuantizacion mas baja.&lt;/p&gt;
&lt;h2 id=&#34;estructura-de-la-solucion&#34;&gt;Estructura de la solucion
&lt;/h2&gt;&lt;p&gt;La cadena completa es sencilla:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Instalar WSL2 y Ubuntu 24.04 en Windows.&lt;/li&gt;
&lt;li&gt;Instalar CUDA Toolkit y compilar &lt;code&gt;llama.cpp&lt;/code&gt; dentro de WSL2.&lt;/li&gt;
&lt;li&gt;Descargar el modelo Qwen3.6 GGUF.&lt;/li&gt;
&lt;li&gt;Iniciar el servicio local con &lt;code&gt;llama-server&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Instalar Hermes Agent y configurarlo hacia &lt;code&gt;http://localhost:8080/v1&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Opcional: escribir un script de inicio para arrancar el servicio del modelo al abrir WSL2.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Hermes aporta la capacidad de Agent, y Qwen3.6 aporta el LLM local. Combinados, convierten el ordenador en un asistente de IA local y privado.&lt;/p&gt;
&lt;h2 id=&#34;instalar-wsl2-y-ubuntu&#34;&gt;Instalar WSL2 y Ubuntu
&lt;/h2&gt;&lt;p&gt;En una ventana de Windows PowerShell como administrador:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-powershell&#34; data-lang=&#34;powershell&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;wsl&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;-install&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;wsl&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;-set-default-version&lt;/span&gt; &lt;span class=&#34;mf&#34;&gt;2&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Despues de reiniciar, instala Ubuntu 24.04:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-powershell&#34; data-lang=&#34;powershell&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;wsl&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;-install&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;-d&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;Ubuntu&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;mf&#34;&gt;24.04&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Al terminar, Ubuntu pedira usuario y contrasena. Ya dentro de Ubuntu, comprueba primero si la GPU NVIDIA se reconoce correctamente en WSL2:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;nvidia-smi
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Si no se reconoce la GPU, normalmente hay que actualizar primero el driver NVIDIA en Windows. WSL2 hereda el driver de Windows, pero CUDA Toolkit debe instalarse por separado dentro de WSL2.&lt;/p&gt;
&lt;h2 id=&#34;instalar-python-y-herramientas-basicas&#34;&gt;Instalar Python y herramientas basicas
&lt;/h2&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;sudo apt update &lt;span class=&#34;o&#34;&gt;&amp;amp;&amp;amp;&lt;/span&gt; sudo apt install -y python3-pip python3-venv
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Tambien hacen falta herramientas de compilacion, Git y CMake:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;sudo apt install -y cmake build-essential git
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h2 id=&#34;compilar-llamacpp&#34;&gt;Compilar llama.cpp
&lt;/h2&gt;&lt;p&gt;Clona primero el codigo:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;git clone https://github.com/ggerganov/llama.cpp
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;cd&lt;/span&gt; llama.cpp
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Si WSL2 ya tiene un entorno CUDA utilizable, compila directamente:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;cmake -B build -DGGML_CUDA&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;ON -DCMAKE_CUDA_ARCHITECTURES&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;m&#34;&gt;89&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;cmake --build build -j&lt;span class=&#34;k&#34;&gt;$(&lt;/span&gt;nproc&lt;span class=&#34;k&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;&lt;code&gt;CMAKE_CUDA_ARCHITECTURES=89&lt;/code&gt; es adecuado para GPU Ada, por ejemplo la serie RTX 40. En otras tarjetas debes ajustarlo segun la arquitectura real.&lt;/p&gt;
&lt;p&gt;Si al compilar aparece que falta CUDA Toolkit, instalalo primero dentro de WSL2:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;wget https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2404/x86_64/cuda-keyring_1.1-1_all.deb
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;sudo dpkg -i cuda-keyring_1.1-1_all.deb
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;sudo apt update
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;sudo apt install -y cuda-toolkit-12-8
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Despues configura variables de entorno:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;export&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;PATH&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;/usr/local/cuda-12.8/bin:&lt;span class=&#34;nv&#34;&gt;$PATH&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;export&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;LD_LIBRARY_PATH&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;/usr/local/cuda-12.8/lib64:&lt;span class=&#34;nv&#34;&gt;$LD_LIBRARY_PATH&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;echo&lt;/span&gt; &lt;span class=&#34;s1&#34;&gt;&amp;#39;export PATH=/usr/local/cuda-12.8/bin:$PATH&amp;#39;&lt;/span&gt; &amp;gt;&amp;gt; ~/.bashrc
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;echo&lt;/span&gt; &lt;span class=&#34;s1&#34;&gt;&amp;#39;export LD_LIBRARY_PATH=/usr/local/cuda-12.8/lib64:$LD_LIBRARY_PATH&amp;#39;&lt;/span&gt; &amp;gt;&amp;gt; ~/.bashrc
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Y compila de nuevo:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;cd&lt;/span&gt; ~/llama.cpp
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;rm -rf build
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;cmake -B build -DGGML_CUDA&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;ON -DCMAKE_CUDA_ARCHITECTURES&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;m&#34;&gt;89&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;cmake --build build -j&lt;span class=&#34;k&#34;&gt;$(&lt;/span&gt;nproc&lt;span class=&#34;k&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h2 id=&#34;descargar-el-modelo-qwen36-gguf&#34;&gt;Descargar el modelo Qwen3.6 GGUF
&lt;/h2&gt;&lt;p&gt;El ejemplo original usa &lt;code&gt;Qwen3.6-27B-UD-Q4_K_XL.gguf&lt;/code&gt; de &lt;code&gt;unsloth/Qwen3.6-27B-GGUF&lt;/code&gt;:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;hf download unsloth/Qwen3.6-27B-GGUF &lt;span class=&#34;se&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Qwen3.6-27B-UD-Q4_K_XL.gguf &lt;span class=&#34;se&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;--local-dir ~/models/
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;El archivo ronda los 17GB. Si Hugging Face descarga lento, puedes cambiar a espejos como ModelScope. Si no tienes suficiente VRAM, no fuerces 27B; usa un modelo mas pequeno o una cuantizacion mas baja.&lt;/p&gt;
&lt;h2 id=&#34;iniciar-el-servicio-local-del-modelo&#34;&gt;Iniciar el servicio local del modelo
&lt;/h2&gt;&lt;p&gt;Arranca &lt;code&gt;llama-server&lt;/code&gt; segun el nombre real de tu archivo de modelo:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt; 1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 8
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 9
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;10
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;~/llama.cpp/build/bin/llama-server &lt;span class=&#34;se&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;--model ~/models/Qwen3.6-27B-UD-Q4_K_XL.gguf &lt;span class=&#34;se&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;--n-gpu-layers &lt;span class=&#34;m&#34;&gt;99&lt;/span&gt; &lt;span class=&#34;se&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;--ctx-size &lt;span class=&#34;m&#34;&gt;32768&lt;/span&gt; &lt;span class=&#34;se&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;--flash-attn on &lt;span class=&#34;se&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;--temp 1.0 &lt;span class=&#34;se&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;--top-p 0.95 &lt;span class=&#34;se&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;--top-k &lt;span class=&#34;m&#34;&gt;20&lt;/span&gt; &lt;span class=&#34;se&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;--presence-penalty 1.5 &lt;span class=&#34;se&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;--port &lt;span class=&#34;m&#34;&gt;8080&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Tras iniciar correctamente, abre en el navegador de Windows:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;http://localhost:8080
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Para que Hermes Agent u otros clientes compatibles con OpenAI lo llamen, la direccion de API suele ser:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;http://localhost:8080/v1
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h2 id=&#34;elegir-thinking-mode&#34;&gt;Elegir Thinking mode
&lt;/h2&gt;&lt;p&gt;Qwen3.6 puede activar Thinking mode por defecto. Es util para razonamiento complejo, problemas de codigo complicados y analisis de varios pasos, pero sera mas lento.&lt;/p&gt;
&lt;p&gt;Si quieres desactivarlo, detén el servicio y agrega &lt;code&gt;--chat-template-kwargs&lt;/code&gt;:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt; 1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 8
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 9
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;10
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;11
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;~/llama.cpp/build/bin/llama-server &lt;span class=&#34;se&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;--model ~/models/Qwen3.6-27B-UD-Q4_K_XL.gguf &lt;span class=&#34;se&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;--n-gpu-layers &lt;span class=&#34;m&#34;&gt;99&lt;/span&gt; &lt;span class=&#34;se&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;--ctx-size &lt;span class=&#34;m&#34;&gt;32768&lt;/span&gt; &lt;span class=&#34;se&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;--flash-attn on &lt;span class=&#34;se&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;--temp 1.0 &lt;span class=&#34;se&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;--top-p 0.95 &lt;span class=&#34;se&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;--top-k &lt;span class=&#34;m&#34;&gt;20&lt;/span&gt; &lt;span class=&#34;se&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;--presence-penalty 1.5 &lt;span class=&#34;se&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;--chat-template-kwargs &lt;span class=&#34;s1&#34;&gt;&amp;#39;{&amp;#34;enable_thinking&amp;#34;:false}&amp;#39;&lt;/span&gt; &lt;span class=&#34;se&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;--port &lt;span class=&#34;m&#34;&gt;8080&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Sin Thinking, las preguntas simples, escritura, autocompletado de codigo y explicacion de codigo iran mas rapido; para algoritmos complejos, Debug dificil y analisis de arquitectura, sigue siendo recomendable activarlo.&lt;/p&gt;
&lt;h2 id=&#34;instalar-hermes-agent&#34;&gt;Instalar Hermes Agent
&lt;/h2&gt;&lt;p&gt;Mantén &lt;code&gt;llama-server&lt;/code&gt; en ejecucion y abre otra terminal WSL2 para instalar Hermes Agent:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;curl -fsSL https://raw.githubusercontent.com/NousResearch/hermes-agent/main/scripts/install.sh &lt;span class=&#34;p&#34;&gt;|&lt;/span&gt; bash
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;El script instala dependencias como Python, Node.js, ripgrep y ffmpeg. Al configurar el endpoint del modelo, elige endpoint personalizado:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;URL: http://localhost:8080/v1
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;API Key: 12345678
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Model: autodetect
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Para el &lt;code&gt;llama-server&lt;/code&gt; local, la API Key puede ser cualquier valor de relleno. Tras configurarlo, puedes conectar Telegram, WeChat, QQ, Discord y otros canales para que Hermes Agent use el modelo local y ejecute tareas.&lt;/p&gt;
&lt;h2 id=&#34;arrancar-automaticamente-el-servicio-del-modelo&#34;&gt;Arrancar automaticamente el servicio del modelo
&lt;/h2&gt;&lt;p&gt;Puedes escribir un script para iniciar el servicio al abrir la terminal WSL2.&lt;/p&gt;
&lt;p&gt;Crea el script:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt; 1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 8
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 9
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;10
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;11
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;12
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;13
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;14
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;15
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;16
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;17
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;18
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;19
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;cat &amp;gt; ~/start-llm.sh &lt;span class=&#34;s&#34;&gt;&amp;lt;&amp;lt; &amp;#39;EOF&amp;#39;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s&#34;&gt;#!/bin/bash
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s&#34;&gt;echo &amp;#34;Starting Qwen3.6-27B llama-server...&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s&#34;&gt;~/llama.cpp/build/bin/llama-server \
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s&#34;&gt;--model ~/models/Qwen3.6-27B-UD-Q4_K_XL.gguf \
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s&#34;&gt;--n-gpu-layers 99 \
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s&#34;&gt;--ctx-size 65536 \
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s&#34;&gt;--flash-attn on \
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s&#34;&gt;--temp 1.0 \
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s&#34;&gt;--top-p 0.95 \
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s&#34;&gt;--top-k 20 \
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s&#34;&gt;--presence-penalty 1.5 \
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s&#34;&gt;--port 8080 \
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s&#34;&gt;--host 0.0.0.0 &amp;amp;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s&#34;&gt;echo &amp;#34;llama-server started, PID: $!&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s&#34;&gt;echo &amp;#34;API: http://localhost:8080/v1&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s&#34;&gt;echo &amp;#34;Chat UI: http://localhost:8080&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s&#34;&gt;EOF&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;chmod +x ~/start-llm.sh
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Escribe en &lt;code&gt;.bashrc&lt;/code&gt;:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;echo&lt;/span&gt; &lt;span class=&#34;s1&#34;&gt;&amp;#39;# Auto-start llama-server&amp;#39;&lt;/span&gt; &amp;gt;&amp;gt; ~/.bashrc
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;echo&lt;/span&gt; &lt;span class=&#34;s1&#34;&gt;&amp;#39;if ! pgrep -f &amp;#34;llama-server&amp;#34; &amp;gt; /dev/null 2&amp;gt;&amp;amp;1; then&amp;#39;&lt;/span&gt; &amp;gt;&amp;gt; ~/.bashrc
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;echo&lt;/span&gt; &lt;span class=&#34;s1&#34;&gt;&amp;#39;    ~/start-llm.sh&amp;#39;&lt;/span&gt; &amp;gt;&amp;gt; ~/.bashrc
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;echo&lt;/span&gt; &lt;span class=&#34;s1&#34;&gt;&amp;#39;fi&amp;#39;&lt;/span&gt; &amp;gt;&amp;gt; ~/.bashrc
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Asi, cada vez que abras WSL2, si &lt;code&gt;llama-server&lt;/code&gt; no esta en ejecucion se iniciara automaticamente; si ya esta corriendo, se omitira para evitar duplicados.&lt;/p&gt;
&lt;h2 id=&#34;notas&#34;&gt;Notas
&lt;/h2&gt;&lt;ol&gt;
&lt;li&gt;El modelo 27B exige bastante VRAM; 24GB va mas estable. Con menos VRAM, usa un modelo mas pequeno.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;--ctx-size 65536&lt;/code&gt; aumenta mucho la presion de VRAM y RAM. Si no es estable, baja primero a &lt;code&gt;32768&lt;/code&gt; o menos.&lt;/li&gt;
&lt;li&gt;CUDA Toolkit dentro de WSL2 y el driver de Windows deben estar correctos; si falta uno, la compilacion o ejecucion CUDA puede fallar.&lt;/li&gt;
&lt;li&gt;Cuando Hermes Agent se conecta al servicio local, en esencia llama a una API compatible con OpenAI. Lo clave es que &lt;code&gt;http://localhost:8080/v1&lt;/code&gt; responda bien.&lt;/li&gt;
&lt;li&gt;Si quieres acceder desde el telefono u otros dispositivos, debes configurar firewall de Windows, direccion LAN y aislamiento de seguridad. No expongas el servicio local directamente a Internet.&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;enlaces-relacionados&#34;&gt;Enlaces relacionados
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;Original: &lt;a class=&#34;link&#34; href=&#34;https://www.freedidi.com/24036.html&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Hermes + Qwen3.6：本地最强 Agent 组合！零成本、无限 Token，太香了！&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;llama.cpp: &lt;a class=&#34;link&#34; href=&#34;https://github.com/ggerganov/llama.cpp&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;ggerganov/llama.cpp&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Hermes Agent: &lt;a class=&#34;link&#34; href=&#34;https://github.com/NousResearch/hermes-agent&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;NousResearch/hermes-agent&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Ejemplo Qwen3.6 GGUF: &lt;a class=&#34;link&#34; href=&#34;https://huggingface.co/unsloth/Qwen3.6-27B-GGUF&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;unsloth/Qwen3.6-27B-GGUF&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>
        <item>
        <title>Ranking de rendimiento GPU en llama.cpp: cómo leer los scoreboards CUDA, ROCm y Vulkan con pp512 / tg128 / FA</title>
        <link>https://knightli.com/es/2026/04/23/llama-cpp-gpu-benchmark-cuda-rocm-vulkan-scoreboard/</link>
        <pubDate>Thu, 23 Apr 2026 10:22:04 +0800</pubDate>
        
        <guid>https://knightli.com/es/2026/04/23/llama-cpp-gpu-benchmark-cuda-rocm-vulkan-scoreboard/</guid>
        <description>&lt;p&gt;Los scoreboards de &lt;code&gt;llama.cpp&lt;/code&gt; son muy útiles, pero también son fáciles de malinterpretar si solo miras una cifra. En esas tablas suelen aparecer &lt;code&gt;CUDA&lt;/code&gt;, &lt;code&gt;ROCm&lt;/code&gt;, &lt;code&gt;Vulkan&lt;/code&gt;, &lt;code&gt;Q4_0&lt;/code&gt;, &lt;code&gt;pp512&lt;/code&gt;, &lt;code&gt;tg128&lt;/code&gt;, &lt;code&gt;FA&lt;/code&gt; y &lt;code&gt;t/s&lt;/code&gt;, y cada uno describe una dimensión diferente del benchmark.&lt;/p&gt;
&lt;p&gt;Este artículo resume cómo leer esas tablas y qué conclusiones prácticas conviene sacar antes de comparar GPUs.&lt;/p&gt;
&lt;h2 id=&#34;entender-primero-las-métricas&#34;&gt;Entender primero las métricas
&lt;/h2&gt;&lt;h3 id=&#34;qué-es-q4_0&#34;&gt;Qué es Q4_0
&lt;/h3&gt;&lt;p&gt;&lt;code&gt;Q4_0&lt;/code&gt; es un formato de cuantización de 4 bits. No significa que el modelo sea más fuerte. Significa que el modelo es más pequeño, usa menos VRAM y cabe en más dispositivos.&lt;/p&gt;
&lt;p&gt;La mayoría de estos scoreboards estandarizan sobre &lt;code&gt;Llama 2 7B, Q4_0&lt;/code&gt; para que la comparación entre GPUs sea más sencilla.&lt;/p&gt;
&lt;h3 id=&#34;qué-es-pp512&#34;&gt;Qué es pp512
&lt;/h3&gt;&lt;p&gt;&lt;code&gt;pp512&lt;/code&gt; suele significar &lt;code&gt;prompt processing 512 tokens&lt;/code&gt;, es decir, el throughput al procesar 512 tokens de entrada.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;pp&lt;/code&gt; = prompt processing&lt;/li&gt;
&lt;li&gt;&lt;code&gt;512&lt;/code&gt; = la entrada tiene 512 tokens&lt;/li&gt;
&lt;li&gt;&lt;code&gt;t/s&lt;/code&gt; = tokens por segundo&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Esto se acerca más a la velocidad de ingestión del prompt, por eso suele ser mucho más alto que la velocidad de generación.&lt;/p&gt;
&lt;h3 id=&#34;qué-es-tg128&#34;&gt;Qué es tg128
&lt;/h3&gt;&lt;p&gt;&lt;code&gt;tg128&lt;/code&gt; suele significar &lt;code&gt;text generation 128 tokens&lt;/code&gt;, es decir, la velocidad al generar 128 tokens de forma continua.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;tg&lt;/code&gt; = text generation&lt;/li&gt;
&lt;li&gt;&lt;code&gt;128&lt;/code&gt; = generar 128 tokens seguidos&lt;/li&gt;
&lt;li&gt;&lt;code&gt;t/s&lt;/code&gt; = tokens por segundo&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Esta métrica suele estar más cerca de la velocidad que el usuario percibe en uso interactivo.&lt;/p&gt;
&lt;h3 id=&#34;qué-es-fa&#34;&gt;Qué es FA
&lt;/h3&gt;&lt;p&gt;&lt;code&gt;FA&lt;/code&gt; significa &lt;code&gt;Flash Attention&lt;/code&gt;.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;with FA&lt;/code&gt; significa que Flash Attention está activado&lt;/li&gt;
&lt;li&gt;&lt;code&gt;no FA&lt;/code&gt; significa que Flash Attention está desactivado&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;En muchas GPUs, FA mejora &lt;code&gt;pp512&lt;/code&gt; con más claridad que &lt;code&gt;tg128&lt;/code&gt;, pero la ganancia no es idéntica entre backends, drivers y arquitecturas GPU.&lt;/p&gt;
&lt;h3 id=&#34;cómo-leer-ts&#34;&gt;Cómo leer t/s
&lt;/h3&gt;&lt;p&gt;&lt;code&gt;t/s&lt;/code&gt; significa &lt;code&gt;tokens per second&lt;/code&gt;. La regla clave es comparar el mismo tipo de prueba con los mismos ajustes.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;No compares &lt;code&gt;pp512&lt;/code&gt; y &lt;code&gt;tg128&lt;/code&gt; como si fueran lo mismo.&lt;/li&gt;
&lt;li&gt;No mezcles resultados &lt;code&gt;no FA&lt;/code&gt; con &lt;code&gt;with FA&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;No asumas que CUDA, ROCm y Vulkan son directamente intercambiables.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;conclusiones-rápidas&#34;&gt;Conclusiones rápidas
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;CUDA sigue siendo la ruta más fuerte en conjunto para benchmarks GPU de &lt;code&gt;llama.cpp&lt;/code&gt;, especialmente en GPUs Nvidia de gama alta.&lt;/li&gt;
&lt;li&gt;ROCm ya ofrece resultados fuertes en GPUs AMD de gama alta y aceleradores Instinct.&lt;/li&gt;
&lt;li&gt;Vulkan tiene la cobertura de hardware más amplia, incluyendo Nvidia, AMD, Intel, GPUs antiguas y algunos setups Apple / Asahi.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;tg128&lt;/code&gt; se acerca más a la velocidad percibida en uso diario, mientras &lt;code&gt;pp512&lt;/code&gt; es mejor para juzgar throughput de prompt.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;cómo-usar-las-tablas&#34;&gt;Cómo usar las tablas
&lt;/h2&gt;&lt;h3 id=&#34;1-decide-si-te-importa-más-tg128-o-pp512&#34;&gt;1. Decide si te importa más tg128 o pp512
&lt;/h3&gt;&lt;p&gt;Para chat y uso interactivo, &lt;code&gt;tg128&lt;/code&gt; suele importar más. Para prompts largos, batch processing o workloads de ingestión, &lt;code&gt;pp512&lt;/code&gt; pesa más.&lt;/p&gt;
&lt;h3 id=&#34;2-compara-el-backend-que-realmente-usas&#34;&gt;2. Compara el backend que realmente usas
&lt;/h3&gt;&lt;p&gt;Usuarios Nvidia deberían priorizar CUDA. Usuarios AMD deberían comparar primero ROCm y Vulkan. Si necesitas compatibilidad amplia o hardware mixto, presta atención a Vulkan.&lt;/p&gt;
&lt;h3 id=&#34;3-mira-fa-al-final&#34;&gt;3. Mira FA al final
&lt;/h3&gt;&lt;p&gt;En muchas GPUs, activar FA mejora más &lt;code&gt;pp512&lt;/code&gt; que &lt;code&gt;tg128&lt;/code&gt;, así que una sola cifra destacada puede ser engañosa.&lt;/p&gt;
&lt;h3 id=&#34;4-no-compares-generaciones-solo-por-memoria&#34;&gt;4. No compares generaciones solo por memoria
&lt;/h3&gt;&lt;p&gt;Una GPU con más VRAM no siempre gana en &lt;code&gt;tg128&lt;/code&gt;. La generación token a token puede depender mucho de ancho de banda, caché, backend, kernel y optimizaciones del runtime.&lt;/p&gt;
&lt;h3 id=&#34;5-usa-las-tablas-como-orientación-no-como-garantía&#34;&gt;5. Usa las tablas como orientación, no como garantía
&lt;/h3&gt;&lt;p&gt;Los scoreboards son aportes comunitarios. Pueden variar por commit, driver, sistema operativo, flags de compilación, versión de &lt;code&gt;llama.cpp&lt;/code&gt;, temperatura y configuración de energía.&lt;/p&gt;
&lt;h2 id=&#34;qué-muestran-en-general-los-scoreboards&#34;&gt;Qué muestran en general los scoreboards
&lt;/h2&gt;&lt;p&gt;En las tablas CUDA, las GPUs Nvidia modernas de gama alta, como RTX 5090, RTX PRO 6000 Blackwell, H100, A100, RTX 4090 y RTX 5080, ocupan los rangos superiores. El patrón general confirma que CUDA sigue siendo la ruta más madura para Nvidia.&lt;/p&gt;
&lt;p&gt;En las tablas ROCm / HIP, aceleradores como MI300X y tarjetas AMD de gama alta como RX 7900 XTX muestran resultados fuertes. Esto confirma que ROCm ya es una ruta seria, aunque la experiencia puede depender mucho de soporte de driver y plataforma.&lt;/p&gt;
&lt;p&gt;En las tablas Vulkan, el valor principal es la amplitud. Aparecen Nvidia, AMD, Intel, Apple vía MoltenVK / Asahi, GPUs antiguas y GPUs integradas. Vulkan no siempre es la ruta más rápida, pero suele ser la más flexible para comparar hardware diverso.&lt;/p&gt;
&lt;h2 id=&#34;resumen-en-una-frase&#34;&gt;Resumen en una frase
&lt;/h2&gt;&lt;p&gt;En benchmarks de &lt;code&gt;llama.cpp&lt;/code&gt;, &lt;code&gt;pp512&lt;/code&gt;, &lt;code&gt;tg128&lt;/code&gt;, &lt;code&gt;Q4_0&lt;/code&gt;, &lt;code&gt;FA&lt;/code&gt; y &lt;code&gt;CUDA&lt;/code&gt; / &lt;code&gt;ROCm&lt;/code&gt; / &lt;code&gt;Vulkan&lt;/code&gt; describen dimensiones distintas. Cuando entiendes el contexto del benchmark, las tablas se vuelven mucho más fáciles de leer.&lt;/p&gt;
&lt;h2 id=&#34;fuentes&#34;&gt;Fuentes
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;CUDA discussion #15013: &lt;a class=&#34;link&#34; href=&#34;https://github.com/ggml-org/llama.cpp/discussions/15013&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://github.com/ggml-org/llama.cpp/discussions/15013&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Apple Silicon discussion #4167: &lt;a class=&#34;link&#34; href=&#34;https://github.com/ggml-org/llama.cpp/discussions/4167&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://github.com/ggml-org/llama.cpp/discussions/4167&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;ROCm discussion #15021: &lt;a class=&#34;link&#34; href=&#34;https://github.com/ggml-org/llama.cpp/discussions/15021&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://github.com/ggml-org/llama.cpp/discussions/15021&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Vulkan discussion #10879: &lt;a class=&#34;link&#34; href=&#34;https://github.com/ggml-org/llama.cpp/discussions/10879&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://github.com/ggml-org/llama.cpp/discussions/10879&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</description>
        </item>
        <item>
        <title>Qué significan realmente las métricas comunes de benchmark GPU: FA, pp512, tg128 y Q4_0</title>
        <link>https://knightli.com/es/2026/04/23/how-to-read-llm-cuda-scoreboard-fa-pp512-tg128-q4-0/</link>
        <pubDate>Thu, 23 Apr 2026 00:15:00 +0800</pubDate>
        
        <guid>https://knightli.com/es/2026/04/23/how-to-read-llm-cuda-scoreboard-fa-pp512-tg128-q4-0/</guid>
        <description>&lt;p&gt;En cuanto empiezas a mirar benchmarks de LLM locales o inferencia GPU, aparece una pila de abreviaturas: &lt;code&gt;FA&lt;/code&gt;, &lt;code&gt;pp512&lt;/code&gt;, &lt;code&gt;tg128&lt;/code&gt; y &lt;code&gt;Q4_0&lt;/code&gt;. Todas parecen métricas de rendimiento, pero sin contexto pueden ser sorprendentemente difíciles de interpretar.&lt;/p&gt;
&lt;p&gt;Por ejemplo, puedes ver una línea como:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;CUDA Scoreboard for Llama 2 7B, Q4_0 (no FA)
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Y justo debajo:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pp512 t/s
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;tg128 t/s
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Si no desarmas estos términos, cuesta entender qué mide realmente el benchmark o cómo comparar los resultados de dos GPUs distintas.&lt;/p&gt;
&lt;p&gt;Este artículo no trata sobre qué GPU conviene comprar. Trata específicamente de explicar las métricas más comunes que aparecen en benchmarks de inferencia GPU.&lt;/p&gt;
&lt;h2 id=&#34;primero-qué-dice-realmente-la-línea-del-título&#34;&gt;Primero, qué dice realmente la línea del título
&lt;/h2&gt;&lt;p&gt;Una línea como &lt;code&gt;CUDA Scoreboard for Llama 2 7B, Q4_0 (no FA)&lt;/code&gt; ya te cuenta casi todo el setup de prueba.&lt;/p&gt;
&lt;p&gt;Como mínimo, contiene cuatro capas de información:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;CUDA&lt;/code&gt;: el benchmark corre por la ruta NVIDIA CUDA&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Llama 2 7B&lt;/code&gt;: el modelo probado es la versión 7B de &lt;code&gt;Llama 2&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Q4_0&lt;/code&gt;: el modelo usa un formato cuantizado de 4 bits&lt;/li&gt;
&lt;li&gt;&lt;code&gt;no FA&lt;/code&gt;: &lt;code&gt;Flash Attention&lt;/code&gt; estuvo desactivado en esta prueba&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;En términos prácticos, este título suele significar:&lt;/p&gt;
&lt;p&gt;&amp;ldquo;Un benchmark de un modelo grande cuantizado corriendo en una GPU NVIDIA, medido bajo una ruta de inferencia concreta.&amp;rdquo;&lt;/p&gt;
&lt;h2 id=&#34;qué-significa-fa-flash-attention&#34;&gt;Qué significa FA: Flash Attention
&lt;/h2&gt;&lt;p&gt;Aquí, &lt;code&gt;FA&lt;/code&gt; significa &lt;code&gt;Flash Attention&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;Es una de las técnicas de aceleración más importantes en entrenamiento e inferencia de modelos grandes, principalmente porque optimiza cómo se calcula la atención. En modelos Transformer, la atención ya es una de las partes más caras y más intensivas en ancho de banda de memoria.&lt;/p&gt;
&lt;p&gt;Una implementación tradicional de atención suele sufrir:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;lecturas y escrituras frecuentes de memoria&lt;/li&gt;
&lt;li&gt;muchos resultados intermedios&lt;/li&gt;
&lt;li&gt;movimiento repetido entre VRAM y caché on-chip&lt;/li&gt;
&lt;li&gt;overhead que crece rápido al aumentar el contexto&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Lo que hace &lt;code&gt;Flash Attention&lt;/code&gt;, en términos simples, es:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;reorganizar el orden de cálculo&lt;/li&gt;
&lt;li&gt;reducir cuántas veces los resultados intermedios vuelven a VRAM&lt;/li&gt;
&lt;li&gt;mantener más trabajo dentro de caché rápida&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Eso le da tres ventajas típicas:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;es más rápida&lt;/li&gt;
&lt;li&gt;ahorra memoria&lt;/li&gt;
&lt;li&gt;es matemáticamente equivalente a la atención estándar, no un atajo de menor precisión&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Por eso muchos frameworks modernos de inferencia y entrenamiento la tratan como una optimización clave.&lt;/p&gt;
&lt;h2 id=&#34;qué-significa-no-fa&#34;&gt;Qué significa no FA
&lt;/h2&gt;&lt;p&gt;Si &lt;code&gt;FA&lt;/code&gt; significa &lt;code&gt;Flash Attention&lt;/code&gt;, &lt;code&gt;no FA&lt;/code&gt; simplemente significa que no se activó &lt;code&gt;Flash Attention&lt;/code&gt; para esa prueba.&lt;/p&gt;
&lt;p&gt;Es decir, el benchmark se midió usando una implementación de atención más tradicional.&lt;/p&gt;
&lt;p&gt;Las tablas suelen marcar explícitamente &lt;code&gt;no FA&lt;/code&gt; por varias razones:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;mantener una línea base de comparación&lt;/li&gt;
&lt;li&gt;soportar hardware o software donde &lt;code&gt;FA&lt;/code&gt; no está disponible&lt;/li&gt;
&lt;li&gt;evitar mezclar resultados de condiciones de optimización distintas&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Así que cuando veas &lt;code&gt;no FA&lt;/code&gt;, no lo leas como &amp;ldquo;esta GPU es débil&amp;rdquo;. Una lectura más precisa es:&lt;/p&gt;
&lt;p&gt;&amp;ldquo;Esta puntuación se midió sin Flash Attention activado.&amp;rdquo;&lt;/p&gt;
&lt;h2 id=&#34;qué-significa-q4_0-un-formato-de-cuantización&#34;&gt;Qué significa Q4_0: un formato de cuantización
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;Q4_0&lt;/code&gt; se refiere a un formato de cuantización de 4 bits.&lt;/p&gt;
&lt;p&gt;Los pesos del modelo original normalmente no se guardan con tan baja precisión. La cuantización comprime pesos de mayor precisión en una representación de menos bits para que el modelo sea más fácil de ejecutar en GPUs de consumo.&lt;/p&gt;
&lt;p&gt;Una forma aproximada de pensarlo:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;Q&lt;/code&gt;: Quantization&lt;/li&gt;
&lt;li&gt;&lt;code&gt;4&lt;/code&gt;: 4-bit&lt;/li&gt;
&lt;li&gt;&lt;code&gt;_0&lt;/code&gt;: identificador de un esquema concreto de cuantización&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Su importancia práctica es directa:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;menor tamaño de modelo&lt;/li&gt;
&lt;li&gt;menos requisitos de VRAM&lt;/li&gt;
&lt;li&gt;más probabilidad de caber en hardware de consumo&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Así que &lt;code&gt;Llama 2 7B, Q4_0&lt;/code&gt; no significa solo &amp;ldquo;un modelo 7B normal&amp;rdquo;. Significa &amp;ldquo;un modelo 7B ya comprimido con un formato de cuantización de 4 bits.&amp;rdquo;&lt;/p&gt;
&lt;h2 id=&#34;qué-significa-pp512-ts&#34;&gt;Qué significa pp512 t/s
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;pp512&lt;/code&gt; suele significar:&lt;/p&gt;
&lt;p&gt;&lt;code&gt;Prompt Processing 512 tokens&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Mide qué tan rápido el modelo procesa el prompt de entrada, normalmente en &lt;code&gt;t/s&lt;/code&gt;, es decir, &lt;code&gt;tokens per second&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;Aquí, &lt;code&gt;512&lt;/code&gt; significa que la longitud de prompt usada en la prueba fue de &lt;code&gt;512 tokens&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;Esta métrica no mide velocidad de salida. Mide qué tan rápido el modelo codifica y calcula sobre la entrada antes de empezar a responder. Puedes pensarla como la velocidad de la etapa &amp;ldquo;leer primero el prompt&amp;rdquo;.&lt;/p&gt;
&lt;p&gt;Una propiedad importante de esta etapa es que normalmente es mucho más paralelizable.&lt;/p&gt;
&lt;p&gt;Como la secuencia de entrada puede procesarse en batches, la GPU puede mantener sus unidades de cómputo muy ocupadas. Por eso los números de &lt;code&gt;pp512&lt;/code&gt; pueden verse extremadamente altos.&lt;/p&gt;
&lt;p&gt;Si ves algo como:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pp512 ~= 14000 t/s
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;no hay razón para preocuparse. Mide throughput de procesamiento de prompt, no velocidad de generación token por token.&lt;/p&gt;
&lt;h2 id=&#34;qué-significa-tg128-ts&#34;&gt;Qué significa tg128 t/s
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;tg128&lt;/code&gt; suele significar:&lt;/p&gt;
&lt;p&gt;&lt;code&gt;Text Generation 128 tokens&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Mide la velocidad media de generar &lt;code&gt;128 tokens&lt;/code&gt;, también en &lt;code&gt;t/s&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;Esta métrica está mucho más cerca de lo que la gente quiere decir intuitivamente cuando pregunta si un modelo se siente rápido, porque mide directamente la etapa de salida.&lt;/p&gt;
&lt;p&gt;La diferencia principal frente a &lt;code&gt;pp512&lt;/code&gt; es que la generación de texto suele ser autoregresiva.&lt;/p&gt;
&lt;p&gt;Eso significa:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;el modelo debe generar el primer token&lt;/li&gt;
&lt;li&gt;luego usarlo para generar el segundo&lt;/li&gt;
&lt;li&gt;y seguir así&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Esta etapa no puede paralelizarse como el procesamiento de prompt, así que naturalmente es mucho más lenta.&lt;/p&gt;
&lt;p&gt;Por eso es normal ver:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;pp512&lt;/code&gt; en decenas de miles de &lt;code&gt;t/s&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;tg128&lt;/code&gt; solo en cientos de &lt;code&gt;t/s&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;No es un error de benchmark. Son workloads fundamentalmente distintos.&lt;/p&gt;
&lt;h2 id=&#34;por-qué-pp512-y-tg128-difieren-tanto&#34;&gt;Por qué pp512 y tg128 difieren tanto
&lt;/h2&gt;&lt;p&gt;Esta suele ser la primera confusión al leer un scoreboard.&lt;/p&gt;
&lt;p&gt;La explicación corta:&lt;/p&gt;
&lt;p&gt;&lt;code&gt;pp512&lt;/code&gt; mide algo más cercano al throughput paralelo, mientras &lt;code&gt;tg128&lt;/code&gt; mide capacidad de generación token por token.&lt;/p&gt;
&lt;p&gt;Más detalladamente:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;la etapa de entrada es más fácil de paralelizar&lt;/li&gt;
&lt;li&gt;la etapa de salida depende de generación secuencial&lt;/li&gt;
&lt;li&gt;la generación suele ser más sensible a ancho de banda y caché&lt;/li&gt;
&lt;li&gt;por eso la generación es mucho más lenta que el procesamiento de prompt&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Esto también explica un patrón interesante:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;una GPU puede ser más fuerte en &lt;code&gt;pp512&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;otra puede terminar ligeramente más rápida en &lt;code&gt;tg128&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;No es contradictorio. Una métrica se inclina más hacia throughput de cómputo pico; la otra refleja comportamiento de memoria y latencia en la ruta de generación.&lt;/p&gt;
&lt;h2 id=&#34;cómo-pensar-sobre-ts&#34;&gt;Cómo pensar sobre t/s
&lt;/h2&gt;&lt;p&gt;Aquí, &lt;code&gt;t/s&lt;/code&gt; significa &lt;code&gt;tokens per second&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;Indica cuántos tokens el modelo puede procesar o generar por segundo.&lt;/p&gt;
&lt;p&gt;Pero hay una salvedad importante: un &lt;code&gt;token&lt;/code&gt; no equivale exactamente a un carácter o una palabra. Es la unidad producida por el tokenizer del modelo, y su longitud real puede variar mucho entre modelos e idiomas.&lt;/p&gt;
&lt;p&gt;En la práctica, &lt;code&gt;t/s&lt;/code&gt; sirve sobre todo para:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;comparar GPUs con el mismo modelo&lt;/li&gt;
&lt;li&gt;comparar ajustes distintos en el mismo entorno&lt;/li&gt;
&lt;li&gt;comparar un framework antes y después de activar una optimización concreta&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Es mucho menos fiable como métrica absoluta universal entre modelos, frameworks y tokenizers distintos.&lt;/p&gt;
&lt;h2 id=&#34;en-qué-fijarse-primero-al-leer-un-scoreboard&#34;&gt;En qué fijarse primero al leer un scoreboard
&lt;/h2&gt;&lt;p&gt;Si no quieres enterrarte bajo abreviaturas, empieza por estas preguntas.&lt;/p&gt;
&lt;h3 id=&#34;1-qué-modelo-se-está-probando&#34;&gt;1. Qué modelo se está probando
&lt;/h3&gt;&lt;p&gt;¿Es &lt;code&gt;Llama 2 7B&lt;/code&gt;? ¿Es la misma variante cuantizada, como &lt;code&gt;Q4_0&lt;/code&gt;? Si cambia el modelo o el formato de cuantización, comparar directamente pierde sentido.&lt;/p&gt;
&lt;h3 id=&#34;2-si-las-optimizaciones-clave-están-activadas&#34;&gt;2. Si las optimizaciones clave están activadas
&lt;/h3&gt;&lt;p&gt;El ejemplo más común es &lt;code&gt;FA&lt;/code&gt;. Si un benchmark usa &lt;code&gt;Flash Attention&lt;/code&gt; y otro no, las puntuaciones no son directamente comparables.&lt;/p&gt;
&lt;h3 id=&#34;3-si-la-métrica-mide-entrada-o-salida&#34;&gt;3. Si la métrica mide entrada o salida
&lt;/h3&gt;&lt;p&gt;&lt;code&gt;pp512&lt;/code&gt; y &lt;code&gt;tg128&lt;/code&gt; miden etapas distintas. Una se acerca a velocidad de lectura de prompt; la otra a velocidad de generación de respuesta.&lt;/p&gt;
&lt;h3 id=&#34;4-si-te-importa-throughput-o-sensación-de-uso&#34;&gt;4. Si te importa throughput o sensación de uso
&lt;/h3&gt;&lt;p&gt;Si te importa procesar rápido un prompt largo, &lt;code&gt;pp512&lt;/code&gt; pesa más. Si te importa qué tan rápido se siente el modelo al responder, &lt;code&gt;tg128&lt;/code&gt; suele estar más cerca de la experiencia real.&lt;/p&gt;
&lt;h2 id=&#34;una-forma-práctica-de-recordarlo&#34;&gt;Una forma práctica de recordarlo
&lt;/h2&gt;&lt;p&gt;Puedes resumirlo así:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;Q4_0&lt;/code&gt;: el modelo está comprimido en una versión cuantizada de 4 bits&lt;/li&gt;
&lt;li&gt;&lt;code&gt;FA&lt;/code&gt;: si Flash Attention está activado&lt;/li&gt;
&lt;li&gt;&lt;code&gt;pp512&lt;/code&gt;: velocidad para procesar una entrada de 512 tokens&lt;/li&gt;
&lt;li&gt;&lt;code&gt;tg128&lt;/code&gt;: velocidad para generar una salida de 128 tokens&lt;/li&gt;
&lt;li&gt;&lt;code&gt;t/s&lt;/code&gt;: unidad de velocidad, tokens por segundo&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Con esos cinco puntos claros, es mucho más fácil juzgar qué mide realmente un CUDA Scoreboard.&lt;/p&gt;
&lt;h2 id=&#34;cierre&#34;&gt;Cierre
&lt;/h2&gt;&lt;p&gt;Las tablas de benchmark GPU a menudo parecen más complicadas de lo que son, no porque las métricas sean misteriosas, sino porque identidad del modelo, cuantización, flags de optimización y etapas distintas de throughput se comprimen en abreviaturas cortas.&lt;/p&gt;
&lt;p&gt;Cuando desarmas términos como &lt;code&gt;FA&lt;/code&gt;, &lt;code&gt;Q4_0&lt;/code&gt;, &lt;code&gt;pp512&lt;/code&gt; y &lt;code&gt;tg128&lt;/code&gt;, estas tablas se vuelven mucho más legibles.&lt;/p&gt;
&lt;p&gt;Lo importante no es recordar solo una puntuación, sino saber:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;de qué configuración de modelo viene&lt;/li&gt;
&lt;li&gt;si las optimizaciones clave estaban activadas&lt;/li&gt;
&lt;li&gt;si midió entrada o salida&lt;/li&gt;
&lt;li&gt;si refleja throughput de cómputo o algo más cercano a la sensación real de generación&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Eso facilita juzgar qué significan realmente los resultados.&lt;/p&gt;
</description>
        </item>
        <item>
        <title>¿Dónde guarda llama-cli -hf los modelos de caras abrazadas de forma predeterminada?</title>
        <link>https://knightli.com/es/2026/04/17/llama-cli-hf-download-default-cache-path/</link>
        <pubDate>Fri, 17 Apr 2026 14:48:04 +0800</pubDate>
        
        <guid>https://knightli.com/es/2026/04/17/llama-cli-hf-download-default-cache-path/</guid>
        <description>&lt;p&gt;Si usa &lt;code&gt;llama-cli&lt;/code&gt; para descargar y ejecutar un modelo directamente desde Hugging Face, por ejemplo:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;llama-cli -hf unsloth/gemma-4-E4B-it-GGUF
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;esto utiliza el soporte de descarga de Hugging Face integrado en &lt;code&gt;llama.cpp&lt;/code&gt;. Las compilaciones recientes de &lt;code&gt;llama.cpp&lt;/code&gt; almacenan modelos descargados con &lt;code&gt;-hf&lt;/code&gt; en el directorio de caché estándar de Hugging Face Hub.&lt;/p&gt;
&lt;h2 id=&#34;ubicaciones-de-caché-predeterminadas&#34;&gt;Ubicaciones de caché predeterminadas
&lt;/h2&gt;&lt;p&gt;La ubicación del caché utilizada por &lt;code&gt;llama-cli -hf&lt;/code&gt; se controla primero mediante la variable de entorno &lt;code&gt;LLAMA_CACHE&lt;/code&gt;. Si &lt;code&gt;LLAMA_CACHE&lt;/code&gt; no está configurado, &lt;code&gt;llama.cpp&lt;/code&gt; verifica las variables de caché de Hugging Face como &lt;code&gt;HF_HUB_CACHE&lt;/code&gt;, &lt;code&gt;HUGGINGFACE_HUB_CACHE&lt;/code&gt; y &lt;code&gt;HF_HOME&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;Si no se establece ninguna de esas variables, las rutas predeterminadas comunes son:&lt;/p&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;Sistema&lt;/th&gt;
          &lt;th&gt;Directorio de caché predeterminado&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;Linux&lt;/td&gt;
          &lt;td&gt;&lt;code&gt;~/.cache/huggingface/hub&lt;/code&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;MacOS&lt;/td&gt;
          &lt;td&gt;&lt;code&gt;~/.cache/huggingface/hub&lt;/code&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Ventanas&lt;/td&gt;
          &lt;td&gt;&lt;code&gt;%PERFIL DE USUARIO%\.cache\huggingface\hub&lt;/code&gt;&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;En Windows, &lt;code&gt;%USERPROFILE%&lt;/code&gt; normalmente se expande a:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;C:\Users\用户名
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Entonces el directorio de caché predeterminado es aproximadamente:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;C:\Users\用户名\.cache\huggingface\hub
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h2 id=&#34;cómo-cambiar-el-directorio-de-caché-llama-cli&#34;&gt;Cómo cambiar el directorio de caché llama-cli
&lt;/h2&gt;&lt;p&gt;Configure &lt;code&gt;LLAMA_CACHE&lt;/code&gt; si desea almacenar los modelos descargados en un disco específico o en una carpeta específica. También puedes seguir la convención de Hugging Face y configurar &lt;code&gt;HF_HOME&lt;/code&gt;; en ese caso, el directorio de caché del concentrador será &lt;code&gt;$HF_HOME/hub&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;Ejemplo de CMD temporal de Windows:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;set LLAMA_CACHE=D:\models\llama-cache
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;llama-cli -hf unsloth/gemma-4-E4B-it-GGUF
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Ejemplo de PowerShell temporal:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-powershell&#34; data-lang=&#34;powershell&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;$env:LLAMA_CACHE&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;D:\models\llama-cache&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;llama-cli&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;-hf&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;unsloth&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;/&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;gemma&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;mf&#34;&gt;4&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;-E4B-it-GGUF&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Ejemplo temporal de Linux/macOS:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;export&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;LLAMA_CACHE&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;/data/models/llama-cache
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;llama-cli -hf unsloth/gemma-4-E4B-it-GGUF
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h2 id=&#34;resumen&#34;&gt;Resumen
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;code&gt;llama-cli -hf ...&lt;/code&gt; usa la lógica de descarga de &lt;code&gt;llama.cpp&lt;/code&gt;, pero las compilaciones recientes utilizan de forma predeterminada el caché de Hugging Face Hub.&lt;/li&gt;
&lt;li&gt;Valor predeterminado de Linux/macOS: &lt;code&gt;~/.cache/huggingface/hub&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Valor predeterminado de Windows: &lt;code&gt;%USERPROFILE%\.cache\huggingface\hub&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Para cambiar la ubicación, configure &lt;code&gt;LLAMA_CACHE&lt;/code&gt; o configure &lt;code&gt;HF_HOME&lt;/code&gt; / &lt;code&gt;HF_HUB_CACHE&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
</description>
        </item>
        <item>
        <title>Cómo reparar el error de verificación del certificado SSL cuando llama-cli se descarga desde Hugging Face en Windows</title>
        <link>https://knightli.com/es/2026/04/17/llama-cli-hugging-face-ssl-certificate-failed-on-windows/</link>
        <pubDate>Fri, 17 Apr 2026 14:20:29 +0800</pubDate>
        
        <guid>https://knightli.com/es/2026/04/17/llama-cli-hugging-face-ssl-certificate-failed-on-windows/</guid>
        <description>&lt;p&gt;Si ejecuta este comando en Windows:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;llama-cli -hf unsloth/gemma-4-E4B-it-GGUF
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;y veo un error como este:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;get_repo_commit: error: HTTPLIB failed: SSL server verification failed
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;error: failed to download model from Hugging Face
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Por lo general, el problema no es CUDA ni &lt;code&gt;llama.cpp&lt;/code&gt;. Más a menudo, el programa no puede acceder correctamente a la cadena de certificados del sistema en el entorno actual, por lo que falla la verificación HTTPS.&lt;/p&gt;
&lt;p&gt;Desde el registro, &lt;code&gt;ggml-rpc.dll&lt;/code&gt; y &lt;code&gt;ggml-cpu-alderlake.dll&lt;/code&gt; se cargaron correctamente, lo que significa que el entorno de ejecución está prácticamente bien. El problema está principalmente en el paso de descarga del modelo.&lt;/p&gt;
&lt;h2 id=&#34;la-solución-más-sencilla-descargar-el-modelo-manualmente&#34;&gt;La solución más sencilla: descargar el modelo manualmente
&lt;/h2&gt;&lt;p&gt;Si sólo desea que funcione rápidamente, descargar el modelo manualmente suele ser la opción más estable.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Abra la página del repositorio de Hugging Face correspondiente.&lt;/li&gt;
&lt;li&gt;Descargue el archivo &lt;code&gt;.gguf&lt;/code&gt; requerido desde &lt;code&gt;Archivos y versiones&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Una vez finalizada la descarga, ejecútela con la ruta del archivo local:&lt;/li&gt;
&lt;/ol&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-gdscript3&#34; data-lang=&#34;gdscript3&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;llama&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;cli&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;m&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;C&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;\&lt;span class=&#34;n&#34;&gt;Users&lt;/span&gt;\&lt;span class=&#34;n&#34;&gt;knightli&lt;/span&gt;\&lt;span class=&#34;n&#34;&gt;Downloads&lt;/span&gt;\&lt;span class=&#34;n&#34;&gt;gemma&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;4&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;e4b&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;it&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;gguf&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Esto omite la verificación SSL durante el paso de descarga &lt;code&gt;-hf&lt;/code&gt; y es útil cuando solo desea verificar que el modelo se puede ejecutar localmente.&lt;/p&gt;
&lt;h2 id=&#34;si-aún-deseas-utilizar-la-descarga-automática--hf&#34;&gt;Si aún deseas utilizar la descarga automática &lt;code&gt;-hf&lt;/code&gt;
&lt;/h2&gt;&lt;p&gt;Puede especificar manualmente una ruta de archivo de certificado para que el programa pueda encontrar un paquete de CA utilizable en la sesión actual.&lt;/p&gt;
&lt;p&gt;&lt;code&gt;cacert.pem&lt;/code&gt; se puede obtener de la página de extracto de CA mantenida por el proyecto curl:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Página: &lt;a class=&#34;link&#34; href=&#34;https://curl.se/docs/caextract.html&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://curl.se/docs/caextract.html&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Descarga directa: &lt;a class=&#34;link&#34; href=&#34;https://curl.se/ca/cacert.pem&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://curl.se/ca/cacert.pem&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Si lo descarga en un navegador, abra el enlace de descarga directa y guárdelo como &lt;code&gt;cacert.pem&lt;/code&gt;. También puedes descargarlo a un directorio fijo con PowerShell:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-powershell&#34; data-lang=&#34;powershell&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;New-Item&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;-ItemType&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;Directory&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;-Force&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;C:&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;\&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;certs&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;Invoke-WebRequest&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;-Uri&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;https&lt;/span&gt;&lt;span class=&#34;err&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;//&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;curl&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;se&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;/&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;ca&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;/&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;cacert&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;py&#34;&gt;pem&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;-OutFile&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;C:&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;\&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;certs&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;\&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;cacert&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;py&#34;&gt;pem&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Una vez finalizada la descarga, configure estas variables en la línea de comando:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;set SSL_CERT_FILE=C:\certs\cacert.pem
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;set CURL_CA_BUNDLE=C:\certs\cacert.pem
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Luego ejecute el comando original nuevamente:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;llama-cli -hf unsloth/gemma-4-E4B-it-GGUF
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Si el problema realmente proviene de la cadena de certificados, esto generalmente lo soluciona directamente.&lt;/p&gt;
</description>
        </item>
        <item>
        <title>Cómo usar llama-quantize para modelos GGUF</title>
        <link>https://knightli.com/es/2026/04/12/llama-quantize-gguf-guide/</link>
        <pubDate>Sun, 12 Apr 2026 09:42:36 +0800</pubDate>
        
        <guid>https://knightli.com/es/2026/04/12/llama-quantize-gguf-guide/</guid>
        <description>&lt;p&gt;&lt;code&gt;llama-quantize&lt;/code&gt; es la herramienta de cuantización de &lt;code&gt;llama.cpp&lt;/code&gt;. Se usa para convertir modelos &lt;code&gt;GGUF&lt;/code&gt; de alta precisión en versiones cuantizadas más pequeñas.&lt;/p&gt;
&lt;p&gt;Su uso más común es convertir formatos como &lt;code&gt;F32&lt;/code&gt;, &lt;code&gt;BF16&lt;/code&gt; o &lt;code&gt;FP16&lt;/code&gt; en versiones como &lt;code&gt;Q4_K_M&lt;/code&gt;, &lt;code&gt;Q5_K_M&lt;/code&gt; o &lt;code&gt;Q8_0&lt;/code&gt;, que son más fáciles de ejecutar localmente. Después de la cuantización, los modelos suelen ser mucho más pequeños y a menudo más rápidos en inferencia, aunque se espera cierta pérdida de calidad.&lt;/p&gt;
&lt;h2 id=&#34;flujo-básico&#34;&gt;Flujo básico
&lt;/h2&gt;&lt;p&gt;Un flujo típico consiste en preparar el modelo original, convertirlo a GGUF y luego ejecutar la cuantización.&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;8
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# install Python dependencies&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;python3 -m pip install -r requirements.txt
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# convert the model to ggml FP16 format&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;python3 convert_hf_to_gguf.py ./models/mymodel/
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# quantize the model to 4-bits (using Q4_K_M method)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;./llama-quantize ./models/mymodel/ggml-model-f16.gguf ./models/mymodel/ggml-model-Q4_K_M.gguf Q4_K_M
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Después, puedes ejecutar el modelo cuantizado con &lt;code&gt;llama-cli&lt;/code&gt;:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# start inference on a gguf model&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;./llama-cli -m ./models/mymodel/ggml-model-Q4_K_M.gguf -cnv -p &lt;span class=&#34;s2&#34;&gt;&amp;#34;You are a helpful assistant&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h2 id=&#34;opciones-comunes&#34;&gt;Opciones comunes
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;code&gt;--allow-requantize&lt;/code&gt;: permite volver a cuantizar un modelo ya cuantizado, algo que normalmente no es ideal para la calidad&lt;/li&gt;
&lt;li&gt;&lt;code&gt;--leave-output-tensor&lt;/code&gt;: deja la capa de salida sin cuantizar; aumenta el tamaño, pero a veces ayuda a la calidad&lt;/li&gt;
&lt;li&gt;&lt;code&gt;--pure&lt;/code&gt;: desactiva la cuantización mixta y usa un tipo de cuantización más uniforme&lt;/li&gt;
&lt;li&gt;&lt;code&gt;--imatrix&lt;/code&gt;: usa una matriz de importancia para mejorar la calidad de cuantización&lt;/li&gt;
&lt;li&gt;&lt;code&gt;--keep-split&lt;/code&gt;: conserva el diseño original por fragmentos en lugar de producir un único archivo combinado&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Si solo quieres un punto de partida práctico, esto suele bastar:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;./llama-quantize ./models/mymodel/ggml-model-f16.gguf ./models/mymodel/ggml-model-Q4_K_M.gguf Q4_K_M
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h2 id=&#34;cómo-elegir-una-cuantización&#34;&gt;Cómo elegir una cuantización
&lt;/h2&gt;&lt;p&gt;Puedes pensar en los niveles de cuantización como un compromiso entre tamaño, velocidad y calidad:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;Q8_0&lt;/code&gt;: más grande, pero normalmente más seguro para la calidad&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Q6_K&lt;/code&gt; / &lt;code&gt;Q5_K_M&lt;/code&gt;: opciones equilibradas habituales&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Q4_K_M&lt;/code&gt;: valor predeterminado muy común, con buen equilibrio entre tamaño y calidad&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Q3&lt;/code&gt; / &lt;code&gt;Q2&lt;/code&gt;: útiles cuando el hardware es muy limitado, pero la pérdida de calidad es más visible&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;El objetivo práctico normalmente no es elegir la cuantización más grande que quepa, sino la que se ejecute de forma fiable en tu hardware manteniendo una calidad aceptable.&lt;/p&gt;
&lt;h2 id=&#34;conclusión-práctica&#34;&gt;Conclusión práctica
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;empieza con &lt;code&gt;Q4_K_M&lt;/code&gt; o &lt;code&gt;Q5_K_M&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;sube a &lt;code&gt;Q6_K&lt;/code&gt; o &lt;code&gt;Q8_0&lt;/code&gt; si la calidad importa más&lt;/li&gt;
&lt;li&gt;baja a &lt;code&gt;Q3&lt;/code&gt; o &lt;code&gt;Q2&lt;/code&gt; si la memoria está ajustada&lt;/li&gt;
&lt;li&gt;compara versiones con el mismo conjunto de prompts&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;En resumen, &lt;code&gt;llama-quantize&lt;/code&gt; es útil porque hace que los modelos GGUF sean más fáciles de ejecutar en hardware local, no solo porque reduce el tamaño de los archivos.&lt;/p&gt;
</description>
        </item>
        <item>
        <title>Cómo obtener modelos GGUF desde Hugging Face con llama.cpp</title>
        <link>https://knightli.com/es/2026/04/12/llama-cpp-hugging-face-gguf-models/</link>
        <pubDate>Sun, 12 Apr 2026 09:31:38 +0800</pubDate>
        
        <guid>https://knightli.com/es/2026/04/12/llama-cpp-hugging-face-gguf-models/</guid>
        <description>&lt;p&gt;&lt;code&gt;llama.cpp&lt;/code&gt; puede trabajar directamente con modelos GGUF alojados en Hugging Face, así que no siempre necesitas descargar manualmente los archivos del modelo primero.&lt;/p&gt;
&lt;p&gt;Si un repositorio de modelo ya ofrece archivos GGUF, puedes usar el argumento &lt;code&gt;-hf&lt;/code&gt; en la CLI, por ejemplo:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;llama-cli -hf ggml-org/gemma-3-1b-it-GGUF
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;De forma predeterminada, esto descarga desde Hugging Face.&lt;br&gt;
Si usas otro servicio que expone una API compatible con Hugging Face, puedes cambiar el endpoint de descarga con la variable de entorno &lt;code&gt;MODEL_ENDPOINT&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;Un detalle importante es que &lt;code&gt;llama.cpp&lt;/code&gt; solo puede usar directamente el formato &lt;code&gt;GGUF&lt;/code&gt;.&lt;br&gt;
Si tu modelo está en otro formato, primero necesitas convertirlo con los scripts &lt;code&gt;convert_*.py&lt;/code&gt; incluidos en el repositorio.&lt;/p&gt;
&lt;p&gt;Hugging Face también ofrece varias herramientas online relacionadas con &lt;code&gt;llama.cpp&lt;/code&gt;, entre ellas:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;convertir modelos a &lt;code&gt;GGUF&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;cuantizar pesos para reducir tamaño&lt;/li&gt;
&lt;li&gt;convertir adaptadores LoRA&lt;/li&gt;
&lt;li&gt;editar metadatos GGUF en el navegador&lt;/li&gt;
&lt;li&gt;alojar endpoints de inferencia &lt;code&gt;llama.cpp&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Si solo quieres la conclusión práctica, empieza por repositorios que ya ofrezcan &lt;code&gt;GGUF&lt;/code&gt; y luego usa &lt;code&gt;llama-cli -hf &amp;lt;user&amp;gt;/&amp;lt;model&amp;gt;&lt;/code&gt;. En la mayoría de casos, ese es el camino más simple.&lt;/p&gt;
</description>
        </item>
        <item>
        <title>Guía local de Gemma 4: de ejecutarlo con un comando a integrarlo en desarrollo</title>
        <link>https://knightli.com/es/2026/04/10/gemma4-local-runtime-options/</link>
        <pubDate>Fri, 10 Apr 2026 22:54:17 +0800</pubDate>
        
        <guid>https://knightli.com/es/2026/04/10/gemma4-local-runtime-options/</guid>
        <description>&lt;p&gt;Si quieres ejecutar Gemma 4 en local, puedes elegir entre cuatro rutas prácticas según tu objetivo y tu hardware.&lt;/p&gt;
&lt;h2 id=&#34;1-inicio-más-rápido-ollama-recomendado&#34;&gt;1) Inicio más rápido: Ollama (recomendado)
&lt;/h2&gt;&lt;p&gt;Es la opción con menos fricción para pruebas rápidas, chat diario y uso de API local.&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;ollama run gemma4
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Puntos clave:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Funciona en Windows, macOS y Linux&lt;/li&gt;
&lt;li&gt;Gestiona automáticamente la aceleración por hardware&lt;/li&gt;
&lt;li&gt;Ofrece una API local compatible con el estilo de OpenAI&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;2-flujo-con-interfaz-gráfica-lm-studio--unsloth-studio&#34;&gt;2) Flujo con interfaz gráfica: LM Studio / Unsloth Studio
&lt;/h2&gt;&lt;p&gt;Si prefieres una UI de escritorio en lugar de comandos de terminal:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;LM Studio: permite buscar y ejecutar variantes cuantizadas de Gemma 4 desde Hugging Face, por ejemplo 4-bit u 8-bit, con visibilidad del uso de recursos.&lt;/li&gt;
&lt;li&gt;Unsloth Studio: soporta inferencia y fine-tuning con poca VRAM, a menudo más cómodo para GPUs de 6GB-8GB.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;3-equipos-modestos-y-máximo-control-llamacpp&#34;&gt;3) Equipos modestos y máximo control: llama.cpp
&lt;/h2&gt;&lt;p&gt;Buena opción para hardware antiguo, escenarios centrados en CPU o usuarios que quieren controlar más parámetros de inferencia.&lt;/p&gt;
&lt;p&gt;Con archivos de modelo &lt;code&gt;.gguf&lt;/code&gt; y cuantización, Gemma 4 puede funcionar con presupuestos de hardware mucho más bajos.&lt;/p&gt;
&lt;h2 id=&#34;4-integración-de-desarrollo-transformers--vllm&#34;&gt;4) Integración de desarrollo: Transformers / vLLM
&lt;/h2&gt;&lt;p&gt;Si necesitas integrar Gemma 4 en tu propia aplicación:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Transformers: integración directa en proyectos Python&lt;/li&gt;
&lt;li&gt;vLLM: inferencia de alto rendimiento para entornos GPU más potentes&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;selección-rápida&#34;&gt;Selección rápida
&lt;/h2&gt;&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;Necesidad&lt;/th&gt;
          &lt;th&gt;Herramientas recomendadas&lt;/th&gt;
          &lt;th&gt;Requisito de hardware&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;Solo quiero ejecutarlo ya&lt;/td&gt;
          &lt;td&gt;Ollama&lt;/td&gt;
          &lt;td&gt;Bajo&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Prefiero una interfaz tipo ChatGPT&lt;/td&gt;
          &lt;td&gt;LM Studio&lt;/td&gt;
          &lt;td&gt;Medio&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Tengo VRAM limitada (6GB-8GB)&lt;/td&gt;
          &lt;td&gt;Unsloth / llama.cpp&lt;/td&gt;
          &lt;td&gt;Bajo&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Estoy creando aplicaciones locales de AI&lt;/td&gt;
          &lt;td&gt;Ollama / Transformers / vLLM&lt;/td&gt;
          &lt;td&gt;Medio a alto&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Necesito fine-tuning&lt;/td&gt;
          &lt;td&gt;Unsloth Studio&lt;/td&gt;
          &lt;td&gt;Medio a alto&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id=&#34;sugerencia-de-tamaño-de-modelo&#34;&gt;Sugerencia de tamaño de modelo
&lt;/h2&gt;&lt;p&gt;Gemma 4 llega en varios tamaños, por ejemplo E2B, E4B y 31B.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;En portátiles comunes, empieza por E2B/E4B cuantizados&lt;/li&gt;
&lt;li&gt;Prueba variantes más grandes solo cuando tu flujo base ya sea estable&lt;/li&gt;
&lt;/ul&gt;
</description>
        </item>
        
    </channel>
</rss>
