<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
    <channel>
        <title>AI教程 on KnightLi的博客</title>
        <link>https://knightli.com/categories/ai%E6%95%99%E7%A8%8B/</link>
        <description>Recent content in AI教程 on KnightLi的博客</description>
        <generator>Hugo -- gohugo.io</generator>
        <language>zh-cn</language>
        <lastBuildDate>Wed, 24 Jun 2026 10:07:45 +0800</lastBuildDate><atom:link href="https://knightli.com/categories/ai%E6%95%99%E7%A8%8B/index.xml" rel="self" type="application/rss+xml" /><item>
        <title>GTX 1060 跑 Qwen 35B 实战：llama.cpp 从 3 tok/s 优化到 17 tok/s</title>
        <link>https://knightli.com/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/2026/06/24/gtx-1060-qwen-35b-llama-cpp-optimization-guide/</guid>
        <description>&lt;p&gt;6GB 显存的 GTX 1060 能不能跑 35B 级别的大模型？&lt;/p&gt;
&lt;p&gt;如果按传统理解，第一反应多半是“不太现实”。35B 参数量太大，显存只有 6GB，哪怕模型已经量化，也很容易遇到速度慢、内存爆、上下文上不去、跑一会儿就不稳定的问题。&lt;/p&gt;
&lt;p&gt;但如果模型是 MoE 架构，再配合 &lt;code&gt;llama.cpp&lt;/code&gt; 的分层卸载、CPU 内存承接和参数调优，事情就会变得有意思：它不一定能变成高端显卡那种体验，但可以从“勉强能跑”优化到“日常测试能用”。&lt;/p&gt;
&lt;p&gt;这篇按实操思路整理：目标不是神化 GTX 1060，而是讲清楚低显存显卡跑 Qwen 35B 这类模型时，应该先看哪里、调哪里、怎么判断瓶颈。&lt;/p&gt;
&lt;h2 id=&#34;先说结论&#34;&gt;先说结论
&lt;/h2&gt;&lt;p&gt;低显存显卡跑 35B 模型，关键不是把所有东西都塞进显存，而是让 GPU 只承担最值得加速的部分。&lt;/p&gt;
&lt;p&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;/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;先能跑起来
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;-&amp;gt; 看默认速度为什么慢
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;-&amp;gt; 调整 GPU 卸载层数
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;-&amp;gt; 利用 MoE 特性减少不必要负担
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;-&amp;gt; 修复内存和缓存瓶颈
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;-&amp;gt; 再拉上下文长度
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;-&amp;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;如果一开始就盯着“显存不够怎么办”，很容易走偏。更实际的目标应该是：让显存、内存、CPU、磁盘和上下文缓存配合起来，而不是只看显卡型号。&lt;/p&gt;
&lt;h2 id=&#34;准备环境&#34;&gt;准备环境
&lt;/h2&gt;&lt;p&gt;这种玩法建议先准备好几个条件：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;一张 6GB 显存左右的 NVIDIA 显卡，例如 GTX 1060 6GB；&lt;/li&gt;
&lt;li&gt;足够的系统内存，越低越容易卡在 swap 或 OOM；&lt;/li&gt;
&lt;li&gt;已经编译好 CUDA 版本的 &lt;code&gt;llama.cpp&lt;/code&gt;；&lt;/li&gt;
&lt;li&gt;一个适合低显存尝试的量化模型文件；&lt;/li&gt;
&lt;li&gt;能接受速度不是云端 API 级别；&lt;/li&gt;
&lt;li&gt;会查看显存、内存和进程占用。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&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;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;如果 &lt;code&gt;nvidia-smi&lt;/code&gt; 看不到显卡，或者 &lt;code&gt;llama.cpp&lt;/code&gt; 没有 CUDA 支持，后面再怎么调参数都不会有理想效果。&lt;/p&gt;
&lt;h2 id=&#34;第一步先让模型跑起来&#34;&gt;第一步：先让模型跑起来
&lt;/h2&gt;&lt;p&gt;不要一上来就追求 17 tok/s。第一步只看一件事：模型能不能正常加载并输出。&lt;/p&gt;
&lt;p&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;./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;如果这一步都失败，先不要急着加 GPU 参数，优先检查：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;模型文件路径是否正确；&lt;/li&gt;
&lt;li&gt;模型量化格式是否被当前 &lt;code&gt;llama.cpp&lt;/code&gt; 支持；&lt;/li&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;/p&gt;
&lt;h2 id=&#34;为什么默认速度可能只有-3-toks&#34;&gt;为什么默认速度可能只有 3 tok/s
&lt;/h2&gt;&lt;p&gt;低显存环境下，默认参数慢通常不是一个原因造成的。&lt;/p&gt;
&lt;p&gt;常见瓶颈有这几类：&lt;/p&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;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;GPU 卸载太少&lt;/td&gt;
          &lt;td&gt;显卡很闲，CPU 很忙&lt;/td&gt;
          &lt;td&gt;增加可承受的 GPU offload&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&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;内存带宽不够&lt;/td&gt;
          &lt;td&gt;CPU 占用高但 token 慢&lt;/td&gt;
          &lt;td&gt;减少无效开销，换更合适量化&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&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;swap 介入&lt;/td&gt;
          &lt;td&gt;系统卡顿明显&lt;/td&gt;
          &lt;td&gt;增加内存或降低参数&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;批处理参数不合适&lt;/td&gt;
          &lt;td&gt;prompt 处理慢&lt;/td&gt;
          &lt;td&gt;调整 batch 相关参数&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;所以调优时不要只看一个 tok/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-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;观察 GPU 显存、GPU 利用率、CPU 占用和系统内存是否同步变化。&lt;/p&gt;
