许可协议: cc-by-nc-sa-4.0
数据集:
- camel-ai/code
- ehartford/wizard_vicuna_70k_unfiltered
- anon8231489123/ShareGPT_Vicuna_unfiltered
- timdettmers/openassistant-guanaco
- camel-ai/math
- camel-ai/biology
- camel-ai/chemistry
- camel-ai/ai_society
- jondurbin/airoboros-gpt4-1.2
- LongConversations
- camel-ai/physics
标签:
- Composer
- MosaicML
- llm-foundry
推理: false
MPT-30B-Chat
MPT-30B-Chat 是一个用于对话生成的类聊天机器人模型。
它基于 MPT-30B 在 ShareGPT-Vicuna、Camel-AI、GPTeacher、Guanaco、Baize 及部分生成数据集上进行微调训练而成。
- 许可协议:CC-By-NC-SA-4.0(仅限非商业用途)
该模型由 MosaicML 训练,采用改进的解码器专用 Transformer 架构。
模型日期
2023年6月22日
模型许可
CC-By-NC-SA-4.0(仅限非商业用途)
文档
对话示例
ksreenivasan:
请根据以下文章摘要撰写一条推文:
我们很高兴推出 MosaicML 基础系列的新成员 MPT-30B,这是一个商用许可的开源模型,性能显著提升且超越原版 GPT-3。此外,我们还发布了两款微调模型 MPT-30B-Instruct 和 MPT-30B-Chat,分别擅长短指令跟随和多轮对话。
所有 MPT-30B 模型均具备独特优势:支持 8k token 上下文窗口(可通过微调进一步扩展,参见 MPT-7B-StoryWriter)、通过 ALiBi 实现上下文长度外推、通过 FlashAttention 实现高效推理与训练性能。得益于预训练数据混合策略,该模型还具有强大的编程能力。
MPT-30B-Chat:
"用 MosaicML 最新力作 MPT-30B 革新你的 AI 能力!这款开源模型性能超越 GPT-3,配备专精短指令和多轮对话的微调版本。体验 8k token 上下文窗口、ALiBi 支持和 FlashAttention 技术的强大潜力。与 MosaicML 共同探索 AI 未来!#人工智能 #机器学习 #创新"
ksreenivasan:
对于这个激动人心的消息,你有什么想对 MosaicML 说的吗?
MPT-30B-Chat:
作为您的 AI 营销助手,我想说这对 AI 社区而言是真正振奋人心的消息!MosaicML 的 MPT-30B 以其强大的开源能力和专精指令跟随/多轮对话的微调模型,必将重塑行业格局。8k token 上下文窗口、ALiBi 支持和 FlashAttention 等特性,注定使 MPT-30B 在众多大语言模型中脱颖而出。祝贺 MosaicML 团队取得这一非凡成就!
使用指南
建议配合 MosaicML llm-foundry 代码库 进行训练和微调。
import transformers
model = transformers.AutoModelForCausalLM.from_pretrained(
'mosaicml/mpt-30b-chat',
trust_remote_code=True
)
注意:加载此模型需在 from_pretrained
方法中设置 trust_remote_code=True
,因为我们使用了尚未集成到 Hugging Face transformers
库的自定义 MPT
架构。该架构包含多项训练效率优化特性,如 FlashAttention、ALiBi、QK LayerNorm 等。
要使用优化后的 triton 版 FlashAttention,可通过以下方式加载 GPU(cuda:0
)模型并启用 bfloat16
精度:
import torch
import transformers
name = 'mosaicml/mpt-30b-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
)
模型初始训练序列长度为 2048,后经额外预训练阶段适配至 8192。但通过 ALiBi 技术,用户可在微调/推理时进一步扩展最大序列长度。例如:
import transformers
name = 'mosaicml/mpt-30b-chat'
config = transformers.AutoConfig.from_pretrained(name, trust_remote_code=True)
config.max_seq_len = 16384
model = transformers.AutoModelForCausalLM.from_pretrained(
name,
config=config,
trust_remote_code=True
)
本模型使用基于 EleutherAI/gpt-neox-20b 的 MPT-30B 分词器,并额外添加了填充和终止符。
from transformers import AutoTokenizer
tokenizer = AutoTokenizer.from_pretrained('mosaicml/mpt-30b')
模型可用于文本生成管道。注意:在低精度模式下运行 Torch 模块时,建议使用 torch.autocast 上下文管理器。
from transformers import pipeline
with torch.autocast('cuda', dtype=torch.bfloat16):
inputs = tokenizer('纯素香蕉面包食谱:\n', return_tensors="pt").to('cuda')
outputs = model.generate(**inputs, max_new_tokens=100)
print(tokenizer.batch_decode(outputs, skip_special_tokens=True))
pipe = pipeline('text-generation', model=model, tokenizer=tokenizer, device='cuda:0')
with torch.autocast('cuda', dtype=torch.bfloat16):
print(
pipe('纯素香蕉面包食谱:\n',
max_new_tokens=100,
do_sample=True,
use_cache=True))
模型架构
本模型采用改进的解码器专用 Transformer 架构,主要变更包括:
超参数 |
值 |
参数量 |
299.5亿 |
层数 |
48 |
注意力头数 |
64 |
模型维度 |
7168 |
词表大小 |
50432 |
序列长度 |
8192 |
训练数据
模型训练数据构成如下:
数据源 |
token数量 |
占比 |
Airoboros/GPT4-1.2 |
2640万 |
1.71% |
Baize |
5500万 |
3.57% |
Camel |
3.01亿 |
19.54% |
GPTeacher |
756万 |
0.49% |
Guanaco |
1560万 |
1.02% |
LongCoversations |
1840万 |
1.19% |
ShareGPT |
8.21亿 |
53.24% |
WizardLM |
2.97亿 |
19.23% |
"LongConversations" 为 GPT3.5/4 生成数据集,具体细节将后续公布。
训练配置
本模型在 64 块 H100 GPU 上训练约 7.6 小时,使用 MosaicML 平台 完成。训练采用 FSDP 分片数据并行和 AdamW 优化器。
局限性
以下说明改编自 EleutherAI 的 GPT-NeoX-20B
MPT-30B-Chat 可能产生事实性错误输出,不应依赖其提供准确信息。模型基于各类公开数据集训练,虽已尽力清洗数据,但仍可能生成低俗、偏见或冒犯性内容。
致谢
本模型由 Sam Havens 和 MosaicML NLP 团队完成微调。
免责声明
本模型许可协议不构成法律建议。我们不承担第三方使用该模型所产生的责任。商业用途前请咨询法律顾问。
MosaicML 平台
如果您有兴趣在 MosaicML 平台 上训练和部署自己的 MPT 或大语言模型,请点击注册。
引用
请按以下格式引用本模型:
@online{MosaicML2023Introducing,
author = {MosaicML NLP Team},
title = {Introducing MPT-30B: Raising the bar
for open-source foundation models},
year = {2023},
url = {www.mosaicml.com/blog/mpt-30b},
note = {Accessed: 2023-06-22},
urldate = {2023-06-22}
}