Qwen3.5-0.8B-Japanese-SFT-v2(非公式)
Qwen/Qwen3.5-0.8B を日本語向けに追加学習した、非公式の派生モデルです。Qwen チームとは関係ありません。v1(Qwen3.5-0.8B-Japanese-SFT)の改良版です。
0.8B(8億パラメータ)と小さいので、GPU のないノートパソコンでも動きます(GGUF Q4_K_M で約 0.5 GB)。
v1 からの主な改良
- 話が崩れにくくなった:同じ言葉を止まらずに繰り返す回答が、llama.cpp で 590回答中 8件 → 0件。話が破綻した回答も減りました
- 会話が自然になった:「悲しい」「あーつらい」のような一言のつぶやきに寄り添って返し、続けて話しても崩れにくくなりました(v1 は「悲しむは『悲しむ』を意味する」のように言葉の意味を答えていました)
- 日本語の一般常識が増えた:日本語版 Wikipedia を約1億トークン読ませました(一般常識30問:20 → 22、JCommonsenseQA:69.5% → 71.2%)
An unofficial Japanese fine-tune of Qwen3.5-0.8B (v2 of Qwen3.5-0.8B-Japanese-SFT). Adds continued pre-training on 100M tokens of Japanese Wikipedia, casual and multi-turn chat distilled from Qwen3.8-27B, and DPO on the model's own answers scored by Gemma 4 31B. Runaway repetition dropped from 8/590 to 0/590 in llama.cpp, and Japanese trivia and JCommonsenseQA improved over v1. Use enable_thinking=False. GGUF: Takenoko12345678/Qwen3.5-0.8B-Japanese-SFT-v2-GGUF.
- GGUF 版(llama.cpp・LM Studio 用):Takenoko12345678/Qwen3.5-0.8B-Japanese-SFT-v2-GGUF
- 学習・評価のスクリプトと評価結果:Pitcher プロジェクト(v2 のスクリプトは
sft/q08b_v2/)
回答の例
実際に出た回答をそのまま載せています。誤りも含めて載せています。
一言のつぶやき・続けての会話(GGUF Q4_K_M、llama.cpp、推奨の設定)
悲しい
そう思っているのは、とても辛いですね。その感情は誰にでもあり得るものですね。もしよければ、今どんな気持ちですか?
あーつらい
うわー、それは大変でしたね。無理せず少しだけ深呼吸してみてください。
短い物語(同上)
短い物語を書いて
雨の日、田んぼで暮らしていた若者は突然電話がかかった。その内容は「今日は元気ですか?」だったのだ。「ありがとう」の一言が叶うまで待つ間に、彼はゆっくりと体を動かすようになった。雨が上がり、天気が晴れるもまた、彼の心は少し安くなってきたと感じた。
知識(短く答えさせる、vLLM・貪欲法)
日本で一番高い山は? 短く答えてください。
富士山
富士山の標高は約何メートルですか? 短く答えてください。
富士山の標高は約3,776メートルです。
「吾輩は猫である」の作者は? 短く答えてください。
「吾輩は猫である」の作者は、山田太郎です。(誤り。正しくは夏目漱石)
国会議事堂はどこ?(llama.cpp、temperature 0)
国会議事堂は東京都港区芝3-1-13にあります。(誤り。正しくは東京都千代田区永田町)
評価
同じ質問・同じ設定で、元の Qwen3.5-0.8B・v1 と比べました。評価の仕組みと全データは Pitcher プロジェクト にあります。
| Qwen3.5-0.8B(元) | v1 | v2(このモデル) | |
|---|---|---|---|
| JCommonsenseQA(日本語の常識、5択・1,119問) | 42.4% | 69.5% | 71.2% |
| CommonsenseQA(英語の常識、5択・1,221問) | 36.5% | 50.0% | 52.4% |
| 理科(MMLU-Pro の物理・化学・生物から300問、10択) | 15.0% | 24.0% | 23.0% |
| 一般常識30問(日本語) | 16 | 20 | 22 |
| 一般常識30問(英語、同じ内容) | 21 | 24 | 24 |
| 中国語の混入(キャラ設定なしの会話、100回答) | 4% | 0% | 0% |
| 回答が 512 トークンで打ち切られた割合(作文) | 33% | 0% | 0% |
| 「私は AI なので」と断る回答(キャラ設定なしの会話) | 20% | 6% | 5% |
| 同じ言葉を止まらずに繰り返す(llama.cpp Q4_K_M、590回答) | ― | 8件 | 0件 |
同上(repeat_penalty 1.1) | ― | 2件 | 0件 |
- 選択問題は、思考なし・貪欲法で、番号(理科は記号)だけを答えさせたもの(vLLM)。同じモデルでも測り直すと ±0.5 ポイントほどぶれます
- 理科は v1 とほぼ同じで、10択の当てずっぽう(10%)よりは高いものの、まだ弱いです
崩れにくさ・自然さ(採点役 Gemma 4 31B)
評価用の回答(キャラ設定なしの会話100回答・作文30回答、上限 2,048 トークン)を、Gemma 4 31B に同じ回でまとめて採点させました(5段階)。採点の指示文は、人が採点した30件と「話が破綻しているか」の判定が合うように調整したもの(30件中26件一致)です。
| v1 | v2 | |
|---|---|---|
| 会話:日本語の自然さ | 3.49 | 4.10 |
| 会話:前後の一貫性 | 4.41 | 4.60 |
| 会話:質問への適合 | 3.24 | 3.46 |
| 会話:話が破綻した回答(一貫性2点以下) | 3% | 1% |
| 作文:日本語の自然さ | 2.90 | 3.37 |
| 作文:質問への適合 | 3.60 | 4.07 |
| 作文:話が破綻した回答 | 10% | 10% |
- 採点役の GPT-5.6 Luna による採点(v1 で使用)は、後日追加します
使い方
transformers
transformers 5 系(5.17 で確認)を使ってください。重みは元のモデルと同じ形式(画像も扱える構造)ですが、学習・評価はテキストだけで行っています。
from transformers import AutoModelForImageTextToText, AutoTokenizer
import torch
model_id = "Takenoko12345678/Qwen3.5-0.8B-Japanese-SFT-v2"
tok = AutoTokenizer.from_pretrained(model_id)
model = AutoModelForImageTextToText.from_pretrained(model_id, dtype=torch.bfloat16, device_map="auto")
messages = [{"role": "user", "content": "雨の日の過ごし方を教えて。"}]
text = tok.apply_chat_template(messages, tokenize=False, add_generation_prompt=True, enable_thinking=False)
inputs = tok(text, return_tensors="pt", add_special_tokens=False).to(model.device)
out = model.generate(**inputs, max_new_tokens=512, do_sample=True, temperature=1.0, top_k=20, top_p=1.0)
print(tok.decode(out[0][inputs["input_ids"].shape[1]:], skip_special_tokens=True))
2026-10-03 更新: チャットテンプレートを、思考モードを指定しても思考なしで始まるように直しました(このモデルは思考なしの形だけで学習しています)。LM Studio などで答えが「考え中(Thought)」の欄に表示される場合は、モデルをダウンロードし直してください
enable_thinking=False を必ず指定してください。 このモデルの学習はすべて思考なしで行っています。vLLM(0.30)でも動きます(評価に使用)。
推奨の生成設定
- 会話:temperature 1.0、top_k 20、top_p 1.0、presence_penalty 2.0(元のモデルの推奨値)
- llama.cpp では
repeat_penalty 1.1も付けるのがおすすめです(LM Studio は最初から 1.1) - 事実を答えさせる・選択問題:temperature 0
学習の詳細
すべて全部の重みを学習しました(フルファインチューニング。画像の部分は固定)。思考なしの会話形式です。
| 内容 | 件数・量 | 設定 | 環境 | |
|---|---|---|---|---|
| 1. 蒸留 | v1 と同じ(回答は Qwen3.8-27B 製の Japanese-SFT-Qwen3.8-27B-10K と同じ作り方のデータ) | 10,027件 | 学習率 1e-5、2エポック | Modal(H100) |
| 2. 追加の事前学習 | 日本語版 Wikipedia(wikimedia/wikipedia 20231101.ja)から無作為に選んだ 66,799記事 | 約1億トークン | 学習率 2e-5(余弦で減衰)、1周 | Modal(H100) |
| 3. 会話の学び直し | v1 の第2段階と同じデータ(Japanese-SFT-Tengentoppa-Curated-12K の train と format_drill) | 12,800件 | 学習率 1e-5、1エポック | Modal(H100) |
| 4. つぶやき・続けての会話 | Qwen3.8-27B が作った手本(下記)と、3. のデータから 3,000件 | 8,182件 | 学習率 1e-5、1エポック | Modal(H100) |
| 5. DPO | このモデル自身の回答から作った「良い回答」と「崩れた回答」の組(下記) | 1,211組 | beta 0.1、学習率 5e-7、良い回答の負の対数尤度 ×0.2 を加える | Modal(H100) |
| 6. 重みの平均 | 3. のモデルと 5. のモデルの重みを半分ずつ平均 | ― | ― | ― |
- 2. 追加の事前学習:会話形式の学習は新しい知識をあまり増やさないため、文章そのものを読ませました。短い記事・一覧・曖昧さ回避のページと、各記事の「脚注」「参考文献」「外部リンク」「関連項目」以降は除いています。学習中に会話の検証データの損失も測り、会話の力を忘れ続けていないことを確かめています
- 4. つぶやき・続けての会話:v1 は学習データがすべて1問1答で、「悲しい」のような一言に言葉の意味を答えていました。Qwen3.8-27B に、30のテーマ(気持ち・挨拶・愚痴・雑談など)で短いつぶやきを作らせ、「まず受け止めて短く返す」「人間だと名乗らない」「前の発言と矛盾しない」などを指示して返事を書かせました(4,500件のうち「AI なので」と断る返事を除いた 4,447件。一言への返事が約3,000件、2〜3往復の会話が約1,500件)。学習データには指示文を入れていません
- 5. DPO:学習に使っていない質問 3,055個(一般の質問・物語や作文・つぶやき・続きの会話)に4回ずつ答えさせ、Gemma 4 31B で採点し、規則でも「繰り返し」「私は人間です」「中国語」「途中で切れる」を崩れとして扱いました。質問ごとに、崩れていない良い回答(一貫性・適合が4点以上)といちばん点の低い回答を組にしています(合計点の差が3点以上のものだけ)
- 6. 重みの平均:5. のモデルは会話が自然で崩れにくい一方、一般常識の正答が減りました(30問中 24 → 19)。知識の強い 3. のモデルと半分ずつ平均すると、知識を取り戻しつつ、崩れにくさと自然さの多くが残りました
既知の問題
- 事実の誤りがまだ多いです。 一般常識は増えましたが、0.8B は覚えられる知識が限られ、知らないことをもっともらしく作ります(例:国会議事堂の場所を「港区芝」、「吾輩は猫である」の作者を「山田太郎」)。和歌の全文のような、一字一句を覚える必要があるものはほぼ答えられません。事実を調べる用途には使わないでください
- 理科・数学は弱いです(MMLU-Pro の理科で 23%)
- 一言のつぶやきへの返事が、まれに的外れになります(例:「悲しい」に「私の内面、少し寂しくなることもありますよ」)
- 作文の自然さ・崩れにくさは、会話ほどは良くなっていません
- 選択肢の位置による偏り(後ろのほうを選びやすい)は v1 と同じく残っていると考えられます
- まれに「私は人間です」と答えます(キャラ設定なしの会話 200回答中2件)
- 深刻な悩みの相談に、一般論や的外れな答えを返すことがあります。人向けに公開する場合は、相談窓口の案内などの安全策を別に用意してください
- 元のモデルの安全性の調整はそのままです(拒否を外すような学習はしていません)
- 元のモデルの MTP(先読み用の層)の重みは含まれていません。設定ファイルは元のモデルのまま(
mtp_num_hidden_layers: 1)なので、llama.cpp の新しいconvert_hf_to_gguf.pyで自分で変換するときは、config.jsonのこの値を 0 にしてから変換してください。GGUF 版はこの方法で変換しています
ライセンスと帰属表示
Apache License 2.0。元のモデル Qwen/Qwen3.5-0.8B(Apache 2.0)の派生モデルです。
変更点:上記の6段階の学習を行いました。チャットテンプレートとトークナイザーは元のモデルのものをそのまま使っています。
学習データ:
- 蒸留:Takenoko12345678/Japanese-SFT-Qwen3.8-27B-10K と同じ作り方のデータ(Apache 2.0。質問は llm-jp/magpie-sft-v1.0、回答は Qwen/Qwen3.8-27B による生成文)
- 追加の事前学習:日本語版ウィキペディアの記事(Wikipedia contributors、wikimedia/wikipedia の 20231101.ja、CC BY-SA 3.0 / GFDL)。学習に使っただけで、記事の文章はこのリポジトリに含めていません
- 会話の学び直し:Takenoko12345678/Japanese-SFT-Tengentoppa-Curated-12K(CC BY 4.0。元データは “Tengentoppa-sft-v1.0” by DeL-TaiseiOzaki、CC BY 4.0。各行の元データとライセンスはデータセットの説明を参照。MIT の行は fn-aka-mur/japanese_hh-rlhf-49k と、その元の Anthropic/hh-rlhf)
- つぶやき・続けての会話の手本:Qwen/Qwen3.8-27B(Apache 2.0)による生成文
- DPO:このモデル自身の回答。採点は google/gemma-4-31B-it(採点結果は選別にだけ使い、Gemma の生成文は学習に使っていません)