英文

MPT-1b-RedPajama-200b-dolly

MPT-1b-RedPajama-200b-dolly是一个在 RedPajama dataset 上预训练后,随后在 Databricks Dolly 指令数据集上进行微调的13亿参数的仅解码transformer。该模型通过从RedPajama数据集的子集中以与 Llama series of models 使用的比例相同的方式进行抽样,对200B个令牌进行了预训练。该模型由 MosaicML 进行了训练,并采用了修改后的仅解码transformer架构。

这个模型是 mpt-1b-redpajama-200b 的指令微调版本。换句话说,该模型的预训练版本是 mpt-1b-redpajama-200b

模型日期

2023年4月20日

如何使用

注意:该模型要求在from_pretrained方法中传递trust_remote_code=True。这是因为我们使用了一个自定义的模型架构MosaicGPT,它还不是transformers包的一部分。MosaicGPT包括许多训练效率特性的选项,例如 FlashAttention (Dao et al. 2022) ALIBI 、QK LayerNorm等。

import transformers
model = transformers.AutoModelForCausalLM.from_pretrained('mosaicml/mpt-1b-redpajama-200b-dolly', trust_remote_code=True)

要使用优化的FlashAttention triton实现,可以通过attn_impl='triton'进行加载,并将模型转换为bfloat16,如下所示:

model = transformers.AutoModelForCausalLM.from_pretrained('mosaicml/mpt-1b-redpajama-200b-dolly', trust_remote_code=True, attn_impl='triton')
model.to(device='cuda:0', dtype=torch.bfloat16)

模型描述

该模型使用了MosaicML LLM代码库,可以在 MosaicML Examples Repository 找到。架构是标准的仅解码transformer的修改版本。transformer有24层,16个注意头,并且宽度为2048。该模型与标准transformer相比有以下修改:

  • 它使用了ALiBi,不使用位置嵌入。
  • 它使用了QK LayerNorm。
  • 它不使用偏置。

训练数据

预训练

该模型经过了200B个令牌的预训练(批量大小为2200,序列长度为2048)。训练数据的混合比例如下:

  • 67%的RedPajama Common Crawl
  • 15%的 C4
  • 4.5%的RedPajama GitHub
  • 4.5%的RedPajama Wikipedia
  • 4.5%的RedPajama Books
  • 2.5%的RedPajama Arxiv
  • 2%的RedPajama StackExchange

这与Llama系列模型中使用的数据混合相同。

每个样本从其中一个数据集中选择,选择的数据集概率由上述说明确定。每个示例从该数据集中选择的序列构成,直到填充到2048序列长度为止。

使用 EleutherAI/gpt-neox-20b 进行数据标记。

微调

我们使用Databricks发布的 databricks-dolly-15k dataset 进行了微调,遵循其 train_dolly.py 脚本中找到的相同超参数。

训练配置

该模型使用440个A100-40GB进行了大约半天的预训练,使用了 MosaicML Platform 。模型使用FSDP进行了分片数据并行训练。

致谢

该模型借鉴了 Together 的工作,该工作创建了RedPajama数据集,旨在模仿用于创建Llama系列模型的训练数据。我们衷心感谢组织这个数据集的团队的辛勤工作,我们希望这个模型能够成为这项工作的有用伴侣。

该模型还借鉴了 Databricks 的工作,该工作创建了Dolly指令微调数据集。

我们还感谢那些创建Llama系列模型的研究人员的工作,这是我们努力的动力,也感谢那些参与RedPajama项目的人员。