英文

MPT-1b-RedPajama-200b-dolly

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

该模型是 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 中找到。架构是标准的仅解码器变压器的一个修改版。变压器有24层、16个注意力头和宽度2048。该模型与标准变压器相比,在以下方面进行了修改:

  • 使用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项目的动力来源。