AI-LECTURER 速報課|2026-08-05|約 28 分鐘

本地跑的AI代理人:LFM2.5-2.6B怎麼用「蒸餾+強化學習」打贏4倍大的模型

取材:Deploy local agents everywhere with LFM2.5-2.6B(Hugging Face Blog)
📍 真實場景
阿凱,接案七年的自由工程師,正在幫一間中小型會計師事務所開發內部用的『報稅小幫手』機器人

客戶希望機器人能自動讀取客戶上傳的收據、查詢申報進度資料庫、並用白話回覆同事的提問,而且要給20幾位員工天天使用

😖 卡住的地方:串接雲端大型語言模型API,光是每月token費用就要好幾萬元,而且客戶的財務資料依內部規定不能傳到事務所外部的伺服器,老闆已經明講:這個方案再貴、再有資安疑慮,就別做了
💡 這篇會告訴阿凱,有一顆只有26億參數、能直接裝進客戶自己電腦跑的小模型,工具呼叫能力不輸貴4倍的大模型,讓「免API費、資料不出門」這個方案真的能落地

🧭 這到底是什麼(白話版)

LFM2.5-2.6B是Liquid AI推出的一個小型代理式AI模型(agentic AI model)不只回答問題,還會自己規劃步驟、判斷該呼叫哪個工具、一步步把任務完成的AI,只有參數量(parameters)AI內部用來儲存規則與知識的「旋鈕」數量,數字越大通常代表模型讀過、記住的東西越多26億個(2.6B),卻能在多項考驗上打平甚至打贏參數量是它4倍的模型。

之所以能把「小」跟「強」兼顧,關鍵在於推論效率:在蘋果M5 Max筆電上能跑到每秒220個字,在一般AMD Ryzen CPU(不需要顯示卡)上也有每秒113個字,而且全程只佔用不到2.5GB記憶體。也就是說,普通的辦公用筆電,不用額外添購昂貴顯卡,就能把它當成一位隨傳隨到的私人AI員工。

LFM2.5並不是憑空長出這身本事——它先經過預訓練(pretraining)讓AI通讀天量文字資料,打好語言與常識基礎的第一階段(讀過大約34兆個字),接著用知識蒸餾(distillation)讓一個小模型觀摩多位「專家老師模型」的解法,把濃縮出的精華學起來,變成又小又厲害的學生模型強化學習(reinforcement learning)讓AI實際動手做任務、依照做得好不好給獎勵或懲罰,透過不斷試錯調整行為的訓練方式,在真的代理框架(像OpenClaw、Hermes Agent)裡反覆演練,才練出「懂得該呼叫哪個工具」的判斷力。

🎯 為什麼值得你花時間

免API費,把AI直接請回家如果有20幾位員工天天打雲端大模型的API,累積起來的token費用相當驚人;LFM2.5可以直接部署在自己的電腦或伺服器上,用一次是一次的電費,不用再按呼叫次數付費給外部API廠商。
資料不出門,過資安關財務、醫療等敏感資料常有規定不能上傳到外部伺服器;本地端跑模型代表所有推理都發生在自己機器裡,天生解決「資料外流」這個卡關點,不用另外簽一堆資安免責聲明。
小身材不等於弱能力官方公布的benchmark顯示,LFM2.5在工具呼叫(BFCLv4)、多步驟指令遵循(Multi-IF)等指標上,對比參數量大它3~4倍的Gemma、Qwen模型經常打平甚至超前,代表「地端部署」不必然要犧牲能力去換取輕量化。

⚙️ 它是怎麼運作的

