跳转到内容

各个阶段的合成数据举例

关于合成数据,发展至今,已经是一个很成熟的领域,不仅在Huggingface社区中有大量的文章以及开源的合成数据集,对于各个企业、研究团队,私有合成数据也有成熟的经验,本节以Huggingface社区中开源的论文和数据集举例说明预训练、微调以及推理数据的样式。

预训练数据

由于Phi论文中并没有明确提及如何合成的数据,huggingface团队为复现Phi-1.5过程中所遇到的挑战及其解决方案,构建了包含数十亿词元的合成数据集cosmopedia,当然还有采样了100k条数据的cosmopedia-100k

cosmopedia数据集示例

该数据集首先在网络上收集大量数据,其中seed_data就代表词源信息,然后由于受众群体audience的不一样,根据不同的任务类型format,提示词prompt会进行相应的构建,然后利用GPT-3.5生成相应的回答,也就是我们最终需要预训练数据text

我们可以用Qwen2.5-3B-Instruct模型进行一波尝试,就比如采用cosmopedia数据第一条中的prompt转换成中文形式输出相应的预训练数据,点击可以查看完整数据:

目标受众是小学生时提示词与数据

提示词

Plain
以下是一个网页的摘录:

#贴现率计算器

由博士候选人Tibor Pál创建

Arturo Barrantes和Adena Benn评论

由博士候选人Tibor Pál创建
Arturo Barrantes和Adena Benn评论
基于Cipra, T.金融与保险公式(2010)的研究
最后更新:2023年2月2日

我们创建了这个贴现率计算器来帮助您估计给定支付流的贴现率。更具体地说,您可以计算给定现值和未来值的贴现率,也可以计算附加支付流(例如年金)的贴现率。

请继续阅读并了解以下内容:
•贴现率的定义是什么?
•贴现率公式是什么?
•如何计算贴现率?
要通过贴现率计算现值,您可能需要查看我们的现值计算器。

贴现率的定义是什么?

贴现率是贴现现金流量(DCF)分析中用于确定未来现金流量现值的利率。贴现率是一个重要的比较基础,因为它是

创建一个与上面的片段相关的教育片段,目标受众是小学生。不应该使用像电磁学和集成这样复杂的大学课程,因为小学通常不会教这些课程。如果这就是这个片段的内容,那就找一个更简单的科学替代方法来解释,并使用日常示例。例如,如果主题是“线性代数”,你可以讨论如何将物体排成一行或列来帮助解决难题。

避免使用专业术语和LaTeX,只讨论简单的小学水平的主题。马上开始教育部分。

数据

Plain
好的,让我们为小学生们设计一个关于贴现率的简单教育片段。我们可以用一些日常生活中熟悉的概念来解释这个概念。

大家好!今天我们要聊聊一个有趣的概念——贴现率。想象一下,你有一笔钱存起来,比如你的压岁钱,或者从爸爸妈妈那里得到的零花钱。这些钱放在口袋里不动,随着时间的推移,它们会变多吗?当然不会,因为它们只是在银行里放着,银行会给你一点小利息作为回报。这个小利息就是贴现率!

## 贴现率的定义

贴现率就像是银行给你的“租金”。当你把钱存到银行里时,银行会给你一定的利息,这个利息就叫做贴现率。如果你把钱存得越久,银行就会给你越多的利息。所以,贴现率就像是一把尺子,用来测量你的钱随着时间的增长。

## 贴现率公式

虽然这个公式可能看起来有点复杂,但其实很好理解。贴现率公式可以帮助我们算出未来某一天,这笔钱会变成多少。比如,如果你现在有10元钱,银行给你1%的贴现率,那么一年后你就有10元 + 1元 = 11元。这就像你在银行存了一年的钱,银行给了你1元的利息。

## 如何计算贴现率

假设你有一个好朋友,他答应过你一年后送你一个玩具,这个玩具现在值50元。为了公平起见,你想知道这个玩具在未来一年内会变成多少钱,这样才能决定现在是否应该把100元存下来。这里,你就可以用贴现率来计算。

1. 首先,你需要知道这个玩具现在的价值(称为现值),也就是50元。
2. 然后,你需要知道你希望这个玩具在未来的价值(称为未来值),比如100元。
3. 最后,你用贴现率来算出这个玩具在未来一年内会变成多少钱。

## 小练习

想象一下,你现在有10元钱,你想存到银行里,让银行给你一定的贴现率,让你的钱变多。假设银行给你2%的贴现率,一年后你会有多少钱呢?(答案:10元 + 10元 × 2% = 10元 + 0.2元 = 10.2元)

好了,今天的分享就到这里啦!记住,贴现率就像是银行给你的“租金”,帮你把现在的东西变成未来的东西。希望你下次听到这个词时,能立刻想到这个有趣的概念哦!
目标受众是专业人员时提示词与数据

而如果我们将提示词中关于受众群体更改为专业人员,情况又会如何,下面的例子仍采用上述提示词,前半部分完全相同,因此以省略符号替代:

提示词

Plain
……

创建一个与上面的片段相关的教育片段,目标受众是专业研究人员,他们学习了关于这些课程的内容,可以用专业术语来进行科普。
请马上开始教育部分。

