MPT-1b-RedPajama-200b 项目介绍
MPT-1b-RedPajama-200b 是一个具备13亿参数的解码器专用Transformer模型,由MosaicML公司使用RedPajama数据集进行训练。这一模型经过调试后能处理2000亿个词元,并且采用与Llama系列模型相同的数据集比例进行训练。
项目日期
本模型的完成日期为2023年4月20日。
如何使用
在使用该模型时,需要在from_pretrained
方法中设置trust_remote_code=True
。因为这个模型使用了定制的MosaicGPT
架构,而这一架构尚未被纳入transformers
包中。MosaicGPT
提供了多种训练效率功能,如FlashAttention、ALIBI和QK LayerNorm等。
以下是使用该模型的基本代码:
import transformers
model = transformers.AutoModelForCausalLM.from_pretrained('mosaicml/mpt-1b-redpajama-200b', trust_remote_code=True)
如需使用经过优化的triton实现的FlashAttention功能,可以加载模型时设置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)
模型描述
MPT-1b-RedPajama-200b使用的是MosaicML的LLM代码库,该库可以在MosaicML示例库中找到。它是对标准解码器型Transformer的一种修改,具体如下:
- Transformer共有24层和16个注意力头,宽度为2048。
- 该模型使用ALiBi,而不使用位置嵌入。
- 使用QK LayerNorm。
- 不包含偏置。
训练数据
该模型在RedPajama数据集上训练,处理了2000亿个词元(批量大小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分词器进行分词。
训练配置
该模型在MosaicML平台上使用440块A100-40GB显卡,耗时约半天进行训练。模型采用分片数据并行技术FSDP进行训练。
致谢
这一模型构建于Together公司创建的RedPajama数据集之上,其目标是模仿Llama系列模型的训练数据。我们对制作此数据集的团队的辛勤工作表示深深的谢意,并期待这一模型能作为他们工作的有益补充。
同时,我们也感谢开发Llama系列模型的研究人员,他们的工作是我们的努力的重要动机。