Qwen2-Math开源!初步探索数学合成数据生成!

简介: 阿里通义团队开源新一代数学模型Qwen2-Math,包含1.5B、7B、72B三个参数的基础模型和指令微调模型。

阿里通义团队开源新一代数学模型Qwen2-Math,包含1.5B、7B、72B三个参数的基础模型和指令微调模型。Qwen2-Math基于开源模型Qwen2研发, Qwen2-Math-72B-Instruct在权威测评集MATH上的得分超越目前主流的闭源和开源模型,如GPT-4o、Claude-3.5-Sonnet、Gemini-1.5-Pro、Llama-3.1-405B等,以84%的准确率处理了代数、几何、计数与概率、数论等多种数学问题,成为最先进的数学专项模型。

image.png

注:在MATH基准测评中,通义千问数学模型的旗舰款Qwen2-Math-72B-Instruct取得了84%的准确率,超过GPT-4o、Claude-3.5-Sonnet、Gemini-1.5-Pro 和 Llama-3.1-405B等开闭源模型。

Qwen2-Math 基础模型使用 Qwen2大语言模型进行初始化,并在精心设计的数学专用语料库上进行预训练,训练数据包含大规模高质量的数学网络文本、书籍、代码、考试题目,以及由 Qwen2 模型合成的数学预训练数据。所有预训练和微调数据集都进行了去污染处理。

随后,研发团队训练了指令微调版本模型:首先,基于Qwen2-Math-72B 训练一个数学专用的奖励模型;接着,将密集的奖励信号与指示模型是否正确回答问题的二元信号结合,用作学习标签,再通过拒绝采样构建监督微调(SFT)数据;最后在SFT模型基础上使用 GRPO 方法优化模型。

Qwen2-Math系列模型目前主要支持英文,通义团队很快就将推出中英双语版本,多语言版本也在开发中。

Qwen2-Math-72B-Instruct表现优异,在十大测评中都获得了远超其他开源数学模型的成绩。

image.png

注:研发团队在greedy和RM@8 的条件下对模型作了测评,表中为每款Qwen2-Math-72B-Instruct模型列出了三个得分结果,分别是第1次回答得分(无下标数字)、8次回答中出现最多次数的答案的得分,8次回答中reward model所选答案的得分。

合成数据生成初探索

适用场景

数学模型可用在多种场景,比如教育行业的AI教师,解题辅助,智能阅卷等场景,本文更加关注在AI teacher for LLM场景,比如蒸馏,能否使用更强的专业模型为小模型生成高质量的数据,更便宜,更快速微调小模型,以提高性能和降低成本。

用例参考链接:https://cookbook.openai.com/examples/sdg1

合成数据优势

使用专业大语言模型生成合成数据可以为模型训练提供高质量、专业性高且符合隐私要求的数据。可以用在多种场景,比如生成专业数据,并SFT数据中混合,使大语言模型微调取得更好的结果、生成针对模型的数学能力的测试数据等。

合成数据可以解决如下问题:

1 真实数据可能因为隐私限制等,更加难以获取。

2 合成数据比真实数据结构化性更高,降低数据清洗成本。

3 在专业数据比较稀疏的情况下(如数学),合成数据可用作数据增强。

4 当训练数据中,配比不平衡,以及数据多样性不够是,通过合成数据来丰富数据集。

与传统的数据增强或手动数据创建方法不同,使用 LLM 可以生成丰富、细致入微且与上下文相关的数据集,从而显著增强其对企业和开发人员的实用性。

模型下载和推理

模型下载

modelscope download --model=qwen/Qwen2-Math-7B-Instruct --local_dir ./Qwen2-Math-7B-Instruct

使用vLLM模型推理

python -m vllm.entrypoints.openai.api_server --served-model-name Qwen2-Math-7B-Instruct --model ./Qwen2-Math-7B-Instruct/

安装依赖和运行模型

%pip install openai
%pip install pandas
%pip install scikit-learn
%pip install matplotlib
from openai import OpenAI
import os
import json
openai_api_key = "EMPTY"
openai_api_base = "http://localhost:8000/v1"
client = OpenAI(
    api_key=openai_api_key,
    base_url=openai_api_base,
)

生成带有结构提示的 json文件

我们以最简单的方式创建数据。本文通过解决 3 个关键点来快速生成数据:告诉它数据的格式 (json)、架构以及有关列如何关联的有用信息(LLM 将能够从列名称中推断出这一点,但帮助会提高性能)。

