初始化项目,由ModelHub XC社区提供模型
Model: azuki-digital/llm-jp-4-math-lion Source: Original Platform
This commit is contained in:
226
README.md
Normal file
226
README.md
Normal file
@@ -0,0 +1,226 @@
|
||||
---
|
||||
language:
|
||||
- ja
|
||||
license: apache-2.0
|
||||
tags:
|
||||
- math
|
||||
- japanese
|
||||
- fine-tuning
|
||||
- sft
|
||||
- lora
|
||||
- chain-of-thought
|
||||
- self-consistency
|
||||
- llm-jp
|
||||
- ft-competition-2026
|
||||
base_model:
|
||||
- llm-jp/llm-jp-4-8b-base
|
||||
datasets:
|
||||
- azuki-digital/ft-llm-2026-synthetic-ja-math-qwen-235b-v1
|
||||
- azuki-digital/ft-llm-2026-synthetic-ja-math-qwen-235b-v2
|
||||
pipeline_tag: text-generation
|
||||
model-index:
|
||||
- name: llm-jp-4-math-lion
|
||||
results:
|
||||
- task:
|
||||
type: math-reasoning
|
||||
name: Japanese Math Benchmark (Dev)
|
||||
metrics:
|
||||
- type: accuracy
|
||||
value: 95
|
||||
name: Accuracy (Dev 100Q)
|
||||
---
|
||||
|
||||
# llm-jp-4-math-lion
|
||||
|
||||
**ファインチューニングコンペ LLM 2026 — 数学タスク(オープン枠)提出モデル**
|
||||
|
||||
日本の中学・高校レベルの数学問題に対する推論精度を最大化するために、2段階のSFT(Supervised Fine-Tuning)と推論時のSelf-Consistencyを組み合わせたモデルです。
|
||||
|
||||
## モデル概要
|
||||
|
||||
| 項目 | 詳細 |
|
||||
|------|------|
|
||||
| ベースモデル | LLM-JP 4 継続事前学習済みモデル(`llm-jp/llm-jp-4-8b-base`)|
|
||||
| 学習手法 | 2段階 SFT(Stage 1: Full Fine-Tuning → Stage 2: LoRA) |
|
||||
| 学習データ | 合成データ 約160万件(自作 + LLM蒸留) |
|
||||
| 推論手法 | vLLM + `\boxed{}` 形式出力(Self-Consistency対応) |
|
||||
| 開発ベンチマーク精度 | 95%(運営配布100問) |
|
||||
| コンペ | ファインチューニングコンペ LLM 2026 数学タスク・オープン枠 |
|
||||
|
||||
|
||||
## ベースモデルの選定
|
||||
|
||||
運営から提供された3つのベースモデル候補を開発用ベンチマーク100問で評価し、以下の結果を得ました。
|
||||
|
||||
| モデル | 精度 |
|
||||
|--------|------|
|
||||
| 事前学習のみ | 7% |
|
||||
| 継続事前学習済み | 48% |
|
||||
| インストラクションチューニング済み | 44% |
|
||||
|
||||
継続事前学習とSFTを組み合わせる方針だったため、追加の継続事前学習が行いやすく精度も最も高かった「継続事前学習済みモデル」を選定しました。
|
||||
|
||||
## 学習データセット
|
||||
|
||||
2種類のデータセットを作成し、段階的にモデルへ学習させています。
|
||||
|
||||
### データセット1: ベンチマーク指向型データ(約60万件)
|
||||
|
||||
評価ベンチマークの出題形式・分野を意識して作成したデータセットです。
|
||||
|
||||
- **問題生成**: LLMは不使用。日本語の設問テンプレートを手動で作成し、ランダムに組み合わせるロジックで生成。計算部分はSymPyを使用して式と回答の整合性を保証。
|
||||
- **カバー範囲**: 中学・高校数学の評価対象カテゴリを網羅。約3万件のユニークな問題・回答ペアを作成。
|
||||
- **CoT付与**: 各問題に対して Qwen/Qwen3-235B-A22B-Instruct-2507 で20個のCoTを生成(Temperature / Top-p制御で多様性を確保)。生成されたCoTと正解を突き合わせ、正確なもののみを採用。
|
||||
- **最終データ量**: 約60万件(3万問 × 正確なCoT)
|
||||
|
||||
### データセット2: LLM完全生成型データ(約100万件)
|
||||
|
||||
問題・CoTの両方をLLMで生成した蒸留データセットです。NVIDIAの数学タスク精度向上に関する研究を参考にしています。
|
||||
|
||||
- **問題生成**: Qwen/Qwen3-235B-A22B-Instruct-2507 を使用。日本の中学・高校の数学カリキュラムに準拠した問題を全カテゴリで約5万件生成。ベンチマークとは独立した出題で汎化性能を意識。
|
||||
- **回答・CoT生成**: Qwen/Qwen3-235B-A22B-Instruct-2507 を使用。各問題に対して20回の試行を行い、マジョリティ・ボーティング(多数決)で80%以上の一致率が得られたもののみを採用。
|
||||
- **最終データ量**: 約100万件(5万問 × 正確なCoT)
|
||||
|
||||
## 学習手法
|
||||
|
||||
### Stage 1: Full Fine-Tuning
|
||||
|
||||
汎用的な数学推論能力の獲得を目的とし、LLM完全生成型データセット(約100万件:azuki-digital/ft-llm-2026-synthetic-ja-math-qwen-235b-v2)でフルパラメータのファインチューニングを実施。
|
||||
|
||||
| パラメータ | 値 |
|
||||
|-----------|-----|
|
||||
| 手法 | Full Fine-Tuning |
|
||||
| 学習率 | 2e-5 |
|
||||
| データ | LLM完全生成型データ(~100万件) |
|
||||
|
||||
### Stage 2: LoRA Fine-Tuning
|
||||
|
||||
ベンチマークの出題形式への適応を目的とし、ベンチマーク指向型データセット(約60万件:azuki-digital/ft-llm-2026-synthetic-ja-math-qwen-235b-v1)でLoRAによる追加学習を実施。
|
||||
|
||||
| パラメータ | 値 |
|
||||
|-----------|-----|
|
||||
| 手法 | LoRA |
|
||||
| ランク (r) | 64 |
|
||||
| Alpha (α) | 128 |
|
||||
| ドロップアウト | 0.03 |
|
||||
| 学習率 | 1e-4 |
|
||||
| データ | ベンチマーク指向型データ(~60万件) |
|
||||
|
||||
## 使い方
|
||||
|
||||
### プロンプトテンプレート
|
||||
|
||||
本モデルは以下のプロンプトテンプレートで学習・推論を行っています。出力は必ず `\boxed{}` で最終回答を囲む形式になります。
|
||||
|
||||
```
|
||||
次の数学の問題を解いてください。
|
||||
|
||||
【厳守】
|
||||
- 数式はLaTeXで書く。
|
||||
- 最後の答えは必ず \boxed{} で1回だけ囲む。
|
||||
|
||||
問題:
|
||||
{problem}
|
||||
|
||||
解答:
|
||||
```
|
||||
|
||||
### 推論コード(vLLM)
|
||||
|
||||
```python
|
||||
from vllm import LLM, SamplingParams
|
||||
|
||||
PROMPT_TEMPLATE = """\
|
||||
次の数学の問題を解いてください。
|
||||
|
||||
【厳守】
|
||||
- 数式はLaTeXで書く。
|
||||
- 最後の答えは必ず \\boxed{{}} で1回だけ囲む。
|
||||
|
||||
問題:
|
||||
{problem}
|
||||
|
||||
解答:
|
||||
"""
|
||||
|
||||
model_path = "azuki-digital/llm-jp-4-math-lion"
|
||||
llm = LLM(model=model_path, trust_remote_code=True)
|
||||
|
||||
sampling_params = SamplingParams(
|
||||
temperature=0.0,
|
||||
top_p=1.0,
|
||||
max_tokens=4096,
|
||||
)
|
||||
|
||||
problem = "2次方程式 x^2 - 5x + 6 = 0 を解きなさい。"
|
||||
prompt = PROMPT_TEMPLATE.format(problem=problem)
|
||||
|
||||
outputs = llm.generate([prompt], sampling_params=sampling_params)
|
||||
print(outputs[0].outputs[0].text)
|
||||
```
|
||||
|
||||
### 回答の抽出
|
||||
|
||||
モデルの出力から最終回答を取得するには、`\boxed{}` の中身を抽出してください。
|
||||
|
||||
```python
|
||||
import re
|
||||
|
||||
def extract_answer(text: str) -> str:
|
||||
"""text から最後の \\boxed{...} の中身を抽出する"""
|
||||
key = r"\boxed{"
|
||||
start = text.rfind(key)
|
||||
if start == -1:
|
||||
return ""
|
||||
i = start + len(key)
|
||||
depth = 1
|
||||
out_chars = []
|
||||
while i < len(text):
|
||||
ch = text[i]
|
||||
if ch == "{":
|
||||
depth += 1
|
||||
out_chars.append(ch)
|
||||
elif ch == "}":
|
||||
depth -= 1
|
||||
if depth == 0:
|
||||
return "".join(out_chars).strip()
|
||||
out_chars.append(ch)
|
||||
else:
|
||||
out_chars.append(ch)
|
||||
i += 1
|
||||
return ""
|
||||
```
|
||||
|
||||
### 推論時のTips
|
||||
|
||||
- **Self-Consistency(オプション)**: 精度をさらに向上させたい場合、同一問題に対して複数回(例: 20回)推論を行い、[Math-Verify](https://github.com/huggingface/Math-Verify)で回答を比較した上でマジョリティ・ボーティングを行う手法が有効です。学習に使用しなかった外部ベンチマークでは、この手法により精度が顕著に向上する傾向が確認されました。
|
||||
- **リトライ**: `\boxed{}` が出力に含まれない場合は、同じ問題で再度推論を行うことで回答を得られる場合があります。
|
||||
|
||||
## 評価結果
|
||||
|
||||
| ベンチマーク | 精度 | 備考 |
|
||||
|-------------|------|------|
|
||||
| 開発用ベンチマーク(100問) | **95%** | 運営配布の評価データ |
|
||||
|
||||
参考として、Qwen/Qwen3-30B-A3B-Instruct-2507 の同ベンチマークに対する精度は84%であり、本モデルはこれを上回る精度を達成しています。
|
||||
|
||||
## 制限事項
|
||||
|
||||
- 日本の中学・高校レベルの数学問題に特化して学習しているため、それ以外の領域での性能は保証されません。
|
||||
- 合成データ(Qwen3による蒸留データ)を中心に学習しているため、学習データの分布から外れるパターンの問題では精度が低下する可能性があります。
|
||||
- 継続事前学習は当初計画していたものの、リソース・スケジュールの制約により未実施です。
|
||||
|
||||
## ライセンス
|
||||
|
||||
Apache License 2.0
|
||||
|
||||
## 引用
|
||||
|
||||
```bibtex
|
||||
@misc{llm-jp-4-math-lion,
|
||||
title={llm-jp-4-math-lion: Two-Stage SFT with Self-Consistency for Japanese Math Reasoning},
|
||||
author={azuki-digital},
|
||||
year={2026},
|
||||
url={https://huggingface.co/azuki-digital/llm-jp-4-math-lion}
|
||||
}
|
||||
```
|
||||
Reference in New Issue
Block a user