ONNX 模型库
返回模型

说明文档

Aryabhata 1.0:面向考试的语言模型,专精 JEE 数学

概述

Aryabhata 1.0 是由 Physics Wallah AI Research 开发的 70 亿参数小型数学语言模型,专为 JEE Mains 等印度高竞争性考试优化。尽管体积小巧,Aryabhata 1.0 在考试导向的推理任务上实现了业界领先的性能,同时具备出色的Token 效率和低推理成本。

🚧 Aryabhata 1.0 是一个实验性发布版本。我们正在积极收集反馈——请在本仓库的 Discussion 标签页贡献您的意见。


🧠 主要特性

  • 架构:70 亿参数因果解码器模型
  • 考试导向优化:专门针对 JEE 级别数学推理进行调优
  • 高准确率
    • JEE Mains 2025 年 1 月场次86%
    • JEE Mains 2025 年 4 月场次90.2%
  • Token 效率:在约 2K token 窗口内高效运行,而其他推理模型通常需要约 8K
  • 计算高效:使用优化流水线在 1x2 NVIDIA H100 GPU 上训练

🛠️ 训练详情

  • 训练数据:约 13 万道题目-解答对,精选自 Physics Wallah 专有考试数据集
  • 训练流水线
    • 模型合并
    • 拒绝采样
    • 监督微调 (SFT)
    • 可验证奖励强化学习 (RLVR)

🔀 模型合并

我们通过模型合并(加权平均)构建了一个强大的初始化模型(Aryabhata 0.5),融合了多种模型的能力:

  • Qwen 2.5 Math:具有扎实符号数学基础的稳健数学专用大语言模型
  • Ace Math:Qwen 2.5 Math 的增强版,由 NVIDIA 微调,在数学基准测试中具有更高的准确率
  • DeepSeek R1 Distill Qwen:长篇推理模型,基于从 DeepSeek R1 蒸馏出的推理轨迹微调

📚 数据整理 + 拒绝采样

我们从 Physics Wallah 内部数据库中提取了约 25 万道原始题目,并进行了严格的过滤和清洗:

  • 移除:基于图表的、非英文的、选项过多的题目
  • 保留:符合 JEE Main 2019-2024 分布的题目 最终整理数据集:约 13 万道高质量题目

对于每道题目:

  • 使用 Aryabhata 0.5 生成 4 条思维链
  • 仅保留能得出正确最终答案的思维链

结果数据集:

  • 约 10 万道题目
  • 约 35 万条高质量思维链

我们使用此数据集进行 SFT。

🎯 可验证奖励强化学习 (RLVR)

我们使用了自定义的组相对策略优化 (GRPO) 变体,针对数学专用奖励函数进行了适配:

  • 移除了 KL 散度惩罚
  • 移除了裁剪

我们在剩余的约 3 万道题目上使用 RLVR。

这种多阶段训练策略使 Aryabhata 1.0 能够捕捉教学对齐的推理模式,使其在解决真实学生的数学问题方面非常有效。


📊 性能亮点

评估设置

所有评估均在 temperature = 0.0 下进行,我们报告 pass@1 准确率。

评估数据集

我们在两组官方 JEE Mains 2025 数学试卷上评估了模型:

  • 1 月场次:10 份试卷,包含 250 道题目
  • 4 月场次:9 份试卷,包含 225 道题目

每份试卷包含:

  • 单选题(MCQ),只有一个正确选项
  • 数值答案型(NAT)题目,需要精确的数值回答

评估指标

我们使用复合评估指标来反映真实评分的严谨性并减少假阳性:

  1. 浮点匹配
  • 在容差范围内(±1e-9)比较预测答案和目标答案
  • 稳健处理舍入误差和小的数值错误
  1. 字符串匹配
  • 用于符号答案(如分数、根式)
  • 使用严格的精确匹配——预测必须逐字符匹配标准答案
  1. LLM-as-Judge (GPT-4o-mini)
  • 用于判断歧义格式的数学等价性

