模型:
TheBloke/MPT-7B-GGML
类库:
Transformers数据集:
mc4 c4 togethercomputer/RedPajama-Data-1T bigcode/the-stack allenai/s2orc 3Aallenai/s2orc 3Abigcode/the-stack 3Atogethercomputer/RedPajama-Data-1T 3Ac4 3Amc4预印本库:
arxiv:2108.12409 arxiv:2302.13971 arxiv:2205.14135 arxiv:2010.04245 arxiv:1909.08053 arxiv:2302.06675许可:
apache-2.0Chat & support: my new Discord server
Want to contribute? TheBloke's Patreon page
这是 MosaicML's MPT-7B 的 GGML 格式的量化的4位、5位和8位的GGML模型。
这个repo是将其转换为GGML并量化的结果。
请注意,这些MPT GGML文件与llama.cpp 不兼容。请参阅下面列出的可用工具的列表。
Name | Quant method | Bits | Size | RAM required | Use case |
---|---|---|---|---|---|
mpt-7b.ggmlv3.q4_0.bin | q4_0 | 4bit | 4.16GB | 6.2GB | 4-bit. |
mpt-7b.ggmlv3.q4_1.bin | q4_0 | 4bit | 4.99GB | 7.2GB | 4-bit. Higher accuracy than q4_0 but not as high as q5_0. However has quicker inference than q5 models. |
mpt-7b.ggmlv3.q5_0.bin | q5_0 | 5bit | 4.57GB | 6.8GB | 5-bit. Higher accuracy, higher resource usage and slower inference. |
mpt-7b.ggmlv3.q5_1.bin | q5_1 | 5bit | 4,99GB | 7.2GB | 5-bit. Even higher accuracy, and higher resource usage and slower inference. |
mpt-7b.ggmlv3.q8_0.bin | q8_0 | 8bit | 7.48GB | 9.6GB | 8-bit. Almost indistinguishable from float16. Huge resource use and slow. Not recommended for normal use. |
mpt-7b.ggmlv3.fp16.bin | fp16 | 16bit | 13.3GB | 15.5GB | Full 16-bit. |
这些文件与llama.cpp 不兼容。
目前可以与以下一起使用:
随着其他选项的推出,我将努力在此处更新它们(如果我错过了什么,请在社区选项卡中告诉我!)
如需进一步支持以及有关这些模型和人工智能的讨论,请加入我们:
TheBloke AI's Discord server 。
感谢 chirper.ai 团队!
很多人问我是否可以进行贡献。我喜欢提供模型并帮助人们,而且非常乐意能够花更多的时间来做这件事,以及扩展到新的项目,如微调/训练。
如果您有能力和意愿贡献,将非常感激,并将帮助我继续提供更多的模型,并开始进行新的AI项目。
捐助者将优先得到有关任何LLM/模型问题和请求的支持,可进入专用Discord房间,并享受其他特权。
Patreon特别鸣谢名单:Aemon Algiz、Dmitriy Samsonov、Nathan LeClaire、Trenton Dambrowitz、Mano Prime、David Flickinger、vamX、Nikolai Manek、senxiiz、 Khalefa Al-Ahmad、Illia Dulskyi、Jonathan Leane、Talal Aujan、V. Lukas、Joseph William Delisle、Pyrater、Oscar Rangel、Lone Striker、Luke Pendergrass、Eugene Pentland、Sebastain Graf和Johann-Peter Hartman。
感谢所有慷慨的赞助者和捐赠者!
MPT-7B是从头开始在1T个英文文本和代码的数据上进行预训练的解码器风格的transformer模型。此模型由 MosaicML 团队进行训练。
MPT-7B是MosaicPretrainedTransformer(MPT)模型系列的一部分,它使用了优化的transformer架构以实现高效的训练和推断。
这些架构修改包括高性能的层实现以及通过使用注意力和线性偏差( ALiBi )替换位置嵌入来消除上下文长度限制。由于这些修改,MPT模型可以以高吞吐量的效率和稳定的收敛性进行训练。MPT模型也可以通过标准的HuggingFace流程和NVIDIA的 FasterTransformer 进行高效的提供。
此模型使用了MosaicML的LLM代码库,可在 llm-foundry repository 中找到。MPT的NLP团队使用了 MosaicML platform 进行了LLM的预训练、微调和推断。
MPT-7B是
以下模型是在MPT-7B上进行微调的:
MPT-7B-StoryWriter-65k+ :设计用于阅读和编写超长文本的模型。通过将MPT-7B上下文长度为65k的微调,并使用 books3 dataset 数据集的经过筛选的虚构子集构建。在推断时,由于 ALiBi 的存在,MPT-7B-StoryWriter-65k+可以推理出超过65k个令牌。我们在博文中演示了在单个A100-80GB GPU上的80k个令牌的生成结果。
MPT-7B-Instruct :用于短格式指令的模型。通过对MPT-7B进行微调,使用了派生自 dataset 和 Anthropic Helpful and Harmless (HH-RLHF) 数据集的 Databricks Dolly-15k 进行微调。
MPT-7B-Chat :用于对话生成的聊天机器人模型。通过对MPT-7B进行微调,使用了 ShareGPT-Vicuna 、 HC3 、 Alpaca 、 HH-RLHF 和 Evol-Instruct 等数据集。
2023年5月5日
Apache-2.0
使用MosaicML llm-foundry repository 进行训练和微调时,最适合使用这个模型。
import transformers model = transformers.AutoModelForCausalLM.from_pretrained( 'mosaicml/mpt-7b', trust_remote_code=True )
注意:此模型要求将 trust_remote_code=True 传递给 from_pretrained 方法。这是因为我们使用的是不包含在Hugging Face transformers包中的自定义MPT模型架构。 MPT 包括许多训练效率功能的选项,如 FlashAttention , ALiBi , QK LayerNorm 等。
要使用优化的FlashAttention的 triton implementation ,可以使用 attn_impl='triton' 加载模型,并将模型移动到 bfloat16 :
config = transformers.AutoConfig.from_pretrained( 'mosaicml/mpt-7b', trust_remote_code=True ) config.attn_config['attn_impl'] = 'triton' model = transformers.AutoModelForCausalLM.from_pretrained( 'mosaicml/mpt-7b', config=config, torch_dtype=torch.bfloat16, trust_remote_code=True ) model.to(device='cuda:0')
虽然模型训练时的序列长度为2048,但ALiBi允许用户在微调和/或推断过程中增加最大序列长度。例如:
config = transformers.AutoConfig.from_pretrained( 'mosaicml/mpt-7b', trust_remote_code=True ) config.update({"max_seq_len": 4096}) model = transformers.AutoModelForCausalLM.from_pretrained( 'mosaicml/mpt-7b', config=config, trust_remote_code=True )
此模型使用了 EleutherAI/gpt-neox-20b 分词器进行了训练。
from transformers import AutoTokenizer tokenizer = AutoTokenizer.from_pretrained("EleutherAI/gpt-neox-20b")
该架构是一个修改后的标准解码器transformer。
该模型相对于标准transformer进行了以下修改:
Hyperparameter | Value |
---|---|
n_parameters | 6.7B |
n_layers | 32 |
n_heads | 32 |
d_model | 4096 |
vocab size | 50432 |
sequence length | 2048 |
使用MosaicML的 StreamingDataset 库将数据格式化并将其托管在对象存储中,以便在训练期间有效地将数据流式传输到计算集群。StreamingDataset 不需要在开始训练之前下载整个数据集,并且可以在数据集的任何点立即恢复训练。
该模型通过训练1T个令牌(批量大小为1760,序列长度为2048)进行了训练。训练使用了以下数据混合:
Data Source | Number of Tokens in Source | Proportion | Effective Number of Tokens | Epochs |
---|---|---|---|---|
mC4 3.1.0 - English | 417.99 B | 0.33 | 330 B | 0.14 |
C4 - English - SemDedup 80% | 100.42 B | 0.299 | 299 B | 2.98 |
RedPajama - CommonCrawl | 878.45 B | 0.1 | 100 B | 0.11 |
The Stack - Selected Languages | 463.78 B | 0.1 | 100 B | 0.22 |
RedPajama - Wikipedia - En | 4.87 B | 0.04 | 40 B | 8.21 |
The Stack - Markdown | 107.07 B | 0.035 | 35 B | 0.33 |
S2ORC | 48.85 B | 0.033 | 33 B | 0.68 |
RedPajama - Books | 26.02 B | 0.03 | 30B | 1.15 |
RedPajama - arXiv | 28.10 B | 0.019 | 19 B | 0.68 |
RedPajama - StackExchange | 20.54 B | 0.014 | 14 B | 0.68 |
每个批次的样本是从上述数据集中的一个样本选择的,每个数据集的选择概率如上所述。在每个数据集内部对示例进行了洗牌,并为了填充2048个序列长度,每个示例由来自该数据集的尽可能多的序列构成。
使用 EleutherAI/gpt-neox-20b 分词器对数据进行了分词。该BPE分词器具有许多理想的特性,其中大部分与分词代码相关:(1)它是在包括代码的多样数据上进行训练的(The Pile);(2)它应用了一致的空格分隔,与GPT2分词器不同,后者根据前缀空格的存在进行不一致的分词;(3)它包含重复空格字符的标记,从而能够更好地压缩具有大量重复空格字符的文本。
模型的词汇表大小设置为50432,是128的倍数(与 MEGATRON-LM 中的设置相同),这样可以提高模型的模型浮点运算单元利用率(MFU)多达四个百分点。
该模型使用440个A100-40GB进行约9.5天的训练,使用了 MosaicML Platform 进行分片数据并行训练,并使用了 LION 优化器。
以下语言修改自 EleutherAI's GPT-NeoX-20B
MPT-7B(Base)不适用于未经微调的部署。不应该在没有进一步限制和用户同意的情况下用于人机交互。
MPT-7B可能会产生错误的输出,不应依赖其产生准确的信息。MPT-7B是在各种公共数据集上进行训练的。尽管我们已经努力清洗了预训练数据,但不能排除该模型生成粗俗、有偏见或其他令人不悦的输出的可能性。
如果您有兴趣在MosaicML平台上进行自己的MPT或LLM的训练和推断,请 training 。
此模型的许可证不构成法律建议。我们对使用此模型的第三方的行为不承担责任。在商业用途之前,请咨询律师。
请使用以下格式引用这个模型:
@online{MosaicML2023Introducing, author = {MosaicML NLP Team}, title = {Introducing MPT-7B: A New Standard for Open-Source, ly Usable LLMs}, year = {2023}, url = {www.mosaicml.com/blog/mpt-7b}, note = {Accessed: 2023-03-28}, % change this date urldate = {2023-03-28} % change this date }