<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
    <channel>
        <title>推理优化 on KnightLi的博客</title>
        <link>https://knightli.com/tags/%E6%8E%A8%E7%90%86%E4%BC%98%E5%8C%96/</link>
        <description>Recent content in 推理优化 on KnightLi的博客</description>
        <generator>Hugo -- gohugo.io</generator>
        <language>zh-cn</language>
        <lastBuildDate>Wed, 22 Apr 2026 21:47:34 +0800</lastBuildDate><atom:link href="https://knightli.com/tags/%E6%8E%A8%E7%90%86%E4%BC%98%E5%8C%96/index.xml" rel="self" type="application/rss+xml" /><item>
        <title>16G 显卡也能跑 35B 模型：LM Studio 下 MoE 模型的显存压缩思路</title>
        <link>https://knightli.com/2026/04/22/16gb-gpu-run-35b-moe-models-in-lm-studio/</link>
        <pubDate>Wed, 22 Apr 2026 21:47:34 +0800</pubDate>
        
        <guid>https://knightli.com/2026/04/22/16gb-gpu-run-35b-moe-models-in-lm-studio/</guid>
        <description>&lt;p&gt;很多人对 16G 显存的印象是：本地部署大模型时，差不多也就跑到 12B 到 14B，量化之后再往上就很吃力了。这个判断不算离谱，但也不是 16G 显卡的真正上限。&lt;/p&gt;
