<?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/zh-tw/tags/ai-%E6%95%99%E5%AD%B8/</link>
        <description>Recent content in AI 教學 on KnightLi的博客</description>
        <generator>Hugo -- gohugo.io</generator>
        <language>zh-tw</language>
        <lastBuildDate>Wed, 24 Jun 2026 10:07:45 +0800</lastBuildDate><atom:link href="https://knightli.com/zh-tw/tags/ai-%E6%95%99%E5%AD%B8/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/zh-tw/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/zh-tw/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>
