NeoHorse-1-9B-Math-SFT(非公式)
正式版です。 beta 版として公開した重みを、そのまま正式版にしました(重みは beta 版と同じです)。3段目を論文48本でやり直した版も作りましたが、成績が下がったため採用していません(下の「3段目について」)。
TokenRhythm/NeoHorse-1-9B に、次の3段の追加学習(LoRA、統合済み)をした非公式の派生モデルです。TokenRhythm とは関係ありません。
- 考える長さを短くする(自己蒸留):同じ問題を4回ずつ解かせ、正解した中で一番短い思考だけを手本にして学習しました
- 日本語でコードを読む力:コードの説明・バグや危ないところの指摘・修正を日本語で答える手本で学習しました
- 数学の研究論文を読む:OpenAI が公開した研究論文のうち、Lean で形式化され、その命題が論文の主張と一致すると2つのモデルが判定した15本を読ませました
An unofficial fine-tune of NeoHorse-1-9B. Three LoRA stages, merged: (1) self-distillation on the shortest correct of 4 sampled solutions (math and science), which raised AIME 2026 from 65.8% to 75.0% while shortening reasoning; (2) Japanese code explanation, review and repair; (3) continued pre-training on 15 research papers from openai/math whose Lean formalizations were judged faithful by two models. A redo of stage 3 with 48 papers scored lower on all benchmarks, so the GA release keeps the beta weights.
結果
すべて思考ありで、元の NeoHorse-1-9B と同じ条件で測りました。
| 元の NeoHorse-1-9B | このモデル | |
|---|---|---|
| AIME 2026(30問×4回) | 65.8% | 75.0% |
| 考えた長さ(平均トークン) | 24,311 | 19,506 |
| 上限で考え終わらなかった割合 | 34% | 23% |
| MMLU-Pro 理科(物理・化学・生物から300問) | 90.7% | 91.3% |
| 考えた長さ(中央値) | 5,312 | 3,603 |
| HumanEval(164問) | 95.7% | 97.0% |
段階ごとの変化:
| AIME | 理科 | HumanEval | AIME の平均の長さ | 理科の長さの中央値 | |
|---|---|---|---|---|---|
| 元 | 65.8% | 90.7% | 95.7% | 24,311 | 5,312 |
| +短く考える | 75.0% | 91.7% | 95.1% | 21,759 | 4,637 |
| +日本語のコード | 73.3% | 90.7% | 97.0% | 20,673 | 3,744 |
| +数学の論文(このモデル) | 75.0% | 91.3% | 97.0% | 19,506 | 3,603 |
日本語のコードレビュー(学習に使っていない100問。採点は Gemma 4 31B):わざと問題を入れたコード40問のうち、問題を指摘できたのは 6問 → 15問(2段目の前後)。
- 測り方:vLLM 0.30、上限 32,768 トークン(HumanEval は 16,384)、temperature=1.0, top_p=0.95, top_k=20, min_p=0, presence_penalty=1.5(NeoHorse-1-9B の推奨値)。AIME 2026 は各問4回、ほかは1回
- AIME は120回答なので、測るたびに数ポイント揺れます
使い方
思考ありで使います(チャットテンプレートの既定)。推奨の生成設定は元のモデルと同じです。
from vllm import LLM, SamplingParams
llm = LLM(model="Takenoko12345678/NeoHorse-1-9B-Math-SFT", max_model_len=34816)
params = SamplingParams(temperature=1.0, top_p=0.95, top_k=20, min_p=0.0, presence_penalty=1.5, max_tokens=32768)
out = llm.chat([{"role": "user", "content": "Find the number of positive divisors of 2026. Put the final answer in \\boxed{}."}], params)
print(out[0].outputs[0].text)
学習の詳細
| 段 | データ | 量 | 設定 |
|---|---|---|---|
| 1. 短く考える | DeepMath-103K(MIT)の整数の答えの問題470問と、OpenScienceReasoning-2(CC BY 4.0)の選択問題130問を、元のモデルに4回ずつ解かせ(上限16,384)、正解した中で一番短い回答(12,000トークン以下)を選んだもの。評価の問題(AIME 2026・MMLU-Pro)と文面が重なる問題は除外 | 350件(約228万トークン) | LoRA r=32、学習率 1e-4、2周 |
| 2. 日本語のコード | 7つのリポジトリ(下記)から切り出したコードについて、Qwen3.8-27B(Apache 2.0)が日本語で書いた説明・確認・修正。わざと問題を入れたコードは、先生役にだけ問題の場所を伝えて書かせ、Gemma 4 31B が「問題を指摘できている」と判定したものだけを使用 | 1,800件(約175万トークン) | LoRA r=32、学習率 1e-4、2周 |
| 3. 数学の論文 | openai/math(Apache 2.0)のうち、Lean の命題が論文の主張と一致すると Qwen3.8-27B と2段目までのこのモデルが両方とも判定した結果の論文の LaTeX | 15本(約65万トークン) | LoRA r=32、学習率 5e-5、1周 |
2段目に使ったリポジトリ(すべて Apache 2.0 か MIT。第三者のコード・テスト・自動生成ファイル・鍵やメールアドレスらしき文字列を含む断片は除外): xai-org/x-algorithm、openai/codex、xai-org/grok-build、anthropics/sandbox-runtime、openai/openai-cli、NVIDIA-NeMo/Guardrails(以上 Apache 2.0)、MicrosoftDocs/semantic-kernel-docs(コード部分、MIT)
3段目について:openai/math の論文は、OpenAI の社内モデルが書いたものです(Apache 2.0 で公開)。Lean の命題と論文の主張が一致するかの判定は2つのモデルによるもので、人は確認していません。
正式版に向けて、判定をやり直して選んだ論文48本(約185万トークン、同じ設定)で3段目を学習し直しましたが、すべての評価で下がったため採用しませんでした。論文の文章の誤差は下がった(1.61 → 1.45)ものの、問題を解く力にはつながらず、考え終わらない割合が増えました。
| 3段目 | AIME | 理科 | HumanEval | AIME で考え終わらなかった割合 |
|---|---|---|---|---|
| なし(2段目まで) | 73.3% | 90.7% | 97.0% | 21.7% |
| 論文15本(このモデル) | 75.0% | 91.3% | 97.0% | 21.7% |
| 論文48本(不採用) | 65.0% | 90.3% | 93.3% | 28.3% |
既知の問題
- 考える長さは短くなりましたが、AIME ではまだ平均約2万トークン考えます
- 日本語のコードレビューの回答は、2段目で約2倍に長くなりました(平均 1,178 → 2,188 文字)。採点の「一貫性」はわずかに下がっています(4.80 → 4.59)
- 3段目の効果は小さく、2段目までとの差(AIME 73.3% → 75.0%)は測るたびの揺れの範囲です。論文を増やすと、かえって成績が下がりました
ライセンス
Apache License 2.0。元のモデル TokenRhythm/NeoHorse-1-9B(Apache 2.0)を変更したものです(変更内容は上記の3段の追加学習)。
学習データ:DeepMath-103K(MIT)、OpenScienceReasoning-2(CC BY 4.0、NVIDIA)、openai/math(Apache 2.0、© OpenAI)、上記のコードのリポジトリ(Apache 2.0 / MIT)。Qwen3.8-27B(Apache 2.0)と Gemma 4 31B(Apache 2.0)を手本作り・選別に使いました。AIME 2026(CC BY-NC-SA 4.0)と MMLU-Pro、HumanEval は評価だけに使い、学習には使っていません。