1
打底:啃過34兆個字的預訓練先讓模型通讀天量的一般文字資料,打好語言理解與世界常識的地基,就像先讀完通識課本,才有能力去學專業科目。
2
拉長記憶:情境窗口延伸到128K中期訓練把情境窗口(context window)模型一次能記住並參考的文字長度上限,像是它腦中的短期記憶容量延伸到128K,代表它一次能記住並參考的內容量,大約可以塞進一整本中篇小說。
3
兩輪監督式微調(SFT):惡補「代理」考古題拿工具使用、網頁搜尋、真實代理框架的操作紀錄當教材,狠狠練兩輪,重點不再是背知識,而是學會「遇到這種任務該怎麼動手」。
4
訓練專科老師:一個領域配一位家教分別訓練出數學、程式、工具使用等各領域的「專科老師模型」,每個老師只要在自己的專長領域夠強就好,不用一個模型包山包海。
5
多領域現學現蒸(MOPD):把好幾位家教的功力灌進同一個學生用蒸餾技術把這些專科老師模型的判斷力,濃縮進同一個小小的學生模型,等於一個人同時上完好幾位家教的課,卻只需要養一個學生。
6
真實環境特訓(Agentic RL):丟進真的工作現場練習最後讓模型在OpenClaw、Hermes Agent這類真實代理框架裡,跟真的工具、系統提示詞、多輪任務環境互動,做對了給獎勵、做錯了就調整,練出臨場反應。
LFM2.5-2.6B 與同類模型在代理任務上的表現對照(分數越高越好)
模型(參數量)IFBench 指令遵循BFCLv4 工具呼叫ToolSandbox 工具箱測試Multi-IF 多步驟指令
LFM2.5-2.6B(26億)59.1756.8877.8380.07
gemma-4-E2B-it(51億)34.0836.9852.4069.44
gemma-4-E4B-it(80億)39.2446.3965.0077.35
Qwen3.5-4B(47億)48.4050.5675.5555.67
Qwen3.5-9B(97億)56.4760.1376.4462.55

🔍 程式碼漫遊(點有 ● 的行看白話講解)

對照本課下載範例 local_agent_demo.py,看LFM2.5-2.6B怎麼判斷「這題該查工具,不是用猜的」。

MODEL_ID = 'LiquidAI/LFM2.5-2.6B'
💬 指定要下載的模型名稱,第一次執行時transformers會自動從Hugging Face抓取檔案。
def get_monthly_revenue(month: str) -> str:
💬 這是「假裝」串接到公司內部資料庫的工具函式;正式上線時,把裡面換成真的資料庫查詢即可。
TOOLS = [{'type': 'function', 'function': {...}}]
💬 用JSON格式告訴模型「你手上有這個工具、它要吃什麼參數」,這正是文章說的tool use能力的入口。
tokenizer = AutoTokenizer.from_pretrained(MODEL_ID, trust_remote_code=True)
💬 trust_remote_code=True是因為LFM系列用了非標準的模型架構,需要額外信任LiquidAI提供的執行程式碼。
model = AutoModelForCausalLM.from_pretrained(..., device_map='cpu')
💬 明確指定用CPU執行,呼應文章強調「一般筆電、CPU也能跑」的賣點,不需要顯示卡。
prompt = tokenizer.apply_chat_template(messages, tools=TOOLS, ...)
💬 把使用者問題和工具清單一起包成模型看得懂的格式,模型才知道「原來我可以呼叫這個工具」。
output = model.generate(**inputs, max_new_tokens=150, do_sample=False)
💬 do_sample=False讓每次執行結果穩定重現,方便你反覆觀察模型是否穩定選擇呼叫工具。
reply = tokenizer.decode(output[0][inputs['input_ids'].shape[1]:], ...)
💬 只解碼「新產生」的部分,跳過原本輸入的提示文字,讓輸出更乾淨好讀。

🛠️ 動手做:地端跑一次:讓LFM2.5幫你判斷該不該查工具

這是一個真實小專案:下載(或複製)檔案,照步驟在你電腦上跑起來。

📄 requirements.txt ⬇ 下載
transformers>=4.46.0
torch>=2.3.0
accelerate>=0.34.0
📄 local_agent_demo.py ⬇ 下載
# LFM2.5-2.6B 本地代理示範:模擬老闆問「三月營業額」,觀察模型何時決定呼叫工具,而不是憑空亂猜。
from transformers import AutoModelForCausalLM, AutoTokenizer
import torch

MODEL_ID = 'LiquidAI/LFM2.5-2.6B'  # 若 Hugging Face 上實際名稱略有出入,以 LiquidAI 官方頁面公告為準


def get_monthly_revenue(month: str) -> str:
    # 假裝這是連到公司內部資料庫的工具,這裡先用假資料模擬回應
    fake_db = {'一月': '82萬', '二月': '76萬', '三月': '95萬'}
    return fake_db.get(month, '查無資料')