数据

Plain
## 贴现率及其在金融与保险中的应用

## 贴现率的定义

贴现率(Discount Rate)在金融与保险领域具有重要地位,它是一种用来衡量未来现金流价值的比率。在进行投资决策、评估项目收益或是评估资产价值时,贴现率被广泛应用于现值(Present Value, PV)的计算。贴现率本质上是一个折现率,它表示了将未来一定时期内的一系列现金流折算到现在时点的价值。

在贴现现金流(Discounted Cash Flow, DCF)分析中,贴现率通常被视为一项无风险收益率,用于调整预期未来现金流至当前的价值。贴现率的高低直接影响到现金流现值的大小,从而对投资决策产生重大影响。

## 贴现率公式

贴现率的核心计算公式为:
\[ PV = \frac{CF}{(1+r)^n} \]
其中,
- \( PV \) 是现值,
- \( CF \) 是未来某时刻的现金流,
- \( r \) 是贴现率(折现率),
- \( n \) 是时间(通常以年为单位)。

通过上述公式,我们可以计算出某一特定未来时刻的现金流在当前时点的价值。在实际操作中,为了简化计算过程,有时会采用复利贴现率,即:
\[ PV = CF \times (1 + r)^{-n} \]

## 如何计算贴现率

在金融模型中,贴现率的选择对最终结果至关重要。通常情况下,贴现率的选择会基于市场条件、行业标准或特定项目的预期风险水平。对于投资者而言,贴现率一般由投资者的风险承受能力和预期回报率决定;而对于企业而言,则可能基于其资本成本或机会成本来设定。

贴现率的确定可以利用多种方法,包括但不限于:
1. **加权平均资本成本(WACC)**:这是综合考虑不同资本来源成本的一种方法,常用于企业内部项目评估。
2. **风险调整贴现率(Risk-Adjusted Discount Rate, RADR)**:这种方法考虑了特定项目的风险溢价,使得贴现率能够反映项目的额外风险。
3. **市场贴现率**:基于当前市场的整体风险偏好来设定贴现率,适用于一些标准化的项目评估。

## 现值计算器的应用

为了方便计算,我们提供了一个贴现率计算器,该工具可以帮助您根据给定的现值、未来值以及附加支付流(如年金)来计算相应的贴现率。通过现值计算器,您可以更直观地理解贴现率在实际应用中的重要性及其如何影响现金流的价值评估。
从上述提示词的举例类比可以看出,同样的数据源,当提示词中受众目标更改,最终生成的预训练数据完全不同,相互之间关联度很低,专业人员所面对的一大堆公式,在受众群体是小学生时一点都没有提到,那么数据重复性就无从谈起,而且由于是大模型合成的数据,生成的文案在质量上有所保障,同时也可以确保规模,哪怕是3100k条数据也能保证多样性。

微调数据

但是微调虽然要求的数据规模不大, 但是对质量的要求很高。我们在前文已经分析了生成微调数据的完整流程,而生成的数据集就是我们在入门大模型微调时经常使用的数据集Alpaca,总计52k条数据,所有的数据都是由GPT-3预训练模型生成,如果想复现生成数据集的代码,查看官方给的代码即可。

一般的,指令微调的数据集包含三个部分:指令、输入、输出:

Plain
instruction:指令
input:输入
output:输出

我们看下经典的Alpaca数据集格式:

alpaca数据集示例

其中每一部分含义如下:

  • instruction:描述模型应执行的任务。52K 条指令中的每一条都是唯一的。
  • input:可选的上下文或任务输入。例如,当指令为“总结以下文章”时,输入就是文章本身。大约 40% 的示例包含输入。
  • output:由text-davinci-003(GPT-3)模型来生成的指令的答案。
  • textinstructioninput并使用作者用于微调其模型的提示模板output进行格式化。

推理数据

虽然DeepSeek技术报告中的80w条数据并未开源,但是训练数据的格式基本包含下面三个部分:

Plain
input:请说说三原色分别是什么
reasoning_content:好的,用户……
content:三原色分别是……

其中:

  • input:问答对中的问题部分
  • reasoning_content:这部分是模型的思考部分,其实在输出中由<think></think>特殊字符包裹的部分,里面包含模型的推理、反思等内容,是一段非常长的文本
  • content:该部分是模型的最终输出内容,也包含在输出中,通常在</think>特殊字符后面,作为模型给出的标准回答,模型在输出的时候可以通过对话模板自动检测出特殊字符,从而提取模型最终的输出

我们可以在huggingface社区中找到开源的基于R1生成的SFT数据

推理数据集示例

该数据集为中文开源蒸馏满血R1的数据集,数据集中不仅包含math数据,还包括大量的通用类型数据,总数量为110K。

由于强化学习对资源要求比较高,并且训练时间通常非常漫长,想要通过GPRO在小模型上复现R1其实不太现实,因此如果想快速实现R1的功能,可以采用蒸馏的方法,该数据集可以很好的实现在小模型上蒸馏R1的能力,有兴趣的朋友可以利用该数据集对小模型比如Qwen系列7B以下的模型进行SFT,从而让规模较小的模型实现思考推理能力。