英文

MPT-7B-Chat

MPT-7B-Chat是一种类似聊天机器人的对话生成模型。它是通过在 ShareGPT-Vicuna HC3 Alpaca HH-RLHF Evol-Instruct 数据集上微调 MPT-7B 而构建的。

该模型由 MosaicML 进行训练,采用修改后的仅解码器的Transformer架构。

模型日期

2023年5月5日

模型许可

CC-By-NC-SA-4.0(仅限非商业使用)

文档

示例对话

SamIAm85:

我希望你能根据这篇文章摘要给出一个推文:“介绍MPT-7B,我们MosaicML Foundation系列的最新版本。MPT-7B是一个从头开始训练的变压器模型,训练数据包括IT中的文本和代码。它是开源的,并且与LLaMA-7B的质量相匹配。MPT-7B在MosaicML平台上以9.5天的时间训练而成,没有人为干预,成本约为200,000美元。从今天开始,您可以训练、微调和部署您自己的私有MPT模型,可以从我们的检查点开始或从头开始训练。作为灵感,我们还发布了三个微调模型,除了基础的MPT-7B外还有MPT-7B-Instruct、MPT-7B-Chat和MPT-7B-Story Writer-65k+,最后一个使用了65k个标记的上下文长度!

MPT-7B-Instruct:

给您一个推文建议:“令人兴奋的消息!@MosaicML推出了#MPT_7B-开源LLM的新标准。它使用了17个文本和代码标记进行训练,与LLaMA-7B的质量相匹配。现在,您可以通过他们的平台训练、微调和部署您自己的私有MPT模型。在这里查看完整的博文: https://bit.ly/3j6UJzZ"

SamIAm85:

对这个令人兴奋的消息,你有什么想对MosaicML说的吗?

MPT-7B-Instruct:

作为一个语言模型,我对MosaicML在开发高质量开源LLM方面的进展印象深刻。这个新版本的MPT-7B真是令人印象深刻,我期待看到开发者们使用这些强大工具创造出哪些创新应用。感谢您在推动人工智能研究和开发方面的辛勤工作和献身精神。

如何使用

该模型最适用于与MosaicML llm-foundry repository 一起用于训练和微调。

import transformers
model = transformers.AutoModelForCausalLM.from_pretrained(
  'mosaicml/mpt-7b-chat',
  trust_remote_code=True
)

注意:该模型要求通过from_pretrained方法传递trust_remote_code=True。这是因为我们使用的自定义MPT模型架构尚未包含在Hugging Face transformers软件包中。MPT包括许多训练效率特性选项,如 FlashAttention ALiBi QK LayerNorm 等。

要使用优化的FlashAttention实现 triton implementation ,可以在GPU(cuda:0)上加载模型,并使用attn_impl='triton'和bfloat16精度:

import torch
import transformers

name = 'mosaicml/mpt-7b-chat'

config = transformers.AutoConfig.from_pretrained(name, trust_remote_code=True)
config.attn_config['attn_impl'] = 'triton'
config.init_device = 'cuda:0' # For fast initialization directly on GPU!

model = transformers.AutoModelForCausalLM.from_pretrained(
  name,
  config=config,
  torch_dtype=torch.bfloat16, # Load model weights in bfloat16
  trust_remote_code=True
)

虽然该模型的训练序列长度为2048,但ALiBi允许用户在微调和/或推理过程中增加最大序列长度。例如:

import transformers

name = 'mosaicml/mpt-7b-chat'

config = transformers.AutoConfig.from_pretrained(name, trust_remote_code=True)
config.max_seq_len = 4096 # (input + output) tokens can now be up to 4096

model = transformers.AutoModelForCausalLM.from_pretrained(
  name,
  config=config,
  trust_remote_code=True
)

该模型使用的是 EleutherAI/gpt-neox-20b tokenizer。

from transformers import AutoTokenizer
tokenizer = AutoTokenizer.from_pretrained("EleutherAI/gpt-neox-20b")

然后,该模型可以在文本生成流水线中使用。注意:在低精度下运行Torch模块时,最佳实践是使用 torch.autocast context manager 进行。

from transformers import pipeline

pipe = pipeline('text-generation', model=model, tokenizer=tokenizer, device='cuda:0')

with torch.autocast('cuda', dtype=torch.bfloat16):
    print(
        pipe('Here is a recipe for vegan banana bread:\n',
            max_new_tokens=100,
            do_sample=True,
            use_cache=True))

模型描述

该架构是对标准仅解码器的Transformer的修改。

该模型相对于标准的Transformer进行了以下修改:

Hyperparameter Value
n_parameters 6.7B
n_layers 32
n_heads 32
d_model 4096
vocab size 50432
sequence length 2048

训练配置

该模型在8个A100-80GB上进行了大约8.2小时的训练,然后在32个A100-40GB上使用 MosaicML Platform 进行了6.7小时的训练。模型采用了分片数据并行训练和 FSDP 优化器的AdamW。

局限性和偏见

以下语言修改自 EleutherAI's GPT-NeoX-20B

MPT-7B-Chat可能会产生事实不准确的输出,不应依赖其产生事实准确的信息。MPT-7B-Chat是通过对各种公共数据集进行训练而得的,尽管我们已经尽力清理预训练数据,但模型可能会生成淫秽、偏见或具有冒犯性的输出。

致谢

此模型由Sam Havens和MosaicML NLP团队进行微调。

免责声明

该模型的许可证不构成法律建议。我们对使用该模型的第三方的行为不承担责任。在商业用途中使用该模型之前,请咨询律师。

MosaicML平台

如果您对在MosaicML平台上开发和部署您自己的MPT或LLM感兴趣,请 sign up here

引用

请使用以下格式引用此模型:

@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
}