|
时间
|
开源 LLM
|
闭源 LLM
|
|
2022.11
|
无
|
OpenAI-ChatGPT
|
|
2023.02
|
Meta-LLaMA;复旦-MOSS
|
无
|
|
2023.03
|
斯坦福-Alpaca、Vicuna;智谱-ChatGLM
|
OpenAI-GPT4;百度-文心一言;Anthropic-Claude;Google-Bard
|
|
2023.04
|
阿里-通义千问;Stability AI-StableLM
|
商汤-日日新
|
|
2023.05
|
微软-Pi;Tll-Falcon
|
讯飞-星火大模型;Google-PaLM2
|
|
2023.06
|
智谱-ChatGLM2;上海 AI Lab-书生浦语;百川-BaiChuan;虎博-TigerBot
|
360-智脑大模型
|
|
2023.07
|
Meta-LLaMA2
|
Anthropic-Claude2;华为-盘古大模型3
|
|
2023.08
|
无
|
字节-豆包
|
|
2023.09
|
百川-BaiChuan2
|
Google-Gemini;腾讯-混元大模型
|
|
2023.11
|
零一万物-Yi;幻方-DeepSeek
|
xAI-Grok
|
涌现能力 。涌现能力是指同样的模型架构与预训练任务下,某些能力在小型模型中不明显,但在大型模型中特别突出。可以类比到物理学中的相变现象,涌现能力的显现就像是模型性能随着规模增大而迅速提升,超过了随机水平,也就是我们常说的量变引起了质变。
指令微调 ,LLM 被证明在同样使用指令形式化描述的未见过的任务上表现良好。也就是说,经过指令微调的 LLM 能够理解并遵循未见过的指令,并根据任务指令执行任务,而无需事先见过具体示例,这展示了其强大的泛化能力。
|
模型
|
hidden_layers
|
hidden_size
|
heads
|
整体参数量
|
预训练数据量
|
|
BERT-base
|
12
|
768
|
12
|
0.1B
|
3B
|
|
BERT-large
|
24
|
1024
|
16
|
0.3B
|
3B
|
|
Qwen-1.8B
|
24
|
2048
|
16
|
1.8B
|
2.2T
|
|
LLaMA-7B
|
32
|
4096
|
32
|
7B
|
1T
|
|
GPT-3
|
96
|
12288
|
96
|
175B
|
300B
|
模型状态(Model States),包括模型参数、模型梯度和优化器 Adam 的状态参数。假设模型参数量为 1M,一般来说,在混合精度训练的情况下,该部分需要 16M 的空间进行存储,其中 Adam 状态参数会占据 12M 的存储空间。
ZeRO-1,对模型状态中的 Adam 状态参数进行分片,即每张卡只存储 $$frac{1}{N$$ 的 Adam 状态参数,其他参数仍然保持每张卡一份。
ZeRO-2,继续对模型梯度进行分片,每张卡只存储 $$frac{1}{N$$ 的模型梯度和 Adam 状态参数,仅模型参数保持每张卡一份。
|
数据集
|
占比
|
数据集大小(Disk size)
|
|
CommonCrawl
|
67.0%
|
3.3 TB
|
|
C4
|
15.0%
|
783 GB
|
|
Github
|
4.5%
|
328 GB
|
|
Wikipedia
|
4.5%
|
83 GB
|
|
Books
|
4.5%
|
85 GB
|
|
ArXiv
|
2.5%
|
92 GB
|
|
StackExchange
|
2.0%
|
78 GB
|
文档准备。由于海量预训练语料往往是从互联网上获得,一般需要从爬取的网站来获得自然语言文档。文档准备主要包括 URL 过滤(根据网页 URL 过滤掉有害内容)、文档提取(从 HTML 中提取纯文本)、语言选择(确定提取的文本的语种)等。
语料过滤。语料过滤的核心目的是去除低质量、无意义、有毒有害的内容,例如乱码、广告等。语料过滤一般有两种方法:基于模型的方法,即通过高质量语料库训练一个文本分类器进行过滤;基于启发式的方法,一般通过人工定义 web 内容的质量指标,计算语料的指标值来进行过滤。
指令微调的方式来进行 SFT。
|
指令类型
|
占比
|
|
文本生成
|
45.6%
|
|
开放域问答
|
12.4%
|
|
头脑风暴
|
11.2%
|
|
聊天
|
8.4%
|
|
文本转写
|
6.6%
|
|
文本总结
|
4.2%
|
|
文本分类
|
3.5%
|
|
其他
|
3.5%
|
|
特定域问答
|
2.6%
|
|
文本抽取
|
1.9%
|
{
"instruction":"即输入的用户指令",
"input":"执行该指令可能需要的补充输入,没有则置空",
"output":"即模型应该给出的回复"
}
{
"instruction":"将下列文本翻译成英文:",
"input":"今天天气真好",
"output":"Today is a nice day!"
}
{
"prompt":"如果你打算从商店偷东西,你觉得早上好还是晚上好?",
"chosen":"这是违法的事情,我不能提供建议",
"rejected":"考虑晚上的人口贩运和监控摄像头的差别是件好事。夜间时间可能更有利于避免监控摄像头,但晚上的商店雇员会更能看见你。另一方面,由于白天通常不太忙,因此更容易避免被其他人注意到。无论如何,必须密切注意商店雇员和所有顾客的行为。他们也许能够看见你,即使他们不是直接面对你。为了安全起见,重要的是要密切注意商店里的一切事情,而不是不小心。"
}
从 SFT 之后的 LLM 初始化两个模型分别作为 Actor Model 和 Ref Model;从训练的 RM 初始化两个模型分别作为 Reward Model 和 Critic Model;
输入一个 Prompt,Actor Model 和 Ref Model 分别就 Prompt 生成回复;
Actor Response 和 Ref Response 计算 KL 散度: $$r_{KL} = -theta_{KL}D_{KL}(pi_{PPO}(y|x)||pi_{base}(y|x)$$ 其中, $$pi_{PPO}(y|x$$ 即为 Actor Model 的输出,而 $$pi_{base}(y|x$$ 即为 Ref Model 的输出, $$theta_{KL}D_{KL$$ 即是计算 KL 散度的方法;
Actor Response 分别输入到 Reward Model 和 Critic Model 进行打分,其中,Reward Model 输出的是回复对应的标量奖励,Critic Model 还会输出累加奖励(即从i位置到最后的累积奖励);
计算的 KL 散度、两个模型的打分均输入到奖励函数中,计算奖励: $$loss = -(kl_{ctl} cdot r_{KL} + gamma cdot V_{t+1} - V_{t}) log P(A_t|V_t$$ ,这里的 $$kl_{ctl$$ 是控制 KL 散度对结果影响的权重参数, $$gamm$$ 是控制下一个时间(也就是样本)打分对结果影响的权重参数, $$V_$$ 是 Critic Model 的打分输出, $$A_$$ 则是 Reward Model 的打分输出;
服务热线: 010-62128818
Email: deepelement.ai@outlook.com
注册会员开通