TOOLS = [
    {
        'type': 'function',
        'function': {
            'name': 'get_monthly_revenue',
            'description': '查詢指定月份的營業額',
            'parameters': {
                'type': 'object',
                'properties': {
                    'month': {'type': 'string', 'description': '月份,例如:一月'}
                },
                'required': ['month'],
            },
        },
    }
]


def main():
    print('正在載入 LFM2.5-2.6B(第一次執行會下載模型檔案,約需幾分鐘,請耐心等候)...')
    tokenizer = AutoTokenizer.from_pretrained(MODEL_ID, trust_remote_code=True)
    model = AutoModelForCausalLM.from_pretrained(
        MODEL_ID,
        trust_remote_code=True,
        torch_dtype=torch.bfloat16,
        device_map='cpu',
    )

    messages = [{'role': 'user', 'content': '老闆想知道三月的營業額是多少?'}]
    prompt = tokenizer.apply_chat_template(
        messages, tools=TOOLS, add_generation_prompt=True, tokenize=False
    )
    inputs = tokenizer(prompt, return_tensors='pt')

    print('模型思考中(純 CPU 約需 10-30 秒,請稍候)...')
    output = model.generate(**inputs, max_new_tokens=150, do_sample=False)
    reply = tokenizer.decode(
        output[0][inputs['input_ids'].shape[1]:], skip_special_tokens=True
    )

    print('\n=== 模型原始回覆 ===')
    print(reply)
    print('\n如果回覆內容包含呼叫 get_monthly_revenue 的請求,代表模型判斷這題要查真實資料,不能亂編——')
    print('這正是文章說的工具使用能力:知道什麼時候該停下來求助工具,而不是硬掰答案。')


if __name__ == '__main__':
    main()
  1. 開啟 PowerShell,切換到你想放教材的資料夾,例如:cd D:\ai_lessons\lfm2_demo(資料夾要先自己建立)
  2. 建立虛擬環境:python -m venv .venv
  3. 啟用虛擬環境:.venv\Scripts\Activate.ps1(若PowerShell顯示「不允許執行指令碼」,改成直接用 .venv\Scripts\python.exe 執行後面的指令即可)
  4. 安裝套件:pip install -r requirements.txt(模型檔案約2.6GB,下載需要一些時間與硬碟空間,請確認網路暢通)
  5. 把上面 local_agent_demo.py 的內容存成同名檔案,放進同一個資料夾
  6. 執行範例:python local_agent_demo.py
  7. 觀察終端機輸出:留意模型的回覆裡有沒有出現要呼叫 get_monthly_revenue 這個工具的請求,而不是自己亂編一個營業額數字

🧠 工程思維透鏡(資深工程師看到的是什麼)

🔭 為什麼不直接把大模型「縮小」,而要繞這麼大一圈用蒸餾加強化學習訓練?
如果只是把大模型的參數硬砍,通常會連帶砍掉它的判斷力,變成「瘦了但也笨了」。LFM2.5的做法是先用SFT打底、再讓多位「專科老師」模型各自精通一個領域,最後用蒸餾把這些老師的判斷力濃縮進一個學生模型,等於是用「訓練期間多花力氣」去換「推論期間又小又聰明」。這是典型的工程取捨:訓練管線變得複雜(要養好幾個老師模型、要跑強化學習),但換來的是上線之後每一次推論都更便宜、更快,而地端部署的模型,推論次數往往是訓練次數的千萬倍,這筆帳很划算。
🔭 Harness Proxy 把代理框架當「黑盒子」不修改內部程式碼,這解決了什麼實際的工程難題?
代理框架(像OpenClaw、Hermes Agent)本身還在快速演進、版本常常變動,如果Liquid AI要為了蒐集訓練資料去修改每一套框架的原始碼,等框架一升級,這些修改可能全部要重寫,維護成本會隨著支援的框架數量線性甚至指數增加。用Proxy這種「中介攔截」的設計,讓訓練系統只需要在旁邊「偷聽」每一步的輸入輸出,就能重建出完整的訓練軌跡,框架本身完全不用被碰。這是用「多一層代理層」的複雜度,換取「跟任何代理框架都相容、框架升級也不怕」的長期彈性——犧牲一點點對細節的直接掌控,換取維護上的解耦。
🔭 把「模型優化」(Training Engine)、「推論」(Rollout Engine)、「環境執行」(Sandbox Service)拆成三個獨立元件,架構上圖的是什麼?
強化學習最耗時的部分通常不是更新模型參數,而是「產生大量互動軌跡」——要讓模型不斷嘗試、跟環境互動、收集獎勵訊號。如果把這些工作跟模型訓練綁在同一支程式裡,訓練引擎就得等推論跑完才能繼續,形成瓶頸。拆成獨立元件之後,Rollout Engine可以用很多份「目前的策略」平行跑好幾個任務環境,Training Engine則專心吃這些收集回來的軌跡去更新權重,兩邊互不卡彼此——這是大規模RL訓練常見的「產出與消費分離」架構思路,用系統複雜度換取吞吐量。
🔭 官方通篇都在強調「贏過4倍大的模型」,這種比較方式潛藏什麼風險,資深工程師該怎麼看?
留意表格裡的AA Omniscience這一項,LFM2.5是負29.50分,比所有對照模型都更差(gemma-4-E2B-it甚至到負74)——這暗示LFM2.5的「通用常識廣度」並不是它的強項,它被高度優化的是agentic、tool use這類特定任務。挑選benchmark本身就是一種設計決策:官方選的多是跟agentic harness高度相關的測驗,這些恰好是Agentic RL階段直接訓練過的情境,某種程度上是「考自己練過的題目考得特別好」。工程師在導入前,應該拿自己實際會用到的工具與任務去實測,而不是只看「贏過4倍大模型」這句行銷話術就直接下決定。

