英文

MPT-7B-聊天

MPT-7B-聊天是一个类似聊天机器人的对话生成模型。它是在 MPT-7B 上进行微调构建的,在 ShareGPT-Vicuna HC3 Alpaca HH-RLHF Evol-Instruct 数据集上训练。

模型是由 MosaicML 训练的,采用修改后的仅解码器transformer架构。

模型日期

2023年5月5日

模型许可证

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

文档

示例对话

SamIAm85:

根据这篇文章的摘要,我希望你能发推文:“介绍MPT-7B,我们MosaicML基础系列的最新成员。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参数。这是因为我们使用的是不包含在Hugging Face transformers软件包中的自定义MPT模型架构。MPT包含许多训练效率功能的选项,例如 FlashAttention ALiBi QK LayerNorm 等。

要使用优化的FlashAttention,您可以在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 分词器。

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

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

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-聊天可能会产生事实上不正确的输出,不能依赖它产生事实准确的信息。MPT-7B-聊天是用各种公开数据集训练的。虽然我们已经努力清理预训练数据,但这个模型可能会生成淫秽、偏见或其他令人不悦的输出。

致谢

该模型由Sam Havens和MosaicML自然语言处理团队进行了微调。

免责声明

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

MosaicML平台

如果您对在MosaicML平台上训练和部署自己的MPT或LLM感兴趣,请 training deploying

引用

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

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