英文

MPT-1b-RedPajama-200b

MPT-1b-RedPajama-200b是一个训练在 RedPajama dataset 上的13亿个参数的仅解码transformer模型。该模型通过以与 Llama series of models 相同比例从RedPajama数据集的子集中采样训练了200B个标记。该模型由 MosaicML 训练,并采用了修改后的仅解码transformer架构。

模型日期

2023年4月20日

如何使用

注意:该模型在使用from_pretrained方法时需要传递trust_remote_code=True。这是因为我们使用了一个不属于transformers包的自定义模型架构MosaicGPT。MosaicGPT具有许多训练效率功能选项,如 FlashAttention (Dao et al. 2022) ALIBI 、QK LayerNorm等。

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

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

model = transformers.AutoModelForCausalLM.from_pretrained('mosaicml/mpt-1b-redpajama-200b', 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系列模型]( https://arxiv.org/abs/2302.13971 )所使用的数据组合相同。

每个样本都是从其中一个数据集中选择的,选择数据集的概率如上所述。在每个数据集内部对示例进行了洗牌。每个示例由来自该数据集的足够填充2048序列长度的序列构成。

数据是使用 EleutherAI/gpt-neox-20b 的分词器进行的。

训练配置

该模型在440个A100-40GB上进行了半天的训练,使用了 MosaicML Platform 。模型采用了分片数据并行(FSDP)进行训练。

致谢

该模型基于 Together 的工作,后者创建了RedPajama数据集,目的是模仿用于创建Llama系列模型的训练数据。我们由衷感谢组织这个数据集的团队的辛勤工作,并希望这个模型能成为那项工作的有用补充。

我们还要感谢那些创建Llama系列模型的研究人员的工作,这是我们工作的动力,以及在RedPajama项目上工作的人员。