<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
    <channel>
        <title>Qwen on KnightLi的博客</title>
        <link>https://knightli.com/tags/qwen/</link>
        <description>Recent content in Qwen on KnightLi的博客</description>
        <generator>Hugo -- gohugo.io</generator>
        <language>zh-cn</language>
        <lastBuildDate>Fri, 22 May 2026 22:44:16 +0800</lastBuildDate><atom:link href="https://knightli.com/tags/qwen/index.xml" rel="self" type="application/rss+xml" /><item>
        <title>RTX 3070 8GB 本地运行 Qwen3.6-35B：llama.cpp 部署要点与优化参数</title>
        <link>https://knightli.com/2026/05/22/rtx-3070-8gb-qwen36-35b-llama-cpp-local-deployment/</link>
        <pubDate>Fri, 22 May 2026 22:44:16 +0800</pubDate>
        
        <guid>https://knightli.com/2026/05/22/rtx-3070-8gb-qwen36-35b-llama-cpp-local-deployment/</guid>
        <description>&lt;p&gt;8GB 显存能不能跑 35B 级别模型，关键不只看模型总参数量，还要看模型结构、量化格式和推理框架的调度方式。&lt;/p&gt;
&lt;p&gt;这次案例的核心思路是：使用 Qwen3.6-35B-A3B 这类 MoE 模型的 GGUF 量化版本，再通过 llama.cpp 的 CUDA 加速、CPU Offload、MoE 参数调度和 KV Cache 量化，把显存压力分摊到 GPU 与内存之间。这样一来，RTX 3070 8GB 这类老显卡也有机会跑起 35B 级别的本地多模态模型。&lt;/p&gt;
&lt;p&gt;需要先说明一点：这不是“8GB 显存完整装下 35B 模型”。更准确的理解是，显卡负责更适合 GPU 的计算部分，部分专家层和缓存压力由系统内存承担。实际体验会受到内存容量、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;CPU：Intel Core i7-12700 级别&lt;/li&gt;
&lt;li&gt;GPU：NVIDIA RTX 3070 8GB&lt;/li&gt;
&lt;li&gt;内存：64GB&lt;/li&gt;
&lt;li&gt;系统：Windows 11&lt;/li&gt;
&lt;li&gt;推理框架：llama.cpp CUDA 版本&lt;/li&gt;
&lt;li&gt;模型格式：GGUF&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;如果只有 16GB 或 32GB 内存，也不是完全不能尝试，但 35B MoE 模型在加载和长上下文推理时更容易触发内存压力。想要稳定使用，64GB 内存会更稳。&lt;/p&gt;
&lt;h2 id=&#34;为什么-8gb-显存也有机会跑-35b&#34;&gt;为什么 8GB 显存也有机会跑 35B
&lt;/h2&gt;&lt;p&gt;Qwen3.6-35B-A3B 的关键点在于 MoE 架构。它的总参数规模是 35B，但每次推理并不是所有参数都同时激活，而是只激活其中一部分专家参数。&lt;/p&gt;
&lt;p&gt;这会带来两个结果：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;总模型文件仍然很大，需要足够磁盘和内存承载。&lt;/li&gt;
&lt;li&gt;单次推理的活跃计算量低于完整 35B Dense 模型。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;llama.cpp 的 CPU Offload 和 MoE 相关参数可以进一步降低显存门槛。GPU 主要承担注意力和部分高收益计算，CPU 与内存承担一部分专家层权重。代价是速度、响应延迟和稳定性会更依赖整机配置，而不是只看显卡型号。&lt;/p&gt;
&lt;h2 id=&#34;准备-llamacpp&#34;&gt;准备 llama.cpp
&lt;/h2&gt;&lt;p&gt;Windows 用户可以直接下载 llama.cpp 的预编译 CUDA 版本。需要注意三点：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;显卡驱动要足够新，CUDA 运行环境要和下载的 llama.cpp 包匹配。&lt;/li&gt;
&lt;li&gt;下载后建议放在一个不含中文和特殊字符的路径下，方便批处理脚本调用。&lt;/li&gt;
&lt;li&gt;模型文件统一放到 &lt;code&gt;models&lt;/code&gt; 目录，避免命令里写太长路径。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;如果是 AMD、Intel 显卡或纯 CPU 环境，也可以选择 Vulkan、HIP、SYCL 或 CPU 版本，但参数和性能表现会不同。本文重点仍然是 NVIDIA 显卡上的 CUDA 路线。&lt;/p&gt;
&lt;h2 id=&#34;下载模型和多模态投影文件&#34;&gt;下载模型和多模态投影文件
&lt;/h2&gt;&lt;p&gt;本次使用的模型是：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;Qwen3.6-35B-A3B-UD-Q4_K_M.gguf&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;量化格式选择 &lt;code&gt;Q4_K_M&lt;/code&gt;，主要是为了在精度、体积和速度之间取得平衡。显存较小的机器不建议一开始就尝试更高精度版本，否则加载失败或系统频繁换页的概率会明显上升。&lt;/p&gt;
&lt;p&gt;如果要使用图片理解能力，还需要同时准备多模态投影文件，例如：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;mmproj-BF16.gguf&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这个文件非常重要。只下载主模型通常只能完成文本推理；如果缺少 &lt;code&gt;mmproj&lt;/code&gt;，网页 UI 里可能看不到正常的图片上传能力，或者上传后无法完成视觉理解。&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;/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.cpp/
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;├─ llama-server.exe
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;└─ models/
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;   ├─ Qwen3.6-35B-A3B-UD-Q4_K_M.gguf
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;   └─ mmproj-BF16.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;rtx-3070-8gb-启动参数&#34;&gt;RTX 3070 8GB 启动参数
&lt;/h2&gt;&lt;p&gt;下面是一份面向 RTX 3070 8GB 的启动脚本示例。路径需要改成你自己的 llama.cpp 所在目录。&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;span class=&#34;lnt&#34;&gt;20
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;21
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;22
&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 D:\AI\llama.cpp
&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;llama-server.exe &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;&lt;span class=&#34;se&#34;&gt; &lt;/span&gt; -m &lt;span class=&#34;s2&#34;&gt;&amp;#34;models\Qwen3.6-35B-A3B-UD-Q4_K_M.gguf&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;&lt;span class=&#34;se&#34;&gt; &lt;/span&gt; --mmproj &lt;span class=&#34;s2&#34;&gt;&amp;#34;models\mmproj-BF16.gguf&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;&lt;span class=&#34;se&#34;&gt; &lt;/span&gt; -ngl 99 &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;&lt;span class=&#34;se&#34;&gt; &lt;/span&gt; --n-cpu-moe 999 &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;&lt;span class=&#34;se&#34;&gt; &lt;/span&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;&lt;span class=&#34;se&#34;&gt; &lt;/span&gt; --jinja &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;&lt;span class=&#34;se&#34;&gt; &lt;/span&gt; -c 32768 &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;&lt;span class=&#34;se&#34;&gt; &lt;/span&gt; -t 12 &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;&lt;span class=&#34;se&#34;&gt; &lt;/span&gt; -b 512 &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;&lt;span class=&#34;se&#34;&gt; &lt;/span&gt; -ub 128 &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;&lt;span class=&#34;se&#34;&gt; &lt;/span&gt; --cache-type-k q4_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;&lt;span class=&#34;se&#34;&gt; &lt;/span&gt; --cache-type-v q4_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;&lt;span class=&#34;se&#34;&gt; &lt;/span&gt; --mlock &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;&lt;span class=&#34;se&#34;&gt; &lt;/span&gt; --host 127.0.0.1 &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;&lt;span class=&#34;se&#34;&gt; &lt;/span&gt; --port 8080
&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;启动后在浏览器访问：&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;如果页面可以打开，并且模型能正常回复，就说明服务已经启动成功。首次加载模型可能会比较慢，期间不要急着重复运行多个实例，否则更容易把内存占满。&lt;/p&gt;
&lt;h2 id=&#34;关键参数怎么理解&#34;&gt;关键参数怎么理解
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;-ngl 99&lt;/code&gt; 表示尽量把可放到 GPU 的层放到显卡上。实际能放多少，取决于模型结构、量化格式和显存占用。&lt;/p&gt;
&lt;p&gt;&lt;code&gt;--n-cpu-moe 999&lt;/code&gt; 用来让 MoE 专家层更多走 CPU 侧，降低显存压力。它是这类小显存运行大 MoE 模型的关键参数之一。&lt;/p&gt;
&lt;p&gt;&lt;code&gt;--flash-attn on&lt;/code&gt; 开启 Flash Attention，有助于降低注意力计算的开销。是否可用取决于当前 llama.cpp 版本和显卡支持情况。&lt;/p&gt;
&lt;p&gt;&lt;code&gt;-c 32768&lt;/code&gt; 设置上下文长度。长上下文会显著增加 KV Cache 压力，如果启动失败或推理很慢，可以先降到 &lt;code&gt;8192&lt;/code&gt; 或 &lt;code&gt;16384&lt;/code&gt;。&lt;/p&gt;
&lt;p&gt;&lt;code&gt;--cache-type-k q4_0&lt;/code&gt; 和 &lt;code&gt;--cache-type-v q4_0&lt;/code&gt; 用于量化 KV Cache，能节省内存和显存，但可能对输出质量和速度有轻微影响。&lt;/p&gt;
&lt;p&gt;&lt;code&gt;-b 512&lt;/code&gt; 与 &lt;code&gt;-ub 128&lt;/code&gt; 控制批处理相关参数。小显存环境下，不要一开始就把批量参数设得太激进。&lt;/p&gt;
&lt;h2 id=&#34;常见问题&#34;&gt;常见问题
&lt;/h2&gt;&lt;p&gt;如果启动时报显存不足，可以先降低上下文长度，例如把 &lt;code&gt;-c 32768&lt;/code&gt; 改成 &lt;code&gt;-c 8192&lt;/code&gt;，再尝试减小 &lt;code&gt;-b&lt;/code&gt; 和 &lt;code&gt;-ub&lt;/code&gt;。&lt;/p&gt;
&lt;p&gt;如果图片上传按钮不可用，优先检查 &lt;code&gt;--mmproj&lt;/code&gt; 路径是否正确，以及使用的 &lt;code&gt;mmproj&lt;/code&gt; 是否和模型匹配。&lt;/p&gt;
&lt;p&gt;如果模型加载后响应很慢，通常不是显卡完全没工作，而是大量权重或专家层由 CPU 与内存承担。可以观察任务管理器里的 GPU、CPU、内存和磁盘占用，判断瓶颈在哪里。&lt;/p&gt;
&lt;p&gt;如果输出格式异常，确认是否启用了 &lt;code&gt;--jinja&lt;/code&gt;，并检查当前模型是否需要对应聊天模板。&lt;/p&gt;
&lt;p&gt;如果服务启动后浏览器打不开，检查 &lt;code&gt;--host&lt;/code&gt; 和 &lt;code&gt;--port&lt;/code&gt; 设置，确认 8080 端口没有被其他程序占用。&lt;/p&gt;
&lt;h2 id=&#34;适合谁尝试&#34;&gt;适合谁尝试
&lt;/h2&gt;&lt;p&gt;这套方案适合手上已有 RTX 3070、RTX 4060 Laptop、RTX 3060 8GB 这类 8GB 显存设备，但又想尝试更大 MoE 模型的用户。&lt;/p&gt;
&lt;p&gt;它不适合追求极致速度的人。小显存运行 35B MoE 本质上是在用内存和 CPU 换显存门槛，能跑起来是一回事，是否足够流畅是另一回事。&lt;/p&gt;
&lt;p&gt;如果目标是日常高频聊天，7B、8B、14B 模型可能更舒服。如果目标是体验更大 MoE 模型、多模态能力和本地部署边界，那么 RTX 3070 8GB 加 64GB 内存仍然有尝试价值。&lt;/p&gt;
&lt;h2 id=&#34;小结&#34;&gt;小结
&lt;/h2&gt;&lt;p&gt;RTX 3070 8GB 能运行 Qwen3.6-35B-A3B 的关键，不是显存突然变大，而是 MoE 架构、GGUF 量化、llama.cpp CPU Offload 和 KV Cache 优化共同降低了门槛。&lt;/p&gt;
&lt;p&gt;这类方案最值得关注的地方，是它让旧显卡仍然能参与本地大模型实验。只要接受速度和稳定性上的取舍，8GB 显存机器也可以成为本地 AI 模型测试平台，而不只是运行小模型的入门设备。&lt;/p&gt;
</description>
        </item>
        
    </channel>
</rss>