&lt;h2 id=&#34;第二步调整-gpu-卸载&#34;&gt;第二步：调整 GPU 卸载
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;llama.cpp&lt;/code&gt; 里最常见的加速思路是把部分层卸载到 GPU。&lt;/p&gt;
&lt;p&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;/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;或者完整一点：&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;这里的 &lt;code&gt;20&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-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;每次调整后看三件事：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;是否能正常启动；&lt;/li&gt;
&lt;li&gt;显存是否接近打满；&lt;/li&gt;
&lt;li&gt;tok/s 是否真的提升。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;如果显存已经顶满，再继续加 &lt;code&gt;-ngl&lt;/code&gt; 只会让程序更不稳定，不一定更快。&lt;/p&gt;
&lt;h2 id=&#34;第三步理解-moe-为什么重要&#34;&gt;第三步：理解 MoE 为什么重要
&lt;/h2&gt;&lt;p&gt;MoE 模型和普通 dense 模型不太一样。&lt;/p&gt;
&lt;p&gt;MoE 的核心特点是：模型参数总量很大，但每次推理不一定激活全部专家。也就是说，标称 35B 并不代表每个 token 都要完整跑一遍 35B 的全部计算。&lt;/p&gt;
&lt;p&gt;这也是低显存显卡有机会尝试的关键原因。&lt;/p&gt;
&lt;p&gt;但要注意两点：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;MoE 不是免费魔法，模型文件仍然很大；&lt;/li&gt;
&lt;li&gt;显存不够时，仍然需要 CPU 内存承担大量数据。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;所以优化 MoE 模型时，重点是把真正高频、值得加速的部分交给 GPU，把显存放在刀刃上。&lt;/p&gt;
&lt;h2 id=&#34;第四步处理内存瓶颈&#34;&gt;第四步：处理内存瓶颈
&lt;/h2&gt;&lt;p&gt;很多人以为低显存跑不动，只是显存问题。实际更常见的是显存、内存、缓存一起卡。&lt;/p&gt;
&lt;p&gt;如果运行时系统内存接近耗尽，或者 swap 开始大量使用，速度会明显下降。可以用：&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;或者：&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;观察是否出现频繁 swap。&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;降低 batch；&lt;/li&gt;
&lt;li&gt;减少并发任务；&lt;/li&gt;
&lt;li&gt;关闭不必要的后台程序；&lt;/li&gt;
&lt;li&gt;确保模型放在速度较快的 SSD 上；&lt;/li&gt;
&lt;li&gt;给系统留足内存余量。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;如果系统内存本身太小，6GB 显卡再怎么调也很难舒服。&lt;/p&gt;
&lt;h2 id=&#34;第五步上下文长度不要一开始拉满&#34;&gt;第五步：上下文长度不要一开始拉满
&lt;/h2&gt;&lt;p&gt;很多模型默认宣传支持很长上下文，但低显存机器不要一开始就拉满。&lt;/p&gt;
&lt;p&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;/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;确认稳定后再尝试：&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;再往上加时，要观察内存和速度变化。&lt;/p&gt;
&lt;p&gt;上下文越长，KV cache 压力越大。低显存设备上，长上下文通常比单纯生成短回答更容易暴露问题。&lt;/p&gt;
&lt;p&gt;如果你的目标只是本地问答、代码片段解释、短文本总结，没必要一开始追求特别大的上下文。&lt;/p&gt;
&lt;h2 id=&#34;第六步关注-batch-参数&#34;&gt;第六步：关注 batch 参数
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;llama.cpp&lt;/code&gt; 的 batch 参数会影响 prompt 处理和生成表现。不同版本参数名称可能略有变化，可以先看帮助：&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;常见思路是：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;prompt 很长时，适当调 batch 可能改善处理速度；&lt;/li&gt;
&lt;li&gt;显存紧张时，batch 太大可能导致不稳定；&lt;/li&gt;
&lt;li&gt;不要照抄别人的数值，按自己机器测试。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;调参时建议一次只改一个参数。&lt;/p&gt;
&lt;p&gt;比如先固定模型、上下文和 &lt;code&gt;-ngl&lt;/code&gt;，再尝试 batch。否则你很难判断到底是哪一个参数带来了变化。&lt;/p&gt;
&lt;h2 id=&#34;第七步记录自己的五个关键参数&#34;&gt;第七步：记录自己的五个关键参数
&lt;/h2&gt;&lt;p&gt;低显存本地推理最怕“今天能跑，明天忘了怎么配”。&lt;/p&gt;
&lt;p&gt;建议每次测试都记录这几个参数：&lt;/p&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;模型文件&lt;/td&gt;
          &lt;td&gt;模型名称、量化版本、文件大小&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;GPU 卸载&lt;/td&gt;
          &lt;td&gt;&lt;code&gt;-ngl&lt;/code&gt; 或相关卸载参数&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;上下文长度&lt;/td&gt;
          &lt;td&gt;&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 等相关设置&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;结果&lt;/td&gt;
          &lt;td&gt;tok/s、显存、内存、是否稳定&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&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;/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: 默认
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;speed: 约 17 tok/s
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;status: 短文本稳定，长上下文需继续测试
&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;/p&gt;
&lt;h2 id=&#34;一个更稳的测试流程&#34;&gt;一个更稳的测试流程
&lt;/h2&gt;&lt;p&gt;推荐按这个顺序做：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;不加 GPU 卸载，确认模型能加载；&lt;/li&gt;
&lt;li&gt;加较低 &lt;code&gt;-ngl&lt;/code&gt;，确认能输出；&lt;/li&gt;
&lt;li&gt;逐步提高 &lt;code&gt;-ngl&lt;/code&gt;，找到显存临界点；&lt;/li&gt;
&lt;li&gt;固定 &lt;code&gt;-ngl&lt;/code&gt;，调整上下文长度；&lt;/li&gt;
&lt;li&gt;固定上下文，再测试 batch；&lt;/li&gt;
&lt;li&gt;用同一段 prompt 对比 tok/s；&lt;/li&gt;
&lt;li&gt;跑 10 到 20 分钟，观察是否稳定；&lt;/li&gt;
&lt;li&gt;记录最终参数。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;不要每次换一个 prompt 测速度。prompt 不同，结果没有可比性。&lt;/p&gt;
&lt;p&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;/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;每轮都用同一个提示词，才方便判断优化是否真的有效。&lt;/p&gt;
&lt;h2 id=&#34;常见失败尝试&#34;&gt;常见失败尝试
&lt;/h2&gt;&lt;p&gt;低显存调大模型时，这几类操作很容易浪费时间：&lt;/p&gt;
&lt;h3 id=&#34;1-盲目拉高-gpu-卸载层数&#34;&gt;1. 盲目拉高 GPU 卸载层数
&lt;/h3&gt;&lt;p&gt;看到 &lt;code&gt;-ngl&lt;/code&gt; 提升速度，就一直往上加。&lt;/p&gt;
&lt;p&gt;问题是 GTX 1060 只有 6GB 显存，越过临界点后，程序可能直接报错，或者看似启动了但运行不稳定。&lt;/p&gt;
&lt;h3 id=&#34;2-一开始就拉超长上下文&#34;&gt;2. 一开始就拉超长上下文
&lt;/h3&gt;&lt;p&gt;长上下文对内存和 KV cache 压力很大。先用短上下文把模型跑稳，再扩上下文更实际。&lt;/p&gt;
&lt;h3 id=&#34;3-只看平均-toks&#34;&gt;3. 只看平均 tok/s
&lt;/h3&gt;&lt;p&gt;tok/s 是重要指标，但不是唯一指标。&lt;/p&gt;
&lt;p&gt;你还要看：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;首 token 延迟；&lt;/li&gt;
&lt;li&gt;prompt 处理速度；&lt;/li&gt;
&lt;li&gt;显存是否溢出；&lt;/li&gt;
&lt;li&gt;长时间运行是否稳定；&lt;/li&gt;
&lt;li&gt;系统是否卡到影响其他操作。&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;4-不记录参数&#34;&gt;4. 不记录参数
&lt;/h3&gt;&lt;p&gt;本地推理调优经常需要反复试。没有记录，很容易陷入“刚才那个能跑的参数是多少来着”的循环。&lt;/p&gt;
&lt;h2 id=&#34;适合-gtx-1060-的预期&#34;&gt;适合 GTX 1060 的预期
&lt;/h2&gt;&lt;p&gt;GTX 1060 这类老显卡适合做什么？&lt;/p&gt;
&lt;p&gt;适合：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;学习 &lt;code&gt;llama.cpp&lt;/code&gt;；&lt;/li&gt;
&lt;li&gt;测试 GGUF 模型；&lt;/li&gt;
&lt;li&gt;跑短文本问答；&lt;/li&gt;
&lt;li&gt;做本地模型参数实验；&lt;/li&gt;
&lt;li&gt;体验 MoE 模型的低资源运行方式；&lt;/li&gt;
&lt;li&gt;验证某个模型是否值得换更好硬件部署。&lt;/li&gt;
&lt;/ul&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;li&gt;大规模 RAG 生产环境；&lt;/li&gt;
&lt;li&gt;对延迟非常敏感的实时应用。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;把 GTX 1060 当成实验机器，它很有价值。把它当成生产级大模型服务器，就容易失望。&lt;/p&gt;
&lt;h2 id=&#34;一句话总结&#34;&gt;一句话总结
&lt;/h2&gt;&lt;p&gt;6GB 显存跑 Qwen 35B 这类模型，真正的重点不是“硬塞进显卡”，而是用 &lt;code&gt;llama.cpp&lt;/code&gt; 把 GPU 卸载、MoE 特性、系统内存、上下文长度和 batch 参数协调起来。&lt;/p&gt;
&lt;p&gt;如果你手里刚好有 GTX 1060 这种老显卡，可以按这个顺序试：&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;先跑通 -&amp;gt; 调 -ngl -&amp;gt; 看显存 -&amp;gt; 控上下文 -&amp;gt; 查内存 -&amp;gt; 测 batch -&amp;gt; 记录 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;从 3 tok/s 到 17 tok/s，不靠玄学，靠的是一步步把瓶颈拆开。&lt;/p&gt;
</description>
        </item>
        
    </channel>
</rss>
