许可证:Apache-2.0
标签:
- 微调
基础模型:mistralai/Mistral-7B-v0.1
流水线标签:文本生成
推理:支持
小部件示例:
- 消息:
额外授权说明:如需了解我们如何处理您的个人数据,请阅读我们的隐私政策。
Mistral-7B-Instruct-v0.1模型卡
使用mistral_common
进行编码与解码
from mistral_common.tokens.tokenizers.mistral import MistralTokenizer
from mistral_common.protocol.instruct.messages import UserMessage
from mistral_common.protocol.instruct.request import ChatCompletionRequest
mistral_models_path = "MISTRAL_MODELS_PATH"
tokenizer = MistralTokenizer.v1()
completion_request = ChatCompletionRequest(messages=[UserMessage(content="用一句话解释机器学习")])
tokens = tokenizer.encode_chat_completion(completion_request).tokens
使用mistral_inference
进行推理
from mistral_inference.transformer import Transformer
from mistral_inference.generate import generate
model = Transformer.from_folder(mistral_models_path)
out_tokens, _ = generate([tokens], model, max_tokens=64, temperature=0.0, eos_id=tokenizer.instruct_tokenizer.tokenizer.eos_id)
result = tokenizer.decode(out_tokens[0])
print(result)
使用Hugging Face transformers
进行推理
from transformers import AutoModelForCausalLM
model = AutoModelForCausalLM.from_pretrained("mistralai/Mistral-7B-Instruct-v0.1")
model.to("cuda")
generated_ids = model.generate(tokens, max_new_tokens=1000, do_sample=True)
result = tokenizer.decode(generated_ids[0].tolist())
print(result)
[!提示]
欢迎提交PR修正transformers
分词器,使其与mistral_common
参考实现完全一致!
Mistral-7B-Instruct-v0.1大语言模型(LLM)是基于Mistral-7B-v0.1生成式文本模型,通过多种公开对话数据集进行指令微调的版本。
完整模型细节请阅读我们的论文和发布博客。
指令格式
为发挥指令微调效果,提示词需用[INST]
和[/INST]
标记包裹。首条指令应以句首标识符开头,后续指令则不需要。助手生成内容将以句尾标识符结束。
示例:
text = "<s>[INST] 你最喜欢的调味品是什么? [/INST]"
"我个人特别喜欢新鲜柠檬汁,它为厨房料理增添了恰到好处的清爽风味!</s>"
"[INST] 你有蛋黄酱食谱吗? [/INST]"
该格式可通过apply_chat_template()
方法作为聊天模板使用:
from transformers import AutoModelForCausalLM, AutoTokenizer
device = "cuda"
model = AutoModelForCausalLM.from_pretrained("mistralai/Mistral-7B-Instruct-v0.1")
tokenizer = AutoTokenizer.from_pretrained("mistralai/Mistral-7B-Instruct-v0.1")
messages = [
{"role": "user", "content": "你最喜欢的调味品是什么?"},
{"role": "assistant", "content": "我个人特别喜欢新鲜柠檬汁,它为厨房料理增添了恰到好处的清爽风味!"},
{"role": "user", "content": "你有蛋黄酱食谱吗?"}
]
encodeds = tokenizer.apply_chat_template(messages, return_tensors="pt")
model_inputs = encodeds.to(device)
model.to(device)
generated_ids = model.generate(model_inputs, max_new_tokens=1000, do_sample=True)
decoded = tokenizer.batch_decode(generated_ids)
print(decoded[0])
模型架构
本指令模型基于Mistral-7B-v0.1,其架构特点包括:
- 分组查询注意力机制
- 滑动窗口注意力机制
- 字节回退BPE分词器
故障排除
若出现以下错误:
Traceback (most recent call last):
...
KeyError: 'mistral'
请通过源码安装transformers解决:
pip install git+https://github.com/huggingface/transformers
该问题在transformers-v4.33.4版本后将无需处理。
局限性
Mistral 7B Instruct模型展示了基础模型通过简单微调即可获得出色性能,但未内置内容审核机制。我们期待与社区共同探索如何建立精细的内容护栏,使模型能应用于需要受控输出的场景。
Mistral AI团队
成员包括:Albert Jiang, Alexandre Sablayrolles, Arthur Mensch等(完整名单见原文)