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> 序列更短,格式通過率更高、延遲更低
# JSON 格式 (model-json)
<tool_call>{"amount": 150, "category": "餐飲", "account": "信用卡", "description": "午餐", "type": "expense", "date": "2026-11-29"}</tool_call>

# 特殊 Token 壓縮格式 (model-compressed-token)
<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 載入

import torch
from transformers import AutoModelForCausalLM, AutoTokenizer

# 兩個版本擇一;subfolder 對應本 repo 內的 model-json 或 model-compressed-token
repo_id = "ADT109119/jijun-LM"
subfolder = "model-json"  # 或 "model-compressed-token"

model = AutoModelForCausalLM.from_pretrained(repo_id, subfolder=subfolder, dtype=torch.float32)
tokenizer = AutoTokenizer.from_pretrained(repo_id, subfolder=subfolder)
model.eval()

system_prompt = "今天是 2026-11-29(星期日)。你是一個記帳助理。你被賦予了以下 tools:\n{...工具定義...}"
prompt = (f"<|im_start|>system\n{system_prompt}<|im_end|>\n"
          f"<|im_start|>user\n午餐吃火鍋花了 400 元刷卡<|im_end|>\n"
          f"<|im_start|>assistant\n")

input_ids = torch.tensor([tokenizer.encode(prompt, add_special_tokens=False)])
generated = input_ids
for _ in range(128):
    with torch.no_grad():
        logits, _ = model(generated)
    next_id = torch.argmax(logits[0, -1, :]).unsqueeze(0).unsqueeze(0)
    if next_id.item() == tokenizer.eos_token_id:
        break
    generated = torch.cat([generated, next_id], dim=-1)

print(tokenizer.decode(generated[0, input_ids.shape[1]:]))

資料集 (Training Data)

本 repo 的 dataset/ 子資料夾包含:

  • dataset/raw_filtered_merged_v2.jsonl4,154 筆 完整 SFT 語料(15 基礎分類,system prompt 含日期與星期錨定)。
  • dataset/train_strata.jsonl / dataset/test_strata.jsonl:80/20 切分之訓練(3,323 筆)與測試(831 筆)子集。

資料由 vllm/Qwen3.6-27Benable_thinking=False)批次生成,再經舉證責任倒置的語意對齊過濾(filter_dataset.py)——僅在「描述明確屬於其他基礎分類」時才刪除,避免誤刪合法樣本。


訓練流程 (Training)

  1. 預訓練:以 Wikipedia 繁體百科與理財口語對話混合(7:3)做無監督預訓練,對齊 RoPE / GQA / SwiGLU 的底層語言表徵。
  2. 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)

若您使用本模型或資料集,請引用:

@misc{jijunlm2026,
  title  = {jijun-LM: Efficient Tool-Calling Language Models under 58M Parameters via Semantic Protocol Compression},
  author = {ADT109119},
  year   = {2026}
}

授權 (License)

MIT License(詳見 LICENSE)。本模型為自建架構、從零開始訓練;分詞器部分借用 jingyaogong/minimind-3 之 Llama 相容詞表,並動態註冊記帳特殊 Token(僅用其 tokenizer,未使用其模型權重)。

致謝 (Acknowledgements)

超微型模型架構與管線設計深受開源社群啟發(LLaMA、Qwen、minimind、Toolformer 等),謹此致謝。

Downloads last month

-

Downloads are not tracked for this model. How to track
Inference Providers NEW
This model isn't deployed by any Inference Provider. 🙋 Ask for provider support