&lt;p&gt;如果模型选型和参数设置都合适，16G 显卡并不只能停留在“小参数量模型”这一档。围绕这件事，一套比较有代表性的思路是：在 &lt;code&gt;LM Studio&lt;/code&gt; 里利用 &lt;code&gt;MoE&lt;/code&gt; 模型和合理的卸载策略，把 35B 级模型跑到比较可用的速度。&lt;/p&gt;
&lt;h2 id=&#34;01-为什么-16g-显卡不一定只能跑-12b-到-14b&#34;&gt;01 为什么 16G 显卡不一定只能跑 12B 到 14B
&lt;/h2&gt;&lt;p&gt;这里的核心观点很直接：显存大小固然重要，但模型架构同样重要。&lt;/p&gt;
&lt;p&gt;如果你拿一个标准稠密模型去硬塞进 16G 显卡，确实很快就会遇到瓶颈。因为这类模型在推理时通常要参与全部参数计算，显存压力和带宽压力都会直接上来。&lt;/p&gt;
&lt;p&gt;但 &lt;code&gt;MoE&lt;/code&gt; 模型不一样。它的总参数量可以很大，可是在单次推理时，只会激活其中一部分专家参数。以 35B 级模型为例，虽然总参数规模不小，但单次推理实际参与计算的参数量要小得多，所以它对显存的实际要求没有想象中那么夸张。&lt;/p&gt;
&lt;p&gt;也正因为这样，16G 显卡在面对这类模型时，并不是完全没有操作空间。&lt;/p&gt;
&lt;h2 id=&#34;02-实测重点35b-moe-模型可以跑得很快&#34;&gt;02 实测重点：35B MoE 模型可以跑得很快
&lt;/h2&gt;&lt;p&gt;一个重点案例，是 &lt;code&gt;Qwen 3.5 35B A3B&lt;/code&gt; 一类的 &lt;code&gt;MoE&lt;/code&gt; 模型量化版本。在 16G 显卡配合 &lt;code&gt;LM Studio&lt;/code&gt; 做参数调整后，&lt;code&gt;Q6&lt;/code&gt; 量化大约能跑到 30 多 &lt;code&gt;tokens/s&lt;/code&gt;，此前 &lt;code&gt;Q4&lt;/code&gt; 量化甚至能测到更高的速度。&lt;/p&gt;
&lt;p&gt;这个结果之所以有参考价值，不只是因为“能跑”，而是因为速度已经进入了“明显可用”的区间。&lt;/p&gt;
&lt;p&gt;作为对比，同类大参数量但不是 &lt;code&gt;MoE&lt;/code&gt; 的模型，在 16G 显卡上如果直接硬跑，往往会出现爆显存、速度明显掉下来的情况。换句话说，决定结果的不是单纯看参数总量，还要看模型在推理时到底怎么用这些参数。&lt;/p&gt;
&lt;h2 id=&#34;03-在-lm-studio-里重点不只一个参数&#34;&gt;03 在 LM Studio 里，重点不只一个参数
&lt;/h2&gt;&lt;p&gt;想在 16G 显卡上把这类模型跑顺，关键不是“碰运气”，而是调对两个参数：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;GPU Offload&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;强制把部分专家层加载到 CPU 内存的参数&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;第一项比较好理解，&lt;code&gt;GPU Offload&lt;/code&gt; 基本就是能拉多高就拉多高，让模型尽量优先使用显卡计算。&lt;/p&gt;
&lt;p&gt;第二项才是这里的关键。它的作用不是传统意义上那种“显存爆了以后再借系统内存”，而是主动把一部分专家层放到 CPU 内存里，提前降低显存占用。因为 &lt;code&gt;MoE&lt;/code&gt; 模型本来就不是每次都要把所有专家都激活，所以把一部分专家放到内存里，对整体推理速度的影响没有很多人想象中那么夸张。&lt;/p&gt;
&lt;p&gt;更稳妥的做法，是先在一个区间里尝试，再根据自己的机器慢慢调：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;可以先把相关参数设到 &lt;code&gt;20&lt;/code&gt; 到 &lt;code&gt;35&lt;/code&gt; 之间&lt;/li&gt;
&lt;li&gt;然后结合显存占用和内存压力，逐步微调&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;本质上，这套方法就是用系统内存去换显存空间。&lt;/p&gt;
&lt;h2 id=&#34;04-128k-上下文下也能跑缩小上下文还能继续压显存&#34;&gt;04 128K 上下文下也能跑，缩小上下文还能继续压显存
&lt;/h2&gt;&lt;p&gt;还有一个比较有意思的点：测试时把上下文长度拉到了 &lt;code&gt;128K&lt;/code&gt;，在这种偏激进的设置下，35B 级 &lt;code&gt;MoE&lt;/code&gt; 模型依然能跑出比较高的速度。&lt;/p&gt;
&lt;p&gt;这说明一个问题，16G 显卡的瓶颈没有想象中那么死板。尤其在 &lt;code&gt;LM Studio&lt;/code&gt; 这种本地推理工具里，很多时候不是“能不能运行”的二选一，而是：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;你愿不愿意拿更多内存换显存&lt;/li&gt;
&lt;li&gt;你愿不愿意缩短上下文长度&lt;/li&gt;
&lt;li&gt;你愿不愿意接受不同量化版本之间的能力差异&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;如果把上下文从 &lt;code&gt;128K&lt;/code&gt; 进一步收缩到 &lt;code&gt;64K&lt;/code&gt; 或 &lt;code&gt;32K&lt;/code&gt;，显存压力还可以继续下降。也就是说，某些 35B 级 &lt;code&gt;MoE&lt;/code&gt; 模型甚至可能在更小显存的显卡上勉强跑起来，只是速度和内存压力要重新权衡。&lt;/p&gt;
&lt;h2 id=&#34;05-这种方法的代价对系统内存和虚拟内存要求更高&#34;&gt;05 这种方法的代价：对系统内存和虚拟内存要求更高
&lt;/h2&gt;&lt;p&gt;这类方案并不是白送性能。&lt;/p&gt;
&lt;p&gt;需要注意的是，当显存压力被进一步压缩时，系统内存占用会明显上升，虚拟内存的压力也会变大。换句话说，你省下来的不是成本，只是把压力从显卡挪到了内存和磁盘交换空间上。&lt;/p&gt;
&lt;p&gt;所以如果你也想照着试，最好先确认几件事：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;你的系统内存是否足够&lt;/li&gt;
&lt;li&gt;虚拟内存是否留得够大&lt;/li&gt;
&lt;li&gt;机器后台是否还有很多占资源的软件在运行&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;如果这些条件跟不上，最终看到的可能不是“35B 也能飞快跑”，而是整体系统都被拖慢。&lt;/p&gt;
&lt;h2 id=&#34;06-量化版本也不是越激进越好&#34;&gt;06 量化版本也不是越激进越好
&lt;/h2&gt;&lt;p&gt;这里还有一个实际选择：虽然更低位数的量化通常能进一步节省显存，但不一定是最合适的方案。&lt;/p&gt;
&lt;p&gt;作者给出的经验是，某些模型在 &lt;code&gt;Q4&lt;/code&gt; 下速度确实更高，但对原始能力的影响也更明显；相对来说，&lt;code&gt;Q6&lt;/code&gt; 在速度和能力保留之间更平衡。所以最终不一定要无脑追求最小体积，而是要看你更在意什么：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;如果你主要追求速度和塞进显存&lt;/li&gt;
&lt;li&gt;或者你更在意模型原有能力的保留&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这两种取向，对应的量化选择可能并不一样。&lt;/p&gt;
&lt;h2 id=&#34;07-哪些模型思路值得试&#34;&gt;07 哪些模型思路值得试
&lt;/h2&gt;&lt;p&gt;从这个思路来看，最值得尝试的并不是“盲目追大参数量”，而是优先找适合这种玩法的模型：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;MoE&lt;/code&gt; 架构模型&lt;/li&gt;
&lt;li&gt;在 &lt;code&gt;LM Studio&lt;/code&gt; 里支持较好、量化版本较全的模型&lt;/li&gt;
&lt;li&gt;对长上下文或指令跟随有明确优势的模型&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;除了主讲的 35B &lt;code&gt;MoE&lt;/code&gt; 模型，这类方案也适合延伸到一些其他方向，比如偏长上下文记忆、指令遵循表现更好的实验性模型，以及一些速度表现不错的轻量量化版本。&lt;/p&gt;
&lt;p&gt;这类推荐背后的逻辑其实很统一：先找架构上适合“内存换显存”的模型，再谈参数调优，而不是先看参数量再决定能不能跑。&lt;/p&gt;
&lt;h2 id=&#34;08-简单总结&#34;&gt;08 简单总结
&lt;/h2&gt;&lt;p&gt;如果你手里正好是一张 16G 显卡，觉得本地大模型最多只能玩 12B 到 14B，这种想法可以稍微更新一下。&lt;/p&gt;
&lt;p&gt;更准确的说法应该是：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;16G 显卡跑大模型并不是完全没戏&lt;/li&gt;
&lt;li&gt;稠密模型和 &lt;code&gt;MoE&lt;/code&gt; 模型要分开看&lt;/li&gt;
&lt;li&gt;&lt;code&gt;LM Studio&lt;/code&gt; 里的 &lt;code&gt;GPU Offload&lt;/code&gt; 和专家层转移到 CPU 内存的参数，能明显改变显存占用情况&lt;/li&gt;
&lt;li&gt;你实际上是在用更高的内存压力，换更大的模型规模和更高的可用速度&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这套思路不一定适合所有机器，但它至少说明了一点：本地部署大模型时，显存上限不是唯一限制，模型架构和推理配置同样重要。&lt;/p&gt;
</description>
        </item>
        <item>
        <title>大模型量化详解：FP16、Q8、Q5、Q4 到 Q2 怎么选？</title>
        <link>https://knightli.com/2026/04/05/llm-quantization-guide-fp16-q4-q2/</link>
        <pubDate>Sun, 05 Apr 2026 22:09:11 +0800</pubDate>
        
        <guid>https://knightli.com/2026/04/05/llm-quantization-guide-fp16-q4-q2/</guid>
        <description>&lt;p&gt;量化的核心目标很简单：用少量精度损失，换取更小体积、更低显存占用和更快推理速度。&lt;br&gt;
