🚀 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} % 修改此日期
}