<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>Coding on Tarragon</title><link>https://tarrragon.github.io/blog/tags/coding/</link><description>Recent content in Coding on Tarragon</description><generator>Hugo -- gohugo.io</generator><language>zh-TW</language><copyright>Tarragon (CC BY 4.0)</copyright><lastBuildDate>Tue, 12 May 2026 00:00:00 +0000</lastBuildDate><atom:link href="https://tarrragon.github.io/blog/tags/coding/index.xml" rel="self" type="application/rss+xml"/><item><title>1.4 寫 code 場景的模型選型優先順序</title><link>https://tarrragon.github.io/blog/llm/01-local-llm-services/model-selection-priority/</link><pubDate>Mon, 11 May 2026 00:00:00 +0000</pubDate><guid>https://tarrragon.github.io/blog/llm/01-local-llm-services/model-selection-priority/</guid><description>&lt;p>裝完伺服器後，下一個決策是「該裝哪個 model」。本地 LLM 模型百百種，但寫 code 場景的真正候選名單其實很短：2026 年 5 月有四個值得認真考慮的選擇，加幾個 niche 選項。&lt;/p>
&lt;p>本章用「優先順序」而不是「對比表羅列」呈現，因為實際使用上 95% 的讀者只需要從前兩三個選一個；後面的選擇是給特定情境用的補充。先給結論再給推導，讀者可以快速看到結論、有空再回頭看為什麼。&lt;/p>
&lt;h2 id="本章目標">本章目標&lt;/h2>
&lt;p>讀完本章後，你應該能：&lt;/p>
&lt;ol>
&lt;li>對自己的 Mac 規格，立刻知道該裝哪個模型。&lt;/li>
&lt;li>理解每個模型的能力強項與適用情境。&lt;/li>
&lt;li>看到新模型發表時，知道怎麼放進這個優先順序。&lt;/li>
&lt;li>看到「最強本地模型」這類排名時、用具體任務脈絡判讀。&lt;/li>
&lt;/ol>
&lt;h2 id="優先順序總覽">優先順序總覽&lt;/h2>
&lt;p>對 32GB+ Mac 的讀者、建議的選型順序：&lt;/p>
&lt;ol>
&lt;li>&lt;strong>Gemma 4 31B &lt;a href="https://tarrragon.github.io/blog/llm/knowledge-cards/mtp/" data-link-title="Multi-Token Prediction (MTP)" data-link-desc="Google 為 Gemma 系列釋出的 speculative decoding 工程化實作">MTP&lt;/a>&lt;/strong>（首選）— 速度最快、coding 任務 MTP 加速 2 ~ 3 倍&lt;/li>
&lt;li>&lt;strong>Qwen3-Coder 30B&lt;/strong>（次選）— coding 專科、&lt;a href="https://tarrragon.github.io/blog/llm/knowledge-cards/swe-bench/" data-link-title="SWE-bench" data-link-desc="用真實 GitHub issue 量化 LLM coding 能力的 benchmark">SWE-bench&lt;/a> 表現最強的本地模型&lt;/li>
&lt;li>&lt;strong>Qwen3 14B&lt;/strong>（通用備案）— 較小較快、記憶體吃緊或要跑 long context 時切回來&lt;/li>
&lt;li>&lt;strong>gpt-oss 20B&lt;/strong>（OpenAI 開源）— 風格較像 GPT、想嘗試 OpenAI 風味時用&lt;/li>
&lt;/ol>
&lt;p>對 24GB Mac、跳過 31B、從 14B 起步。對 16GB Mac、可用模型限於 7B 或 Gemma 4 E4B、能力明顯下降、建議混用雲端。&lt;/p>
&lt;h2 id="1-gemma-4-31b-mtp日常主力首選">1. Gemma 4 31B MTP：日常主力首選&lt;/h2>
&lt;p>Gemma 4 31B MTP 在「速度 × 能力 × 工具支援」三軸取得寫 code 場景的最佳平衡、是首選的原因。Gemma 4 31B 在 SWE-bench、&lt;a href="https://github.com/openai/human-eval">HumanEval&lt;/a>（OpenAI 提供的 164 題 Python 函式補完 benchmark）等 coding benchmark 上接近 Qwen3-Coder 30B、但因為 Google 釋出官方 MTP &lt;a href="https://tarrragon.github.io/blog/llm/knowledge-cards/drafter-model/" data-link-title="Drafter Model" data-link-desc="speculative decoding 中用來快速猜未來 token 的小模型">drafter&lt;/a>、Ollama v0.23.1 一鍵整合、實際使用體感速度比 Qwen3-Coder 30B 快 2 ~ 3 倍（同硬體、同任務）。&lt;/p>
&lt;p>&lt;strong>Ollama tag&lt;/strong>：&lt;code>gemma4:31b-coding-mtp-bf16&lt;/code>&lt;/p>
&lt;p>&lt;strong>記憶體需求&lt;/strong>：~18GB（含 drafter），32GB Mac 順暢、24GB Mac 吃緊。&lt;/p>
&lt;p>&lt;strong>能力範圍&lt;/strong>：&lt;/p>
&lt;ul>
&lt;li>簡單 function 補完、改寫、加 type：強&lt;/li>
&lt;li>寫 unit test、寫 docstring：強&lt;/li>
&lt;li>解釋程式碼、提建議：中強&lt;/li>
&lt;li>跨檔案重構：中等（仍輸雲端旗艦）&lt;/li>
&lt;li>跟你討論架構設計：中等（會給合理方向但深度有限）&lt;/li>
&lt;li>多步驟 agent 規劃：弱（雲端旗艦領先明顯）&lt;/li>
&lt;/ul>
&lt;p>&lt;strong>為什麼選它而不是 Qwen3-Coder 30B&lt;/strong>：MTP 加速在寫 code 場景太明顯。Qwen3-Coder 在 benchmark 上略強，但實際工作流的「等模型回應」時間差會抵消那點 benchmark 差距。除非你的任務剛好命中 Qwen3-Coder 強過 Gemma 4 的部分（後面會說），Gemma 4 是更穩的預設。&lt;/p>
&lt;h2 id="2-qwen3-coder-30bcoding-專科">2. Qwen3-Coder 30B：coding 專科&lt;/h2>
&lt;p>Qwen3-Coder 30B 是「benchmark 最強、速度次之」的本地 coding 模型、做為 benchmark 敏感工作流的次選。Qwen3-Coder 在 SWE-bench Verified（OpenAI 篩過的高品質子集、500 題）上達 77.2 分（2026 年 4 月 Alibaba 釋出時的公開數據）、是本地模型中 coding 表現最強的。對「複雜程式碼任務、不在乎速度差一倍」的使用者、這是更好的選擇。&lt;/p></description><content:encoded><![CDATA[<p>裝完伺服器後，下一個決策是「該裝哪個 model」。本地 LLM 模型百百種，但寫 code 場景的真正候選名單其實很短：2026 年 5 月有四個值得認真考慮的選擇，加幾個 niche 選項。</p>
<p>本章用「優先順序」而不是「對比表羅列」呈現，因為實際使用上 95% 的讀者只需要從前兩三個選一個；後面的選擇是給特定情境用的補充。先給結論再給推導，讀者可以快速看到結論、有空再回頭看為什麼。</p>
<h2 id="本章目標">本章目標</h2>
<p>讀完本章後，你應該能：</p>
<ol>
<li>對自己的 Mac 規格，立刻知道該裝哪個模型。</li>
<li>理解每個模型的能力強項與適用情境。</li>
<li>看到新模型發表時，知道怎麼放進這個優先順序。</li>
<li>看到「最強本地模型」這類排名時、用具體任務脈絡判讀。</li>
</ol>
<h2 id="優先順序總覽">優先順序總覽</h2>
<p>對 32GB+ Mac 的讀者、建議的選型順序：</p>
<ol>
<li><strong>Gemma 4 31B <a href="/blog/llm/knowledge-cards/mtp/" data-link-title="Multi-Token Prediction (MTP)" data-link-desc="Google 為 Gemma 系列釋出的 speculative decoding 工程化實作">MTP</a></strong>（首選）— 速度最快、coding 任務 MTP 加速 2 ~ 3 倍</li>
<li><strong>Qwen3-Coder 30B</strong>（次選）— coding 專科、<a href="/blog/llm/knowledge-cards/swe-bench/" data-link-title="SWE-bench" data-link-desc="用真實 GitHub issue 量化 LLM coding 能力的 benchmark">SWE-bench</a> 表現最強的本地模型</li>
<li><strong>Qwen3 14B</strong>（通用備案）— 較小較快、記憶體吃緊或要跑 long context 時切回來</li>
<li><strong>gpt-oss 20B</strong>（OpenAI 開源）— 風格較像 GPT、想嘗試 OpenAI 風味時用</li>
</ol>
<p>對 24GB Mac、跳過 31B、從 14B 起步。對 16GB Mac、可用模型限於 7B 或 Gemma 4 E4B、能力明顯下降、建議混用雲端。</p>
<h2 id="1-gemma-4-31b-mtp日常主力首選">1. Gemma 4 31B MTP：日常主力首選</h2>
<p>Gemma 4 31B MTP 在「速度 × 能力 × 工具支援」三軸取得寫 code 場景的最佳平衡、是首選的原因。Gemma 4 31B 在 SWE-bench、<a href="https://github.com/openai/human-eval">HumanEval</a>（OpenAI 提供的 164 題 Python 函式補完 benchmark）等 coding benchmark 上接近 Qwen3-Coder 30B、但因為 Google 釋出官方 MTP <a href="/blog/llm/knowledge-cards/drafter-model/" data-link-title="Drafter Model" data-link-desc="speculative decoding 中用來快速猜未來 token 的小模型">drafter</a>、Ollama v0.23.1 一鍵整合、實際使用體感速度比 Qwen3-Coder 30B 快 2 ~ 3 倍（同硬體、同任務）。</p>
<p><strong>Ollama tag</strong>：<code>gemma4:31b-coding-mtp-bf16</code></p>
<p><strong>記憶體需求</strong>：~18GB（含 drafter），32GB Mac 順暢、24GB Mac 吃緊。</p>
<p><strong>能力範圍</strong>：</p>
<ul>
<li>簡單 function 補完、改寫、加 type：強</li>
<li>寫 unit test、寫 docstring：強</li>
<li>解釋程式碼、提建議：中強</li>
<li>跨檔案重構：中等（仍輸雲端旗艦）</li>
<li>跟你討論架構設計：中等（會給合理方向但深度有限）</li>
<li>多步驟 agent 規劃：弱（雲端旗艦領先明顯）</li>
</ul>
<p><strong>為什麼選它而不是 Qwen3-Coder 30B</strong>：MTP 加速在寫 code 場景太明顯。Qwen3-Coder 在 benchmark 上略強，但實際工作流的「等模型回應」時間差會抵消那點 benchmark 差距。除非你的任務剛好命中 Qwen3-Coder 強過 Gemma 4 的部分（後面會說），Gemma 4 是更穩的預設。</p>
<h2 id="2-qwen3-coder-30bcoding-專科">2. Qwen3-Coder 30B：coding 專科</h2>
<p>Qwen3-Coder 30B 是「benchmark 最強、速度次之」的本地 coding 模型、做為 benchmark 敏感工作流的次選。Qwen3-Coder 在 SWE-bench Verified（OpenAI 篩過的高品質子集、500 題）上達 77.2 分（2026 年 4 月 Alibaba 釋出時的公開數據）、是本地模型中 coding 表現最強的。對「複雜程式碼任務、不在乎速度差一倍」的使用者、這是更好的選擇。</p>
<p><strong>Ollama tag</strong>：<code>qwen3-coder:30b</code></p>
<p><strong>記憶體需求</strong>：~18 ~ 20GB，32GB Mac 順暢。</p>
<p><strong>Qwen3-Coder 30B 強項</strong>（JSON 結構穩定 / SQL Rust Go / 200+ 行 code / 演算法題）：</p>
<ul>
<li>需要嚴格遵循 prompt 結構（例如要求輸出 JSON）— Qwen3-Coder 較穩定</li>
<li>需要寫 SQL、Rust、Go 等較少見語言 — 訓練資料較多</li>
<li>需要產出較長 code（200+ 行）— 比較不容易在中段失控</li>
<li>需要解 leetcode 風格演算法題（注重題目模式 + 標準解）— benchmark 強項</li>
</ul>
<p><strong>為什麼不是首選</strong>：MTP 加速目前限於 Gemma 4 官方 drafter、Qwen3-Coder 還沒有對應的官方 drafter（2026 年 5 月）。生字速度明顯慢於 Gemma 4 31B MTP、體感等候時間長。</p>
<h2 id="3-qwen3-14b通用備案">3. Qwen3 14B：通用備案</h2>
<p>Qwen3 14B 是 32GB Mac 想留記憶體餘裕（多 model 並存、長 <a href="/blog/llm/knowledge-cards/kv-cache/" data-link-title="KV Cache" data-link-desc="已處理 token 的 attention 中間結果暫存：避免重算、加速後續生成">KV cache</a>、其他重 app）時的合理「降一級」選擇。能力較弱但記憶體佔用減半。</p>
<p><strong>Ollama tag</strong>：<code>qwen3:14b</code></p>
<p><strong>記憶體需求</strong>：~10GB，24GB Mac 順暢、32GB Mac 留更多空間給 IDE 與系統。</p>
<p><strong>能力範圍</strong>：</p>
<ul>
<li>簡單 function 補完、加 type：尚可</li>
<li>解釋程式碼：尚可</li>
<li>寫 unit test：有時會錯</li>
<li>跨檔案重構：明顯弱於 31B 等級</li>
<li>複雜推理：明顯弱</li>
</ul>
<p><strong>主要使用情境</strong>：</p>
<ol>
<li>24GB Mac 的預設選擇。</li>
<li>32GB Mac 但想留記憶體給其他重 app（如同時跑 Docker、跑大型測試）。</li>
<li>Tab autocomplete 的小模型（搭配主對話 31B 模型）。</li>
<li>長 context 場景（KV cache 佔用較少）。</li>
</ol>
<h2 id="4-gpt-oss-20bopenai-開源版">4. gpt-oss 20B：OpenAI 開源版</h2>
<p>gpt-oss 20B 是 OpenAI 在 2025 年釋出的開源模型、風格較接近 GPT 系列、定位是「習慣 GPT 語感的使用者」的補充選項。如果你已經很習慣 GPT 的回答方式、這個模型的「語感」會比 Gemma 或 Qwen 親切。</p>
<p><strong>Ollama tag</strong>：<code>gpt-oss:20b</code></p>
<p><strong>記憶體需求</strong>：~12GB，24GB Mac 起點可跑。</p>
<p><strong>能力範圍</strong>：</p>
<ul>
<li>coding 表現中等，輸 Gemma 4 31B、Qwen3-Coder 30B。</li>
<li>一般對話、解釋、寫作風格較 polished。</li>
<li>Tool use 支援較好（OpenAI 自家生態的優勢）。</li>
</ul>
<p><strong>主要使用情境</strong>：</p>
<ol>
<li>你已習慣 GPT 風格、不想換語感。</li>
<li>寫 code + 一般對話混用（一般對話 gpt-oss 較自然）。</li>
<li>24GB Mac 的進階選擇（比 Qwen3 14B 大、能力強，比 Gemma 4 31B 小、塞得進）。</li>
</ol>
<h2 id="16gb-mac-的選擇">16GB Mac 的選擇</h2>
<p>16GB Mac 是現實上的最小可用配置。能跑的選擇：</p>
<table>
  <thead>
      <tr>
          <th>模型</th>
          <th>Ollama tag</th>
          <th>體感</th>
      </tr>
  </thead>
  <tbody>
      <tr>
          <td>Gemma 4 E4B</td>
          <td><code>gemma4:e4b</code></td>
          <td>寫 code 勉強堪用、明顯弱於 14B 級</td>
      </tr>
      <tr>
          <td>Qwen3 7B</td>
          <td><code>qwen3:7b</code></td>
          <td>跟 E4B 類似</td>
      </tr>
      <tr>
          <td>Llama 3.2 8B</td>
          <td><code>llama3.2:8b</code></td>
          <td>通用任務尚可，coding 較弱</td>
      </tr>
  </tbody>
</table>
<p>實話：16GB Mac 跑這些模型只能做「簡單補完、解釋短段程式碼」、比較複雜的任務還是要切雲端。如果你想以本地 LLM 為主力寫 code、16GB 不在本指南推薦範圍；建議混用雲端、或評估升級到 24GB+ Mac。</p>
<h2 id="48gb-mac-的選擇">48GB+ Mac 的選擇</h2>
<p>48GB 以上記憶體可以跑更大模型，但邊際效益要考慮。可用選擇：</p>
<table>
  <thead>
      <tr>
          <th>模型</th>
          <th>Ollama tag</th>
          <th>記憶體</th>
          <th>體感</th>
      </tr>
  </thead>
  <tbody>
      <tr>
          <td>Qwen3-Coder 32B Q5</td>
          <td><code>qwen3-coder:32b-q5_K_M</code></td>
          <td>~22GB</td>
          <td>比 Q4 略強，差異不大</td>
      </tr>
      <tr>
          <td>Llama 3.3 70B Q4</td>
          <td><code>llama3.3:70b</code></td>
          <td>~42GB</td>
          <td>通用能力強，但 coding 不一定超越 31B</td>
      </tr>
      <tr>
          <td>Qwen3-Coder 32B bf16</td>
          <td><code>qwen3-coder:32b-bf16</code></td>
          <td>~64GB</td>
          <td>64GB Mac 才行，接近 GPT-4 mini</td>
      </tr>
  </tbody>
</table>
<p>48GB Mac 的主要收益不是「跑得到更大模型」，而是「同時跑兩個 model」或「長 context 不卡」。例如同時跑 31B 主對話 + 4B autocomplete + 留空間給 IDE。</p>
<h2 id="判斷新模型是否值得換的步驟">判斷新模型是否值得換的步驟</h2>
<p>本地模型發布速度很快、每 2 ~ 3 個月會有新候選。判斷要不要換的步驟：</p>
<ol>
<li><strong>看 <a href="/blog/llm/knowledge-cards/swe-bench/" data-link-title="SWE-bench" data-link-desc="用真實 GitHub issue 量化 LLM coding 能力的 benchmark">SWE-bench</a> Verified 分數</strong>：新模型在 SWE-bench Verified 上比現用模型高 5 分以上、值得試。</li>
<li><strong>看模型大小與記憶體預算</strong>：新模型大小落在 Mac 預算內、再進入下一步評估。</li>
<li><strong>看 <a href="/blog/llm/knowledge-cards/speculative-decoding/" data-link-title="Speculative Decoding" data-link-desc="用小模型猜未來 token、大模型並行驗證的加速技巧">speculative decoding</a> 支援</strong>：有 <a href="/blog/llm/knowledge-cards/drafter-model/" data-link-title="Drafter Model" data-link-desc="speculative decoding 中用來快速猜未來 token 的小模型">drafter</a> 的新模型在體感速度上常勝過稍強但沒加速的模型。</li>
<li><strong>用自己的 5 ~ 10 個日常任務當私人 benchmark</strong>：公開 benchmark 是參考、自己跑一遍才能拿到能用在自己場景的數字。</li>
<li><strong>看 Ollama / LM Studio 的 release notes</strong>：新模型要被伺服器支援、Ollama registry 已收錄的模型用起來最直接。</li>
</ol>
<p>合理的更換節奏是一年 2 ~ 3 次主力模型。每換一次要重新適應它的語感、prompt 風格、體感速度、切換成本不算低；穩定下來再換、收益比追新發布每個都試大。</p>
<h2 id="量化等級的選擇">量化等級的選擇</h2>
<p>對所有模型，量化等級的選擇大致一致：</p>
<table>
  <thead>
      <tr>
          <th>量化等級</th>
          <th>建議使用情境</th>
      </tr>
  </thead>
  <tbody>
      <tr>
          <td>Q8 / bf16</td>
          <td>32GB+ Mac、品質敏感任務、能塞得進就用</td>
      </tr>
      <tr>
          <td>Q5_K_M</td>
          <td>24GB Mac 跑 14B 模型；32GB Mac 跑 31B（記憶體稍緊）</td>
      </tr>
      <tr>
          <td>Q4_K_M</td>
          <td><strong>主流甜蜜點</strong>。32GB Mac 跑 31B Q4 是 2026 年最佳價格效能比</td>
      </tr>
      <tr>
          <td>Q3</td>
          <td>寫 code 場景品質下降明顯、慎用、見下方判讀</td>
      </tr>
  </tbody>
</table>
<p>量化等級的延伸判讀：</p>
<ul>
<li><strong>Q8 / bf16 的回退條件</strong>：模型載入時 swap 到 SSD（生字速度掉一個量級）就要往下降一級。</li>
<li><strong>Q5_K_M 的回退條件</strong>：載入後 KV cache 跟 IDE 一起擠到記憶體上限、改 Q4_K_M。</li>
<li><strong>Q4_K_M 的回退條件</strong>：跑 coding 任務通過率明顯下降（基準 vs Q5 / Q8 下降 10% 以上）就換較小模型的 Q5、不再下降到 Q3。</li>
<li><strong>Q3 的觸發訊號</strong>：hallucination 上升、編造 API、長 context 累積誤差。寫 code 場景的具體判讀：Q3 31B 在 coding 任務上常輸給 Q5 14B、選 model size 時先看任務通過率、再用量化調記憶體、不是反過來。</li>
</ul>
<h2 id="適合寫-code-以外場景的模型">適合寫 code 以外場景的模型</h2>
<p>以下五類模型各自有專屬定位、跟「寫 code 主力」是不同的工作流；放在寫 code 主力位置會踩到能力錯位。每類各自有不同的判讀條件、用同一個欄位塞會遺失各自的失敗模式。</p>
<h3 id="llama-3x-base-等-base-model">Llama 3.x base 等 base model</h3>
<p><a href="/blog/llm/knowledge-cards/base-model/" data-link-title="Base Model" data-link-desc="未經指令微調的原始模型：擅長文字接龍、適合下游微調用途">Base model</a> 是純粹做下一個 token 預測訓練、沒做 <a href="/blog/llm/knowledge-cards/instruction-tuned/" data-link-title="Instruction-Tuned Model" data-link-desc="經過指令微調的模型：會跟著 prompt 走、回答使用者問題">instruction-tuning</a> 的原始模型。直接拿來對話會跟著 prompt 隨機接龍、不會「回答你的問題」。適合下游 fine-tuning 跟研究；寫 code 場景改選同 family 的 instruction-tuned 版本（例如 <code>llama3.3:70b-instruct</code> 而不是 <code>llama3.3:70b</code>）。</p>
<h3 id="純對話模型vicunachatglm-早期等">純對話模型（Vicuna、ChatGLM 早期等）</h3>
<p>純對話模型是 2023 年早期對話研究的成果、訓練資料偏自然對話、coding 表現遠輸後來的專科模型。早期教學示範或對話技術 baseline 仍會用到；現階段 coding 任務直接選 Qwen3-Coder 或 Gemma 4、不在這條路線上糾結。</p>
<h3 id="多模態模型llavagemma-4-多模態版等">多模態模型（Llava、Gemma 4 多模態版等）</h3>
<p>多模態模型訓練資料含圖片 + 文字、能做圖片理解、UI 描述、OCR、圖文對應、適合「給 LLM 看截圖」這類工作流。寫 code 場景如果不需要看圖、改選同等級的純文字模型較省記憶體（多模態的 vision tower 佔額外 GB 級記憶體、純文字 coding 用不到）。</p>
<h3 id="中文特化模型">中文特化模型</h3>
<p>中文特化模型在純中文寫作、客服場景表現好、但 coding 仍以英文 prompt + 英文 code comment 為主流。寫 code 用通用模型 + 英文 prompt 通常表現較穩、中文特化模型反而在英文程式碼相關任務上劣勢。除非工作流真的有大量中文 docstring / 註解需求、否則用通用模型。</p>
<h3 id="最新最強測試模型">「最新最強」測試模型</h3>
<p>社群每週都有新模型釋出、號稱「跑分爆表」。日常主力建議等社群驗證 1 ~ 2 個月再採用、避免出「benchmark 強但 prompt 適應性差」「prompt 模板未進入主流工具預設」的事故。嘗鮮跟跑分是另一條工作流、用 LM Studio 探索性測試後再決定是否切主力。</p>
<h2 id="模型不只-chat還有-embedding">模型不只 chat、還有 embedding</h2>
<p>Continue.dev 的 codebase 索引功能要用 embedding model，這跟 chat model 是兩種不同的模型。常用 embedding：</p>





<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="ln">1</span><span class="cl">ollama pull nomic-embed-text</span></span></code></pre></div><p><code>nomic-embed-text</code> 約 274MB，記憶體佔用低，是 Continue.dev codebase 索引的好搭檔。其他選項：</p>
<table>
  <thead>
      <tr>
          <th>Embedding 模型</th>
          <th>大小</th>
          <th>用途</th>
      </tr>
  </thead>
  <tbody>
      <tr>
          <td><code>nomic-embed-text</code></td>
          <td>274MB</td>
          <td>主流選擇，英文為主</td>
      </tr>
      <tr>
          <td><code>mxbai-embed-large</code></td>
          <td>670MB</td>
          <td>較強的英文 embedding</td>
      </tr>
      <tr>
          <td><code>bge-m3</code></td>
          <td>1.2GB</td>
          <td>多語言（含中文）embedding</td>
      </tr>
  </tbody>
</table>
<p>Embedding 模型的選擇對 codebase 搜尋品質有影響，但邊際效益遠小於 chat model。先用預設 <code>nomic-embed-text</code>，有需求再換。</p>
<h2 id="何時不適用本章優先順序">何時不適用本章優先順序</h2>
<p>本章選型假設「Apple Silicon Mac + 寫 code 為主 + 個人使用」。以下情境的選型邏輯不同、需要另外的判讀路徑：</p>
<table>
  <thead>
      <tr>
          <th>情境</th>
          <th>該往哪去</th>
      </tr>
  </thead>
  <tbody>
      <tr>
          <td>Windows / Linux + 獨立 GPU</td>
          <td>模組五 <a href="/blog/llm/05-discrete-gpu/vram-ram-budget/" data-link-title="5.0 VRAM &#43; RAM 分層預算" data-link-desc="PC 獨立 GPU 場景的記憶體預算判讀：VRAM 是快的世界、RAM 是大的世界、PCIe 把兩個世界連起來">VRAM + RAM 分層預算</a> — VRAM 限制 + MoE CPU 卸載決定選型</td>
      </tr>
      <tr>
          <td>需要 vision / multimodal</td>
          <td>改用多模態模型（如 Gemma 4 多模態版）、本章選型只覆蓋純文字 coding</td>
      </tr>
      <tr>
          <td>離線部署到生產（不接個人 Mac）</td>
          <td>考慮 vLLM、TGI 等資料中心 inference server、本章假設個人桌機推論</td>
      </tr>
      <tr>
          <td>訓練 / fine-tune 為主</td>
          <td>模組三 <a href="/blog/llm/03-theoretical-foundations/training-pipeline/" data-link-title="3.4 訓練流程：pre-train → SFT → RLHF" data-link-desc="LLM 的三階段訓練：預訓練、指令微調、人類反饋強化學習；各階段目標與最新替代方案">訓練流程</a>、推論優先順序不適用</td>
      </tr>
      <tr>
          <td>非英文工作流 / 中文寫作為主</td>
          <td>中文特化模型（DeepSeek、Yi 等）、本章 coding 場景以英文 prompt 為基準</td>
      </tr>
      <tr>
          <td>嘗鮮 / 跑分驗證新模型</td>
          <td>用 LM Studio 探索性測試、跟本章主力選型分開、避免日常主力被新模型 churn</td>
      </tr>
  </tbody>
</table>
<h2 id="給讀者的最快決策路徑">給讀者的最快決策路徑</h2>
<p>決策表把記憶體預算跟用途摺成一張快查、依情境定位、不需要重讀整章：</p>
<table>
  <thead>
      <tr>
          <th>你的情境</th>
          <th>該裝的 model</th>
          <th>觸發回退條件</th>
      </tr>
  </thead>
  <tbody>
      <tr>
          <td>32GB+ Mac、首次本地 LLM</td>
          <td><code>gemma4:31b-coding-mtp-bf16</code></td>
          <td>跑 Qwen3-Coder 強項任務時改用下一列</td>
      </tr>
      <tr>
          <td>32GB Mac、想要 coding 最強</td>
          <td><code>qwen3-coder:30b</code>、接受速度比 Gemma 慢</td>
          <td>體感等候時間太久、退回 Gemma 4 MTP</td>
      </tr>
      <tr>
          <td>24GB Mac</td>
          <td><code>qwen3:14b</code> 或 <code>gpt-oss:20b</code></td>
          <td>任務複雜度超過 14B 上限、改混用雲端</td>
      </tr>
      <tr>
          <td>16GB Mac</td>
          <td><code>gemma4:e4b</code> 或 <code>qwen3:7b</code>、主力仍雲端</td>
          <td>跨檔案 / 多步驟任務直接切雲端</td>
      </tr>
      <tr>
          <td>48GB+ Mac、要榨乾硬體</td>
          <td><code>qwen3-coder:32b-bf16</code> 或同時跑兩個 model</td>
          <td>同時跑兩 model 時 KV cache 擠到上限、改 Q5 量化</td>
      </tr>
      <tr>
          <td>想當 codebase 搜尋用</td>
          <td>+ <code>nomic-embed-text</code>（embedding model）</td>
          <td>大型 monorepo 索引品質差、換 cloud embedding model</td>
      </tr>
      <tr>
          <td>想當 tab autocomplete 用</td>
          <td>+ <code>gemma4:e4b</code> 或 <code>qwen3:7b</code>（速度優先）</td>
          <td>autocomplete 延遲 &gt; 500ms、降到更小的 model</td>
      </tr>
  </tbody>
</table>
<p>決策表的兩個閱讀方式：先按「你的情境」找對應 model、再注意「觸發回退條件」決定何時切換到下一行。回退條件常被忽略、導致讀者在條件變化時還抱著原本的選擇。</p>
<h2 id="下一章">下一章</h2>
<p>下一章：<a href="/blog/llm/01-local-llm-services/expectation-management/" data-link-title="1.5 期望管理：本地 LLM 的擅長領域與分工" data-link-desc="本地 LLM 是免費的初階 pair programmer：辨識它的擅長領域、跟雲端旗艦做結構性分工">1.5 期望管理</a>，把本地 LLM 放在「免費的初階 pair programmer」這個正確位置，避免錯誤期待造成的挫折。</p>
]]></content:encoded></item><item><title>5.5 PC 場景的模型選型優先順序</title><link>https://tarrragon.github.io/blog/llm/05-discrete-gpu/model-selection-priority-pc/</link><pubDate>Tue, 12 May 2026 00:00:00 +0000</pubDate><guid>https://tarrragon.github.io/blog/llm/05-discrete-gpu/model-selection-priority-pc/</guid><description>&lt;p>跑穩 &lt;a href="https://tarrragon.github.io/blog/llm/knowledge-cards/inference-server/" data-link-title="Inference Server" data-link-desc="載入模型權重、處理 prompt、產生 token 的常駐 process">推論伺服器&lt;/a> 後、下一個決策是「該裝哪個模型」。PC 場景的選型有 Mac 沒有的變數：&lt;a href="https://tarrragon.github.io/blog/llm/knowledge-cards/moe/" data-link-title="Mixture of Experts (MoE)" data-link-desc="把 transformer 的 FFN 層拆成多個專家、每 token 只啟用少數、總參數大但每 token 計算量小的架構">MoE&lt;/a> 模型搭配 &lt;a href="https://tarrragon.github.io/blog/llm/knowledge-cards/moe-cpu-offload/" data-link-title="MoE CPU 卸載" data-link-desc="把 Mixture-of-Experts 模型不活躍的專家層權重放在系統 RAM、用到再走 PCIe 拉回 GPU、讓有限 VRAM 跑得了更大模型">CPU 卸載&lt;/a> 讓「同樣 16GB &lt;a href="https://tarrragon.github.io/blog/llm/knowledge-cards/vram/" data-link-title="VRAM" data-link-desc="顯卡上的記憶體、跟系統 RAM 是兩塊獨立預算、決定能載入多大模型權重跟 KV cache">VRAM&lt;/a>、要全載 14B Dense 還是卸載 30B MoE」變成主要取捨；MoE 的核心判讀軸是 &lt;a href="https://tarrragon.github.io/blog/llm/knowledge-cards/active-parameter/" data-link-title="Active Parameter" data-link-desc="MoE 模型每生成一個 token 實際參與計算的參數量、跟模型總參數量不同、影響推論速度上限">active parameter&lt;/a> 比例。本章用優先順序而不是對比表羅列、依不同 VRAM 容量給出社群常見的候選清單與適用情境。模型檔案格式以 &lt;a href="https://tarrragon.github.io/blog/llm/knowledge-cards/gguf/" data-link-title="GGUF" data-link-desc="llama.cpp 生態定義的模型權重格式：把權重、tokenizer、metadata 打包成單一檔案">GGUF&lt;/a> 為主、各等級的 &lt;a href="https://tarrragon.github.io/blog/llm/knowledge-cards/quantization/" data-link-title="Quantization" data-link-desc="用較少 bits 表示模型權重：壓縮記憶體佔用、加快生字速度，代價是少量品質衰減">量化&lt;/a> 版本是選型的第二軸；coding 能力評估的常見參考是 &lt;a href="https://tarrragon.github.io/blog/llm/knowledge-cards/swe-bench/" data-link-title="SWE-bench" data-link-desc="用真實 GitHub issue 量化 LLM coding 能力的 benchmark">SWE-bench&lt;/a> 等公開 benchmark；模型來源信任的判讀見 &lt;a href="https://tarrragon.github.io/blog/llm/knowledge-cards/model-card/" data-link-title="Model Card" data-link-desc="Hugging Face 等平台上模型的 metadata 文件、列出模型來源、訓練資料、能力、限制、授權">model card&lt;/a>。&lt;/p>
&lt;blockquote>
&lt;p>&lt;strong>事實查核註&lt;/strong>：本章引用的模型名稱、能力等級、量化版本以 2026 年 5 月的社群可用資源為基準。模型發布速度快、3 ~ 6 個月後可能有新候選、本章建議用具體版本日期跟對應的官方 model card / 技術報告校準。&lt;/p>&lt;/blockquote>
&lt;h2 id="本章目標">本章目標&lt;/h2>
&lt;ol>
&lt;li>認識 PC 場景特有的「全載 Dense vs 卸載 MoE」選型軸。&lt;/li>
&lt;li>知道不同 VRAM 容量對應的候選模型清單。&lt;/li>
&lt;li>區分「coding 專用模型」跟「通用模型」對寫 code 任務的差異。&lt;/li>
&lt;li>知道量化版本的取捨（Q4_K_M / Q5_K_M / Q6_K 的選擇）。&lt;/li>
&lt;li>認識選型決策的觀察期跟換模型的時機。&lt;/li>
&lt;/ol>
&lt;h2 id="pc-場景特有的選型軸">PC 場景特有的選型軸&lt;/h2>
&lt;p>Mac 統一記憶體場景下、選型主要看「能不能塞進記憶體」。PC 場景多了 MoE 卸載這個變數、變成三軸選型：&lt;/p>





