jijun-LM — 58M 超微型端側工具呼叫語義模型
基於語意協議壓縮的超小型高效端側工具調用語義模型研究
An Empirical Study on Efficient Tool-Calling Language Models via Semantic Protocol Compression
模型描述 (Model Description)
jijun-LM(內部實作類名 BookkeepingLM)是一個從零開始訓練 、約 58M 參數 的 Decoder-only 語言模型,專注於記帳(Bookkeeping)窄域的工具呼叫(Tool Calling)任務。模型以 GQA、RoPE、SwiGLU、Pre-RMSNorm 與 Tied Embedding 等現代小模型設計,透過極小的體積可在瀏覽器(WASM/WebGPU)等端側環境進行離線推理。模型並非任何現成模型的微調版本,僅借用 jingyaogong/minimind-3 的 Llama 相容 分詞器詞表 並動態註冊記帳特殊 Token。
本模型為記帳 PWA 專案 ADT109119/jijun 提供離線端側的工具呼叫能力。與主流 7B+ 通用工具呼叫模型不同,本模型以單一 add_record 工具、15 個基礎分類與約 58M 參數,實現可在手機瀏覽器端離線執行的記帳語義解析。
核心研究假設: 在極小型端側 LLM 中,Tool Calling 的瓶頸不只是模型容量限制,更是輸出協議的冗餘 。本研究提出「語意協議壓縮 (Semantic Protocol Compression)」概念,以更短且語義明確的特殊 Token 取代 JSON 格式,降低生成長度並提升格式穩定性。
用途與使用情境 (Intended Use)
記帳語義解析 :從口語中文查詢(金額、分類、帳戶、日期、收支類型)生成結構化工具呼叫。
端側 / 離線部署 :模型僅 58M,適合透過 WASM/WebGPU 在瀏覽器中離線推論(PWA)。
研究展示 :驗證「語意協議壓縮」在超微型模型上的有效性。
不建議用於 :一般對話、通用工具使用(API 數以千計的場景)、或需要多步推理的複雜任務。
模型規格 (Model Details)
項目 數值 總參數量 ~58M Transformer 層數 12 d_model 768 Query Heads / KV Heads (GQA) 8 / 4 SwiGLU 中間層維度 1152 最大序列長度 1024 詞表大小 6400 + 6 記帳特殊 Token = 6406 輸出層架構 LlamaForCausalLM(可透過 transformers 直接載入)
輸出協議:雙版本
本 repo 提供兩種訓練版本,輸出協議不同:
版本 協議格式 特點 model-json/JSON <tool_call>{...}</tool_call> 可讀性高,與一般 function-calling 一致 model-compressed-token/特殊 Token 壓縮 <tool_call>[AMT]...[CAT]...</tool_call> 序列更短,格式通過率更高、延遲更低
1 # JSON 格式 (model-json)
2 <tool_call>{"amount": 150, "category": "餐飲", "account": "信用卡", "description": "午餐", "type": "expense", "date": "2026-11-29"}</tool_call>
3
4 # 特殊 Token 壓縮格式 (model-compressed-token)
5 <tool_call>[AMT]150[CAT]餐飲[ACC]信用卡[DESC]午餐[DATE]2026-11-29[TYPE]expense</tool_call>
特殊 Token(註冊於詞表 6400–6405):[AMT](金額)、[CAT](分類)、[ACC](帳戶)、[DESC](備註)、[DATE](日期)、[TYPE](收支類型)。
快速開始 (Quickstart)
使用 transformers 載入
1 import torch
2 from transformers import AutoModelForCausalLM , AutoTokenizer
3
4 # 兩個版本擇一;subfolder 對應本 repo 內的 model-json 或 model-compressed-token
5 repo_id = "ADT109119/jijun-LM"
6 subfolder = "model-json" # 或 "model-compressed-token"
7
8 model = AutoModelForCausalLM . from_pretrained ( repo_id , subfolder = subfolder , dtype = torch . float32 )
9 tokenizer = AutoTokenizer . from_pretrained ( repo_id , subfolder = subfolder )
10 model . eval ( )
11
12 system_prompt = "今天是 2026-11-29(星期日)。你是一個記帳助理。你被賦予了以下 tools:\n{...工具定義...}"
13 prompt = ( f"<|im_start|>system\n { system_prompt } <|im_end|>\n"
14 f"<|im_start|>user\n午餐吃火鍋花了 400 元刷卡<|im_end|>\n"
15 f"<|im_start|>assistant\n" )
16
17 input_ids = torch . tensor ( [ tokenizer . encode ( prompt , add_special_tokens = False ) ] )
18 generated = input_ids
19 for _ in range ( 128 ) :
20 with torch . no_grad ( ) :
21 logits , _ = model ( generated )
22 next_id = torch . argmax ( logits [ 0 , - 1 , : ] ) . unsqueeze ( 0 ) . unsqueeze ( 0 )
23 if next_id . item ( ) == tokenizer . eos_token_id :
24 break
25 generated = torch . cat ( [ generated , next_id ] , dim = - 1 )
26
27 print ( tokenizer . decode ( generated [ 0 , input_ids . shape [ 1 ] : ] ) )
資料集 (Training Data)
本 repo 的 dataset/ 子資料夾包含:
dataset/raw_filtered_merged_v2.jsonl:4,154 筆 完整 SFT 語料(15 基礎分類,system prompt 含日期與星期錨定)。
dataset/train_strata.jsonl / dataset/test_strata.jsonl:80/20 切分之訓練(3,323 筆)與測試(831 筆)子集。
資料由 vllm/Qwen3.6-27B(enable_thinking=False)批次生成,再經舉證責任倒置 的語意對齊過濾(filter_dataset.py)——僅在「描述明確屬於其他基礎分類」時才刪除,避免誤刪合法樣本。
訓練流程 (Training)
預訓練 :以 Wikipedia 繁體百科與理財口語對話混合(7:3)做無監督預訓練,對齊 RoPE / GQA / SwiGLU 的底層語言表徵。
SFT 微調 :以 ./saves/best_pretrain_model.pt 起步做全量 SFT,AdamW + Cosine Warmup,最佳 checkpoint 依驗證損失與格式通過率挑選。
評測結果 (Evaluation)
以 evaluate_benchmark.py 在 831 筆分層測試集上進行全量自迴歸 Greedy 推論(含日期欄位比對):
模型 格式通過率 精準匹配率 金額正確率 分類正確率 帳戶正確率 日期正確率 平均 Reward 延遲 (ms) model-json 98.68% 39.35% 92.30% 68.35% 96.27% 61.25% 3.67 1095.5 model-compressed-token 100.0% 38.63% 92.06% 67.27% 96.63% 61.97% 3.69 519.0
完整數值見 results.tsv。精準匹配率(EM)較低的主因:新版測試集加入了 date 欄位(日期正確率僅 61–62%),且每筆 system prompt 對應不同 category/account enum,難度遠高於舊版 1,600 筆手工測試集。Compressed 版以更短輸出達成更高的格式通過率與約兩倍的延遲優勢。
限制與風險 (Limitations & Risks)
窄域設計 :僅針對記帳工具呼叫,無法作為通用助手。
推理能力有限 :58M 模型在需要多步推理、時間計算等 Level-3 場景能力受限。
日期正確率較低 (61–62%):模型對「上週 / 上上週」等相對日期推論仍有明顯錯誤率。
資料為合成 :語料由大模型生成,可能帶入少數分佈偏差;使用前請自行評估是否符合用途。
目錄結構
jijun-LM/
├── README.md # 本模型卡
├── LICENSE # MIT License
├── requirements.txt
├── results.tsv # 最新評測結果
├── model-json/ # 58M JSON 協議版 (safetensors, transformers 可直接載入)
├── model-compressed-token/ # 58M 壓縮協議版 (safetensors, transformers 可直接載入)
├── dataset/ # SFT 語料 (4,154 筆 + 80/20 切分)
└── research/ # 研究文件
├── report.md # 30M 消融研究 (歷史, 2026-07)
└── academic_report_plan.md # 論文 / 推甄作品集規劃書
引用 (Citation)
若您使用本模型或資料集,請引用:
1 @misc{jijunlm2026,
2 title = {jijun-LM: Efficient Tool-Calling Language Models under 58M Parameters via Semantic Protocol Compression},
3 author = {ADT109119},
4 year = {2026}
5 }
授權 (License)
MIT License(詳見 LICENSE)。本模型為自建架構、從零開始訓練;分詞器部分借用 jingyaogong/minimind-3 之 Llama 相容詞表,並動態註冊記帳特殊 Token(僅用其 tokenizer,未使用其模型權重)。
致謝 (Acknowledgements)
超微型模型架構與管線設計深受開源社群啟發(LLaMA、Qwen、minimind、Toolformer 等),謹此致謝。