模型:
mosaicml/mpt-7b-instruct
MPT-7B-Instruct是用于短格式指导的模型。它是通过在 dataset 派生数据集和 Anthropic Helpful and Harmless (HH-RLHF) 数据集上微调 MPT-7B 而构建的。
此模型由 MosaicML 进行训练,采用改进的仅解码器transformer架构。
2023年5月5日
CC-By-SA-3.0
Longboi24:
什么是袋猫?
MPT-7B-Instruct:
袋猫(发音为“cool”)是澳大利亚的一种本土食肉有袋类哺乳动物,也被称为大袋鼠或其他亚洲和南美洲地区的袋鼠。
注意:此模型要求将trust_remote_code=True传递给from_pretrained方法。这是因为我们使用了不属于transformers库的自定义模型架构。
它包括许多用于训练效率的选项,如 FlashAttention (Dao et al. 2022) 、 ALiBi 、QK LayerNorm等。
import transformers model = transformers.AutoModelForCausalLM.from_pretrained( 'mosaicml/mpt-7b-instruct', trust_remote_code=True )
注意:此模型要求将trust_remote_code=True传递给from_pretrained方法。这是因为我们使用了不属于Hugging Face transformers库的自定义MPT模型架构。MPT包括许多用于训练效率的选项,如 FlashAttention 、 ALiBi 、 QK LayerNorm 等。
要使用优化的 triton implementation ,在GPU(cuda:0)上加载模型时,可以使用attn_impl='triton'和bfloat16精度:
import torch import transformers name = 'mosaicml/mpt-7b-instruct' 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-instruct' 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.autocast context manager 。
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))
此模型使用dolly-15k格式的数据进行训练:
INSTRUCTION_KEY = "### Instruction:" RESPONSE_KEY = "### Response:" INTRO_BLURB = "Below is an instruction that describes a task. Write a response that appropriately completes the request." PROMPT_FOR_GENERATION_FORMAT = """{intro} {instruction_key} {instruction} {response_key} """.format( intro=INTRO_BLURB, instruction_key=INSTRUCTION_KEY, instruction="{instruction}", response_key=RESPONSE_KEY, ) example = "James decides to run 3 sprints 3 times a week. He runs 60 meters each sprint. How many total meters does he run a week? Explain before answering." fmt_ex = PROMPT_FOR_GENERATION_FORMAT.format(instruction=example)
在上面的示例中,fmt_ex已经准备好进行标记化并发送到模型中。
该架构是标准解码器-自注意力transformer的改进版。
该模型已经通过以下方式进行了修改:
Hyperparameter | Value |
---|---|
n_parameters | 6.7B |
n_layers | 32 |
n_heads | 32 |
d_model | 4096 |
vocab size | 50432 |
sequence length | 2048 |
有关预训练过程的详细信息,请参见 MPT-7B 。
数据使用 EleutherAI/gpt-neox-20b 令牌器进行标记化。
此模型使用8个A100-40GB进行了约2.3小时的训练,使用了 MosaicML Platform 。模型使用了 FSDP 进行分片数据并行处理,并使用了AdamW优化器。
以下语言经过了 EleutherAI's GPT-NeoX-20B 的修改。
MPT-7B-Instruct可能会产生事实上不正确的输出,不应依赖它产生事实准确的信息。MPT-7B-Instruct是基于各种公共数据集进行训练的。虽然已经进行了大量清洁预训练数据的工作,但该模型可能生成淫秽、有偏见或其他冒犯性的输出。
此模型由Sam Havens和MosaicML NLP团队进行了微调。
如果您对在MosaicML平台上自己开发 training 和 deploying 自己的MPT或LLMs感兴趣,请 sign up here 。
此模型的许可证不构成法律建议。我们不对使用此模型的第三方的行为负责。在商业用途中使用此模型之前,请咨询律师。
请使用以下格式引用此模型:
@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}, % change this date urldate = {2023-03-28} % change this date }