datagen_model = "Qwen2-Math-7B-Instruct"
question = """
Create a json file with 3 rows of math data.
Each row should include the following fields:
 - id (incrementing integer starting at 1)
 - elementary school Olympiad math problem
 - detailed solutions for the problem
Make sure that the problem make sense (i.e. suit elementary school students, solution is step by step). Also only respond with the json."""
response = client.chat.completions.create(
  model=datagen_model,
  messages=[
    {"role": "system", "content": "You are a helpful assistant designed to generate synthetic data."},
    {"role": "user", "content": question}
  ]
)
res = response.choices[0].message.content
print(res)
```json
[
  {
    "id": 1,
    "problem": "Find the sum of the first 100 even numbers.",
    "solutions": [
      "To find the sum of the first 100 even numbers, we can use the formula for the sum of an arithmetic series. The first 100 even numbers form an arithmetic series where the first term \(a = 2\) and the common difference \(d = 2\). The sum \(S_n\) of the first \(n\) terms of an arithmetic series is given by \(S_n = \frac{n}{2} (2a + (n-1)d)\). Here, \(n = 100\), \(a = 2\), and \(d = 2\). Substituting these values in, we get",
      "S_100 = \frac{100}{2} (2 \cdot 2 + (100-1) \cdot 2) = 50 (4 + 198) = 50 \cdot 202 = 10100."
]
  },
  {
    "id": 2,
    "problem": "What is the smallest positive integer that is both a multiple of 7 and a multiple of 11?",
    "solutions": [
      "To find the smallest positive integer that is both a multiple of 7 and a multiple of 11, we need to find the least common multiple (LCM) of 7 and 11. Since 7 and 11 are both prime numbers, their LCM is simply their product. Therefore, the LCM of 7 and 11 is \(7 \times 11 = 77\). So, the smallest positive integer that is both a multiple of 7 and a multiple of 11 is 77."
    ]
  },
  {
    "id": 3,
    "problem": "If a square has a side length of 5 units, what is the area of the square?",
    "solutions": [
      "The area \(A\) of a square with side length \(s\) is given by the formula \(A = s^2\). Here, the side length \(s = 5\) units. Substituting this value into the formula, we get",
      "A = 5^2 = 25."
    ]
  }
]
```

“大模型能不能做数学题”,不仅是社交平台的热门话题,也是业界非常关注的研究课题。处理高级数学问题,需要模型具备复杂多步逻辑推理能力。通义团队在技术博客中表示,希望通过开源“为科学界解决高级数学问题做出贡献”,未来将持续增强模型数学能力。

点击链接👇直达原文

https://modelscope.cn/models/qwen/Qwen2-Math-72B-Instruct?from=alizishequ__text

相关文章
|
数据可视化 PyTorch 算法框架/工具
零一万物Yi-34B-Chat 微调模型及量化版开源!魔搭社区最佳实践教程!
11月24日,零一万物基正式发布并开源微调模型 Yi-34B-Chat,可申请免费商用。同时,零一万物还为开发者提供了 4bit/8bit 量化版模型,Yi-34B-Chat 4bit 量化版模型可以直接在消费级显卡(如RTX3090)上使用。魔搭社区已支持下载、推理训练体验,并推出相关教程,欢迎大家来玩!
|
运维 并行计算 C语言
TensorRT-LLM在CodeFuse-CodeLlama-34B上的int4量化实践
Codefuse是由蚂蚁集团开发的专门用于支持整个软件开发生命周期的大型代码语言模型(Code LLMs),涵盖设计、需求、编码、测试、部署、运维等关键阶段。致力于打造创新的解决方案,让软件开发者们在研发的过程中如丝般顺滑。
432 0
|
1月前
|
JSON 文字识别 数据可视化
Qwen2-VL微调实战:LaTex公式OCR识别任务(完整代码)
《SwanLab机器学习实战教程》推出了一项基于Qwen2-VL大语言模型的LaTeX OCR任务,通过指令微调实现多模态LLM的应用。本教程详述了环境配置、数据集准备、模型加载、SwanLab集成及微调训练等步骤,旨在帮助开发者轻松上手视觉大模型的微调实践。
|
5月前
|
数据采集 自然语言处理
ARTIST的中文文图生成模型问题之核心代码实现的问题如何解决
ARTIST的中文文图生成模型问题之核心代码实现的问题如何解决
|
2月前
|
自然语言处理 搜索推荐 Serverless
基于函数计算部署GPT-Sovits模型实现语音生成
阿里云开发者社区邀请您参加“基于函数计算部署GPT-Sovits模型实现语音生成”活动。完成指定任务即可获得收纳箱一个。活动时间从即日起至2024年12月13日24:00:00。快来报名吧!
|
5月前
|
网络安全 语音技术
语音情感基座模型emotion4vec 问题之计算emotion2vec模型中的总损失L,如何操作
语音情感基座模型emotion4vec 问题之计算emotion2vec模型中的总损失L,如何操作
|
5月前
|
机器人 人机交互 语音技术
语音情感基座模型emotion3vec 问题之什么是帧级别损失,如何计算
语音情感基座模型emotion3vec 问题之什么是帧级别损失,如何计算
|
5月前
|
机器学习/深度学习 人工智能 数据可视化
技术开源|语音情感基座模型emotion2vec
技术开源|语音情感基座模型emotion2vec
|
5月前
|
机器学习/深度学习 人工智能 自然语言处理
【机器学习】GLM4-9B-Chat大模型/GLM-4V-9B多模态大模型概述、原理及推理实战
【机器学习】GLM4-9B-Chat大模型/GLM-4V-9B多模态大模型概述、原理及推理实战
523 0
|
8月前
|
人工智能 测试技术
合成数据让Llama 2数学能力提高
【2月更文挑战第24天】合成数据让Llama 2数学能力提高
100 3
合成数据让Llama 2数学能力提高

热门文章

最新文章