fukayatti0/jev-japanese-judgment

LiquidAI/LFM2.5-1.2B-JP-202606 をバックボーンに、文脈と候補群から型付きの判定+確率を直接返す 「Jev」スタイルの判定モデル。自己回帰的な文章生成の代わりに、lm_head を 候補ごとにスコアリングするカスタムヘッド(cross-encoder型)に差し替えている。

アーキテクチャ

  • バックボーン: LiquidAI/LFM2.5-1.2B-JP-202606 (凍結、LoRAで適応)
  • ヘッド: 各候補を [context][question][candidate_i] としてエンコードし、 最終トークンのhidden stateをMLPでスコア化、候補間でsoftmaxを取って 確率分布を直接出力する(テキスト生成なし)

使い方

標準の transformers アーキテクチャではないため、AutoModelForCausalLM 等 では読み込めない。以下のリポジトリのコードを使うこと:

https://github.com/fukayatti/jev-japanese-judgment

from eval.run_eval import load_model_from_checkpoint, predict
from data.convert.schema import JevExample

model = load_model_from_checkpoint("<このリポジトリをダウンロードしたパス>", "")
result = predict(model, [
    JevExample(
        id="example",
        source_dataset="manual",
        context="",
        question="日本の首都はどこ?",
        candidates=["大阪", "東京", "京都", "名古屋"],
        label=1,
        task_type="commonsense_qa",
    )
])
print(result)

学習データ

fukayatti0/jev-japanese-judgment (JCommonsenseQA / chABSA-dataset / JSNLI をJev形式に変換し、LLM拡張・ source_dataset間のリバランスを行ったもの)

評価結果 (未使用データ1200件)

学習に一度も使っていない分割で評価している(JCommonsenseQA validation / chABSA test / JSNLI dev、 各タスク最大400件)。chABSAのtestは文単位の分割のため、同じ企業文書の別文が学習に含まれる可能性がある。

指標 値
Accuracy 0.9217
ECE (Expected Calibration Error) 0.0145
Brier score 0.1179
NLL 0.2225
タスク別 accuracy 値 n
commonsense_qa 0.9175 400
nli 0.9225 400
sentiment 0.9250 400

参考: 学習に使ったデータの一部を抜き出した評価では accuracy 0.938 / ECE 0.0114 と、未使用データより 高く出る。学習データと重なるため、未知データでの性能の目安には使えない。

ライセンス

本リポジトリはLoRAアダプタと追加ヘッドの差分のみを配布しており、 ベースモデルの重みそのものは含まない。

量子化版(ローカルPC/CPU向け)

GPU無しのローカルPC向けに、per-channel動的int8量子化をかけたモデルを quantized/model.pt として同梱している。LoRAはバックボーンへマージ済みで、 量子化された重みを含むモデル全体を torch.save でpickle化したもの (量子化Linear層のパックされたパラメータはstate_dictでの再構築が煩雑なため)。

import torch
from huggingface_hub import hf_hub_download

path = hf_hub_download("fukayatti0/jev-japanese-judgment", "quantized/model.pt")
model = torch.load(path, weights_only=False, map_location="cpu")
model.eval()

もしくは、Hubからダウンロード後にその場で量子化する方法でも同じ結果になる (起動のたびに量子化する分だけ少し遅い):

python -m scripts.ask --device cpu --quantize --question "..." --candidates "..."

評価結果 (per-channel動的int8量子化、学習データと重なる評価用サンプル200件)

未使用データでは測っていない。絶対値は過大だが、bf16(同じサンプルで0.970)との比較には使える。

指標 値
Accuracy (overall) 0.8950
ECE (Expected Calibration Error) N/A
Brier score N/A
NLL N/A
タスク別 accuracy 値 n
commonsense_qa 0.8889 81
nli 0.8734 79
sentiment 0.9500 40

フル精度(bf16、同じサンプルで0.970)より約7.5ポイント低い。同じサンプルで測ったGGUF版(0.955〜0.970)のほうが 精度が高いため、ローカル実行にはGGUF版(下記)を推奨する。 試行錯誤の詳細は scripts/ask.py の load() docstringと qat.py を参照。

GGUF版 (llama.cpp / CPU向け)

gguf/ にllama.cpp用のGGUFを置いている。llama-embedding --pooling last で最終トークンの hidden stateを取り出し、head.npz の小さなMLPヘッドを計算する(torch/transformers/peft不要)。

推奨: gguf/jev-*.gguf(LoRAマージ済み、1ファイルで完結)

未使用データ1200件(JCommonsenseQA validation / chABSA test / JSNLI dev)での評価。 bf16(PyTorch、約2.3GB)は accuracy 0.922 / ECE 0.0145。

ファイル サイズ Accuracy ECE Brier NLL
gguf/jev-Q4_0.gguf 664MB 0.918 0.0210 0.1216 0.2287
gguf/jev-Q4_K_M.gguf 698MB 0.915 0.0183 0.1239 0.2345
gguf/jev-Q8_0.gguf 1.2GB 0.921 0.0154 0.1176 0.2215

Q8_0はbf16とほぼ同じ精度。Q4系はaccuracyが0.4〜0.7ポイント下がり、ECEも少し悪化する (n=1200の標準誤差は約0.8ポイントなので、Q4_0とQ4_K_Mの優劣は判別できない)。

別ファイル版(gguf/lfm2-base-*.gguf + gguf/jev-lora-f16.gguf、--lora で読み込む)は、 マージ版と同等の精度(学習データと重なる200件での測定値: Q4_0 0.965, Q4_K_M 0.955, Q8_0 0.97)。

使い方は https://github.com/fukayatti/jev-japanese-judgment の scripts/ask_gguf_lite.py を参照。ベースモデルの重みを量子化した ファイルを含むため、LFM Open License v1.0 が適用される。

Downloads last month
161
GGUF
Model size
3.24M params
Architecture
lfm2
Hardware compatibility
Log In to add your hardware

4-bit

8-bit

16-bit

Inference Providers NEW
This model isn't deployed by any Inference Provider. 🙋 Ask for provider support

Model tree for fukayatti0/jev-japanese-judgment

Adapter
(3)
this model