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平台上训练和部署自己的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 }