🚀 MPT-7B-Chat
MPT-7B-Chat 是一个类似聊天机器人的对话生成模型。它通过在 ShareGPT-Vicuna、HC3、Alpaca、HH-RLHF 和 Evol-Instruct 数据集上微调 MPT-7B 构建而成。该模型由 MosaicML 训练,遵循修改后的仅解码器变压器架构。
✨ 主要特性
- 对话生成能力:能够生成自然流畅的对话内容。
- 多数据集训练:基于多个公开数据集进行训练,提升模型的泛化能力。
- 特定架构优化:采用修改后的仅解码器变压器架构,使用了如 FlashAttention、ALiBi 等技术。
📦 安装指南
此模型最好结合 MosaicML llm-foundry 仓库 进行训练和微调。
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 等。
若要使用优化后的 triton 实现 的 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'
model = transformers.AutoModelForCausalLM.from_pretrained(
name,
config=config,
torch_dtype=torch.bfloat16,
trust_remote_code=True
)
💻 使用示例
基础用法
from transformers import AutoTokenizer
tokenizer = AutoTokenizer.from_pretrained("EleutherAI/gpt-neox-20b")
from transformers import pipeline
import torch
model = transformers.AutoModelForCausalLM.from_pretrained(
'mosaicml/mpt-7b-chat',
trust_remote_code=True
)
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))
高级用法
虽然模型训练时的序列长度为 2048,但 ALiBi 允许用户在微调或推理时增加最大序列长度。例如:
import transformers
name = 'mosaicml/mpt-7b-chat'
config = transformers.AutoConfig.from_pretrained(name, trust_remote_code=True)
config.max_seq_len = 4096
model = transformers.AutoModelForCausalLM.from_pretrained(
name,
config=config,
trust_remote_code=True
)
📚 详细文档
🔧 技术细节
模型架构
该架构是标准仅解码器变压器的修改版本。模型在以下方面对标准变压器进行了修改:
超参数 |
值 |
参数数量 |
67 亿 |
层数 |
32 |
头数 |
32 |
模型维度 |
4096 |
词汇表大小 |
50432 |
序列长度 |
2048 |
训练配置
该模型在 8 个 A100 - 80GB GPU 上训练约 8.2 小时,然后在 32 个 A100 - 40GB GPU 上使用 MosaicML 平台 训练 6.7 小时。模型使用 FSDP 进行分片数据并行训练,并使用 AdamW 优化器。
📄 许可证
CC - By - NC - SA - 4.0(仅用于非商业用途)
局限性和偏差
MPT - 7B - Chat 可能会产生事实错误的输出,不应依赖其提供事实准确的信息。该模型在各种公开数据集上进行训练,尽管在清理预训练数据方面已付出巨大努力,但仍有可能生成低俗、有偏见或其他冒犯性的输出。
致谢
该模型由 Sam Havens 和 MosaicML NLP 团队进行微调。
免责声明
此模型的许可证不构成法律建议。我们不对使用此模型的第三方的行为负责。在将此模型用于商业目的之前,请咨询律师。
MosaicML 平台
如果您有兴趣在 MosaicML 平台上 训练 和 部署 自己的 MPT 或大语言模型,请 在此注册。
引用
请使用以下格式引用此模型:
@online{MosaicML2023Introducing,
author = {MosaicML NLP Team},
title = {Introducing MPT-7B: A New Standard for Open-Source, Commercially Usable LLMs},
year = {2023},
url = {www.mosaicml.com/blog/mpt-7b},
note = {Accessed: 2023-03-28}, % 修改此日期
urldate = {2023-03-28} % 修改此日期
}