对本地部署用户来说，选对量化版本，往往比盲目追求大参数更重要。&lt;/p&gt;
&lt;h2 id=&#34;什么是量化&#34;&gt;什么是量化
&lt;/h2&gt;&lt;p&gt;量化是指把模型参数从高精度格式（如 &lt;code&gt;FP16&lt;/code&gt;）压缩为更低位宽格式（如 &lt;code&gt;Q8&lt;/code&gt;、&lt;code&gt;Q4&lt;/code&gt;）。&lt;/p&gt;
&lt;p&gt;可以把它理解为：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;原始模型：像高精度照片，清晰但文件大。&lt;/li&gt;
&lt;li&gt;量化模型：像压缩照片，细节略损但更轻更快。&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;常见量化版本对比&#34;&gt;常见量化版本对比
&lt;/h2&gt;&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;量化版本&lt;/th&gt;
          &lt;th&gt;精度/位宽&lt;/th&gt;
          &lt;th&gt;体积&lt;/th&gt;
          &lt;th&gt;质量损失&lt;/th&gt;
          &lt;th&gt;推荐场景&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;FP16&lt;/td&gt;
          &lt;td&gt;16 位浮点&lt;/td&gt;
          &lt;td&gt;最大&lt;/td&gt;
          &lt;td&gt;几乎无损&lt;/td&gt;
          &lt;td&gt;研究、评测、追求极致质量&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Q8_0&lt;/td&gt;
          &lt;td&gt;8 位整数&lt;/td&gt;
          &lt;td&gt;较大&lt;/td&gt;
          &lt;td&gt;几乎无损&lt;/td&gt;
          &lt;td&gt;高配电脑，兼顾质量与性能&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Q5_K_M&lt;/td&gt;
          &lt;td&gt;5 位混合&lt;/td&gt;
          &lt;td&gt;中等&lt;/td&gt;
          &lt;td&gt;轻微损失&lt;/td&gt;
          &lt;td&gt;日常主力，平衡方案&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Q4_K_M&lt;/td&gt;
          &lt;td&gt;4 位混合&lt;/td&gt;
          &lt;td&gt;较小&lt;/td&gt;
          &lt;td&gt;可接受损失&lt;/td&gt;
          &lt;td&gt;通用默认，性价比高&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Q3_K_M&lt;/td&gt;
          &lt;td&gt;3 位混合&lt;/td&gt;
          &lt;td&gt;很小&lt;/td&gt;
          &lt;td&gt;明显损失&lt;/td&gt;
          &lt;td&gt;低配设备，能跑优先&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Q2_K&lt;/td&gt;
          &lt;td&gt;2 位混合&lt;/td&gt;
          &lt;td&gt;最小&lt;/td&gt;
          &lt;td&gt;较大损失&lt;/td&gt;
          &lt;td&gt;极限资源场景，临时可用&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id=&#34;量化命名规则&#34;&gt;量化命名规则