&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-text" data-lang="text">&lt;span class="line">&lt;span class="ln">1&lt;/span>&lt;span class="cl">選型三軸：
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="ln">2&lt;/span>&lt;span class="cl">├── VRAM 是否能全載 → 決定是否需要卸載
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="ln">3&lt;/span>&lt;span class="cl">├── MoE vs Dense → 決定卸載的代價大小
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="ln">4&lt;/span>&lt;span class="cl">└── coding vs 通用 → 決定能力對寫 code 任務的契合度&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>兩條典型路線（同樣 16GB VRAM）：&lt;/p>
&lt;table>
 &lt;thead>
 &lt;tr>
 &lt;th>路線&lt;/th>
 &lt;th>範例模型&lt;/th>
 &lt;th>優勢&lt;/th>
 &lt;th>代價&lt;/th>
 &lt;/tr>
 &lt;/thead>
 &lt;tbody>
 &lt;tr>
 &lt;td>全載 14B Dense&lt;/td>
 &lt;td>Qwen3 14B、CodeLlama 13B、DeepSeek-Coder-V2 16B&lt;/td>
 &lt;td>生字速度上限高、Latency 較穩&lt;/td>
 &lt;td>模型能力 14B 級、跨檔案任務成功率較低&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>卸載 30B MoE&lt;/td>
 &lt;td>Qwen3-30B-A3B、Llama 4 Scout&lt;/td>
 &lt;td>模型能力 30B 級、長 context 友善&lt;/td>
 &lt;td>生字速度低於全載、對 RAM 容量有較高要求&lt;/td>
 &lt;/tr>
 &lt;/tbody>
