tiny-jev
September 18, 2026 · View on GitHub
日本語の文章と評価基準を照合する、ローカルの小型判断AI。
choice / score / noul を、文章生成ではなくQwen3のyes/noスコアから返します。
クローンしただけではモデル重みは入りません。下の手順で基礎モデルを取得し、同梱データから追加学習を再開できます。
入口
- 学習・評価の実行結果 — 学習前後、保存先、検証範囲と未達条件。
- 再学習とAPI起動 — データ分離、目的関数、依存固定、MPS対応、LoRA読込。
- ベンチマーク集 — 公開日本語/英語評価データと指標。
- 原設計書 — 目指す業務判断APIと段階別の完成条件。
- ギャップ分析 — 確認した根拠、原因仮説、検証、残す課題。
重要な区別
日本語NLI/STSへの追加学習と、問い合わせ分類・緊急度などの業務品質の検証は別です。
業務データ・確率校正・採用閾値が未整備の間、APIは status="abstained" / value=null を維持します。
proposed_value や未補正の分布を、自動実行の承認や検証済みの正解確率として使わないでください。
原ZIPと設計書は保存し、展開した jev_local_api_starter/ に拡張を加えています。
モデル本体は models/、学習差分は artifacts/ に置き、Git対象外にしています。
Git に含まれるもの / 含まれないもの
| 含める | 含めない(各自が再取得・再生成) |
|---|---|
| ソース、設計書、原ZIP、依存lock、ライセンス | models/ 基礎モデル(約1.1 GB) |
正規化済み評価データ benchmarks/data/ | artifacts/ LoRA差分(約54 MB) |
固定pilot学習データ training/data/ | training/runs/ checkpoint |
| manifest / sources.lock / 結果レポート | training/cache/ benchmarks/cache/ |
.venv/、*.log、.env |
学習済みadapterはGitにありません。同じpilotを使う場合は下の手順で再学習し、export_adapter で artifacts/ へ書き出します。
他の利用者が学習を続ける手順
必要: Python 3.12、uv、初回のみHugging Faceへの接続。 記録した実行機は Apple M5 / 24 GiB / macOS。CUDA機では PyTorch wheel を別に合わせてください。
固定revision: Qwen/Qwen3-Reranker-0.6B の e61197ed45024b0ed8a2d74b80b4d909f1255473。
別revisionは別実験です。既存adapterと混ぜないでください。
git clone https://github.com/karimatayuta/tiny-jev.git
cd tiny-jev
uv venv --python 3.12 .venv
uv pip install --python .venv/bin/python -r training/requirements.lock.txt
# 依存lockはこのmacOS環境用。CUDA版は対応wheelで別途検証する。
# 基礎モデル(空の出力先のみ。既存 models/ は上書きしない)
.venv/bin/python jev_local_api_starter/scripts/download_model.py \
--out models/qwen3-reranker-0.6b \
--revision e61197ed45024b0ed8a2d74b80b4d909f1255473
# 同梱の固定データを検査する。新規取得する場合だけ --offline を外す。
.venv/bin/python -m training.prepare_data --offline
.venv/bin/python -m unittest discover -s training/tests -v
.venv/bin/python -m unittest discover -s benchmarks/tests -v
次の学習runを始める
既存runやcheckpointは上書きしません。新しい出力先を指定します。
PYTORCH_MPS_PREFER_METAL=1 \
HF_HUB_OFFLINE=1 TRANSFORMERS_OFFLINE=1 HF_HUB_DISABLE_TELEMETRY=1 \
TOKENIZERS_PARALLELISM=false \
.venv/bin/python -m training.train_judge --device mps \
--out training/runs/ja-pilot-next
CPUなら --device cpu、NVIDIAなら --device cuda。CUDAでは PYTORCH_MPS_PREFER_METAL は不要です。
この実行機ではBF16/FP16のMPS経路が失敗したため、学習はFP32です。詳細は training/README.md。
内部開発損失だけでcheckpointを選びます。公開testで選び直しません。 異なる乱数・学習量・入力形式を試す場合は、データ・コード・runの新しい版を作ってください。
学習差分の書き出しと評価
.venv/bin/python -m training.export_adapter \
--run training/runs/ja-pilot-next \
--out artifacts/ja-judge-lora-next
PYTORCH_MPS_PREFER_METAL=1 HF_HUB_OFFLINE=1 TRANSFORMERS_OFFLINE=1 \
.venv/bin/python -m training.evaluate_model \
--dataset benchmarks/data/jnli_test.jsonl.gz --mode choice \
--adapter artifacts/ja-judge-lora-next --out training/runs/eval-next
--adapter を省略すると未学習ベースモデルです。固定pilot subsetでの比較は training.evaluate_release。
学習済みモデルをAPIで試す
PYTORCH_MPS_PREFER_METAL=1 \
HF_HUB_OFFLINE=1 TRANSFORMERS_OFFLINE=1 HF_HUB_DISABLE_TELEMETRY=1 \
PYTHONPATH=jev_local_api_starter BACKEND=qwen DEVICE=mps \
MODEL_PATH=./models/qwen3-reranker-0.6b \
ADAPTER_PATH=./artifacts/ja-judge-lora-next \
MAX_TOKENS=1024 MICROBATCH=8 \
.venv/bin/python -m uvicorn app.main:app --host 127.0.0.1 --port 8000 --workers 1
calibrated=false、status=abstained、value=null は意図した動作です。
配線確認だけなら jev_local_api_starter/README.md の mock 起動を使います。
いまの到達点
- 固定pilot(JNLI 506 + JSTS 251文対、1 epoch)のLoRA学習・保存・再読込・実モデル評価まで実施済み。
- 公開NLI/STS向けの研究版。業務用v1の合格・確率校正・自動採用は未達。
- JNLI Accuracyは上がった一方、含意Recallと一部の確率指標は悪化。一律改善ではない。
- 次に残るのは、クラス別指標の見直し、学習量の拡大、業務データの整備です。数値の読み方は
training/reports/RESULTS.md。
出典・配布
JGLUE: Kurihara et al. / Yahoo Japan・早稲田大学、公式、CC BY-SA 4.0。
基礎モデルはQwen、Apache-2.0。データの利用条件とモデルのライセンスを混同しません。
詳細は training/licenses/ と benchmarks/THIRD_PARTY_NOTICES.md。