模型:
mosaicml/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相比有以下修改:
该模型经过了200B个令牌的预训练(批量大小为2200,序列长度为2048)。训练数据的混合比例如下:
这与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项目的人员。