<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
    <channel>
        <title>AI Tutorial on KnightLi Blog</title>
        <link>https://knightli.com/es/tags/ai-tutorial/</link>
        <description>Recent content in AI Tutorial on KnightLi Blog</description>
        <generator>Hugo -- gohugo.io</generator>
        <language>es</language>
        <lastBuildDate>Wed, 24 Jun 2026 10:07:45 +0800</lastBuildDate><atom:link href="https://knightli.com/es/tags/ai-tutorial/index.xml" rel="self" type="application/rss+xml" /><item>
        <title>GTX 1060 con Qwen 35B: optimizar llama.cpp de 3 tok/s a 17 tok/s</title>
        <link>https://knightli.com/es/2026/06/24/gtx-1060-qwen-35b-llama-cpp-optimization-guide/</link>
        <pubDate>Wed, 24 Jun 2026 10:07:45 +0800</pubDate>
        
        <guid>https://knightli.com/es/2026/06/24/gtx-1060-qwen-35b-llama-cpp-optimization-guide/</guid>
        <description>&lt;p&gt;¿Puede una GTX 1060 con 6GB de VRAM ejecutar un modelo grande de clase 35B?&lt;/p&gt;
&lt;p&gt;Con la lógica habitual, la primera respuesta suele ser &amp;ldquo;no parece muy realista&amp;rdquo;. Un modelo de 35B es enorme, 6GB de VRAM es poco, e incluso con cuantización es fácil encontrar generación lenta, falta de memoria, contexto limitado o inestabilidad después de un rato.&lt;/p&gt;
&lt;p&gt;Pero si el modelo usa arquitectura MoE y se combina con descarga por capas en &lt;code&gt;llama.cpp&lt;/code&gt;, memoria de CPU y ajuste de parámetros, la situación cambia. No se va a convertir en una experiencia de GPU de gama alta, pero puede pasar de &amp;ldquo;apenas funciona&amp;rdquo; a &amp;ldquo;usable para pruebas locales&amp;rdquo;.&lt;/p&gt;
&lt;p&gt;Esta guía está organizada como una práctica de optimización. El objetivo no es exagerar lo que puede hacer una GTX 1060, sino explicar dónde mirar, qué ajustar y cómo identificar cuellos de botella al ejecutar modelos tipo Qwen 35B en hardware con poca VRAM.&lt;/p&gt;
&lt;h2 id=&#34;primero-la-conclusión&#34;&gt;Primero, la conclusión
&lt;/h2&gt;&lt;p&gt;Cuando una GPU con poca VRAM ejecuta un modelo de 35B, la clave no es meterlo todo en la VRAM. La idea es dejar que la GPU procese las partes donde la aceleración realmente compensa.&lt;/p&gt;
&lt;p&gt;El flujo general 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;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;/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 hacer que funcione
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;-&amp;gt; Entender por qué la velocidad por defecto es baja
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;-&amp;gt; Ajustar la descarga a GPU
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;-&amp;gt; Usar las características de MoE para reducir carga innecesaria
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;-&amp;gt; Corregir cuellos de botella de memoria y caché
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;-&amp;gt; Aumentar el contexto después
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;-&amp;gt; Finalmente revisar estabilidad
&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 al principio solo te preguntas &amp;ldquo;cómo lo meto en la VRAM&amp;rdquo;, es fácil optimizar en la dirección equivocada. El objetivo más práctico es coordinar VRAM, memoria del sistema, CPU, disco y caché de contexto.&lt;/p&gt;
&lt;h2 id=&#34;preparar-el-entorno&#34;&gt;Preparar el entorno
&lt;/h2&gt;&lt;p&gt;Antes de probar este enfoque, conviene tener:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Una GPU NVIDIA con alrededor de 6GB de VRAM, por ejemplo una GTX 1060 6GB;&lt;/li&gt;
&lt;li&gt;Suficiente RAM del sistema, porque con poca RAM aparecen más fácilmente swap u OOM;&lt;/li&gt;
&lt;li&gt;Una compilación de &lt;code&gt;llama.cpp&lt;/code&gt; con soporte CUDA;&lt;/li&gt;
&lt;li&gt;Un modelo cuantizado adecuado para pruebas con poca VRAM;&lt;/li&gt;
&lt;li&gt;Expectativas realistas: no será tan rápido como una API en la nube;&lt;/li&gt;
&lt;li&gt;Capacidad para observar VRAM, RAM y uso de procesos.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Primero comprueba el 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;/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;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;free -h
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;./llama-cli --help
&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 &lt;code&gt;nvidia-smi&lt;/code&gt; no ve la GPU, o tu &lt;code&gt;llama.cpp&lt;/code&gt; no tiene soporte CUDA, ajustar parámetros no dará el resultado esperado.&lt;/p&gt;
&lt;h2 id=&#34;paso-1-hacer-que-el-modelo-arranque&#34;&gt;Paso 1: hacer que el modelo arranque
&lt;/h2&gt;&lt;p&gt;No busques 17 tok/s desde el primer minuto. El primer objetivo es simple: ¿el modelo carga y genera texto?&lt;/p&gt;
&lt;p&gt;Un comando básico suele verse así:&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;./llama-cli &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;  -m /path/to/model.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;  -p &lt;span class=&#34;s2&#34;&gt;&amp;#34;用三句话解释什么是 MoE 模型&amp;#34;&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;  -n &lt;span class=&#34;m&#34;&gt;128&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;Si esto falla, no añadas todavía parámetros de GPU. Revisa primero:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Si la ruta del modelo es correcta;&lt;/li&gt;
&lt;li&gt;Si el formato de cuantización está soportado por tu versión de &lt;code&gt;llama.cpp&lt;/code&gt;;&lt;/li&gt;
&lt;li&gt;Si hay suficiente RAM del sistema;&lt;/li&gt;
&lt;li&gt;Si descargaste la variante correcta del modelo;&lt;/li&gt;
&lt;li&gt;Si el binario soporta la arquitectura del modelo.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Cuando el modelo ya funciona, empieza a optimizar velocidad.&lt;/p&gt;
&lt;h2 id=&#34;por-qué-la-velocidad-por-defecto-puede-ser-solo-3-toks&#34;&gt;Por qué la velocidad por defecto puede ser solo 3 tok/s
&lt;/h2&gt;&lt;p&gt;En entornos con poca VRAM, una configuración por defecto lenta rara vez tiene una sola causa.&lt;/p&gt;
&lt;p&gt;Estos son cuellos de botella frecuentes:&lt;/p&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;Cuello de botella&lt;/th&gt;
          &lt;th&gt;Síntoma&lt;/th&gt;
          &lt;th&gt;Dirección&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;Muy poca descarga a GPU&lt;/td&gt;
          &lt;td&gt;La GPU está ociosa y la CPU ocupada&lt;/td&gt;
          &lt;td&gt;Aumentar GPU offload dentro del límite&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Descarga demasiado agresiva&lt;/td&gt;
          &lt;td&gt;La VRAM se llena o aparecen errores&lt;/td&gt;
          &lt;td&gt;Reducir capas descargadas&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Ancho de banda de memoria insuficiente&lt;/td&gt;
          &lt;td&gt;CPU alta pero pocos tokens&lt;/td&gt;
          &lt;td&gt;Reducir sobrecarga, probar otra cuantización&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Contexto demasiado grande&lt;/td&gt;
          &lt;td&gt;Inicio lento o RAM que sube mucho&lt;/td&gt;
          &lt;td&gt;Probar primero con contexto pequeño&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Uso de swap&lt;/td&gt;
          &lt;td&gt;El sistema se siente bloqueado&lt;/td&gt;
          &lt;td&gt;Añadir RAM o bajar parámetros&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Batch inadecuado&lt;/td&gt;
          &lt;td&gt;Procesamiento lento del prompt&lt;/td&gt;
          &lt;td&gt;Ajustar parámetros de batch&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;No mires solo el número de tok/s. Mantén abiertos:&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;watch -n &lt;span class=&#34;m&#34;&gt;1&lt;/span&gt; nvidia-smi
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;htop
&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;Observa juntos el uso de VRAM, utilización de GPU, carga de CPU y memoria del sistema.&lt;/p&gt;
&lt;h2 id=&#34;paso-2-ajustar-la-descarga-a-gpu&#34;&gt;Paso 2: ajustar la descarga a GPU
&lt;/h2&gt;&lt;p&gt;La forma más común de acelerar &lt;code&gt;llama.cpp&lt;/code&gt; es descargar parte del modelo a la GPU.&lt;/p&gt;
&lt;p&gt;Un parámetro típico 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;-ngl &lt;span class=&#34;m&#34;&gt;20&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;O con un comando más completo:&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;/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 &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;  -m /path/to/model.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;  -p &lt;span class=&#34;s2&#34;&gt;&amp;#34;写一个本地大模型调优 checklist&amp;#34;&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;  -n &lt;span class=&#34;m&#34;&gt;256&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;  -ngl &lt;span class=&#34;m&#34;&gt;20&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;El valor &lt;code&gt;20&lt;/code&gt; no es una respuesta universal. En una GPU con poca VRAM, prueba poco a poco:&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-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;-ngl 10
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;-ngl 15
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;-ngl 20
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;-ngl 25
&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 de cada cambio, revisa tres cosas:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Si el proceso arranca correctamente;&lt;/li&gt;
&lt;li&gt;Si la VRAM está cerca del límite;&lt;/li&gt;
&lt;li&gt;Si tok/s realmente mejora.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Si la VRAM ya está llena, subir más &lt;code&gt;-ngl&lt;/code&gt; normalmente reduce estabilidad en vez de aumentar velocidad.&lt;/p&gt;
&lt;h2 id=&#34;paso-3-entender-por-qué-moe-importa&#34;&gt;Paso 3: entender por qué MoE importa
&lt;/h2&gt;&lt;p&gt;Los modelos MoE son diferentes de los modelos dense tradicionales.&lt;/p&gt;
&lt;p&gt;La idea clave es que el número total de parámetros es grande, pero no todos los expertos se activan en cada token. Es decir, que un modelo se anuncie como 35B no significa que cada token ejecute todo el cálculo de 35B.&lt;/p&gt;
&lt;p&gt;Esa es una de las razones por las que una GPU con poca VRAM puede intentar ejecutar estos modelos.&lt;/p&gt;
&lt;p&gt;Pero hay dos advertencias:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;MoE no es magia gratis; el archivo del modelo sigue siendo grande;&lt;/li&gt;
&lt;li&gt;Cuando falta VRAM, la memoria de CPU sigue cargando muchos datos.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Por eso, al optimizar modelos MoE, el objetivo es pasar a la GPU las partes de alto valor y usar la VRAM donde más aporta.&lt;/p&gt;
&lt;h2 id=&#34;paso-4-tratar-los-cuellos-de-botella-de-memoria&#34;&gt;Paso 4: tratar los cuellos de botella de memoria
&lt;/h2&gt;&lt;p&gt;Mucha gente piensa que si un modelo no va bien con poca VRAM, el problema es solo la VRAM. En la práctica, VRAM, RAM y caché suelen atascarse juntas.&lt;/p&gt;
&lt;p&gt;Si la memoria del sistema se acerca al límite, o si swap empieza a usarse mucho, la velocidad cae claramente. Puedes comprobarlo con:&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;free -h
&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;O con:&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;vmstat &lt;span class=&#34;m&#34;&gt;1&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;Busca actividad frecuente de swap.&lt;/p&gt;
&lt;p&gt;Direcciones útiles:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Usar una versión cuantizada más pequeña;&lt;/li&gt;
&lt;li&gt;Reducir la longitud de contexto;&lt;/li&gt;
&lt;li&gt;Reducir batch;&lt;/li&gt;
&lt;li&gt;Cerrar tareas en paralelo;&lt;/li&gt;
&lt;li&gt;Cerrar procesos de fondo innecesarios;&lt;/li&gt;
&lt;li&gt;Poner el modelo en un SSD rápido;&lt;/li&gt;
&lt;li&gt;Dejar margen suficiente de RAM.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Si la RAM del sistema es demasiado pequeña, una GPU de 6GB no basta para que todo sea fluido.&lt;/p&gt;
&lt;h2 id=&#34;paso-5-no-empezar-con-el-contexto-al-máximo&#34;&gt;Paso 5: no empezar con el contexto al máximo
&lt;/h2&gt;&lt;p&gt;Muchos modelos anuncian soporte de contexto largo, pero una máquina con poca VRAM no debería empezar por ahí.&lt;/p&gt;
&lt;p&gt;Empieza con un contexto más pequeño:&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;-c &lt;span class=&#34;m&#34;&gt;4096&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;Si es estable, prueba:&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;-c &lt;span class=&#34;m&#34;&gt;8192&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 seguir subiendo, observa memoria y velocidad.&lt;/p&gt;
&lt;p&gt;Cuanto más largo sea el contexto, mayor será la presión sobre KV cache. En dispositivos con poca VRAM, el contexto largo suele exponer problemas antes que la generación de respuestas cortas.&lt;/p&gt;
&lt;p&gt;Si tu objetivo es Q&amp;amp;A local, explicar fragmentos de código o resumir textos cortos, no necesitas buscar un contexto enorme desde el inicio.&lt;/p&gt;
&lt;h2 id=&#34;paso-6-vigilar-los-parámetros-de-batch&#34;&gt;Paso 6: vigilar los parámetros de batch
&lt;/h2&gt;&lt;p&gt;Los parámetros de batch en &lt;code&gt;llama.cpp&lt;/code&gt; afectan el procesamiento del prompt y la generación. Los nombres pueden variar entre versiones, así que mira primero la ayuda:&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 --help
&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;Ideas generales:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Si el prompt es largo, ajustar batch puede mejorar el procesamiento;&lt;/li&gt;
&lt;li&gt;Si la VRAM está justa, un batch demasiado grande puede reducir estabilidad;&lt;/li&gt;
&lt;li&gt;No copies valores de otra persona sin probarlos en tu equipo.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Cambia solo un parámetro cada vez.&lt;/p&gt;
&lt;p&gt;Por ejemplo, fija primero el modelo, el contexto y &lt;code&gt;-ngl&lt;/code&gt;, y después prueba batch. Si cambias todo a la vez, no sabrás qué ajuste ayudó.&lt;/p&gt;
&lt;h2 id=&#34;paso-7-registrar-cinco-parámetros-clave&#34;&gt;Paso 7: registrar cinco parámetros clave
&lt;/h2&gt;&lt;p&gt;Lo peor de la inferencia local con poca VRAM es conseguir que funcione hoy y olvidar mañana qué parámetros usaste.&lt;/p&gt;
&lt;p&gt;Registra estos datos en cada prueba:&lt;/p&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;Parámetro&lt;/th&gt;
          &lt;th&gt;Qué registrar&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;Archivo de modelo&lt;/td&gt;
          &lt;td&gt;Nombre, cuantización y tamaño&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Descarga a GPU&lt;/td&gt;
          &lt;td&gt;&lt;code&gt;-ngl&lt;/code&gt; u opciones relacionadas&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Longitud de contexto&lt;/td&gt;
          &lt;td&gt;Valor de &lt;code&gt;-c&lt;/code&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Batch&lt;/td&gt;
          &lt;td&gt;batch / ubatch y ajustes relacionados&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Resultado&lt;/td&gt;
          &lt;td&gt;tok/s, VRAM, RAM, estabilidad&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;Una nota simple puede 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;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;/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;model: Qwen-xx-35B-xxx.gguf
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;gpu: GTX 1060 6GB
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;ngl: 20
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;ctx: 4096
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;batch: default
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;speed: about 17 tok/s
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;status: stable for short text, long context needs more testing
&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;Así, cuando cambies de modelo o de máquina, tendrás una base para comparar.&lt;/p&gt;
&lt;h2 id=&#34;un-flujo-de-prueba-más-estable&#34;&gt;Un flujo de prueba más estable
&lt;/h2&gt;&lt;p&gt;Recomiendo este orden:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Ejecutar sin descarga a GPU para confirmar que el modelo carga;&lt;/li&gt;
&lt;li&gt;Añadir un &lt;code&gt;-ngl&lt;/code&gt; bajo y confirmar que genera;&lt;/li&gt;
&lt;li&gt;Subir &lt;code&gt;-ngl&lt;/code&gt; gradualmente para encontrar el límite de VRAM;&lt;/li&gt;
&lt;li&gt;Fijar &lt;code&gt;-ngl&lt;/code&gt; y ajustar longitud de contexto;&lt;/li&gt;
&lt;li&gt;Fijar contexto y probar batch;&lt;/li&gt;
&lt;li&gt;Comparar tok/s con el mismo prompt;&lt;/li&gt;
&lt;li&gt;Ejecutar 10 a 20 minutos para observar estabilidad;&lt;/li&gt;
&lt;li&gt;Registrar los parámetros finales.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;No cambies el prompt en cada prueba de velocidad. Con prompts distintos, los resultados no son comparables.&lt;/p&gt;
&lt;p&gt;Puedes preparar un prompt fijo:&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;請用 800 字解釋 MoE 模型為什麼適合低顯存推理，並給出三個注意事項。
&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;Usar siempre el mismo prompt facilita saber si la optimización realmente funcionó.&lt;/p&gt;
&lt;h2 id=&#34;intentos-fallidos-comunes&#34;&gt;Intentos fallidos comunes
&lt;/h2&gt;&lt;p&gt;Al ajustar modelos grandes en hardware con poca VRAM, estos errores suelen hacer perder tiempo.&lt;/p&gt;
&lt;h3 id=&#34;1-subir-gpu-offload-a-ciegas&#34;&gt;1. Subir GPU offload a ciegas
&lt;/h3&gt;&lt;p&gt;Ves que &lt;code&gt;-ngl&lt;/code&gt; mejora la velocidad y sigues subiendo.&lt;/p&gt;
&lt;p&gt;El problema es que una GTX 1060 solo tiene 6GB de VRAM. Al cruzar el límite, el programa puede fallar directamente o iniciar pero volverse inestable.&lt;/p&gt;
&lt;h3 id=&#34;2-empezar-con-contexto-muy-largo&#34;&gt;2. Empezar con contexto muy largo
&lt;/h3&gt;&lt;p&gt;El contexto largo presiona mucho la memoria y KV cache. Es mejor estabilizar el modelo con contexto corto y después ampliarlo.&lt;/p&gt;
&lt;h3 id=&#34;3-mirar-solo-el-toks-promedio&#34;&gt;3. Mirar solo el tok/s promedio
&lt;/h3&gt;&lt;p&gt;tok/s es importante, pero no es la única métrica.&lt;/p&gt;
&lt;p&gt;También conviene mirar:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Latencia del primer token;&lt;/li&gt;
&lt;li&gt;Velocidad de procesamiento del prompt;&lt;/li&gt;
&lt;li&gt;Si la VRAM se desborda;&lt;/li&gt;
&lt;li&gt;Si la ejecución larga sigue estable;&lt;/li&gt;
&lt;li&gt;Si el sistema queda demasiado lento para otras tareas.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;4-no-registrar-parámetros&#34;&gt;4. No registrar parámetros
&lt;/h3&gt;&lt;p&gt;La optimización de inferencia local requiere muchas pruebas. Sin notas, es fácil olvidar qué configuración funcionaba.&lt;/p&gt;
&lt;h2 id=&#34;qué-esperar-de-una-gtx-1060&#34;&gt;Qué esperar de una GTX 1060
&lt;/h2&gt;&lt;p&gt;¿Para qué sirve una GPU antigua como la GTX 1060?&lt;/p&gt;
&lt;p&gt;Sirve para:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Aprender &lt;code&gt;llama.cpp&lt;/code&gt;;&lt;/li&gt;
&lt;li&gt;Probar modelos GGUF;&lt;/li&gt;
&lt;li&gt;Ejecutar Q&amp;amp;A local corto;&lt;/li&gt;
&lt;li&gt;Experimentar con parámetros de modelos locales;&lt;/li&gt;
&lt;li&gt;Probar inferencia MoE con pocos recursos;&lt;/li&gt;
&lt;li&gt;Decidir si un modelo merece desplegarse en mejor hardware.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;No es ideal para:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Servicios de alta concurrencia;&lt;/li&gt;
&lt;li&gt;Uso intensivo de contexto muy largo;&lt;/li&gt;
&lt;li&gt;Varios usuarios a la vez;&lt;/li&gt;
&lt;li&gt;RAG de producción a gran escala;&lt;/li&gt;
&lt;li&gt;Aplicaciones en tiempo real sensibles a latencia.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Si tratas la GTX 1060 como una máquina de experimentos, tiene mucho valor. Si la tratas como servidor LLM de producción, es fácil decepcionarse.&lt;/p&gt;
&lt;h2 id=&#34;resumen-en-una-frase&#34;&gt;Resumen en una frase
&lt;/h2&gt;&lt;p&gt;Ejecutar modelos tipo Qwen 35B con 6GB de VRAM no consiste en meterlo todo a la fuerza en la GPU. Consiste en coordinar la descarga a GPU de &lt;code&gt;llama.cpp&lt;/code&gt;, el comportamiento MoE, la memoria del sistema, la longitud de contexto y los parámetros de batch.&lt;/p&gt;
&lt;p&gt;Si tienes una GTX 1060 antigua, prueba este orden:&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;Hacer que arranque -&amp;gt; Ajustar -ngl -&amp;gt; Mirar VRAM -&amp;gt; Controlar contexto -&amp;gt; Revisar RAM -&amp;gt; Probar batch -&amp;gt; Registrar tok/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;Pasar de 3 tok/s a 17 tok/s no es magia. Es separar los cuellos de botella uno por uno.&lt;/p&gt;
</description>
        </item>
        
    </channel>
</rss>