&lt;/table>
&lt;p>社群多數寫 code 場景的回報傾向「卸載 30B MoE 對任務成敗的幫助大於速度損失」、但工作流以高頻短補完為主的使用者、有時偏好全載 14B Dense 的速度。實際取捨需用自己的工作流任務校準。&lt;/p>
&lt;h2 id="16gb-vram--64gb-ram-的候選清單">16GB VRAM + 64GB RAM 的候選清單&lt;/h2>
&lt;p>這是 2026 年 5 月 PC 場景最常被討論的配置、對應幾個主要候選：&lt;/p></description><content:encoded><![CDATA[<p>跑穩 <a href="/blog/llm/knowledge-cards/inference-server/" data-link-title="Inference Server" data-link-desc="載入模型權重、處理 prompt、產生 token 的常駐 process">推論伺服器</a> 後、下一個決策是「該裝哪個模型」。PC 場景的選型有 Mac 沒有的變數：<a href="/blog/llm/knowledge-cards/moe/" data-link-title="Mixture of Experts (MoE)" data-link-desc="把 transformer 的 FFN 層拆成多個專家、每 token 只啟用少數、總參數大但每 token 計算量小的架構">MoE</a> 模型搭配 <a href="/blog/llm/knowledge-cards/moe-cpu-offload/" data-link-title="MoE CPU 卸載" data-link-desc="把 Mixture-of-Experts 模型不活躍的專家層權重放在系統 RAM、用到再走 PCIe 拉回 GPU、讓有限 VRAM 跑得了更大模型">CPU 卸載</a> 讓「同樣 16GB <a href="/blog/llm/knowledge-cards/vram/" data-link-title="VRAM" data-link-desc="顯卡上的記憶體、跟系統 RAM 是兩塊獨立預算、決定能載入多大模型權重跟 KV cache">VRAM</a>、要全載 14B Dense 還是卸載 30B MoE」變成主要取捨；MoE 的核心判讀軸是 <a href="/blog/llm/knowledge-cards/active-parameter/" data-link-title="Active Parameter" data-link-desc="MoE 模型每生成一個 token 實際參與計算的參數量、跟模型總參數量不同、影響推論速度上限">active parameter</a> 比例。本章用優先順序而不是對比表羅列、依不同 VRAM 容量給出社群常見的候選清單與適用情境。模型檔案格式以 <a href="/blog/llm/knowledge-cards/gguf/" data-link-title="GGUF" data-link-desc="llama.cpp 生態定義的模型權重格式：把權重、tokenizer、metadata 打包成單一檔案">GGUF</a> 為主、各等級的 <a href="/blog/llm/knowledge-cards/quantization/" data-link-title="Quantization" data-link-desc="用較少 bits 表示模型權重：壓縮記憶體佔用、加快生字速度，代價是少量品質衰減">量化</a> 版本是選型的第二軸；coding 能力評估的常見參考是 <a href="/blog/llm/knowledge-cards/swe-bench/" data-link-title="SWE-bench" data-link-desc="用真實 GitHub issue 量化 LLM coding 能力的 benchmark">SWE-bench</a> 等公開 benchmark；模型來源信任的判讀見 <a href="/blog/llm/knowledge-cards/model-card/" data-link-title="Model Card" data-link-desc="Hugging Face 等平台上模型的 metadata 文件、列出模型來源、訓練資料、能力、限制、授權">model card</a>。</p>
<blockquote>
<p><strong>事實查核註</strong>：本章引用的模型名稱、能力等級、量化版本以 2026 年 5 月的社群可用資源為基準。模型發布速度快、3 ~ 6 個月後可能有新候選、本章建議用具體版本日期跟對應的官方 model card / 技術報告校準。</p></blockquote>
<h2 id="本章目標">本章目標</h2>
<ol>
<li>認識 PC 場景特有的「全載 Dense vs 卸載 MoE」選型軸。</li>
<li>知道不同 VRAM 容量對應的候選模型清單。</li>
<li>區分「coding 專用模型」跟「通用模型」對寫 code 任務的差異。</li>
<li>知道量化版本的取捨（Q4_K_M / Q5_K_M / Q6_K 的選擇）。</li>
<li>認識選型決策的觀察期跟換模型的時機。</li>
</ol>
<h2 id="pc-場景特有的選型軸">PC 場景特有的選型軸</h2>
<p>Mac 統一記憶體場景下、選型主要看「能不能塞進記憶體」。PC 場景多了 MoE 卸載這個變數、變成三軸選型：</p>





<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-text" data-lang="text"><span class="line"><span class="ln">1</span><span class="cl">選型三軸：
</span></span><span class="line"><span class="ln">2</span><span class="cl">├── VRAM 是否能全載      → 決定是否需要卸載
</span></span><span class="line"><span class="ln">3</span><span class="cl">├── MoE vs Dense          → 決定卸載的代價大小
</span></span><span class="line"><span class="ln">4</span><span class="cl">└── coding vs 通用        → 決定能力對寫 code 任務的契合度</span></span></code></pre></div><p>兩條典型路線（同樣 16GB VRAM）：</p>
<table>
  <thead>
      <tr>
          <th>路線</th>
          <th>範例模型</th>
          <th>優勢</th>
          <th>代價</th>
      </tr>
  </thead>
  <tbody>
      <tr>
          <td>全載 14B Dense</td>
          <td>Qwen3 14B、CodeLlama 13B、DeepSeek-Coder-V2 16B</td>
          <td>生字速度上限高、Latency 較穩</td>
          <td>模型能力 14B 級、跨檔案任務成功率較低</td>
      </tr>
      <tr>
          <td>卸載 30B MoE</td>
          <td>Qwen3-30B-A3B、Llama 4 Scout</td>
          <td>模型能力 30B 級、長 context 友善</td>
          <td>生字速度低於全載、對 RAM 容量有較高要求</td>
      </tr>
  </tbody>
</table>
<p>社群多數寫 code 場景的回報傾向「卸載 30B MoE 對任務成敗的幫助大於速度損失」、但工作流以高頻短補完為主的使用者、有時偏好全載 14B Dense 的速度。實際取捨需用自己的工作流任務校準。</p>
<h2 id="16gb-vram--64gb-ram-的候選清單">16GB VRAM + 64GB RAM 的候選清單</h2>
<p>這是 2026 年 5 月 PC 場景最常被討論的配置、對應幾個主要候選：</p>
<h3 id="候選一qwen3-30b-a3bmoe卸載">候選一：Qwen3-30B-A3B（MoE、卸載）</h3>
<p><strong>模型定位</strong>：MoE 架構、總參數約 30B、active parameter 約 3B、coding / 通用混合訓練。</p>
<p><strong>啟動旗標起點</strong>（GGUF Q4_K_M、需配合 <a href="/blog/llm/05-discrete-gpu/moe-cpu-offload-strategy/" data-link-title="5.1 MoE 模型與 CPU 卸載策略" data-link-desc="PC 場景把 MoE 不活躍專家層留在系統 RAM 的判讀：何時值得卸載、卸幾層、對 prefill 跟生成的影響各自不同">5.1</a>）：</p>





<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="ln">1</span><span class="cl">llama-server -m Qwen3-30B-A3B-Q4_K_M.gguf <span class="se">\
</span></span></span><span class="line"><span class="ln">2</span><span class="cl"><span class="se"></span>  -ngl <span class="m">99</span> --n-cpu-moe <span class="m">30</span> <span class="se">\
</span></span></span><span class="line"><span class="ln">3</span><span class="cl"><span class="se"></span>  --cache-type-k q8_0 --cache-type-v q4_0 -fa <span class="se">\
</span></span></span><span class="line"><span class="ln">4</span><span class="cl"><span class="se"></span>  -c <span class="m">32768</span></span></span></code></pre></div><p><strong>主要使用情境</strong>：</p>
<ol>
<li>跨檔案重構、需要理解較多上下文的任務。</li>
<li>長 context 場景（RAG、大型 codebase 索引）。</li>
<li>中文 + 英文混合的 prompt。</li>
</ol>
<h3 id="候選二qwen3-14bdense全載">候選二：Qwen3 14B（Dense、全載）</h3>
<p><strong>模型定位</strong>：Dense 架構、14B 參數、通用 + coding 混合訓練。</p>
<p><strong>啟動旗標起點</strong>：</p>





<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="ln">1</span><span class="cl">llama-server -m Qwen3-14B-Q4_K_M.gguf <span class="se">\
</span></span></span><span class="line"><span class="ln">2</span><span class="cl"><span class="se"></span>  -ngl <span class="m">99</span> <span class="se">\
</span></span></span><span class="line"><span class="ln">3</span><span class="cl"><span class="se"></span>  --cache-type-k q8_0 --cache-type-v q8_0 -fa <span class="se">\
</span></span></span><span class="line"><span class="ln">4</span><span class="cl"><span class="se"></span>  -c <span class="m">32768</span></span></span></code></pre></div><p><strong>主要使用情境</strong>：</p>
<ol>
<li>工作流以高頻短補完為主、對生字即時體感要求高。</li>
<li>想保持較穩的 latency、避開 MoE 卸載的調參。</li>
<li>系統 RAM 只有 32GB、卸載空間有限。</li>
</ol>
<h3 id="候選三qwen3-coder-30b--codellama-13b-等-coding-專用模型">候選三：Qwen3-Coder 30B / CodeLlama 13B 等 coding 專用模型</h3>
<p><strong>模型定位</strong>：在通用訓練後、用 code corpus 做了額外的 instruction tuning 或 continued pre-training。</p>
<p><strong>社群常見回報</strong>：</p>
<ul>
<li>在「補完 / 行內編輯」這種純 code-completion 任務上、coding 專用模型通常表現較好。</li>
<li>在「需要解釋程式碼 / 設計討論」混合任務上、通用模型有時更自然。</li>
</ul>
<p><strong>選擇邏輯</strong>：若你的工作流以純補完為主、coding 專用模型是合理優先；若以 chat-based 設計討論為主、通用模型也許更合適。</p>
<h3 id="量化版本的取捨">量化版本的取捨</h3>
<p>GGUF 量化版本對同一模型的選擇：</p>
<table>
  <thead>
      <tr>
          <th>量化</th>
          <th>bits/權重</th>
          <th>適用情境</th>
      </tr>
  </thead>
  <tbody>
      <tr>
          <td>Q8_0</td>
          <td>8</td>
          <td>VRAM / RAM 充裕、想接近原始品質</td>
      </tr>
      <tr>
          <td>Q6_K</td>
          <td>6.56</td>
          <td>平衡、品質損失社群回報為輕微</td>
      </tr>
      <tr>
          <td>Q5_K_M</td>
          <td>5.5</td>
          <td>VRAM 介於 Q4 跟 Q8 之間時的選擇</td>
      </tr>
      <tr>
          <td>Q4_K_M</td>
          <td>4.5</td>
          <td>寫 code 場景的常見起點、體積 / 品質平衡</td>
      </tr>
      <tr>
          <td>Q3_K_M</td>
          <td>3.5</td>
          <td>VRAM 緊張時退一步、品質衰減社群回報為明顯</td>
      </tr>
  </tbody>
</table>
<p><strong>選擇邏輯</strong>：先用 Q4_K_M 起步、若品質符合需求且 VRAM 有餘量、可試 Q5 / Q6；若 VRAM 不足、優先考慮「換小一級的模型 + Q5/Q6」而非「同模型 + Q3」、因為品質衰減在小模型上較易感知。</p>
<h2 id="24gb-vram-的候選清單">24GB VRAM 的候選清單</h2>
<p>24GB VRAM（如 RTX 4090、RTX 3090）能跑全載 32B Dense 或重度卸載 70B MoE：</p>
<table>
  <thead>
      <tr>
          <th>模型</th>
          <th>路線</th>
          <th>適用情境</th>
      </tr>
  </thead>
  <tbody>
      <tr>
          <td>Qwen3-32B、Qwen2.5-Coder-32B</td>
          <td>Dense 全載 Q4_K_M</td>
          <td>寫 code 場景能力較 14B 顯著提升</td>
      </tr>
      <tr>
          <td>Qwen3-30B-A3B 全載 / 輕度卸載</td>
          <td>MoE</td>
          <td>比 16GB 卸載速度快、可開更大 context</td>
      </tr>
      <tr>
          <td>Llama 3.3 70B Q3 全載 / Q4 卸載</td>
          <td>Dense + 重度卸載</td>
          <td>對能力極限有需求、可接受較慢生字</td>
      </tr>
      <tr>
          <td>DeepSeek V3 / Llama 4 Scout 卸載</td>
          <td>大型 MoE</td>
          <td>適合需要長 context + 多領域的工作流</td>
      </tr>
  </tbody>
</table>
<p>選擇邏輯：24GB 是「Dense 32B 級」跟「MoE 70B 級」的分水嶺；多數寫 code 場景在 Dense 32B 級已能勝任、再往 70B 級的邊際效益依任務變化。</p>
<h2 id="32gb-vram-的候選清單">32GB VRAM 的候選清單</h2>
<p>32GB VRAM（如 RTX 5090）能跑 70B Dense Q4 全載：</p>
<table>
  <thead>
      <tr>
          <th>模型</th>
          <th>路線</th>
          <th>適用情境</th>
      </tr>
  </thead>
  <tbody>
      <tr>
          <td>Llama 3.3 70B Q4_K_M</td>
          <td>Dense 全載</td>
          <td>通用能力強、Latency 穩定</td>
      </tr>
      <tr>
          <td>Qwen2.5-72B Q4_K_M</td>
          <td>Dense 全載</td>
          <td>中文 / 多語言場景</td>
      </tr>
      <tr>
          <td>Llama 4 Maverick 等大型 MoE</td>
          <td>MoE 全載 / 輕度卸載</td>
          <td>長 context、多任務、active parameter 友善生字速度</td>
      </tr>
  </tbody>
</table>
<p>32GB VRAM 場景下、選型回到「能力 vs 生字速度」的傳統取捨、MoE 卸載這個變數的影響相對減弱。</p>
<h2 id="8gb--12gb-vram-的候選清單">8GB / 12GB VRAM 的候選清單</h2>
<p>VRAM 較小的場景、候選清單較短：</p>
<table>
  <thead>
      <tr>
          <th>VRAM</th>
          <th>候選模型</th>
          <th>適用情境</th>
      </tr>
  </thead>
  <tbody>
      <tr>
          <td>8GB</td>
          <td>Qwen3 7B、Gemma 4 8B、Llama 3.2 8B</td>
          <td>入門體驗、補完任務尚可、跨檔案任務通常需混用雲端</td>
      </tr>
      <tr>
          <td>12GB</td>
          <td>Qwen3 14B Q4 全載、20B MoE Q4 卸載部分層</td>
          <td>介於入門跟主流之間、可選 Dense 或 MoE 起步</td>
      </tr>
  </tbody>
</table>
<p>8GB 場景下、本地 LLM 的「跑得起來但能力有限」需先設好期望、見 <a href="/blog/llm/01-local-llm-services/expectation-management/" data-link-title="1.5 期望管理：本地 LLM 的擅長領域與分工" data-link-desc="本地 LLM 是免費的初階 pair programmer：辨識它的擅長領域、跟雲端旗艦做結構性分工">1.5 期望管理</a>（跨平台共用）。</p>
<h2 id="coding-專用-vs-通用模型">coding 專用 vs 通用模型</h2>
<p>選型的另一條軸是「coding 專用模型 vs 通用模型」：</p>
<table>
  <thead>
      <tr>
          <th>維度</th>
          <th>coding 專用模型</th>
          <th>通用模型</th>
      </tr>
  </thead>
  <tbody>
      <tr>
          <td>補完 / 行內編輯品質</td>
          <td>社群多數回報較佳</td>
          <td>視具體模型而定</td>
      </tr>
      <tr>
          <td>跨檔案重構</td>
          <td>視訓練資料涵蓋程度而定</td>
          <td>大型通用模型的推理能力有時表現較好</td>
      </tr>
      <tr>
          <td>設計討論 / 解釋程式碼</td>
          <td>視訓練模式（純 completion vs instruction tuned）而定</td>
          <td>instruction tuned 的通用模型通常較自然</td>
      </tr>
      <tr>
          <td>中文 / 英文 prompt</td>
          <td>視模型語言訓練比例</td>
          <td>視模型語言訓練比例</td>
      </tr>
      <tr>
          <td>Tool use / function calling</td>
          <td>視模型是否做過對應訓練</td>
          <td>視模型是否做過對應訓練</td>
      </tr>
  </tbody>
</table>
<p><strong>選擇邏輯</strong>：純補完場景優先 coding 專用；chat-based 工作流通用模型也許更合適；多數使用者可以用兩個（一個 coding 專用 + 一個通用）、依任務切換。</p>
<h2 id="選型決策步驟">選型決策步驟</h2>
<p>實際選模型時、可以照下面的步驟：</p>
<ol>
<li><strong>盤點硬體</strong>：VRAM 容量、系統 RAM 容量、CPU 性能。</li>
<li><strong>盤點工作流</strong>：補完為主 vs 跨檔案任務為主、短 prompt 為主 vs 長 prompt 為主、純 code vs 設計討論混合。</li>
<li><strong>依 VRAM 級別查上面候選清單</strong>：選 1 ~ 2 個起點模型。</li>
<li><strong>用 Q4_K_M 量化版本起步</strong>：跑一週實測、用代表性任務記錄品質、速度、VRAM 用量。</li>
<li><strong>依瓶頸調整</strong>：
<ul>
<li>品質不夠 → 試更大模型 / 更高量化等級 / 不同訓練取向</li>
<li>速度不夠 → 試較小 Dense 全載 / 減少卸載</li>
<li>VRAM 不夠 → 加量化（Q5 → Q4）、加 MoE 卸載、量化 KV cache</li>
</ul>
</li>
<li><strong>建立可重複的校準腳本</strong>：把代表性任務寫成 prompt 集、新模型來時跑一次回歸測試。</li>
</ol>
<h2 id="觀察期與換模型時機">觀察期與換模型時機</h2>
<p>社群常見的換模型節奏：</p>
<ol>
<li><strong>新模型發布</strong>：本地 LLM 模型平均每 2 ~ 3 個月有新候選。</li>
<li><strong>觀察期</strong>：新模型剛發布時、量化版本可能不全、社群實測案例較少；建議等 2 ~ 4 週、看是否有 Q4_K_M / Q5_K_M 等常用量化、社群回報是否穩定。</li>
<li><strong>回歸測試</strong>：用自己的校準腳本跑一次、比較跟現有主力模型的品質、速度、VRAM。</li>
<li><strong>切換</strong>：明顯優於現有主力 + 校準腳本通過 + 旗標設定穩定 → 才切換。</li>
</ol>
<p>過早跳到新模型的常見代價：量化版本不穩、社群 issue 還在湧現、自己的旗標設定要從頭調。</p>
<h2 id="下一章">下一章</h2>
<p>下一章：<a href="/blog/llm/05-discrete-gpu/gpu-vendor-differences/" data-link-title="5.6 GPU 廠商差異" data-link-desc="NVIDIA CUDA、AMD ROCm、Intel ARC 在 llama.cpp 生態的相對位置、選卡時的判讀軸">5.6 GPU 廠商差異</a>、處理 NVIDIA / AMD / Intel 在 llama.cpp 生態的相對位置。</p>
]]></content:encoded></item></channel></rss>