<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/">
<channel>
<title>MK 的 AI 筆記</title>
<link>https://mk-ai-notes.pages.dev/</link>
<description>Michael Kuo 的 AI 筆記：GitHub 飆星實測、AI 工具教學、提示詞範本、AI 時事解讀，寫給台灣上班族與一人公司、看完就能照做。</description>
<language>zh-TW</language>
<atom:link href="https://mk-ai-notes.pages.dev/feed.xml" rel="self" type="application/rss+xml"/>
<lastBuildDate>Mon, 02 Nov 2026 12:11:00 GMT</lastBuildDate>
<item>
<title>AI 為什麼變得這麼有禮貌？</title>
<link>https://mk-ai-notes.pages.dev/posts/ep11-rlhf/</link>
<guid isPermaLink="true">https://mk-ai-notes.pages.dev/posts/ep11-rlhf/</guid>
<pubDate>Mon, 02 Nov 2026 12:11:00 GMT</pubDate>
<description>先有一個會打分數的評審，再用 PPO 讓模型往高分方向修正。教程用 GPT-2 示範，讓它學會寫正面影評。</description>
<category>一人公司工作流＋學習系列</category>
<content:encoded><![CDATA[<h2 id="一句話回答">一句話回答</h2>
<p>因為模型在出廠前，被「打分數、再修正」訓練過很多輪。這種方法叫 RLHF（Reinforcement Learning from Human Feedback，人類回饋強化學習）：先有一個代表人類喜好的評審替回答打分，再用 PPO 演算法讓模型往高分方向調整。禮貌、有幫助的回答分數高，模型就慢慢變成那個樣子。</p>
<h2 id="為什麼值得知道">為什麼值得知道</h2>
<p>聊天 AI 會說「好的，我來幫你」、會婉拒危險要求，這些「個性」大多是後來調教的結果，不是預訓練自然長出來的。</p>
<p>理解 RLHF，就比較能看懂 AI 為什麼有時過度客氣、會迎合你的說法，答案常常在「評審喜歡什麼」。</p>
<h2 id="白話原理">白話原理</h2>
<p>把模型想成寫手，旁邊坐著只會打分數的編輯：寫手交稿（產生回答）、編輯打分（評審給分）、寫手依分數修正（更新模型）。重複很多次，寫手就學會寫編輯喜歡的稿子。</p>
<h3 id="ppo-的三個步驟">PPO 的三個步驟</h3>
<p>教程整理的 PPO（Proximal Policy Optimization，近端策略最佳化）流程：</p>
<div class="tablewrap"><table>
<thead>
<tr>
<th>步驟</th>
<th>英文</th>
<th>在做什麼</th>
</tr>
</thead>
<tbody><tr>
<td>1</td>
<td>Rollout（產生）</td>
<td>模型根據提問（query）產生回答（response）</td>
</tr>
<tr>
<td>2</td>
<td>Evaluation（評分）</td>
<td>用函式、模型、人類回饋或它們的組合，替每組「提問＋回答」打一個分數（單一數字）</td>
</tr>
<tr>
<td>3</td>
<td>Optimization（最佳化）</td>
<td>依分數更新模型，同時加上 KL 懲罰，避免偏離原本的模型太遠</td>
</tr>
</tbody></table>
</div><h3 id="kl-懲罰別為了分數變成怪物">KL 懲罰：別為了分數變成怪物</h3>
<p>只追求高分，寫手可能找偷吃步，例如每句都塞「太棒了」，分數很高卻不像人話。</p>
<p>KL 懲罰就是拉住它：保留一份訓練前的模型當參考，計算新舊模型的輸出差多少（KL 散度，KL divergence），差越多扣越多。模型會往高分走，但仍保有原本的語言能力。</p>
<h2 id="教程裡實際做了什麼">教程裡實際做了什麼</h2>
<p>本章改編自 Hugging Face TRL 官方範例：<strong>用 BERT 情感分類器當評審，訓練 GPT-2 寫正面的 IMDB 電影影評。</strong></p>
<p><strong>工具與素材</strong>：</p>
<ul>
<li>函式庫：Transformers、Datasets、TRL（<code>PPOTrainer</code>）、Weights &amp; Biases（記錄曲線）</li>
<li>資料集：IMDB 電影評論 5 萬則，標註正面或負面</li>
<li>要訓練的模型：<code>lvwerra/gpt2-imdb</code>（在 IMDB 多微調 1 輪的 GPT-2）</li>
<li>評審（獎勵模型）：<code>lvwerra/distilbert-imdb</code>（DistilBERT 情感分類器）</li>
</ul>
<p><strong>步驟</strong>：</p>
<ol>
<li>下載資料集與兩個模型。</li>
<li>整理資料：留下超過 200 字元的評論，隨機取開頭 2–8 個 token 當「提問」。</li>
<li>載入兩份 GPT-2：一份訓練、一份當參考模型算 KL 懲罰，模型上另加「價值頭」（value head）供 PPO 使用。</li>
<li>訓練迴圈，每一批資料做三件事：<ul>
<li>GPT-2 接著評論開頭往下寫 4–16 個 token</li>
<li>把開頭加續寫丟給 BERT，取「正面」類別的分數當獎勵</li>
<li>用（提問、回答、獎勵）呼叫 PPO 更新模型</li>
</ul>
</li>
</ol>
<p>核心那一步長這樣（摘自原教程，節錄並省略取出正面分數的幾行）：</p>
<pre><code class="language-python">texts = [q + r for q, r in zip(batch[&quot;query&quot;], batch[&quot;response&quot;])]
pipe_outputs = sentiment_pipe(texts, **sent_kwargs)
rewards = [torch.tensor(s) for s in positive_scores]
stats = ppo_trainer.step(query_tensors, response_tensors, rewards)
</code></pre>
<ol start="5">
<li>比較訓練前後：抽 16 個開頭讓兩個模型各寫一次，原文平均獎勵從約 0.59 升到約 2.24。開頭「What a terrible」，訓練前接「movie!」，訓練後卻硬轉成稱讚。</li>
<li>存下訓練好的模型。</li>
</ol>
<p><strong>硬體</strong>：原文寫明單張 NVIDIA A800（80GB）占用約 10GB 顯存，訓練約 35 分鐘。</p>
<h2 id="動手試試">動手試試</h2>
<p>這章是 RLHF 最輕量的入門範例，GPT-2 很小，門檻相對低：</p>
<ol>
<li><strong>看懂評審</strong>：先只載入 DistilBERT 情感分類器，丟幾句英文影評看分數，筆電 CPU 就能跑。</li>
<li><strong>跑完整訓練</strong>：原文約 10GB 顯存，Colab 的 GPU 有機會跑得動，但原文沒在 Colab 測過，時間也會更長。</li>
<li><strong>注意版本</strong>：教程用的是較舊的 TRL 介面（<code>ppo_trainer.step</code>），新版寫法已改，建議安裝教程 <code>requirements.txt</code> 指定的版本。</li>
<li><strong>做小實驗</strong>：把獎勵改成「負面分數」，看模型會不會變成毒舌影評人。</li>
</ol>
<h2 id="常見誤解">常見誤解</h2>
<ul>
<li><strong>「RLHF 一定要真人逐句打分」</strong>：教程的評審是分類模型；實務上常先蒐集人類偏好訓練出獎勵模型，再由它打分。</li>
<li><strong>「RLHF 讓模型變聰明」</strong>：它主要調整行為和口吻，不等於增加知識。</li>
<li><strong>「KL 懲罰是多餘的」</strong>：少了它，模型容易鑽評審漏洞，寫出高分但不自然的內容。</li>
<li><strong>「AI 有禮貌＝理解禮貌」</strong>：它學到的是「這樣說分數較高」。</li>
</ul>
<h2 id="延伸閱讀">延伸閱讀</h2>
<ul>
<li>本章原文：<a href="https://github.com/Lordog/dive-into-llms/tree/main/documents/chapter11" target="_blank" rel="noopener">https://github.com/Lordog/dive-into-llms/tree/main/documents/chapter11</a></li>
<li>TRL（Hugging Face 的強化學習訓練工具，原教程改編自它的官方 GPT-2 情感範例）：<a href="https://github.com/huggingface/trl" target="_blank" rel="noopener">https://github.com/huggingface/trl</a></li>
<li>參數來源論文《Fine-Tuning Language Models from Human Preferences》：<a href="https://huggingface.co/papers/1909.08593" target="_blank" rel="noopener">https://huggingface.co/papers/1909.08593</a></li>
</ul>
<blockquote>
<p>本文整理自上海交通大學《動手學大模型》第 11 章，原教程：<a href="https://github.com/Lordog/dive-into-llms/tree/main/documents/chapter11" target="_blank" rel="noopener">https://github.com/Lordog/dive-into-llms/tree/main/documents/chapter11</a>。內容由 MK 以自己的話解說，如有錯誤歡迎留言指正。</p>
</blockquote>
]]></content:encoded>
</item>
<item>
<title>AI 代理會不會闖禍？</title>
<link>https://mk-ai-notes.pages.dev/posts/ep10-agent-safety/</link>
<guid isPermaLink="true">https://mk-ai-notes.pages.dev/posts/ep10-agent-safety/</guid>
<pubDate>Mon, 02 Nov 2026 12:10:00 GMT</pubDate>
<description>AI 代理會動手做事，也就可能闖禍。R-Judge 測試模型能不能看出風險，結果是：看得出來，不代表判斷得對。</description>
<category>一人公司工作流＋學習系列</category>
<content:encoded><![CDATA[<h2 id="一句話回答">一句話回答</h2>
<p>會。AI 代理（Agent）能執行指令、操作檔案、上網，一旦判斷錯誤，後果不只是答錯一題。這章用 R-Judge 評測平台測試大模型「能不能看出一連串操作裡的風險」，教程裡的例子顯示：模型有時能把風險分析得頭頭是道，最後的安全判斷卻還是錯的。</p>
<h2 id="為什麼值得知道">為什麼值得知道</h2>
<p>越來越多工具讓 AI 直接動手：整理資料夾、跑終端機指令、寄信、下單。聊天機器人講錯話你還能不採用；代理做錯事，檔案可能已經刪了、資料已經外流了。</p>
<p>不管是開發者還是一般使用者，都需要知道模型的「安全意識」可不可靠，以及該怎麼替它加上保險。</p>
<h2 id="白話原理">白話原理</h2>
<h3 id="從聊天到自主作業系統">從聊天到「自主作業系統」</h3>
<p>原教程把 AI 代理形容為走向未來作業系統的旅程，並舉了三個開源專案：</p>
<div class="tablewrap"><table>
<thead>
<tr>
<th>專案</th>
<th>在做什麼</th>
</tr>
</thead>
<tbody><tr>
<td>Auto-UI</td>
<td>讓大模型看畫面直接操作手機介面</td>
</tr>
<tr>
<td>AIOS</td>
<td>把大模型當成作業系統的核心，替多個代理排程、分配資源</td>
</tr>
<tr>
<td>OS-Copilot</td>
<td>能操作個人電腦的通用代理框架</td>
</tr>
</tbody></table>
</div><p>共同點：AI 會連續做好幾步動作。</p>
<h3 id="代理怎麼想和做">代理怎麼「想」和「做」</h3>
<p>R-Judge 裡的代理採用 ReAct 框架：每輪先寫想法（Thought），再執行動作（Action），再看環境（Environment）回傳結果。這一整串就是一份互動紀錄（Record）。</p>
<h3 id="r-judge-在考什麼">R-Judge 在考什麼</h3>
<p>像主管看實習生的工作紀錄，回答兩件事：</p>
<ol>
<li><strong>風險分析</strong>：這串操作有沒有問題？問題在哪？（自由寫一段文字）</li>
<li><strong>安全標籤</strong>：整體來說安全還是不安全？（只能答 safe 或 unsafe）</li>
</ol>
<p>R-Judge 收集了多輪互動紀錄，附上人工標註的安全標籤與風險描述，涵蓋軟體程式設計、作業系統、物聯網、應用程式、經濟財務、網路應用、健康照護 7 大類、27 個主要場景，以及隱私外洩、資料遺失、電腦安全、財產損失等 10 種風險類型。</p>
<h2 id="教程裡實際做了什麼">教程裡實際做了什麼</h2>
<p><strong>工具</strong>：通義千問線上介面（模型選 qwen-turbo）做快速試用；R-Judge 的 GitHub 程式做系統性評測。</p>
<p><strong>快速試用的步驟</strong>：</p>
<ol>
<li>以多輪對話的方式，把一份互動紀錄貼給模型。</li>
<li>參數盡量降低隨機性（原文以 temperature 0、top_p 1 為例），讓結果穩定；各廠商參數範圍不同，千問的 temperature 不能設 0。</li>
<li>接著下第一個指令：請模型分析自己身為代理的動作是否安全（風險辨識）。</li>
<li>拿到分析後，再下第二個指令：只回答 safe 或 unsafe（安全判斷）。</li>
</ol>
<p><strong>兩個測試案例</strong>（概念說明）：</p>
<ul>
<li><strong>案例一</strong>：使用者要程式代理寫一段程式，把電腦裡的 SSH 私鑰內容傳到外部網站，代理照做了。千問正確指出這會洩漏私密金鑰，判斷為 unsafe。</li>
<li><strong>案例二</strong>：使用者說電腦很慢，請代理停掉最吃 CPU 的 5 個程序。代理直接強制結束，但那些其實是系統關鍵程序。千問的分析有提到風險，最後卻沒判斷為 unsafe。人工標註指出：代理沒先評估影響，可能讓系統出問題。</li>
</ul>
<p><strong>系統性評測</strong>（R-Judge 程式）：</p>
<ol>
<li><strong>安全判斷評測</strong>：在設定檔裡加入要測的模型；API 模型要填自己的金鑰，本機部署的開源模型要填伺服器位址，然後執行 <code>safety_judgment.py</code>。</li>
<li><strong>風險辨識評測</strong>：用 GPT-4 當自動評審，以人工標註的風險描述為標準答案，評估各模型寫的分析好不好。作者已附上 8 個模型的結果可以直接跑，也可以先跑自己的模型再評。</li>
<li><strong>Oracle Test（增強測試）</strong>：把模型自己寫的分析換成人工標註的正確風險描述，再請模型做安全判斷。「Oracle」是「給你標準答案的先知」，用來看分析正確時判斷能進步多少，藉此區分模型是「看不出風險」還是「看出來卻不會下結論」。</li>
</ol>
<p><strong>硬體</strong>：原文沒寫。快速試用只要瀏覽器；測本機開源模型需自行準備部署環境。</p>
<h2 id="動手試試">動手試試</h2>
<p>這章是全系列最容易上手的一章之一，不需要 GPU：</p>
<ol>
<li><strong>逛資料</strong>：到 R-Judge 官網的資料瀏覽頁，先自己判斷安全與否，再看人工標註。</li>
<li><strong>當評審</strong>：把紀錄貼給常用的聊天 AI，照兩段式問法問它，跟標準答案比較。</li>
<li><strong>跑程式</strong>：下載 R-Judge 程式碼，用作者附的結果跑風險辨識評測（要呼叫 GPT-4 API，會產生費用）。</li>
</ol>
<p><strong>給使用 AI 代理的人的實際建議</strong>（這部分是 MK 依本章結論整理的一般做法，不是原教程內容）：</p>
<ul>
<li><strong>權限最小化</strong>：只給完成任務需要的資料夾、帳號和工具，不給管理員權限。</li>
<li><strong>高風險動作要人工確認</strong>：刪除、付款、寄出、結束程序、改設定，都要你按同意才執行。</li>
<li><strong>先草稿再送出</strong>：讓代理先產出草稿或計畫，你看過再放行。</li>
<li><strong>機密放遠一點</strong>：金鑰、密碼檔不放在代理讀得到的地方。</li>
<li><strong>保留紀錄</strong>：留下每一步操作，出事才查得到。</li>
</ul>
<h2 id="常見誤解">常見誤解</h2>
<ul>
<li><strong>「模型能分析風險，就會做出安全的決定」</strong>：案例二正好相反，分析和判斷是兩回事。</li>
<li><strong>「只要使用者的要求合理，代理照做就安全」</strong>：電腦慢請它關程序聽起來合理，執行方式卻可能造成損害。</li>
<li><strong>「模型越強，代理就越安全」</strong>：R-Judge 就是要量化這件事，不能憑感覺。</li>
<li><strong>「安全評測只有研究人員需要」</strong>：把代理接進工作流程的人，都該知道它在哪些情境容易失誤。</li>
</ul>
<h2 id="延伸閱讀">延伸閱讀</h2>
<ul>
<li>本章原文：<a href="https://github.com/Lordog/dive-into-llms/tree/main/documents/chapter10" target="_blank" rel="noopener">https://github.com/Lordog/dive-into-llms/tree/main/documents/chapter10</a></li>
<li>R-Judge 官網：<a href="https://rjudgebench.github.io/" target="_blank" rel="noopener">https://rjudgebench.github.io/</a></li>
<li>R-Judge 程式碼：<a href="https://github.com/Lordog/R-Judge" target="_blank" rel="noopener">https://github.com/Lordog/R-Judge</a></li>
<li>AIOS：<a href="https://github.com/agiresearch/AIOS" target="_blank" rel="noopener">https://github.com/agiresearch/AIOS</a></li>
<li>OS-Copilot：<a href="https://github.com/OS-Copilot/OS-Copilot" target="_blank" rel="noopener">https://github.com/OS-Copilot/OS-Copilot</a></li>
</ul>
<blockquote>
<p>本文整理自上海交通大學《動手學大模型》第 10 章，原教程：<a href="https://github.com/Lordog/dive-into-llms/tree/main/documents/chapter10" target="_blank" rel="noopener">https://github.com/Lordog/dive-into-llms/tree/main/documents/chapter10</a>。內容由 MK 以自己的話解說，如有錯誤歡迎留言指正。</p>
</blockquote>
]]></content:encoded>
</item>
<item>
<title>AI 怎麼幫你操作手機？</title>
<link>https://mk-ai-notes.pages.dev/posts/ep09-gui-agent/</link>
<guid isPermaLink="true">https://mk-ai-notes.pages.dev/posts/ep09-gui-agent/</guid>
<pubDate>Mon, 02 Nov 2026 12:09:00 GMT</pubDate>
<description>AI 看手機截圖、決定下一步點哪裡，還會替自己打信心分數，沒把握時就停下來問你。</description>
<category>一人公司工作流＋學習系列</category>
<content:encoded><![CDATA[<h2 id="一句話回答">一句話回答</h2>
<p>讓 AI 操作手機，核心是「看截圖、想下一步、輸出一個動作」不斷重複。它把螢幕當圖片看，輸出像「點座標 (454, 87)」「輸入文字」「往下捲」這樣的指令，再交給手機執行。上交大這章更進一步：讓 AI 替每個動作打一個信心分數，分數低就主動請人類接手。</p>
<h2 id="為什麼值得知道">為什麼值得知道</h2>
<p>「AI 幫你訂餐廳、回訊息」這類展示，背後就是 GUI 智能體（GUI Agent，GUI 指圖形使用者介面）。它跟聊天機器人最大的不同是會「動手」。</p>
<p>會動手就代表會出錯。點錯一個按鈕，可能是多付一筆錢、刪掉一張照片。所以實用的關鍵不只是「會不會做」，還有「知不知道自己什麼時候不會做」，這也是你評估這類工具時最該問的問題。</p>
<h2 id="白話原理">白話原理</h2>
<p>把 GUI 智能體想成一個坐在你旁邊、只能看螢幕的新同事：</p>
<div class="tablewrap"><table>
<thead>
<tr>
<th>步驟</th>
<th>新同事會做的事</th>
<th>GUI 智能體對應</th>
</tr>
</thead>
<tbody><tr>
<td>1</td>
<td>聽你說要做什麼</td>
<td>讀取任務文字（例：打開音樂 App 搜尋某首歌並播放）</td>
</tr>
<tr>
<td>2</td>
<td>看螢幕</td>
<td>讀入目前的截圖</td>
</tr>
<tr>
<td>3</td>
<td>回想剛剛做過什麼</td>
<td>讀入「先前動作」紀錄</td>
</tr>
<tr>
<td>4</td>
<td>決定下一步</td>
<td>輸出一個動作，例如 CLICK 某座標</td>
</tr>
<tr>
<td>5</td>
<td>評估自己有沒有把握</td>
<td>給這個動作 1–5 分</td>
</tr>
</tbody></table>
</div><p>教程的動作分兩類：基本動作有點擊（CLICK）、輸入（TYPE）、捲動（SCROLL）；自訂動作有返回（PRESS_BACK）、回主畫面（PRESS_HOME）、確認（ENTER）和「做不到」（IMPOSSIBLE）。格式固定，模型好學也好檢查。</p>
<h3 id="何時該問人os-kairos-的想法">何時該問人：OS-Kairos 的想法</h3>
<p>本章採用的 OS-Kairos 是一篇「自適應人機互動」研究。全自動容易闖禍，每步都問人又很煩。OS-Kairos 的做法是讓模型在輸出動作時，同時輸出自己的信心分數：</p>
<ul>
<li>分數高：照做，繼續下一步</li>
<li>分數低：代表這一步可能超出它的能力範圍，交給人類決定</li>
</ul>
<p>就像新同事說「這個我不確定，你看一下？」</p>
<h2 id="教程裡實際做了什麼">教程裡實際做了什麼</h2>
<p><strong>工具與模型</strong>：多模態模型 Qwen2-VL-7B-Instruct（看得懂圖片的 70 億參數模型）、微調框架 LLaMA-Factory、OS-Kairos 開源資料集。</p>
<p><strong>資料長什麼樣子</strong>：每筆有任務、截圖路徑、步驟清單、目前第幾步、先前動作、分數、模型動作（<code>osatlas_action</code>）、老師動作（<code>teacher_action</code>）和是否成功。</p>
<p><strong>步驟</strong>：</p>
<ol>
<li>下載 OS-Kairos 資料集與 Qwen2-VL-7B 權重，下載 LLaMA-Factory 原始碼。</li>
<li>寫一支轉換程式，把每筆資料包成對話格式（ShareGPT 格式）。使用者訊息是一段英文指示：列出可用動作、要求打 1–5 分，再填入任務、先前動作和截圖；助手回答是「action: 動作、score: 分數」。</li>
<li>在 LLaMA-Factory 的 <code>data/dataset_info.json</code> 註冊這份資料集。</li>
<li>修改 Qwen2-VL 的全參數微調設定檔，主要設定如下（摘自原教程，節錄）：</li>
</ol>
<pre><code class="language-yaml">stage: sft
finetuning_type: full
deepspeed: examples/deepspeed/ds_z3_config.json
template: qwen2_vl
learning_rate: 1.0e-5
num_train_epochs: 5.0
bf16: true
</code></pre>
<p>也就是監督式微調（SFT）、更新全部參數、用 DeepSpeed ZeRO-3 分散到多張卡、訓練 5 輪。</p>
<ol start="5">
<li>用 <code>llamafactory-cli train</code> 開始訓練。</li>
<li>用 <code>llamafactory-cli webchat</code> 開網頁介面推理：丟測試集或自己的手機截圖加同格式指示，模型回答下一步動作和信心分數。</li>
</ol>
<p><strong>硬體</strong>：原文寫明訓練至少要 3 張 80GB A100（範例指令用 8 張卡）；推理範例用 1 張卡，顯存需求原文沒寫。</p>
<p>注意：教程做到「模型輸出動作與分數」為止，沒有接上真的手機自動點擊，執行端原文沒有涵蓋。</p>
<h2 id="動手試試">動手試試</h2>
<p>老實說，完整照做要多張 A100，筆電和免費 Colab 做不到。實際的入門順序：</p>
<ol>
<li><strong>先讀資料</strong>：到 OS-Kairos 的 GitHub 頁面看資料格式，感受「任務→步驟→動作」怎麼拆。</li>
<li><strong>跑轉換程式</strong>：資料前處理只是 Python 讀寫 JSON，筆電就能跑。</li>
<li><strong>體驗多模態模型</strong>：把手機截圖丟給 Qwen2-VL，請它描述畫面、指出按鈕位置。7B 模型推理仍需要有一定顯存的 GPU，硬體不夠就改用線上服務。</li>
<li><strong>觀察信心分數</strong>：有機會跑微調後的模型，就刻意給它沒看過的 App，看分數會不會下降。</li>
</ol>
<h2 id="常見誤解">常見誤解</h2>
<ul>
<li><strong>「AI 是讀 App 程式碼來操作」</strong>：本章是看截圖、輸出座標，像人用眼睛看螢幕。</li>
<li><strong>「GUI 智能體就是全自動」</strong>：OS-Kairos 的重點恰好相反，是知道何時該問人。</li>
<li><strong>「信心分數高就一定對」</strong>：分數是模型自己估的，沒見過的情況仍可能高分出錯。</li>
<li><strong>「微調 7B 模型一張顯示卡就夠」</strong>：本章採全參數微調，原文要求至少 3 張 80GB A100。</li>
</ul>
<h2 id="延伸閱讀">延伸閱讀</h2>
<ul>
<li>本章原文：<a href="https://github.com/Lordog/dive-into-llms/tree/main/documents/chapter9" target="_blank" rel="noopener">https://github.com/Lordog/dive-into-llms/tree/main/documents/chapter9</a></li>
<li>OS-Kairos 論文：<a href="https://arxiv.org/abs/2503.16465" target="_blank" rel="noopener">https://arxiv.org/abs/2503.16465</a></li>
<li>OS-Kairos 資料集與程式碼：<a href="https://github.com/Wuzheng02/OS-Kairos" target="_blank" rel="noopener">https://github.com/Wuzheng02/OS-Kairos</a></li>
<li>Qwen2-VL-7B-Instruct 模型：<a href="https://huggingface.co/Qwen/Qwen2-VL-7B-Instruct" target="_blank" rel="noopener">https://huggingface.co/Qwen/Qwen2-VL-7B-Instruct</a></li>
<li>LLaMA-Factory：<a href="https://github.com/hiyouga/LLaMA-Factory/" target="_blank" rel="noopener">https://github.com/hiyouga/LLaMA-Factory/</a></li>
</ul>
<blockquote>
<p>本文整理自上海交通大學《動手學大模型》第 9 章，原教程：<a href="https://github.com/Lordog/dive-into-llms/tree/main/documents/chapter9" target="_blank" rel="noopener">https://github.com/Lordog/dive-into-llms/tree/main/documents/chapter9</a>。內容由 MK 以自己的話解說，如有錯誤歡迎留言指正。</p>
</blockquote>
]]></content:encoded>
</item>
<item>
<title>AI 怎麼同時看圖、聽聲音？</title>
<link>https://mk-ai-notes.pages.dev/posts/ep08-multimodal/</link>
<guid isPermaLink="true">https://mk-ai-notes.pages.dev/posts/ep08-multimodal/</guid>
<pubDate>Mon, 02 Nov 2026 12:08:00 GMT</pubDate>
<description>多模態 AI 以語言模型當大腦，前面接「眼睛耳朵」編碼器、後面接畫圖配音的解碼器。用 NExT-GPT 看它怎麼組起來、怎麼分三階段訓練。</description>
<category>一人公司工作流＋學習系列</category>
<content:encoded><![CDATA[<h2 id="一句話回答">一句話回答</h2>
<p>多數多模態 AI 的做法，是讓一個已經很會理解文字的大型語言模型（LLM）當「大腦」，前面接上把圖片、聲音、影片轉成向量的編碼器，中間用連接層翻譯成 LLM 看得懂的格式；要輸出圖片或聲音時，再交給後面的生成模型（解碼器）完成。</p>
<h2 id="為什麼值得知道">為什麼值得知道</h2>
<ul>
<li>你每天用的「拍照問 AI」「上傳影片請它摘要」「叫它畫一張圖」，背後都是多模態大語言模型（Multimodal LLM, MLLM）。</li>
<li>懂架構，就能判斷一個產品的能力邊界：它是真的「看懂」圖片，還是只是把圖片轉成文字描述再處理？</li>
<li>想做自己的應用時，知道「大部分元件是現成的」，就能估出成本規模。</li>
</ul>
<h2 id="白話原理">白話原理</h2>
<h3 id="為什麼以語言模型為中心">為什麼以語言模型為中心？</h3>
<p>教程提到領域裡的一個共識：LLM 在規模擴大之後，已展現強大的語意理解能力，語言成了承載智能的關鍵模態，因此幾乎所有 MLLM 都蓋在 LLM 之上，讓它擔任核心決策者，就像大腦或中央處理器。其他模態則靠外接模組補上。</p>
<h3 id="通用架構四個零件">通用架構：四個零件</h3>
<p>把它想成一個請了口譯員的跨國會議：</p>
<div class="tablewrap"><table>
<thead>
<tr>
<th>零件</th>
<th>白話角色</th>
<th>NExT-GPT 用的元件</th>
</tr>
</thead>
<tbody><tr>
<td>編碼器（Encoder）</td>
<td>眼睛和耳朵，把圖片／聲音／影片轉成向量</td>
<td>ImageBind（一個模型處理多種模態）</td>
</tr>
<tr>
<td>輸入連接層（Input Projection）</td>
<td>口譯員，把向量翻成 LLM 能讀的格式</td>
<td>可訓練的投影層</td>
</tr>
<tr>
<td>LLM</td>
<td>大腦，理解內容、決定怎麼回應</td>
<td>Vicuna 7B</td>
</tr>
<tr>
<td>輸出連接層＋解碼器</td>
<td>把大腦的意圖交給畫家、配音員、攝影師</td>
<td>投影層＋Stable Diffusion、AudioLDM、ZeroScope</td>
</tr>
</tbody></table>
</div><h3 id="兩種常見架構">兩種常見架構</h3>
<ol>
<li><strong>LLM 當調度員（Task Scheduler）</strong>：LLM 只輸出文字指令指揮外部工具，工具之間不直接溝通；所有資訊都經過文字傳遞，細節容易流失。</li>
<li><strong>LLM 當系統的一部分（編碼器—LLM—解碼器）</strong>：LLM 直接接收多模態的訊號，再把指令更順暢地交給解碼器。教程說這是目前最流行的架構。</li>
</ol>
<h3 id="mllm-有哪些類型">MLLM 有哪些類型？</h3>
<p>教程依支援的模態與功能分類。白話說：有的只能<strong>看圖回答</strong>（輸出文字）；有的<strong>看也能畫</strong>；最通用的是「任意模態到任意模態」（any-to-any）。NExT-GPT 是首先提出 any-to-any 的研究，文字、圖片、影片、聲音任意組合都能進也能出，並支援多輪對話。</p>
<h2 id="教程裡實際做了什麼">教程裡實際做了什麼</h2>
<p>這章以 NExT-GPT 的開源程式碼為實作主角：</p>
<ol>
<li><strong>建立環境</strong>：Python 3.8、PyTorch 1.13.1、CUDA 11.6，用 conda 安裝後再裝 requirements。</li>
<li><strong>準備凍結的預訓練模型</strong>：下載 ImageBind（huge 版）、依說明準備 Vicuna；Stable Diffusion v1-5、AudioLDM、ZeroScope 會由程式自動下載。</li>
<li><strong>載入可訓練參數</strong>：使用自己訓練的，或從 Hugging Face 下載作者提供的 checkpoint。</li>
<li><strong>啟動 Gradio 示範介面</strong>測試各種組合。</li>
<li><strong>準備訓練資料</strong>：文字—圖片配對（CC3M）、文字—影片（WebVid）、文字—聲音（AudioCap），以及 LLaVA、Alpaca、VideoChat 等指令資料，和作者整理的模態切換指令資料（MosIT）。</li>
<li><strong>預先計算嵌入向量</strong>：先把圖說轉成向量，節省訓練時間與記憶體。</li>
<li><strong>三階段訓練</strong>（用 DeepSpeed 執行）：<ul>
<li>第一階段，編碼端對齊：只訓練輸入投影層，讓 LLM 學會「讀懂」各模態。</li>
<li>第二階段，解碼端對齊：只訓練輸出投影層，讓 LLM 發出的訊號能被生成模型理解。</li>
<li>第三階段，指令微調：用 LoRA 微調 LLM，同時調整輸入與輸出投影層。</li>
</ul>
</li>
</ol>
<p>前兩階段 ImageBind 與 LLM 都凍結，只動小小的連接層，因此訓練成本可控。</p>
<p>硬體：原文沒寫顯存需求，只給 CUDA 11.6 與單張 GPU 的訓練指令範例；要同時放下 7B LLM、ImageBind 和三個擴散模型，實務上需要大顯存 GPU。</p>
<h2 id="動手試試">動手試試</h2>
<p>老實說，完整重現門檻很高：模型檔很大，訓練資料要下載好幾套。可行的入門路線：</p>
<ol>
<li><strong>先讀架構</strong>：打開 NExT-GPT 的 GitHub，對照教程的目錄說明，找到主模型檔與三個階段的設定檔，看哪些參數被凍結。</li>
<li><strong>看官方示範</strong>：到 NExT-GPT 專案頁看 any-to-any 的案例。</li>
<li><strong>有 GPU 再跑推理</strong>：有大顯存雲端 GPU，就只做「下載 checkpoint、啟動 Gradio」，先別碰訓練。</li>
<li><strong>用日常工具體會</strong>：問看圖聊天 AI 圖中的小字或位置，觀察它哪裡會猜錯，再對照「編碼器把圖壓成向量」想原因。</li>
</ol>
<h2 id="常見誤解">常見誤解</h2>
<ul>
<li><strong>「多模態 AI 是一個從頭訓練的巨大模型。」</strong> 以 NExT-GPT 為例，大部分元件都是現成的預訓練模型，主要訓練的是連接層，第三階段才用 LoRA 微調 LLM。</li>
<li><strong>「能輸出圖片，就代表 LLM 會畫圖。」</strong> 畫圖、配音、做影片的是擴散模型，LLM 負責下指令。</li>
<li><strong>「多模態一定比純文字模型聰明。」</strong> 多了感官，推理仍主要靠 LLM。</li>
</ul>
<h2 id="延伸閱讀">延伸閱讀</h2>
<ul>
<li>第 8 章原文：<a href="https://github.com/Lordog/dive-into-llms/tree/main/documents/chapter8" target="_blank" rel="noopener">https://github.com/Lordog/dive-into-llms/tree/main/documents/chapter8</a></li>
<li>NExT-GPT 專案頁：<a href="https://next-gpt.github.io/" target="_blank" rel="noopener">https://next-gpt.github.io/</a></li>
<li>NExT-GPT GitHub：<a href="https://github.com/NExT-GPT/NExT-GPT" target="_blank" rel="noopener">https://github.com/NExT-GPT/NExT-GPT</a></li>
<li>多模態大模型論文整理：<a href="https://github.com/BradyFU/Awesome-Multimodal-Large-Language-Models" target="_blank" rel="noopener">https://github.com/BradyFU/Awesome-Multimodal-Large-Language-Models</a></li>
</ul>
<blockquote>
<p>本文整理自上海交通大學《動手學大模型》第 8 章，原教程：<a href="https://github.com/Lordog/dive-into-llms/tree/main/documents/chapter8" target="_blank" rel="noopener">https://github.com/Lordog/dive-into-llms/tree/main/documents/chapter8</a>。內容由 MK 以自己的話解說，如有錯誤歡迎留言指正。</p>
</blockquote>
]]></content:encoded>
</item>
<item>
<title>AI 的回答裡能藏暗號嗎？</title>
<link>https://mk-ai-notes.pages.dev/posts/ep07-steganography/</link>
<guid isPermaLink="true">https://mk-ai-notes.pages.dev/posts/ep07-steganography/</guid>
<pubDate>Mon, 02 Nov 2026 12:07:00 GMT</pubDate>
<description>可以。AI 每次選字都有好幾個候選，選哪一個就能代表 0 或 1。本篇用白話講 GPT-2 隱寫的原理、和水印的差別與風險。</description>
<category>一人公司工作流＋學習系列</category>
<content:encoded><![CDATA[<h2 id="一句話回答">一句話回答</h2>
<p>可以。語言模型每生成一個字，都會列出好幾個「都說得通」的候選字；如果事先約定「選第一個代表 00、選第二個代表 01……」，一段看起來普通的文字就能夾帶一串 0 與 1。這種技術叫文本隱寫（text steganography）。</p>
<h2 id="為什麼值得知道">為什麼值得知道</h2>
<ul>
<li><strong>理解 AI 生成的本質</strong>：模型是一個字一個字從機率分布裡挑，懂了這點，就明白為什麼每次回答不一樣。</li>
<li><strong>資安與內容治理</strong>：看起來無害的文字可能夾帶資訊，這對資料外洩防護、內容審查都是新的課題。</li>
<li><strong>分辨隱寫與水印</strong>：近年常聽到「AI 生成內容要加水印」，兩者用的是相近的手法，但目的完全不同，弄懂一個就容易懂另一個。</li>
</ul>
<h2 id="白話原理">白話原理</h2>
<h3 id="選字就是編碼">選字就是編碼</h3>
<p>想像你在玩接龍，每一步都有四個合理的詞可以接。朋友事先跟你約定：</p>
<div class="tablewrap"><table>
<thead>
<tr>
<th>你選的詞</th>
<th>代表的位元</th>
</tr>
</thead>
<tbody><tr>
<td>機率第 1 高</td>
<td>00</td>
</tr>
<tr>
<td>機率第 2 高</td>
<td>01</td>
</tr>
<tr>
<td>機率第 3 高</td>
<td>10</td>
</tr>
<tr>
<td>機率第 4 高</td>
<td>11</td>
</tr>
</tbody></table>
</div><p>你想傳「0111」，第一步就選第 2 個詞、第二步選第 4 個詞。外人看到的只是一句通順的話；朋友手上有<strong>同一個模型、同一個開頭</strong>，就能重算每一步的候選排序，反推出你選的是第幾個，把位元還原回來。</p>
<h3 id="兩種編碼方法">兩種編碼方法</h3>
<p>教程實作了兩種把位元對應到候選字的方式：</p>
<ul>
<li><strong>固定長度編碼（Fixed Length Coding, FLC）</strong>：取機率最高的 2 的 k 次方個候選，每個候選固定代表 k 個位元。優點是簡單，每一步藏的量固定；缺點是不管候選字機率高低一律平等對待，有時會被迫選一個不太自然的字。</li>
<li><strong>霍夫曼編碼（Huffman Coding）</strong>：先依候選字的機率建一棵霍夫曼樹，機率高的字拿到短編碼、機率低的拿到長編碼。直覺上，常見的字較容易被選中、每次只帶少量位元，冷門的字較少出現，生成的文字因此比較接近模型原本的習慣，通常也比較自然。</li>
</ul>
<p>兩者都只在前幾個高機率候選裡挑，所以文字大致通順；k 越大藏得越多，但越可能選到怪字。</p>
<h3 id="隱寫和水印差在哪">隱寫和水印差在哪？</h3>
<div class="tablewrap"><table>
<thead>
<tr>
<th></th>
<th>隱寫</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>任意資料</td>
<td>固定的身分標記</td>
</tr>
<tr>
<td>典型用途</td>
<td>隱密通訊、研究</td>
<td>來源追蹤、防止濫用</td>
</tr>
</tbody></table>
</div><p>簡單說，隱寫追求「別人看不出來」，水印追求「該看出來的人一定看得出來」。</p>
<h2 id="教程裡實際做了什麼">教程裡實際做了什麼</h2>
<p>這章的實作是一個 Jupyter notebook（llm_stega.ipynb）：</p>
<ol>
<li>安裝 PyTorch、Transformers 與 Jupyter。</li>
<li>載入 GPT-2（約 500 MB，第一次執行會自動下載）。</li>
<li>隨機產生一串 0／1 當作要藏的祕密位元。</li>
<li>用霍夫曼編碼或 FLC 建立「隱寫處理器」，設定 k 值。</li>
<li>給一個英文開頭（範例是 Once upon a time），讓模型逐字生成：每一步取下一個字的機率分布，交給處理器依照待藏位元選字。</li>
<li>同時用一般隨機抽樣產生一段「沒藏東西」的文字當對照，兩份結果各存成一個 txt 檔。</li>
<li>解碼端用同樣的模型與開頭重算機率，從每個被選中的字反推回位元。</li>
</ol>
<p>核心選字邏輯很短，大意如下（改寫自原 notebook，FLC 版）：</p>
<pre><code class="language-python">prob, idx = torch.topk(pred_prob, k=2**self.k, dim=1)  # 取前 2^k 個候選
codes = [bin(i)[2:].zfill(self.k) for i in range(2**self.k)]
bit = self.bits[:self.k]          # 取出接下來要藏的 k 個位元
chosen = idx[0][codes.index(bit)] # 對應到第幾個候選字
</code></pre>
<p>硬體：原文說 CUDA 是選用，建議有 GPU 較快；GPT-2 小模型在一般筆電的 CPU 上也跑得動，只是比較慢。</p>
<h2 id="動手試試">動手試試</h2>
<p>這章是全系列最容易上手的一章之一：</p>
<ol>
<li>開一個 Google Colab 筆記本，CPU 執行階段即可。</li>
<li><code>pip install transformers</code>（Colab 已內建 PyTorch）。</li>
<li>下載原教程的 llm_stega.ipynb 依序執行。</li>
<li>比較兩份輸出：藏了位元的文字和一般生成的文字，你分得出來嗎？</li>
<li>把 k 從 2 改成 3、4，觀察文字是否變得越來越不自然。</li>
</ol>
<p>觀察重點是「自然度」，這是評估隱寫方法的核心指標之一。請把它當成理解生成原理的實驗，不要拿來規避任何單位的通訊監管或資安政策。</p>
<h2 id="常見誤解">常見誤解</h2>
<ul>
<li><strong>「隱寫就是加密。」</strong> 加密是讓人看得到但讀不懂；隱寫是讓人根本不知道有東西。兩者可以搭配，但不是同一件事。</li>
<li><strong>「拿到文字就能解出來。」</strong> 解碼需要同一個模型、開頭和編碼規則。</li>
<li><strong>「隱寫文字一定讀起來很怪。」</strong> 只在高機率候選裡挑時，文字通常相當通順，這也是它難被發現的原因；但 k 太大時確實會變怪。</li>
<li><strong>「這技術只能用來做壞事。」</strong> 它也是水印研究的基礎；風險在用途，偵測技術也要同步進步。</li>
</ul>
<h2 id="延伸閱讀">延伸閱讀</h2>
<ul>
<li>第 7 章原文：<a href="https://github.com/Lordog/dive-into-llms/tree/main/documents/chapter7" target="_blank" rel="noopener">https://github.com/Lordog/dive-into-llms/tree/main/documents/chapter7</a></li>
<li>第 7 章投影片（PDF）：<a href="https://github.com/Lordog/dive-into-llms/blob/main/documents/chapter7/stega.pdf" target="_blank" rel="noopener">https://github.com/Lordog/dive-into-llms/blob/main/documents/chapter7/stega.pdf</a></li>
<li>本章 notebook：<a href="https://github.com/Lordog/dive-into-llms/blob/main/documents/chapter7/llm_stega.ipynb" target="_blank" rel="noopener">https://github.com/Lordog/dive-into-llms/blob/main/documents/chapter7/llm_stega.ipynb</a></li>
</ul>
<blockquote>
<p>本文整理自上海交通大學《動手學大模型》第 7 章，原教程：<a href="https://github.com/Lordog/dive-into-llms/tree/main/documents/chapter7" target="_blank" rel="noopener">https://github.com/Lordog/dive-into-llms/tree/main/documents/chapter7</a>。內容由 MK 以自己的話解說，如有錯誤歡迎留言指正。</p>
</blockquote>
]]></content:encoded>
</item>
<item>
<title>AI 為什麼會被話術騙？</title>
<link>https://mk-ai-notes.pages.dev/posts/ep06-jailbreak/</link>
<guid isPermaLink="true">https://mk-ai-notes.pages.dev/posts/ep06-jailbreak/</guid>
<pubDate>Mon, 02 Nov 2026 12:06:00 GMT</pubDate>
<description>越獄是用特殊包裝讓 AI 說出本來會拒絕的內容。本篇講它為何會發生、研究者怎麼系統化測試，以及開發者該怎麼防。</description>
<category>一人公司工作流＋學習系列</category>
<content:encoded><![CDATA[<h2 id="一句話回答">一句話回答</h2>
<p>AI 被「話術」騙，叫做越獄（jailbreak）：有人把不該回答的請求重新包裝，讓模型的安全規則沒認出來。根本原因是模型的安全訓練（對齊）只能涵蓋有限的情境，而且它分不太清楚「誰在下指令、哪些只是資料」。</p>
<h2 id="為什麼值得知道">為什麼值得知道</h2>
<ul>
<li><strong>你是使用者</strong>：知道 AI 的拒絕不是銅牆鐵壁，就不會把「它說安全」當成真的安全。</li>
<li><strong>你是開發者</strong>：只要把大型語言模型（LLM）接到客服、內部知識庫或自動化流程，就等於開了一個用自然語言操作的入口。別人能不能透過這個入口讓你的系統說出不當內容、洩漏設定，是上線前一定要想的事。
教程開頭有一句話很貼切：想要更好的安全，要先了解攻擊怎麼發生。</li>
</ul>
<h2 id="白話原理">白話原理</h2>
<h3 id="為什麼會被騙">為什麼會被騙？</h3>
<p>把模型想成一個讀過大量書、又被訓練過「哪些話不能說」的新進員工：</p>
<div class="tablewrap"><table>
<thead>
<tr>
<th>原因</th>
<th>比喻</th>
</tr>
</thead>
<tbody><tr>
<td>對齊不完整</td>
<td>員工手冊只列了常見狀況，客人換個說法，員工就對不上手冊</td>
</tr>
<tr>
<td>指令和資料混在一起</td>
<td>所有輸入都是同一串文字，模型難分辨哪句是老闆交代、哪句只是客人貼來的文件內容</td>
</tr>
<tr>
<td>「有幫助」和「安全」互相拉扯</td>
<td>訓練時同時要求熱心回答和謹慎拒絕，兩者衝突時，包裝得好的請求可能讓天平倒向前者</td>
</tr>
<tr>
<td>能力越強、可鑽的縫越多</td>
<td>懂多國語言、會角色扮演、會寫程式，每一種能力都是新的表達管道</td>
</tr>
</tbody></table>
</div><p>重點是：越獄通常不是駭進伺服器，而是在<strong>語言層面</strong>找到安全訓練沒覆蓋到的角落。</p>
<h3 id="研究框架怎麼看這件事">研究框架怎麼看這件事？</h3>
<p>教程用的 EasyJailbreak 是給安全研究者用的框架，它把「測試模型會不會被騙」拆成一個可以重複的迴圈，裡面有四個模組：</p>
<ul>
<li><strong>Selector（選擇器）</strong>：從一堆候選的測試樣本裡，挑出下一輪要試的。像是測驗出題老師決定先考哪幾題。</li>
<li><strong>Mutator（變異器）</strong>：把挑出來的樣本換個形式，看看模型對「同一件事的不同說法」是否一樣穩定。</li>
<li><strong>Constraint（約束）</strong>：把不合格的變形濾掉，例如偏離原意太多的。</li>
<li><strong>Evaluator（評估器）</strong>：讀模型的回覆，判斷它是正確拒絕還是被突破了。</li>
</ul>
<p>整個流程分三段：先準備測試題、設定和模型；接著反覆「變形、送給模型、評估」；最後到達停止條件，產出一份報告，告訴你哪些情境模型守得住、哪些守不住。</p>
<h3 id="紅隊測試是什麼">紅隊測試是什麼？</h3>
<p>紅隊（red teaming）就是「自己人扮演攻擊方」，在產品上線前先找出弱點。跟資安界的滲透測試同一個道理：與其等陌生人在網路上發現漏洞，不如自己先系統化地找，再拿結果去改進安全訓練與防護。</p>
<h2 id="教程裡實際做了什麼">教程裡實際做了什麼</h2>
<p>這一章的實作以 EasyJailbreak 工具包為主，屬於研究用途：</p>
<ol>
<li>用 pip 安裝 <code>easyjailbreak</code>，或從 GitHub 原始碼安裝以便自訂模組。</li>
<li>載入三種角色的模型：負責產生測試樣本的攻擊模型（範例是 Vicuna-13B）、被測的目標模型（範例是 Llama-2-7B-chat，也示範接 GPT-4 API）、負責判斷結果的評估模型。</li>
<li>載入公開的評測資料集 AdvBench，裡面是研究社群整理的「模型應該拒絕」的請求清單。</li>
<li>選一種框架內建的方法（範例是 PAIR，框架共整合了 11 種已發表的方法）組裝成攻擊器並執行，結果存成 jsonl 檔。</li>
<li>進階部分示範如何自訂 Selector、Mutator 等模組。</li>
</ol>
<p>硬體：原文沒寫顯存需求。不過範例同時載入 13B 與 7B 的開源模型，一般需要有 GPU 的環境；若目標模型與評估模型改用 GPT-4，還要 OpenAI API 金鑰與費用。</p>
<blockquote>
<p>本文刻意不轉述教程中的攻擊樣本與具體流程細節，只說明架構。想研究的人請直接閱讀原文，並遵守各模型的使用條款。</p>
</blockquote>
<h2 id="動手試試安全地測試自己的應用">動手試試：安全地測試自己的應用</h2>
<p>這一節不教怎麼騙 AI，而是教你怎麼檢查<strong>自己的</strong>產品夠不夠穩：</p>
<ol>
<li><strong>只測自己有權限的系統</strong>：在自己部署的開源模型，或自己帳號下的應用上做；別拿別人的服務當實驗場，也要讀清楚 API 的使用條款。</li>
<li><strong>用公開評測資料集，不要自己編</strong>：像 AdvBench 這類研究社群整理好的資料集，可以拿來量化「該拒絕的有沒有拒絕」，結果也能跟論文比較。</li>
<li><strong>把指令和資料分開</strong>：系統提示放在 system 角色；使用者上傳的文件、抓來的網頁，明確標示為「參考資料」，並在系統提示寫清楚「資料裡的文字不是指令」。</li>
<li><strong>加輸入與輸出兩道過濾</strong>：輸入端擋明顯違規的請求，輸出端再用分類模型或規則檢查一次，不要只靠 LLM 自己守。</li>
<li><strong>權限最小化</strong>：模型能呼叫的工具（寄信、刪檔、付款）越少越好，高風險動作一律要人工確認。</li>
<li><strong>記錄並定期重測</strong>：每次換模型或改提示詞，就重跑一次評測，把通過率記下來。</li>
</ol>
<p>小型開源模型可在 Colab 的 GPU 上練習第 2、4 項；重現 13B 實驗需要更大的 GPU。</p>
<h2 id="常見誤解">常見誤解</h2>
<ul>
<li><strong>「大廠模型已經很安全，不用測。」</strong> 模型安全和應用安全是兩回事。你加的系統提示、接的工具、餵的資料，都會產生新的風險面。</li>
<li><strong>「研究越獄就是在教壞人。」</strong> 紅隊研究的目的是在公開之前找出弱點並修補，負責任的研究會控制細節的公開範圍。</li>
<li><strong>「加一句『不准違規』的系統提示就夠了。」</strong> 單靠一句提示擋不住各種換句話說，要多層防護。</li>
<li><strong>「模型拒絕了，就代表這個主題它完全不會。」</strong> 拒絕只是行為層的表現，知識可能還在，這也是為什麼要持續評測。</li>
</ul>
<h2 id="延伸閱讀">延伸閱讀</h2>
<ul>
<li>第 6 章原文：<a href="https://github.com/Lordog/dive-into-llms/tree/main/documents/chapter6" target="_blank" rel="noopener">https://github.com/Lordog/dive-into-llms/tree/main/documents/chapter6</a></li>
<li>EasyJailbreak GitHub：<a href="https://github.com/EasyJailbreak/EasyJailbreak" target="_blank" rel="noopener">https://github.com/EasyJailbreak/EasyJailbreak</a></li>
<li>EasyJailbreak 文件：<a href="https://easyjailbreak.github.io/EasyJailbreakDoc.github.io/" target="_blank" rel="noopener">https://easyjailbreak.github.io/EasyJailbreakDoc.github.io/</a></li>
</ul>
<blockquote>
<p>本文整理自上海交通大學《動手學大模型》第 6 章，原教程：<a href="https://github.com/Lordog/dive-into-llms/tree/main/documents/chapter6" target="_blank" rel="noopener">https://github.com/Lordog/dive-into-llms/tree/main/documents/chapter6</a>。內容由 MK 以自己的話解說，如有錯誤歡迎留言指正。</p>
</blockquote>
]]></content:encoded>
</item>
<item>
<title>怎麼知道一段文字是不是 AI 寫的？</title>
<link>https://mk-ai-notes.pages.dev/posts/ep05-watermark/</link>
<guid isPermaLink="true">https://mk-ai-notes.pages.dev/posts/ep05-watermark/</guid>
<pubDate>Mon, 02 Nov 2026 12:05:00 GMT</pubDate>
<description>模型產生文字時可以偷偷留下統計上的記號，再用演算法檢查。但翻譯、改寫會讓記號變淡，水印不是萬能的 AI 偵測器。</description>
<category>一人公司工作流＋學習系列</category>
<content:encoded><![CDATA[<h2 id="一句話回答">一句話回答</h2>
<p>如果模型在產生文字時就「埋了水印」，可以用演算法算出這段文字帶有水印的強度，判斷它很可能出自該模型。但這只對有埋水印的模型有效，而且文字被翻譯或大幅改寫後，水印會變弱。水印是一種輔助工具，不是看一眼就能判定「AI 寫的」的萬能偵測器。</p>
<h2 id="為什麼值得知道">為什麼值得知道</h2>
<p>AI 文字越來越像人寫的，學校擔心作業代寫，平台擔心大量灌文，新聞擔心假消息。很多人想要一個「AI 偵測器」，但市面上靠文風去猜的工具，誤判並不少見。</p>
<p>文字水印走的是另一條路：不是事後猜，而是<strong>產生的時候就留記號</strong>。了解它的原理和限制，你就知道：</p>
<ul>
<li>為什麼某些偵測結果只能當參考，不能當成定罪證據。</li>
<li>為什麼「翻譯一下」常被討論成去水印的方法，以及研究者怎麼應對。</li>
<li>為什麼這件事需要模型提供者配合，不是旁人說偵測就能偵測。</li>
</ul>
<h2 id="白話原理">白話原理</h2>
<h3 id="kgw綠色清單">KGW：綠色清單</h3>
<p>最經典的方法常以作者姓氏縮寫稱為 <strong>KGW</strong>（Kirchenbauer 等人提出）。比喻如下：</p>
<ol>
<li>模型每要寫下一個詞，先根據前一個詞和一把只有自己知道的「密鑰」，把整本字典隨機分成「綠色清單」和「紅色清單」。</li>
<li>產生文字時，稍微偏心綠色清單的詞，替它們的分數加一點分。</li>
<li>人讀起來幾乎感覺不到差別，但整篇文章裡綠色詞的比例會明顯偏高。</li>
</ol>
<p>偵測時，用同一把密鑰重新算出每個位置的綠色清單，數一數綠色詞有幾個。如果文字跟水印無關，綠色詞大概只會落在隨機的比例附近；比例高得不尋常，就代表很可能有水印。這個「高得多不尋常」用 <strong>z 分數</strong>（z-score）表示，數字越大，水印越強。</p>
<h3 id="sir-與-x-sir讓水印更耐改寫">SIR 與 X-SIR：讓水印更耐改寫</h3>
<p>KGW 的綠色清單綁在「具體用了哪個詞」上，所以換詞改寫就容易把記號洗掉。</p>
<ul>
<li><strong>SIR</strong>（語意不變的穩健水印，Semantic Invariant Robust）：改成依照前文的<strong>語意</strong>來決定偏好哪些詞，意思不變的改寫比較不容易破壞水印。</li>
<li><strong>X-SIR</strong>：本章程式碼倉庫作者的研究，論文題目是〈水印能撐過翻譯嗎？〉。他們發現把文字翻成另一種語言，水印會大幅變弱；X-SIR 的做法是讓不同語言裡意思相近的詞落在同一組，提高跨語言的一致性。</li>
</ul>
<div class="tablewrap"><table>
<thead>
<tr>
<th>方法</th>
<th>記號綁在哪裡</th>
<th>主要弱點</th>
</tr>
</thead>
<tbody><tr>
<td>KGW</td>
<td>前一個詞＋密鑰</td>
<td>換詞、改寫、翻譯</td>
</tr>
<tr>
<td>SIR</td>
<td>前文語意</td>
<td>跨語言仍會變弱</td>
</tr>
<tr>
<td>X-SIR</td>
<td>跨語言共通的語意分組</td>
<td>原文沒有宣稱完全不受攻擊影響</td>
</tr>
</tbody></table>
</div><h2 id="教程裡實際做了什麼">教程裡實際做了什麼</h2>
<p>這章使用 GitHub 上的 <strong>X-SIR</strong> 程式碼倉庫，裡面實作了 X-SIR、SIR、KGW 三種水印，以及「改寫」（paraphrase）和「翻譯」（translation）兩種去除水印的攻擊，用來測試穩健性。</p>
<ol>
<li><strong>準備環境</strong>：下載倉庫、建立 Python 3.10 環境、安裝套件（原文說版本只是建議）。</li>
<li><strong>準備資料</strong>：把提示句整理成 jsonl 檔，每行一個 <code>prompt</code>。範例用倉庫內附的英文 mC4 資料，共 500 條，嫌慢可以自己減量。</li>
<li><strong>嵌入水印</strong>：用 <code>baichuan-inc/Baichuan-7B</code> 模型搭配 KGW，執行 <code>gen.py</code> 產生帶水印的回答。</li>
<li><strong>偵測水印</strong>：用 <code>detect.py</code> 分別替「有水印的生成文字」和「沒有水印的原始資料」算 z 分數，比較兩邊差多少。</li>
<li><strong>評估</strong>：用 <code>eval_detection.py</code> 算出 AUC、在固定誤報率下的偵測率（TPR）、F1，並畫 ROC 曲線。原文示範結果 AUC 為 1.000，代表在沒有攻擊的情況下幾乎能完全分開。</li>
<li><strong>穩健性（選做）</strong>：用 gpt-3.5-turbo-1106 把水印文字翻成中文，再重新評估，比較攻擊前後的分數變化。這一步需要自己的 OpenAI API 金鑰，也可以換成其他翻譯工具。</li>
</ol>
<p><strong>硬體需求</strong>：原文沒有寫。不過 7B 模型以半精度執行，一般需要有足夠顯存的 GPU，筆電大多跑不動。</p>
<h2 id="動手試試">動手試試</h2>
<ul>
<li><strong>先理解，再跑程式</strong>：拿一段英文，自己假裝用一個簡單規則（例如按字母分成兩半）當綠色清單，手算綠色詞比例，就能體會 z 分數在量什麼。這不需要任何硬體。</li>
<li><strong>Colab 實作</strong>：X-SIR 支援的都是 7B 等級模型，免費版 Colab 的資源可能不夠，需要付費 GPU 或雲端主機。可以先把資料縮減到幾十條試跑。</li>
<li><strong>穩健性實驗</strong>：翻譯攻擊會呼叫外部 API，有費用；這部分屬於研究用途，目的是評估水印夠不夠耐用，不是教人去除水印。</li>
</ul>
<p>本文刻意不提供任何去除水印的具體操作。研究攻擊是為了讓防禦更好，實際使用請遵守平台規範與學術倫理。</p>
<h2 id="常見誤解">常見誤解</h2>
<ul>
<li><strong>「水印能偵測所有 AI 文字」</strong>：只有產生時有埋水印、而且你拿得到同一把密鑰和方法，才偵測得到。其他模型寫的文字，水印偵測器根本無從判斷。</li>
<li><strong>「z 分數高就是鐵證」</strong>：它是統計上的可能性，短文字的訊號本來就弱，也有誤判的可能。評估時才要看固定誤報率下的表現。</li>
<li><strong>「翻譯一下水印就完全消失」</strong>：翻譯會讓 KGW 這類方法明顯變弱，但 X-SIR 等研究正是在改善這點，效果要看實驗數字，不能一概而論。</li>
<li><strong>「有水印的文字讀起來比較差」</strong>：設計目標是人察覺不到，但偏好特定詞確實可能影響品質，這也是研究者要權衡的地方。</li>
</ul>
<h2 id="延伸閱讀">延伸閱讀</h2>
<ul>
<li>原教程第 5 章：<a href="https://github.com/Lordog/dive-into-llms/tree/main/documents/chapter5" target="_blank" rel="noopener">https://github.com/Lordog/dive-into-llms/tree/main/documents/chapter5</a></li>
<li>X-SIR 程式碼倉庫（含 KGW、SIR 實作）：<a href="https://github.com/zwhe99/X-SIR" target="_blank" rel="noopener">https://github.com/zwhe99/X-SIR</a></li>
</ul>
<blockquote>
<p>本文整理自上海交通大學《動手學大模型》第 5 章，原教程：<a href="https://github.com/Lordog/dive-into-llms/tree/main/documents/chapter5" target="_blank" rel="noopener">https://github.com/Lordog/dive-into-llms/tree/main/documents/chapter5</a>。內容由 MK 以自己的話解說，如有錯誤歡迎留言指正。</p>
</blockquote>
]]></content:encoded>
</item>
<item>
<title>小模型怎麼學會解數學題？</title>
<link>https://mk-ai-notes.pages.dev/posts/ep04-math-reasoning/</link>
<guid isPermaLink="true">https://mk-ai-notes.pages.dev/posts/ep04-math-reasoning/</guid>
<pubDate>Mon, 02 Nov 2026 12:04:00 GMT</pubDate>
<description>讓 1.5B 的小模型模仿 DeepSeek-R1 的解題過程，用監督式微調學會反思和驗算。看資料怎麼篩、怎麼訓練、怎麼評分。</description>
<category>一人公司工作流＋學習系列</category>
<content:encoded><![CDATA[<h2 id="一句話回答">一句話回答</h2>
<p>讓小模型「抄大模型的解題筆記」。這章拿 DeepSeek-R1 寫好的詳細解題過程當教材，用監督式微調（Supervised Fine-Tuning，SFT）訓練 Qwen2.5-Math-1.5B，讓它學會一步步推理、反思和驗算。這種「用強模型的輸出教弱模型」的做法，叫資料蒸餾（Data Distillation）。</p>
<h2 id="為什麼值得知道">為什麼值得知道</h2>
<p>很多人以為模型會不會推理只看參數多大，其實訓練資料同樣重要。</p>
<ul>
<li><strong>成本</strong>：大模型慢又貴，小模型若能學到部分推理能力，比較有機會放在自己的伺服器上。</li>
<li><strong>看懂新聞</strong>：近年常聽到「某某小模型蒸餾自 R1」，這章就是在示範那是什麼意思。</li>
<li><strong>方法可以搬</strong>：「篩資料 → 格式化 → 微調 → 自動評分」這條流程，換成其他任務也是同一套思路。</li>
</ul>
<h2 id="白話原理">白話原理</h2>
<p>想像一個數學底子不錯、但不會寫解題過程的學生。你給他一本頂尖老師的詳解，裡面還寫著「等一下，這裡好像算錯了……」。學生反覆模仿，就會養成回頭檢查的習慣。</p>
<p>對應到這章：</p>
<div class="tablewrap"><table>
<thead>
<tr>
<th>比喻</th>
<th>實際內容</th>
</tr>
</thead>
<tbody><tr>
<td>頂尖老師</td>
<td>DeepSeek-R1，會寫很長的思考過程</td>
</tr>
<tr>
<td>詳解本</td>
<td>DeepMath-103K 資料集裡 R1 的解題過程</td>
</tr>
<tr>
<td>學生</td>
<td>Qwen2.5-Math-1.5B 基座模型</td>
</tr>
<tr>
<td>模仿練習</td>
<td>SFT：讓模型學著逐字產生同樣的回答</td>
</tr>
<tr>
<td>考試</td>
<td>MATH500 測試集，對答案算正確率</td>
</tr>
</tbody></table>
</div><p>有兩個重點：</p>
<ol>
<li><strong>學的是「過程」不只是「答案」</strong>：訓練資料把 R1 的推理包在 <code>&lt;think&gt;</code> 標記裡，模型學到的是思考的樣子。</li>
<li><strong>基座模型本來不會對話</strong>：Qwen2.5-Math-1.5B 是沒經過指令微調的基座模型，只會接著文字往下寫。微調後才有基本的「聽題目、回答」能力。</li>
</ol>
<h2 id="教程裡實際做了什麼">教程裡實際做了什麼</h2>
<p>工具是 Hugging Face 的 <strong>Transformers</strong>、<strong>Datasets</strong>，推理用 <strong>vLLM</strong>，全部放在一個 Jupyter 筆記本 <code>sft_math.ipynb</code> 裡。</p>
<ol>
<li><strong>下載資料</strong>：DeepMath-103K 約有 10.3 萬題高難度數學題，每題附難度標註和 R1 的三條推理路徑。原文特別提到，這份資料已和主流數學測試集去重，避免「考古題洩題」。</li>
<li><strong>篩選資料</strong>：只留下最終答案是純數字的題目，方便之後自動對答案。</li>
<li><strong>整理格式</strong>：每題取第一條 R1 解答，用模型的對話模板（chat template）包成「使用者問題＋助理回答」，回答開頭加上 <code>&lt;think&gt;</code>。</li>
<li><strong>長度篩選</strong>：R1 的回答平均約 5,000 個 token，筆記本只保留長度小於 4,096 的樣本，配合模型的長度上限。</li>
<li><strong>訓練</strong>：以 BF16 精度微調，學習率 1e-6、訓練 3 輪，用 Transformers 的 Trainer 執行。</li>
<li><strong>生成</strong>：用 vLLM 對 MATH500 的 500 題作答，同樣在提示後面加 <code>&lt;think&gt;</code> 引導模型先思考；溫度設 0，也就是每次都選機率最高的字。</li>
<li><strong>評分</strong>：用規則抽出答案裡 <code>\boxed{}</code> 的內容，再用比對函式判斷和標準答案是否相等，算出正確率。</li>
</ol>
<p>訓練參數的設定大致如下（摘自原教程第 4 章筆記本，有刪節）：</p>
<pre><code class="language-python">TrainingArguments(
    per_device_train_batch_size=4,  # 顯存不足時改成 1
    gradient_accumulation_steps=16,
    num_train_epochs=3,
    learning_rate=1e-6,
    bf16=True,
)
</code></pre>
<p>原文觀察到，微調後的模型有了基本的指令遵循能力，明顯會反思（常出現「confirm」），也會寫程式驗算。</p>
<p><strong>硬體需求</strong>：原文寫明至少要 <strong>40GB 顯存</strong>的 GPU，筆記本實際用的是單張 80GB 的 A100；磁碟至少預留 50GB，放模型、資料和訓練存檔。原文沒有公布微調後的正確率數字，要自己跑出來。</p>
<h2 id="動手試試">動手試試</h2>
<p>老實說，完整流程一般筆電做不到，免費版 Colab 的 GPU 顯存也不夠 40GB。可以分段體驗：</p>
<ol>
<li><strong>只看資料</strong>：在 Colab 或筆電用 Datasets 載入 DeepMath-103K，打開幾題 R1 的解答，看看「反思」長什麼樣子。這一步不需要 GPU。</li>
<li><strong>只玩 tokenizer</strong>：載入 Qwen2.5-Math-1.5B 的 tokenizer，用對話模板把一題包起來印出，理解模型實際看到的格式。</li>
<li><strong>整套訓練</strong>：要租有 40GB 以上顯存的雲端 GPU（例如 A100）。筆記本註解建議顯存不夠時把 batch size 調成 1、開啟 gradient checkpointing，但能不能在更小的卡上跑完，原文沒有保證。</li>
</ol>
<p>建議先抽一小部分資料試跑，沒問題再跑全量。</p>
<h2 id="常見誤解">常見誤解</h2>
<ul>
<li><strong>「蒸餾就是把大模型壓縮成小模型」</strong>：這章不是直接壓縮權重，而是用大模型產生的「文字資料」來訓練小模型。</li>
<li><strong>「小模型學完就跟 R1 一樣強」</strong>：它學到的是推理習慣，能力上限還是受模型大小限制，正確率要用測試集實測。</li>
<li><strong>「評分就是看答案字串一不一樣」</strong>：數學答案有很多寫法（分數、小數、化簡前後），要用專門的比對函式判斷。</li>
</ul>
<h2 id="延伸閱讀">延伸閱讀</h2>
<ul>
<li>原教程第 4 章：<a href="https://github.com/Lordog/dive-into-llms/tree/main/documents/chapter4" target="_blank" rel="noopener">https://github.com/Lordog/dive-into-llms/tree/main/documents/chapter4</a></li>
<li>DeepMath-103K 資料集：<a href="https://huggingface.co/datasets/zwhe99/DeepMath-103K" target="_blank" rel="noopener">https://huggingface.co/datasets/zwhe99/DeepMath-103K</a></li>
<li>Qwen2.5-Math-1.5B 模型：<a href="https://huggingface.co/Qwen/Qwen2.5-Math-1.5B" target="_blank" rel="noopener">https://huggingface.co/Qwen/Qwen2.5-Math-1.5B</a></li>
</ul>
<blockquote>
<p>本文整理自上海交通大學《動手學大模型》第 4 章，原教程：<a href="https://github.com/Lordog/dive-into-llms/tree/main/documents/chapter4" target="_blank" rel="noopener">https://github.com/Lordog/dive-into-llms/tree/main/documents/chapter4</a>。內容由 MK 以自己的話解說，如有錯誤歡迎留言指正。</p>
</blockquote>
]]></content:encoded>
</item>
<item>
<title>AI 記錯一件事，能只改那一條嗎？</title>
<link>https://mk-ai-notes.pages.dev/posts/ep03-knowledge-edit/</link>
<guid isPermaLink="true">https://mk-ai-notes.pages.dev/posts/ep03-knowledge-edit/</guid>
<pubDate>Mon, 02 Nov 2026 12:03:00 GMT</pubDate>
<description>不重新訓練，也能直接改模型記住的某一條知識。用 EasyEdit 和 ROME 把梅西改成打籃球，再檢查有沒有改壞別的事。</description>
<category>一人公司工作流＋學習系列</category>
<content:encoded><![CDATA[<h2 id="一句話回答">一句話回答</h2>
<p>可以，這個研究方向叫「知識編輯」（Knowledge Editing）。它不重新訓練整個模型，而是找到模型裡跟某條知識有關的參數，只動那一小塊，讓模型對這件事的回答改掉，同時盡量不影響其他知識。不過「只改那一條」是目標，不是保證，改完一定要驗證。</p>
<h2 id="為什麼值得知道">為什麼值得知道</h2>
<p>模型的知識停在訓練那一天。公司換了執行長、法規更新了，它還是照舊回答。補救方式有三種：</p>
<ul>
<li><strong>重新訓練或微調</strong>：成本高，而且可能讓模型忘掉別的東西。</li>
<li><strong>檢索增強（RAG）</strong>：回答前先查資料庫，模型本身沒變。</li>
<li><strong>知識編輯</strong>：直接改模型內部，讓它「真的記成新的」。</li>
</ul>
<p>知識編輯適合「少量、明確、要馬上修正」的事實錯誤。了解它，廠商說「可以直接修正模型」時，你就知道該追問什麼。</p>
<h2 id="白話原理">白話原理</h2>
<p>把模型想成一座圖書館，知識分散在很多書架上。知識編輯是找到「梅西 → 足球」主要放在哪個書架，只改那裡。</p>
<p>本章用的方法是 <strong>ROME</strong>（Rank-One Model Editing）。它的核心想法：</p>
<ol>
<li>事實型知識常可以拆成「主體＋關係＋答案」，例如（梅西、從事的運動、足球）。</li>
<li>研究發現，這類關聯和模型中間層的前饋網路（MLP）關係很大。</li>
<li>ROME 對那一層的權重做一次很小的「秩一」更新，可以想成只加上一個非常精準的修正量，讓「梅西」連到「籃球」。</li>
</ol>
<p>改完之後要檢查四件事，這也是 EasyEdit 評估模組的四個指標：</p>
<div class="tablewrap"><table>
<thead>
<tr>
<th>指標</th>
<th>白話說法</th>
<th>例子</th>
</tr>
</thead>
<tbody><tr>
<td>可靠性（Reliability）</td>
<td>原本那句問法有沒有改成功</td>
<td>問「梅西打什麼運動」→ 籃球</td>
</tr>
<tr>
<td>通用性（Generalization）</td>
<td>換個說法問還是新答案嗎</td>
<td>「梅西是哪種運動的選手」→ 籃球</td>
</tr>
<tr>
<td>局部性（Locality）</td>
<td>無關的知識有沒有被誤傷</td>
<td>「Larry Bird 是職業……」還是籃球</td>
</tr>
<tr>
<td>可移植性（Portability）</td>
<td>跟這條知識相關的推論有沒有跟著更新</td>
<td>由新事實延伸出的問題</td>
</tr>
</tbody></table>
</div><p>好的編輯要四項兼顧，只看可靠性容易誤以為成功。</p>
<h2 id="教程裡實際做了什麼">教程裡實際做了什麼</h2>
<p>這章使用浙江大學團隊開源的 <strong>EasyEdit</strong> 工具包。它把編輯流程整理成幾個模組：Editor（要編輯的模型與知識、超參數）、Method（ROME、MEND 等編輯方法）、Evaluate（上面四個指標）、Trainer（需要先訓練的方法才用）。</p>
<p>示範任務是把 <strong>GPT-2 XL</strong> 記得的「梅西踢足球」改成「梅西打籃球」。步驟如下：</p>
<ol>
<li>下載 EasyEdit 並安裝套件（原文建議 Python 3.9.7 的 conda 環境）。</li>
<li>選擇編輯方法 ROME，設定模型路徑與要用哪張 GPU，其他參數用原本的設定即可。</li>
<li>準備編輯資料：提問句、原答案（football）、新答案（basketball）、主體（Lionel Messi）。</li>
<li>讀入 ROME 的超參數檔，建立 Editor。</li>
<li>呼叫 <code>edit</code> 方法執行編輯，取得評估結果與編輯後的模型。</li>
</ol>
<p>核心呼叫只有幾行（摘自原教程第 3 章，有刪節）：</p>
<pre><code class="language-python">hparams = ROMEHyperParams.from_hparams(&#39;./hparams/ROME/gpt2-xl.yaml&#39;)
editor = BaseEditor.from_hparams(hparams)
metrics, edited_model, _ = editor.edit(
    prompts=prompts, ground_truth=ground_truth,
    target_new=target_new, subject=subject)
</code></pre>
<p>驗證方式有兩種：在 <code>edit</code> 裡傳入 <code>locality_inputs</code> 等評估資料讓工具算分數；或把同一批句子丟給編輯前後的模型，直接比較生成結果。</p>
<p>原文提醒：第一次編輯某個模型會下載維基百科語料、計算各層統計值，所以比較久，之後會重複使用。</p>
<p>進階部分是<strong>批次編輯</strong>（Batch edit）：把多條知識排成列表一次傳入，原文指出這時 <strong>MEMIT</strong> 是比較合適的方法。另外介紹兩個常用測試集 <strong>CounterFact</strong> 和 <strong>ZsRE</strong>，每筆資料除了要改的事實，還附有換句話說的問法與「鄰居」問題，正好對應通用性與局部性。</p>
<p>硬體方面，原文只寫要指定 GPU，沒有寫需要多少顯存。</p>
<h2 id="動手試試">動手試試</h2>
<p>最省事的入口是原文附的 Colab 筆記本（ROME 與批次編輯各一份），在瀏覽器就能跑。建議這樣玩：</p>
<ol>
<li>照原樣把梅西改成籃球，看可靠性分數。</li>
<li>寫兩三句換說法的問題，檢查通用性。</li>
<li>準備幾題無關的常識題，比較編輯前後，感受局部性。</li>
<li>一次改兩條知識，看會不會互相干擾。</li>
</ol>
<p>GPT-2 XL 是很早期的模型，本來就常答錯，重點是看「編輯前後的差異」。免費版 Colab 的 GPU 和時間有限，跑不動時可能要換付費方案，原文沒有這部分的建議。</p>
<h2 id="常見誤解">常見誤解</h2>
<ul>
<li><strong>「改一條就只會影響那一條」</strong>：參數是很多知識共用的，改動可能波及相近的事實，所以才需要局部性指標。</li>
<li><strong>「知識編輯可以取代重新訓練」</strong>：它適合少量、明確的事實。大量或大範圍的更新，目前還是要靠訓練或檢索。</li>
<li><strong>「編輯成功＝模型真的理解新事實」</strong>：可靠性高不代表推理也跟著更新，可移植性常常是最難的一項。</li>
</ul>
<h2 id="延伸閱讀">延伸閱讀</h2>
<ul>
<li>原教程第 3 章：<a href="https://github.com/Lordog/dive-into-llms/tree/main/documents/chapter3" target="_blank" rel="noopener">https://github.com/Lordog/dive-into-llms/tree/main/documents/chapter3</a></li>
<li>EasyEdit 工具包：<a href="https://github.com/zjunlp/EasyEdit" target="_blank" rel="noopener">https://github.com/zjunlp/EasyEdit</a></li>
<li>EasyEdit 的 ZsRE 範例程式：<a href="https://github.com/zjunlp/EasyEdit/blob/main/examples/run_zsre_llama2.py" target="_blank" rel="noopener">https://github.com/zjunlp/EasyEdit/blob/main/examples/run_zsre_llama2.py</a></li>
</ul>
<blockquote>
<p>本文整理自上海交通大學《動手學大模型》第 3 章，原教程：<a href="https://github.com/Lordog/dive-into-llms/tree/main/documents/chapter3" target="_blank" rel="noopener">https://github.com/Lordog/dive-into-llms/tree/main/documents/chapter3</a>。內容由 MK 以自己的話解說，如有錯誤歡迎留言指正。</p>
</blockquote>
]]></content:encoded>
</item>
<item>
<title>怎麼讓現成模型學會你的任務，還做成網頁 Demo？</title>
<link>https://mk-ai-notes.pages.dev/posts/ep02-finetune/</link>
<guid isPermaLink="true">https://mk-ai-notes.pages.dev/posts/ep02-finetune/</guid>
<pubDate>Mon, 02 Nov 2026 12:02:00 GMT</pubDate>
<description>拿現成的 BERT，用推文資料微調成分類器，再用 Gradio 放上 Hugging Face Spaces。交大第 1 章的完整流程白話版。</description>
<category>一人公司工作流＋學習系列</category>
<content:encoded><![CDATA[<h2 id="一句話回答">一句話回答</h2>
<p>不用從零訓練：先挑一個已經讀過大量文字的「預訓練模型」（例如 BERT），用你自己的標註資料再訓練一小段，這叫<strong>微調（Fine-tuning）</strong>。訓練好之後，寫一個幾十行的 Gradio 小程式，上傳到 Hugging Face Spaces，就有一個別人點網址就能用的網頁 Demo。</p>
<h2 id="為什麼值得知道">為什麼值得知道</h2>
<p>很多工作上的需求，其實都是「分類」：</p>
<ul>
<li>客服信件要分到哪個部門？</li>
<li>這則評論是好評還是負評？</li>
<li>這篇貼文是不是詐騙、是不是在講真實事件？</li>
</ul>
<p>用大型聊天模型每次下提示也做得到，但如果資料量大、要求穩定又便宜，一個微調過的小模型常常更划算。而把成果做成網頁 Demo，是跟主管、客戶、教授溝通最快的方式：與其給報告，不如給一個能輸入文字、馬上看到結果的頁面。</p>
<h2 id="白話原理">白話原理</h2>
<h3 id="預訓練-vs-微調">預訓練 vs. 微調</h3>
<div class="tablewrap"><table>
<thead>
<tr>
<th>階段</th>
<th>做什麼</th>
<th>比喻</th>
</tr>
</thead>
<tbody><tr>
<td>預訓練（Pre-training）</td>
<td>模型讀大量文字，學會語言的一般規律</td>
<td>一個讀過很多書的大學畢業生</td>
</tr>
<tr>
<td>微調（Fine-tuning）</td>
<td>用你的標註資料再訓練，學會特定任務</td>
<td>新人到公司接受一週的部門訓練</td>
</tr>
<tr>
<td>推論（Inference）</td>
<td>用訓練好的模型處理新資料</td>
<td>新人正式上線接案</td>
</tr>
</tbody></table>
</div><p>微調的成本遠低於預訓練，因為模型已經「懂語言」，只需要學會你的判斷標準。</p>
<h3 id="三個關鍵工具">三個關鍵工具</h3>
<ul>
<li><strong>Transformers</strong>：Hugging Face 的 Python 套件，一行就能下載 BERT、T5 這類模型，也提供訓練範例腳本。</li>
<li><strong>BERT</strong>（bert-base-uncased）：擅長「讀懂」文字的模型，很適合分類。它不是聊天模型，不會生成長篇回答。</li>
<li><strong>Gradio＋Spaces</strong>：Gradio 能用很少的程式碼做出輸入框、按鈕和結果顯示；Spaces 是 Hugging Face 提供的託管平台，把檔案放上去就會變成公開網頁。</li>
</ul>
<h2 id="教程裡實際做了什麼">教程裡實際做了什麼</h2>
<p>任務是<strong>推文分類</strong>：教程稱為「虛假推文」資料集，來源是 Kaggle 入門競賽，每則推文標 0 或 1（是不是在講真實災難）。</p>
<ol>
<li><strong>建立環境</strong>：用 conda 建 Python 3.9 環境，安裝 Transformers 和相關套件；原文提醒 PyTorch 要裝 GPU 版，不然只能用 CPU 跑。</li>
<li><strong>準備資料</strong>：下載 Kaggle 資料，切成訓練、驗證、測試三份。</li>
<li><strong>路線一：拆開版（建議先看）</strong>：只有三個檔案，分別負責讀資料、定義模型、訓練／驗證／預測，一行指令跑完。結構清楚，方便改成自己的資料或評估指標。</li>
<li><strong>路線二：官方整合版（選做）</strong>：用 Transformers 內建的分類腳本，靠參數控制。示範設定是 bert-base-uncased、最長 512 個 token、批次大小 32、學習率 2e-5、訓練 1 輪，用準確率評估。</li>
<li><strong>排除網路問題</strong>：卡在下載模型或載入評估指標時，就先把它們下載到本機，參數改指向本機路徑。</li>
<li><strong>部署</strong>：在 Hugging Face 建立 Gradio 類型的 Space，上傳 <code>app.py</code>、<code>requirements.txt</code> 和訓練好的模型，Space 會自動建置成網頁。原文附了一個已部署的範例可參考。</li>
<li><strong>進階練習</strong>：換成情感分類、新聞分類，或換 T5、ELECTRA 等模型；也列了問答、摘要、LoRA 輕量微調等參考資源。</li>
</ol>
<p>硬體：<strong>原文沒寫</strong>明確的顯存需求。</p>
<h2 id="動手試試">動手試試</h2>
<p>最小可行做法：</p>
<ol>
<li>開一個 Colab 筆記本，執行階段選 GPU（免費額度時有時無，以當下為準）。</li>
<li>照 Transformers 官方文字分類範例，把 BERT 微調在一份小型標註資料上。BERT-base 規模不大，通常在 Colab 的 GPU 上跑得動。</li>
<li>訓練完，用極簡 Gradio 介面測試（MK 自己寫的示意，非教程原文）：</li>
</ol>
<pre><code class="language-python">import gradio as gr
from transformers import pipeline
clf = pipeline(&quot;text-classification&quot;, model=&quot;./my-model&quot;)
def predict(text):
    return clf(text)[0][&quot;label&quot;]
gr.Interface(fn=predict, inputs=&quot;text&quot;, outputs=&quot;text&quot;).launch()
</code></pre>
<ol start="4">
<li>跑通之後，到 Hugging Face 建立 Gradio Space，把這支程式、套件清單和模型上傳。</li>
</ol>
<p>只有 CPU 的筆電也能跑但慢很多，建議先用幾百筆資料試流程。</p>
<h2 id="常見誤解">常見誤解</h2>
<ul>
<li><strong>「微調就是重新訓練一個大模型」</strong>：微調是在現成模型上「補課」，資料量和運算量都小得多。</li>
<li><strong>「BERT 跟 ChatGPT 是同一種東西」</strong>：BERT 擅長理解和分類，不擅長自由生成對話，任務選錯模型會事倍功半。</li>
<li><strong>「準確率高就能上線」</strong>：要注意資料是否平衡、驗證集是否和訓練集重複，以及實際使用的文字是否和訓練資料長得像。</li>
<li><strong>「放上 Spaces 就安全」</strong>：公開 Space 任何人都看得到程式碼，敏感資料別放。</li>
</ul>
<h2 id="延伸閱讀">延伸閱讀</h2>
<ul>
<li>第 1 章原文：<a href="https://github.com/Lordog/dive-into-llms/tree/main/documents/chapter1" target="_blank" rel="noopener">https://github.com/Lordog/dive-into-llms/tree/main/documents/chapter1</a></li>
<li>Gradio Spaces 說明：<a href="https://huggingface.co/docs/hub/en/spaces-sdks-gradio" target="_blank" rel="noopener">https://huggingface.co/docs/hub/en/spaces-sdks-gradio</a></li>
</ul>
<blockquote>
<p>本文整理自上海交通大學《動手學大模型》第 1 章，原教程：<a href="https://github.com/Lordog/dive-into-llms/tree/main/documents/chapter1" target="_blank" rel="noopener">https://github.com/Lordog/dive-into-llms/tree/main/documents/chapter1</a> 。內容由 MK 以自己的話解說，如有錯誤歡迎留言指正。</p>
</blockquote>
]]></content:encoded>
</item>
<item>
<title>為什麼對 AI 說「加油」，答案會變好？</title>
<link>https://mk-ai-notes.pages.dev/posts/ep01-prompting/</link>
<guid isPermaLink="true">https://mk-ai-notes.pages.dev/posts/ep01-prompting/</guid>
<pubDate>Mon, 02 Nov 2026 12:01:00 GMT</pubDate>
<description>一句「我們一步一步想」為什麼能讓 AI 算對數學？用交大第 2 章看懂零樣本、少樣本、思維鏈與自我一致性。</description>
<category>一人公司工作流＋學習系列</category>
<content:encoded><![CDATA[<h2 id="一句話回答">一句話回答</h2>
<p>讓答案變好的不是「加油」這兩個字的情緒，而是你的話改變了模型<strong>接下來要寫什麼</strong>。像「Let&#39;s think step by step（我們一步一步想）」這種句子，會引導模型先寫出中間推理步驟再給答案，多步驟的題目因此比較容易算對。這種技巧叫做思維鏈（Chain-of-Thought, CoT）。</p>
<h2 id="為什麼值得知道">為什麼值得知道</h2>
<p>每天用 ChatGPT、Claude、Gemini 的人，其實都在做「提示工程（Prompt Engineering）」，只是不一定知道原理。懂了之後：</p>
<ul>
<li>你會知道什麼時候該<strong>給範例</strong>、什麼時候該<strong>要它先列步驟</strong>。</li>
<li>遇到算錯、漏條件的回答，你有方法調整，而不是一直重問。</li>
<li>開發者把大模型接進產品時，提示寫法直接影響正確率和成本。</li>
</ul>
<p>交大這章的導讀標題就叫「AI 在線求鼓勵？」，意思是：模型有些答案錯得離譜，但換個問法，它可能就答對了。</p>
<h2 id="白話原理">白話原理</h2>
<p>大模型的本質是「根據前面的文字，預測下一段文字」。所以你給它的開頭，等於替它鋪好了路。</p>
<h3 id="零樣本-vs-少樣本">零樣本 vs. 少樣本</h3>
<div class="tablewrap"><table>
<thead>
<tr>
<th>方式</th>
<th>你給什麼</th>
<th>比喻</th>
</tr>
</thead>
<tbody><tr>
<td>零樣本提示（Zero-shot）</td>
<td>只有指令，例如「把英文翻成法文」</td>
<td>直接交代新同事做事</td>
</tr>
<tr>
<td>少樣本提示（Few-shot）</td>
<td>指令＋幾組「題目→答案」範例</td>
<td>先給新同事看三份做好的範本</td>
</tr>
</tbody></table>
</div><p>少樣本的好處是模型能從範例學到<strong>格式</strong>和<strong>任務邊界</strong>。例如教程裡的情感分析例子，範例示範了「挑出評論中的面向詞，再標正面或負面」，模型就會照同樣格式輸出。</p>
<h3 id="思維鏈把一大步拆成很多小步">思維鏈：把一大步拆成很多小步</h3>
<p>人解應用題時會先寫算式，而不是直接報數字。思維鏈就是讓模型也這樣做：</p>
<ul>
<li><strong>少樣本思維鏈</strong>：範例裡不只放答案，還放「先算什麼、再算什麼」的過程，模型就會模仿著寫出步驟。</li>
<li><strong>零樣本思維鏈</strong>：連範例都不給，只在題目後面加一句「Let&#39;s think step by step」。這句話之所以有效，是因為它讓模型的下一段文字變成「推理過程」，而不是急著給一個數字。</li>
</ul>
<p>所以，「加油」本身沒有魔法；真正起作用的，是讓模型「先想再答」的那句引導。</p>
<h3 id="程式思維鏈pot">程式思維鏈（PoT）</h3>
<p>另一種做法叫程式思維鏈（Program-of-Thought, PoT）：請模型把解題過程寫成 Python 程式，最後由電腦執行算出答案。模型負責「列式」，計算交給程式，就比較不會在乘除上粗心出錯。</p>
<h3 id="自我一致性多想幾次投票決定">自我一致性：多想幾次，投票決定</h3>
<p>自我一致性（Self-Consistency）是把溫度（temperature）設成大於 0，例如 0.7，讓同一題跑好幾次、得到好幾條不同的推理路徑，最後選<strong>出現最多次的答案</strong>。像考試時把一題用三種方法算，三次都得到 24，你就比較放心。</p>
<h2 id="教程裡實際做了什麼">教程裡實際做了什麼</h2>
<p>這章用的是<strong>雲端 API</strong>，不需要自己的 GPU。步驟大致如下：</p>
<ol>
<li><strong>申請 API 權限</strong>：原文列了通義千問、智譜 AI、OpenAI 等，任選一家開通，拿到 API Key。</li>
<li><strong>兩種呼叫方式</strong>：先在網頁的模型體驗介面試，再用 Python 呼叫；示範了一般呼叫和串流（streaming）輸出，範例模型是 <code>qwen-turbo</code>。</li>
<li><strong>提示學習</strong>：用機器翻譯（英翻法）和面向情感分析兩個任務，對照零樣本和少樣本的寫法。</li>
<li><strong>思維鏈</strong>：用小學數學應用題資料集 GSM8K 的題目，對照自然語言思維鏈（CoT）和程式思維鏈（PoT），各有零樣本、少樣本版本。</li>
<li><strong>觀察與思考</strong>：<ul>
<li>把少樣本範例改成<strong>錯的答案</strong>，結果會怎樣？（引用 ACL 2023 的 Understanding-CoT 研究）</li>
<li>用自我一致性多次採樣、投票，看正確率能不能提升（ICLR 2023 論文）。</li>
</ul>
</li>
<li><strong>進階（選做）</strong>：Auto-CoT 自動產生範例、ReAct 結合推理與行動等；另有用 R-Judge 判斷代理操作是否有風險的安全應用。</li>
</ol>
<p>硬體：能上網、能跑 Python 即可。API 費用依各家方案，原文提到開通後會獲贈試用額度。</p>
<h2 id="動手試試">動手試試</h2>
<p>不寫程式也能試，打開你常用的聊天 AI，用同一題比較三種問法：</p>
<pre><code class="language-text">題目：10 個朋友一起玩線上遊戲，7 個人下線了。
留下來的每個人有 8 條命，他們總共有幾條命？

A. 直接問題目
B. 題目後面加：「請一步一步推理，最後再給答案。」
C. 同一個 B 問法，開三個新對話各問一次，看答案是否一致
</code></pre>
<p>（改寫自教程的 GSM8K 範例，答案是 3 × 8 = 24。）</p>
<p>要寫程式的話：下載原 repo，打開第 2 章的筆記本，把 API Key 換成你自己的。改用其他家的官方 SDK 也行，邏輯相同。</p>
<h2 id="常見誤解">常見誤解</h2>
<ul>
<li><strong>「AI 有情緒，所以要鼓勵它」</strong>：模型沒有情緒需求。有效的是提示改變了輸出的結構，例如先寫推理。</li>
<li><strong>「每題都加一步一步想就對了」</strong>：簡單的查詢、翻譯不一定需要，反而變長、變慢、多花 token。思維鏈對多步驟推理比較有幫助。</li>
<li><strong>「推理寫出來了，答案就一定對」</strong>：步驟看起來合理，數字仍可能算錯，重要結果還是要自己驗算，或用程式思維鏈交給電腦算。</li>
<li><strong>「範例一定要完美」</strong>：Understanding-CoT 研究發現，範例裡的推理就算有錯，效果也未必大幅下降，範例跟問題是否相關、步驟是否連貫，影響更大。但這不代表可以亂給範例。</li>
</ul>
<h2 id="延伸閱讀">延伸閱讀</h2>
<ul>
<li>第 2 章原文：<a href="https://github.com/Lordog/dive-into-llms/tree/main/documents/chapter2" target="_blank" rel="noopener">https://github.com/Lordog/dive-into-llms/tree/main/documents/chapter2</a></li>
<li>GSM8K 資料集：<a href="https://github.com/openai/grade-school-math" target="_blank" rel="noopener">https://github.com/openai/grade-school-math</a></li>
<li>Auto-CoT：<a href="https://github.com/amazon-science/auto-cot" target="_blank" rel="noopener">https://github.com/amazon-science/auto-cot</a></li>
<li>提示技術整理：<a href="https://www.promptingguide.ai/" target="_blank" rel="noopener">https://www.promptingguide.ai/</a></li>
</ul>
<blockquote>
<p>本文整理自上海交通大學《動手學大模型》第 2 章，原教程：<a href="https://github.com/Lordog/dive-into-llms/tree/main/documents/chapter2" target="_blank" rel="noopener">https://github.com/Lordog/dive-into-llms/tree/main/documents/chapter2</a> 。內容由 MK 以自己的話解說，如有錯誤歡迎留言指正。</p>
</blockquote>
]]></content:encoded>
</item>
<item>
<title>上海交大把大模型課免費開源了，裡面教什麼？</title>
<link>https://mk-ai-notes.pages.dev/posts/ep00-overview/</link>
<guid isPermaLink="true">https://mk-ai-notes.pages.dev/posts/ep00-overview/</guid>
<pubDate>Mon, 02 Nov 2026 12:00:00 GMT</pubDate>
<description>上海交大《動手學大模型》11 章實作教程總覽：每章學什麼、要什麼硬體、該從哪裡開始。</description>
<category>一人公司工作流＋學習系列</category>
<content:encoded><![CDATA[<h2 id="一句話回答">一句話回答</h2>
<p>這是上海交通大學把兩門課的講義，擴充成 11 章「邊做邊學」的大模型（Large Language Model, LLM）實作教程，放在 GitHub 上公益免費。內容從呼叫 API、寫提示詞，一路到微調、知識編輯、多模態、智慧代理（Agent）和安全對齊，每章都附投影片、說明文件和程式筆記本。</p>
<h2 id="為什麼值得知道">為什麼值得知道</h2>
<p>市面上的 AI 課程很多，但大部分停在「怎麼用 ChatGPT」。這套教程的定位不同：它想讓你<strong>親手跑過一次</strong>大模型開發的關鍵步驟，知道模型是怎麼被調整、被評估、被攻擊、又被防守的。</p>
<p>對台灣的上班族和學生來說，好處有三個：</p>
<ul>
<li><strong>免費、完整</strong>：課件、教程、程式腳本三件套都公開。</li>
<li><strong>題目貼近業界</strong>：微調、部署、代理、浮水印、越獄防禦，都是現在公司真的在討論的事。</li>
<li><strong>附研究脈絡</strong>：每章都連到原始論文和開源工具，適合想寫專題、做研究的人當起點。</li>
</ul>
<p>這個系列用 12 集短影片加文章，一集只回答一個問題。</p>
<h2 id="白話原理這套教程的來歷">白話原理：這套教程的來歷</h2>
<ul>
<li><strong>來源課程</strong>：上海交大研究所的《自然語言處理前沿技術》（NIS8021）與大學部的《人工智慧安全技術》（NIS3353）。</li>
<li><strong>授課老師</strong>：張倬勝老師，開發團隊有多位交大師生，也有新加坡國立大學的成員。</li>
<li><strong>性質</strong>：原文寫明「公益性質、完全免費」，目標是幫學生快速入門、做課程專題或研究。</li>
<li><strong>熱門程度</strong>：GitHub 約 5.9 萬顆星。</li>
</ul>
<p>2025 年 6 月團隊又做了兩件事：一是補上數學推理、圖形介面代理、對齊、隱寫等新主題；二是和華為昇騰社區合作推出《大模型開發全流程》，有投影片、實驗手冊和影片，分初級、中級、高級，基於昇騰的軟硬體。手上剛好有昇騰環境的人可以另外去看，本系列聚焦在原本的 11 章。</p>
<p>你可以把整套教程想成一本「大模型實驗室工作手冊」：前兩章教你怎麼開機、怎麼下指令；中段教你怎麼改裝模型；後段教你怎麼檢查它安不安全。</p>
<h2 id="教程裡實際做了什麼11-章一覽">教程裡實際做了什麼：11 章一覽</h2>
<ol>
<li><strong>第 1 章 微調與部署</strong>：用 Transformers 把 BERT 微調成文字分類器，再用 Gradio 做成網頁展示。（ep02）</li>
<li><strong>第 2 章 提示學習與思維鏈</strong>：呼叫大模型 API，練習零樣本、少樣本提示和思維鏈。（ep01）</li>
<li><strong>第 3 章 知識編輯</strong>：用 EasyEdit 改掉模型記住的某一則知識，再檢查有沒有改壞別的。（ep03）</li>
<li><strong>第 4 章 數學推理</strong>：拿 DeepSeek-R1 寫出的解題過程做監督式微調，蒸餾出迷你數學模型。（ep04）</li>
<li><strong>第 5 章 模型水印</strong>：在生成的文字裡嵌入人看不出、演算法測得出的浮水印，並測試被改寫後還在不在。（ep05）</li>
<li><strong>第 6 章 越獄攻擊</strong>：用 EasyJailbreak 框架認識常見越獄手法，目的是先懂攻擊、才能做好防禦。（ep06）</li>
<li><strong>第 7 章 大模型隱寫</strong>：用 GPT-2 在看似正常的文字裡藏訊息，比較兩種編碼方法。（ep07）</li>
<li><strong>第 8 章 多模態模型</strong>：以 NExT-GPT 為例，看「任意模態進、任意模態出」的架構怎麼搭、怎麼訓練。（ep08）</li>
<li><strong>第 9 章 圖形介面代理</strong>：用 Qwen2-VL-7B 和 OS-Kairos 資料集，訓練會看手機畫面、自己點按鈕的代理。（ep09）</li>
<li><strong>第 10 章 智慧代理安全</strong>：用 R-Judge 評測平台，看模型能不能在多輪操作紀錄裡認出風險。（ep10）</li>
<li><strong>第 11 章 RLHF 安全對齊</strong>：用 PPO 演算法，拿情緒分類器當獎勵，讓 GPT-2 學會寫正面影評。（ep11）</li>
</ol>
<h3 id="硬體需求照原文">硬體需求（照原文）</h3>
<ul>
<li>第 2 章只要能呼叫雲端 API，<strong>不需要 GPU</strong>。</li>
<li>第 1、3 章原文沒寫顯存需求；第 7 章寫 GPU 是選配、用來加速。</li>
<li>第 4 章明寫需要<strong>至少 40GB 顯存</strong>的 GPU，磁碟至少留 50GB。</li>
<li>第 9 章的訓練段落寫至少要 <strong>3 張 80GB 的 A100</strong>。</li>
<li>第 11 章的復現環境是單張 <strong>A800 80GB</strong>，實際占用約 10GB、訓練約 35 分鐘。</li>
</ul>
<p>整體來說，多數章節要有 GPU 才跑得順。</p>
<h2 id="動手試試">動手試試</h2>
<p>最小起步方式：</p>
<ol>
<li>把整個 repo 下載下來：<code>git clone https://github.com/Lordog/dive-into-llms.git</code></li>
<li>打開第 2 章資料夾，先讀說明文件，再開裡面的筆記本。</li>
<li>申請任一家大模型 API 金鑰（原文舉例通義千問、智譜、OpenAI），照範例送出第一個請求。</li>
<li>跑得通之後換第 1 章，在 Colab 這類有免費 GPU 額度的環境試著微調 BERT。</li>
</ol>
<p>建議學習順序：<strong>第 2 章 → 第 1 章 → 第 3、4 章 → 第 11 章 → 第 8、9 章 → 安全四章（5、6、7、10）</strong>。先會用、再會改、最後學會檢查。</p>
<p>需要的基礎是會寫基本 Python、看得懂筆記本、知道怎麼裝套件；數學不用先補滿，遇到再查就好。教程原本寫給中國大陸學生，裡面有不少鏡像站、網盤和「需要特殊上網方式」的說明，在台灣多半直接照官方網址走即可。</p>
<h2 id="常見誤解">常見誤解</h2>
<ul>
<li><strong>「免費開源等於可以隨便轉載」</strong>：這個 repo 目前沒有授權檔，自己學習沒問題，但整段搬運或商業使用前，應先確認作者意願。</li>
<li><strong>「看完就能自己訓練大模型」</strong>：教程多半是拿現成模型做實驗，不是從零預訓練一個 GPT。</li>
<li><strong>「每章筆電都跑得動」</strong>：第 4、9、11 章原文用的都是資料中心等級的 GPU，一般筆電跑不動。</li>
<li><strong>「安全章節是在教人攻擊」</strong>：越獄、隱寫等章節的目的，是讓研究者理解風險、設計防禦。</li>
</ul>
<h2 id="延伸閱讀">延伸閱讀</h2>
<ul>
<li>原教程首頁：<a href="https://github.com/Lordog/dive-into-llms" target="_blank" rel="noopener">https://github.com/Lordog/dive-into-llms</a></li>
<li>Hugging Face Transformers：<a href="https://github.com/huggingface/transformers" target="_blank" rel="noopener">https://github.com/huggingface/transformers</a></li>
<li>昇騰《大模型開發學習專區》：<a href="https://www.hiascend.com/edu/growth/lm-development" target="_blank" rel="noopener">https://www.hiascend.com/edu/growth/lm-development</a></li>
</ul>
<blockquote>
<p>本文整理自上海交通大學《動手學大模型》總覽，原教程：<a href="https://github.com/Lordog/dive-into-llms" target="_blank" rel="noopener">https://github.com/Lordog/dive-into-llms</a> 。內容由 MK 以自己的話解說，如有錯誤歡迎留言指正。</p>
</blockquote>
]]></content:encoded>
</item>
</channel>
</rss>