🔹 各模型准确率对比

Aryabhata 在 JEE Main 数学方面具有最佳准确率,与前沿模型相当

🔹 准确率 vs Token 使用量

Aryabhata 在准确率与 Token 使用量方面与前沿模型相当


🔧 预期用途

主要用例

  • 竞争性考试备考(JEE Main 级别数学问题)
  • 问答和解疑系统
  • 教育辅导和概念讲解

💡 如何使用

🧪 使用 🤗 Transformers

from transformers import AutoTokenizer, AutoModelForCausalLM, GenerationConfig

model_id = "PhysicsWallahAI/Aryabhata-1.0"

tokenizer = AutoTokenizer.from_pretrained(model_id)
model = AutoModelForCausalLM.from_pretrained(model_id)


# Define stop strings
stop_strings = ["<|im_end|>", "<|end|>", "<im_start|>", "⁠```python\n", "⁠<|im_start|>", "]}}]}}]"]

def strip_bad_tokens(s, stop_strings):
    for suffix in stop_strings:
        if s.endswith(suffix):
            return s[:-len(suffix)]
    return s


# Create generation config (can also set temperature, top_p, etc.)
generation_config = GenerationConfig(
    max_new_tokens=4096,
    stop_strings = stop_strings
)

query = 'Find all the values of \\sqrt[3]{1}'
messages = [{'role': 'system', 'content': 'Think step-by-step; put only the final answer inside \\boxed{}.'},
            {'role': 'user', 'content': query}]

text = tokenizer.apply_chat_template(
    messages,
    tokenize=False,
    add_generation_prompt=True
)
inputs = tokenizer([text], return_tensors="pt")
outputs = model.generate(**inputs, generation_config=generation_config, tokenizer=tokenizer)

print(strip_bad_tokens(tokenizer.decode(outputs[0], skip_special_tokens=True), stop_strings))

⚡ 使用 vLLM

使用 vLLM 高效运行模型:

from vllm import LLM, SamplingParams

# Initialize model (downloads from Hugging Face if not local)
llm = LLM(model="PhysicsWallahAI/Aryabhata-1.0")

# Define prompt and sampling configuration
query = 'Find all the values of \\sqrt[3]{1}'
messages = [{'role': 'system', 'content': 'Think step-by-step; put only the final answer inside \\boxed{}.'},
            {'role': 'user', 'content': query}]
sampling_params = SamplingParams(temperature=0.0, max_tokens=4*1024, stop=["<|im_end|>", "<|end|>", "<im_start|>", "⁠```python\n", "⁠<|im_start|>", "]}}]}}]"])

# Run inference
results = llm.chat(messages, sampling_params)

# Print result
print(results[0].outputs[0].text.strip())

🚀 路线图

Aryabhata 2.0(即将推出):

  • 扩展领域覆盖至 物理化学
  • 支持 JEE AdvancedNEET基础课程
  • 进一步优化实时部署的成本效益和准确率

🤝 引用

如果您使用此模型,请引用:

@misc{Aryabhata2025,
  title = {Aryabhata 1.0: A compact, exam-focused language model tailored for mathematics in Indian competitive exams, especially JEE Main.},
  author = {Physics Wallah AI Research},
  year = {2025},
  note = {\url{https://huggingface.co/PhysicsWallahAI/Aryabhata-1.0}},
}

Prince-1/Aryabhata-1.0

作者 Prince-1

text-generation onnxruntime-genai
↓ 0 ♥ 0

创建时间: 2025-07-23 06:04:12+00:00

更新时间: 2025-07-23 06:07:48+00:00

在 Hugging Face 上查看

文件 (9)

.gitattributes
README.md
chat_template.jinja
genai_config.json
model.onnx ONNX
model.onnx.data
special_tokens_map.json
tokenizer.json
tokenizer_config.json