英文

Chat & support: my new Discord server

Want to contribute? TheBloke's Patreon page

MPT-7B GGML

这是 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 不兼容。

目前可以与以下一起使用:

随着其他选项的推出,我将努力在此处更新它们(如果我错过了什么,请在社区选项卡中告诉我!)

使用GPT4All-UI的教程

Discord

如需进一步支持以及有关这些模型和人工智能的讨论,请加入我们:

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

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上进行微调的:

模型日期

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平台

如果您有兴趣在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
}