&lt;/h2&gt;&lt;p&gt;以 &lt;code&gt;gemma-4:4b-q4_k_m&lt;/code&gt; 为例：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;gemma-4:4b&lt;/code&gt;：模型名称与参数规模。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;q4&lt;/code&gt;：4 位量化。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;k&lt;/code&gt;：K-quants（改进量化方法）。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;m&lt;/code&gt;：medium（中等级别，常见还有 &lt;code&gt;s&lt;/code&gt;/small、&lt;code&gt;l&lt;/code&gt;/large）。&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;如何按显存快速选型&#34;&gt;如何按显存快速选型
&lt;/h2&gt;&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;内存/显存&lt;/th&gt;
          &lt;th&gt;推荐量化&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;4 GB&lt;/td&gt;
          &lt;td&gt;Q3_K_M / Q2_K&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;8 GB&lt;/td&gt;
          &lt;td&gt;Q4_K_M&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;16 GB&lt;/td&gt;
          &lt;td&gt;Q5_K_M / Q8_0&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;32 GB+&lt;/td&gt;
          &lt;td&gt;FP16 / Q8_0&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;建议先从能稳定跑起来的版本开始用，再逐步提高精度，而不是一上来就追求最大模型。&lt;/p&gt;
&lt;h2 id=&#34;实战建议&#34;&gt;实战建议
&lt;/h2&gt;&lt;ol&gt;
&lt;li&gt;默认从 &lt;code&gt;Q4_K_M&lt;/code&gt; 开始，先验证真实任务效果。&lt;/li&gt;
&lt;li&gt;如果答案质量不够，再升到 &lt;code&gt;Q5_K_M&lt;/code&gt; 或 &lt;code&gt;Q8_0&lt;/code&gt;。&lt;/li&gt;
&lt;li&gt;如果主要瓶颈是显存或速度，再降到 &lt;code&gt;Q3_K_M&lt;/code&gt;。&lt;/li&gt;
&lt;li&gt;每次切换量化版本，都用同一批测试问题做对比。&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;结论&#34;&gt;结论
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;质量优先：&lt;code&gt;FP16&lt;/code&gt; 或 &lt;code&gt;Q8_0&lt;/code&gt;。&lt;/li&gt;
&lt;li&gt;平衡优先：&lt;code&gt;Q5_K_M&lt;/code&gt;。&lt;/li&gt;
&lt;li&gt;通用默认：&lt;code&gt;Q4_K_M&lt;/code&gt;。&lt;/li&gt;
&lt;li&gt;低配兜底：&lt;code&gt;Q3_K_M&lt;/code&gt; 或 &lt;code&gt;Q2_K&lt;/code&gt;。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;选型的本质不是“越大越好”，而是“在你的硬件条件下，达到最稳定可用的效果”。&lt;/p&gt;
&lt;!-- ollama-related-links:start --&gt;
</description>
        </item>
        
    </channel>
</rss>
