Instructions to use Takenoko12345678/NeoHorse-1-9B-Math-SFT with libraries, inference providers, notebooks, and local apps. Follow these links to get started.
- Libraries
- Transformers
How to use Takenoko12345678/NeoHorse-1-9B-Math-SFT with Transformers:
# Use a pipeline as a high-level helper from transformers import pipeline pipe = pipeline("text-generation", model="Takenoko12345678/NeoHorse-1-9B-Math-SFT") messages = [ {"role": "user", "content": "Who are you?"}, ] pipe(messages)# pip install -U transformers accelerate # Load model directly from transformers import AutoTokenizer, AutoModelForCausalLM tokenizer = AutoTokenizer.from_pretrained("Takenoko12345678/NeoHorse-1-9B-Math-SFT") model = AutoModelForCausalLM.from_pretrained("Takenoko12345678/NeoHorse-1-9B-Math-SFT", device_map="auto") messages = [ {"role": "user", "content": "Who are you?"}, ] inputs = tokenizer.apply_chat_template( messages, add_generation_prompt=True, tokenize=True, return_dict=True, return_tensors="pt", ).to(model.device) outputs = model.generate(**inputs, max_new_tokens=256) print(tokenizer.decode(outputs[0][inputs["input_ids"].shape[-1]:])) - Notebooks
- Google Colab
- Kaggle
- Local Apps Settings
- vLLM
How to use Takenoko12345678/NeoHorse-1-9B-Math-SFT with vLLM:
Install from pip and serve model
# Install vLLM from pip: pip install vllm # Start the vLLM server: vllm serve "Takenoko12345678/NeoHorse-1-9B-Math-SFT" # Call the server using curl (OpenAI-compatible API): curl -X POST "http://localhost:8000/v1/chat/completions" \ -H "Content-Type: application/json" \ --data '{ "model": "Takenoko12345678/NeoHorse-1-9B-Math-SFT", "messages": [ { "role": "user", "content": "What is the capital of France?" } ] }'Use Docker
docker model run hf.co/Takenoko12345678/NeoHorse-1-9B-Math-SFT
- SGLang
How to use Takenoko12345678/NeoHorse-1-9B-Math-SFT with SGLang:
Install from pip and serve model
# Install SGLang from pip: pip install sglang # Start the SGLang server: python3 -m sglang.launch_server \ --model-path "Takenoko12345678/NeoHorse-1-9B-Math-SFT" \ --host 0.0.0.0 \ --port 30000 # Call the server using curl (OpenAI-compatible API): curl -X POST "http://localhost:30000/v1/chat/completions" \ -H "Content-Type: application/json" \ --data '{ "model": "Takenoko12345678/NeoHorse-1-9B-Math-SFT", "messages": [ { "role": "user", "content": "What is the capital of France?" } ] }'Use Docker images
docker run --gpus all \ --shm-size 32g \ -p 30000:30000 \ -v ~/.cache/huggingface:/root/.cache/huggingface \ --env "HF_TOKEN=<secret>" \ --ipc=host \ lmsysorg/sglang:latest \ python3 -m sglang.launch_server \ --model-path "Takenoko12345678/NeoHorse-1-9B-Math-SFT" \ --host 0.0.0.0 \ --port 30000 # Call the server using curl (OpenAI-compatible API): curl -X POST "http://localhost:30000/v1/chat/completions" \ -H "Content-Type: application/json" \ --data '{ "model": "Takenoko12345678/NeoHorse-1-9B-Math-SFT", "messages": [ { "role": "user", "content": "What is the capital of France?" } ] }' - Docker Model Runner
How to use Takenoko12345678/NeoHorse-1-9B-Math-SFT with Docker Model Runner:
docker model run hf.co/Takenoko12345678/NeoHorse-1-9B-Math-SFT
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 は評価だけに使い、学習には使っていません。
- Downloads last month
- 290