📝 隨堂考(點選答案,立即回饋)

Q1. 文章中提到的「2.6B」,指的是這個模型的什麼?
✅ 文章開頭寫「LFM2.5-2.6B (2.6B)」,2.6B在AI界慣例代表2.6 Billion parameters,也就是約26億個參數;記憶體占用(不到2.5GB)是另一件事,兩者常被搞混。
Q2. 根據文章,LFM2.5最後一個訓練階段「Agentic RL」最大的特色是什麼?
✅ 文章明確說Agentic RL是「run multi-turn RL inside real agent harnesses」,讓模型在真正的工具、系統提示詞與多輪任務環境中學習,這跟單純的監督式微調不同。
Q3. 文章描述的「Harness Proxy」主要功能是什麼?
✅ 原文寫「The Harness Proxy lets us treat agentic harnesses as black boxes with no modification, while transparently capturing the token-level trajectories」,重點是「不用改動框架」加上「偷偷記錄軌跡」兩件事同時做到。
Q4. 對照文章的benchmark表格,LFM2.5-2.6B(26億參數)在IFBench(指令遵循)這一項,跟參數量大它3倍的gemma-4-E4B-it(80億)相比,表現如何?
✅ 表格中IFBench一欄,LFM2.5-2.6B是59.17,gemma-4-E4B-it是39.24,體積小它三倍的LFM2.5反而分數更高,這正是文章強調「以小搏大」的具體證據。
Q5. 後訓練四階段中,「多領域現學現蒸(MOPD)」這個步驟主要在做什麼?
✅ 文章寫「Multi-domain on-policy distillation (MOPD): distill the specialist teachers into a single student.」,就是把多位專科老師的能力,濃縮進同一個學生模型。

🃏 翻牌記憶卡(先想答案,再點開對答)

代理式AI(Agentic AI)點我翻面
不只回答問題,還會自己規劃步驟、判斷該呼叫哪個工具、一步步把任務完成的AI,是LFM2.5被訓練的核心目標。
工具使用(Tool Use)點我翻面
AI判斷「這題該呼叫外部程式查證」而不是憑空瞎猜答案的能力,用BFCLv4、ToolSandbox等指標衡量。
知識蒸餾(Distillation)點我翻面
讓小模型觀摩多位專家老師模型的解法,把濃縮出的精華學起來,變成又小又厲害的學生模型。
Agentic RL點我翻面
讓模型在真實代理框架(如OpenClaw)裡反覆試做任務、依獎勵調整行為的訓練法,是LFM2.5最後也最關鍵的一個訓練階段。
Harness Proxy點我翻面
讓訓練系統能在「不修改」代理框架原始碼的前提下,偷偷記錄每一步互動軌跡的中介層設計。
情境窗口(Context Window)點我翻面
模型一次能記住並參考的文字長度上限;LFM2.5的128K大約可以放進一整本中篇小說的內容量。

✅ 離開前自測(全勾=這課真的學會了)

0%