Qwen3.5-0.8B-Japanese-SFT-v2.5(非公式)
Qwen/Qwen3.5-0.8B を日本語向けに追加学習した、非公式の派生モデルです。Qwen チームとは関係ありません。v2 の続きで、次の大きな版(v3)に向けた途中の版です。
v2 からの主な変化
- 思考モードで理系の問題を解けるようになった:日本語で短く考えてから答えます(MMLU-Pro 理科 4.0% → 36.1%、MGSM 日本語 0.0% → 27.4%。どちらも思考あり・上限 4,096 トークン、複数回の平均)
- 会話や知識の質問でも思考モードを使える:短く要点を考えてから答えます
- 日本語でコードを読めるようになった:コードの説明・バグや危ないところの指摘・修正を日本語で答えます(Japanese-Code-Review-OSS で学習)
- 会話の力は v2 と同じ水準:日本語の常識・崩れにくさ・中国語が混ざらないことは、ほぼ変わりません
An unofficial Japanese fine-tune of Qwen3.5-0.8B (v2.5). Adds a short Japanese thinking mode (MMLU-Pro science 36.1% (mean of 3 runs), MGSM-ja 27.4% with thinking at a 4,096-token cap; v2: 4.0% / 0.0%), thinking-mode chat, and Japanese code review, while keeping v2's chat quality. Still a small model: it hallucinates facts and is weaker than the original model at long, careful calculation.
- GGUF 版(llama.cpp・LM Studio 用):Takenoko12345678/Qwen3.5-0.8B-Japanese-SFT-v2.5-GGUF
- 学習データ(学習に使ったそのままの形、出典とライセンス付き):Takenoko12345678/Qwen3.5-0.8B-Japanese-SFT-v2.5-Data
- 学習・評価のスクリプトと評価結果:Pitcher プロジェクト(
sft/q08b_v25/)
評価
元の Qwen3.5-0.8B・v2 と、同じ方法・同じ設定で測りました(llama.cpp、GGUF f16。v2.5 の思考ありの理科・算数は Kaggle の GPU、それ以外は Mac で実行)。
| Qwen3.5-0.8B(元) | v2 | v2.5(このモデル) | |
|---|---|---|---|
| 理科(MMLU-Pro の物理・化学・生物 300問、10択)・思考あり、上限 4,096 | 1.3% | 4.0% | 36.1%(3回の平均) |
| 同・思考なし、上限 4,096 | 33.0% | 10.7% | 31.3% |
| MGSM 日本語(算数の文章題 250問)・思考あり、上限 4,096 | 4.4% | 0.0% | 27.4%(2回の平均) |
| 同・思考なし、上限 4,096 | 15.2% | 5.2% | 28.0% |
| JCommonsenseQA(1,119問、生成で答える/選択肢の確率で選ぶ) | 42.6% / 69.3% | 71.6% / 70.8% | 71.0% / 71.7% |
| 一般常識30問(日本語/英語) | 17 / 21 | 22 / 24 | 22 / 22 |
| 中国語の混入(キャラ設定なしの会話) | 1% | 0% | 0% |
| 「私は AI なので」と断る回答(キャラ設定なしの会話) | 17% | 1% | 5% |
| 会話 590回答のうち、打ち切り | 21 | 2 | 1 |
| 思考ありで会話・知識の質問(340回答)をしたとき、答えが空になった割合 | 76% | ― | 0% |
- 生成の設定:思考ありは temperature 1.0、top_p 0.95、top_k 20、presence_penalty 0
- 元のモデルは思考ありだと長く考えすぎて、上限 4,096 までに考え終わらないことがほとんどです(理科で 99%。会話の質問の空の答えも、ほとんどがこれです)。上限を伸ばすと解ける問題が増え、別の環境で測ったときは、思考ありで上限 32,768 なら理科 27%・上限 8,192 なら MGSM 25%、思考なし(答えの中で英語で長く考える)で上限 8,192 なら理科 41% でした
- 元のモデルより強くなったわけではありません。 同じ上限 4,096 で比べると、理科は元のモデルの思考なし(33.0%、答えの中で長く考える)とほぼ同じです。v2.5 は、短い思考(中央値約 280 トークン)でそこまで届くのが違いです
- 思考なしでも、答えの前に短く手順を書いて解きます(理科 31.3%、MGSM 28.0%。答えの長さの中央値は理科 237・MGSM 105 トークン)。算数は思考ありと思考なしでほぼ同じです
- 理科は 300問なので、測るたびに揺れます。v2.5 を同じ設定で3回測ると 37.7%・32.3%・38.3% でした(MGSM は 27.2%・27.6%)
使い方
transformers
transformers 5 系(5.17 で確認)を使ってください。
from transformers import AutoModelForImageTextToText, AutoTokenizer
import torch
model_id = "Takenoko12345678/Qwen3.5-0.8B-Japanese-SFT-v2.5"
tok = AutoTokenizer.from_pretrained(model_id)
model = AutoModelForImageTextToText.from_pretrained(model_id, dtype=torch.bfloat16, device_map="auto")
messages = [{"role": "user", "content": "時速 60 km で 2 時間 30 分走ると、何 km 進みますか?"}]
# 理系の問題は思考あり(True)がおすすめ。指定しなければ思考なし
text = tok.apply_chat_template(messages, tokenize=False, add_generation_prompt=True, enable_thinking=True)
inputs = tok(text, return_tensors="pt", add_special_tokens=False).to(model.device)
out = model.generate(**inputs, max_new_tokens=4096, do_sample=True, temperature=1.0, top_k=20, top_p=0.95)
print(tok.decode(out[0][inputs["input_ids"].shape[1]:], skip_special_tokens=True))
- チャットテンプレートは元のモデルのものです。
enable_thinkingを指定しなければ思考なしになります - llama.cpp のサーバーは、指定しないと思考ありで動きます。思考なしにするには、リクエストに
"chat_template_kwargs": {"enable_thinking": false}を付けてください。LM Studio では「思考」の切り替えで選べます
推奨の生成設定
- 思考あり(理科・算数の問題など):temperature 1.0、top_k 20、top_p 0.95、生成の上限は 4,096 以上
- 思考なし(会話):temperature 1.0、top_k 20、top_p 1.0、presence_penalty 2.0。llama.cpp では
repeat_penalty 1.1もおすすめです - 事実を答えさせる・選択問題:temperature 0
学習の詳細
公開している v2 から、2段階で全部の重みを追加学習しました(画像の部分は固定)。
1段目:理系の思考・コード(9,692件、学習率 1e-5、1周)
| データ | 件数 | 形 |
|---|---|---|
| 理系の手本(算数・数学・理科)。先生役 Qwen3.8-27B が日本語で短く解き、正解と一致したものだけ。解き方を思考の部分に入れた形 | 2,108 | 思考あり |
| 同じ理系の手本を、思考なしで手順を見せてから答える形 | 983 | 思考なし |
| 日本語のコードの説明・確認・修正(Japanese-Code-Review-OSS の train) | 1,773 | 思考なし |
| 会話の手本(v2 の第4段階と同じ、Qwen3.8-27B が作った返事) | 2,892 | 思考なし |
| 会話の学び直し(Japanese-SFT-Tengentoppa-Curated-12K) | 1,540 | 思考なし |
| 答え方の練習(同データセットの format_drill) | 396 | 思考なし |
2段目:会話でも思考を使えるようにする(4,600件、学習率 5e-6、1周)
1段目だけのモデルは、思考ありで理系以外の質問をすると、96% で答えを考える部分に書いたまま終わっていました(思考ありの手本が理系だけだったため)。そこで、次のデータで短く追加学習しました。
| データ | 件数 |
|---|---|
| 会話・コード・作文の質問と答えはそのままに、その間に入る短い思考(1〜3文)を先生役 Qwen3.8-27B が書いたもの | 1,600 |
| 1段目のデータから選んだ復習用(半分は理系の手本) | 3,000 |
- 環境:Kaggle の T4。fp32 で計算し、bf16 で保存しました(8bit Adam、出力層の損失は 1,024 トークンずつ計算)
- 理系の問題の出典:算数は openai/gsm8k の train(MIT。評価の MGSM は GSM8K の test から作られているので重なりません)、数学は DeepMath-103K(MIT)、理科は OpenScienceReasoning-2(CC BY 4.0、NVIDIA。評価の MMLU-Pro と文面が重なるものは除外)
- 思考の手本は短いもの(日本語で数行)だけにしました。元の 0.8B は長く考えすぎて止まらなくなるためです
既知の問題
- 事実の誤り(幻覚)がまだ多いです。 0.8B は覚えられる知識が限られ、知らないことをもっともらしく作ります。例:「土星って何色なの?」に、質問からずれて「土星の6番目の衛星『トラバサ』」という存在しない衛星の話を作りました。事実を調べる用途には使わないでください
- 思考で相手の意図を決めつけることがあります。 例:ふざけた一言(「ぐへへへへw」)を「不適切な言葉遣い」と考えて、謝るだけの返事をしました
- 元のモデルより短く考える分、長く丁寧に計算すれば解ける問題を落とします。 理科の知識の問題(生物)は元のモデルとほぼ同じですが、計算の問題(化学・物理)は元のモデルに及びません
- ツール呼び出し(function calling)はできません。 元のモデルはできますが、この追加学習で失われました(電卓などのツールを渡しても呼ばずに自分で答えます)
- 思考ありでも、理科の約2割は上限 4,096 トークンまで考え終わりません
- 「私は AI なので」と断る回答が、v2(1%)より少し増えています(5%)
- 深刻な悩みの相談に、一般論や的外れな答えを返すことがあります。人向けに公開する場合は、相談窓口の案内などの安全策を別に用意してください
- 元のモデルの MTP(先読み用の層)の重みは含まれていません(
config.jsonのmtp_num_hidden_layersは 0)
ライセンスと帰属表示
Apache License 2.0。元のモデル Qwen/Qwen3.5-0.8B(Apache 2.0)の派生モデルです。
変更点:v2 の学習(v2 の説明を参照)に加えて、上記の2段階で追加学習しました。チャットテンプレートとトークナイザーは元のモデルのものです。
学習データ:
- 理系の手本・会話の思考:Qwen/Qwen3.8-27B(Apache 2.0)による生成文。問題は openai/gsm8k(MIT)、DeepMath-103K(MIT)、OpenScienceReasoning-2(CC BY 4.0、© NVIDIA)
- コード:Japanese-Code-Review-OSS(Apache 2.0。コードの一部は MIT。回答は Qwen3.8-27B による生成文)
- 会話:Qwen3.8-27B による生成文、Japanese-SFT-Tengentoppa-Curated-12K(CC BY 4.0。元データは “Tengentoppa-sft-v1.0” by DeL-TaiseiOzaki、CC BY 4.0)
- v2 までの学習データの帰属表示は、v2 の説明を参照してください