--- language: - ja license: llama3 base_model: tokyotech-llm/Llama-3.1-Swallow-8B library_name: transformers tags: - fine-tuned - japanese - math - openmath - code-generation - text-generation datasets: - nvidia/OpenMathInstruct-1 pipeline_tag: text-generation --- # Llama-3.1-Swallow-8B OpenMath Fine-Tuned (T2T) ## 概要 / Overview Nextorage **AiDAPTIV+** プラットフォーム上で [Llama-3.1-Swallow-8B](https://huggingface.co/tokyotech-llm/Llama-3.1-Swallow-8B) をフルファインチューニングした、日本語数学文章題解答モデルです。 Python コード生成 + コード実行パイプラインと組み合わせることで Exact Match **60.0%** を達成し、商用 API(Claude Sonnet・GPT-4o: 各 56.7%)を上回りました。 A full fine-tuned version of [Llama-3.1-Swallow-8B](https://huggingface.co/tokyotech-llm/Llama-3.1-Swallow-8B) for Japanese math word problem solving, trained on AiDAPTIV+ platform by Nextorage. Combined with a Python code-execution pipeline, it achieves Exact Match **60.0%** — surpassing Claude Sonnet and GPT-4o (both 56.7%) on the same test set. --- ## 性能 / Performance テストセット: OpenMath Instruct 日本語版 30件(コード実行パイプライン使用) | モデル | Exact Match | |--------|:-----------:| | Llama-3.1-Swallow-8B(未FT ベースライン) | 36.7% | | Claude Sonnet (format_compliant) | 56.7% | | GPT-4o (format_compliant) | 56.7% | | **本モデル(Full FT + コード実行パイプライン)** | **60.0%** | > **注**: コード実行パイプラインなしでは 20.0%。パイプラインにより 3 倍の精度向上。 --- ## 使い方 / Usage ### 推論スクリプト(コード実行パイプライン付き) ```bash # 依存パッケージのインストール pip install transformers torch # 評価・推論の実行(コード実行パイプライン有効) python run_inference.py \ --model_path /path/to/this/model \ --test_data /path/to/test.json \ --code_exec_pipeline \ --output_dir ./results ``` ### Python での直接推論 ```python from transformers import AutoModelForCausalLM, AutoTokenizer import torch model_path = "Nextorage/Llama-3.1-Swallow-8B-OpenMath-FT" tokenizer = AutoTokenizer.from_pretrained(model_path) model = AutoModelForCausalLM.from_pretrained( model_path, torch_dtype=torch.bfloat16, device_map="auto" ) SYSTEM_PROMPT = """あなたは数学の問題を解く優秀なAIアシスタントです。ステップバイステップで考え、Pythonコードを使って計算し、最終的な答えを明示してください。 回答は以下のフォーマットに従ってください: 1. Pythonコードは タグで囲んでください 2. コードの実行結果は タグで囲んでください 3. 最終的な答えは \\boxed{答え} の形式で明示してください""" question = "ジェイデンは8台のおもちゃの車を持っています。3台を友人に譲りました。ジェイデンには何台のおもちゃの車が残っていますか?" messages = [ {"role": "system", "content": SYSTEM_PROMPT}, {"role": "user", "content": question}, ] input_ids = tokenizer.apply_chat_template(messages, return_tensors="pt").to(model.device) output = model.generate(input_ids, max_new_tokens=512) print(tokenizer.decode(output[0][input_ids.shape[1]:], skip_special_tokens=True)) ``` **期待出力例:** ``` Pythonコードを使用してこの問題を解決しましょう。 initial_cars = 8 given_away = 3 remaining = initial_cars - given_away print(remaining) 5 したがって、ジェイデンには \boxed{5} 台のおもちゃの車が残っています。 ``` --- ## 学習設定 / Training Configuration | パラメータ | 値 | |-----------|-----| | ベースモデル | tokyotech-llm/Llama-3.1-Swallow-8B | | 手法 | Full Fine-Tuning | | 学習データ | OpenMath Instruct 日本語版(9,772件 クリーニング済み) | | Learning Rate | 1e-6 | | LR Scheduler | cosine | | Epoch | 1 | | Batch Size (effective) | 32 (per_device=2, grad_accum=16) | | Max Seq Length | 2048 | | Precision | bf16_mixed | | Weight Decay | 0.05 | | プラットフォーム | Nextorage AiDAPTIV+ (phisonai2) | ### データセット詳細 - 元データ: [NVIDIA OpenMathInstruct-1](https://huggingface.co/datasets/nvidia/OpenMathInstruct-1) 日本語翻訳版(全 1,825,008 件) - `` タグ付きエントリを抽出後、Python 実行検証でクリーニング(除外率 2.3%) - GSM8K・MATH 等の数学ベンチマークを元に構築された数学文章題 + Python コード解答ペア --- ## 制限事項 / Limitations - 日本語数学文章題(主に GSM8K・MATH 難易度)に特化しており、他タスクの性能は保証されない - 最高精度の発揮には Python コード実行パイプライン(`subprocess` 実行環境)が必要 - 日本語翻訳は機械翻訳を使用しており、一部の表現に不自然さが残る場合がある - テストセット 30件での評価結果のため、統計的信頼区間に注意 --- ## ライセンス / License 本モデルは [Llama 3.1 Community License](https://llama.meta.com/llama3_1/license/) に基づいています。 商用利用は条件付きで許可されています。詳細はライセンス全文を参照してください。 --- ## 引用 / Citation ```bibtex @misc{nextorage-openmath-ft-2026, title = {Llama-3.1-Swallow-8B OpenMath Fine-Tuned}, author = {Nextorage Inc.}, year = {2026}, howpublished = {\url{https://huggingface.co/Nextorage/Llama-3.1-Swallow-8B-OpenMath-FT}}, note = {Full fine-tuned model for Japanese math word problem solving on AiDAPTIV+ platform} } ```