🚀 Mistral-7B-Instruct-v0.1模型卡
Mistral-7B-Instruct-v0.1大语言模型(LLM)是Mistral-7B-v0.1生成式文本模型的指令微调版本,它使用了各种公开可用的对话数据集进行微调。
🚀 快速开始
🔧 模型信息
属性 |
详情 |
基础模型 |
mistralai/Mistral-7B-v0.1 |
管道标签 |
文本生成 |
推理 |
支持 |
许可证 |
apache-2.0 |
⚠️ 重要提示
如果您想了解更多关于我们如何处理您的个人数据的信息,请阅读我们的隐私政策。
💻 使用示例
基础用法
使用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="Explain Machine Learning to me in a nutshell.")])
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)
高级用法
指令格式及聊天模板使用
在利用指令微调时,您的提示应该用[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": "What is your favourite condiment?"},
{"role": "assistant", "content": "Well, I'm quite partial to a good squeeze of fresh lemon juice. It adds just the right amount of zesty flavour to whatever I'm cooking up in the kitchen!"},
{"role": "user", "content": "Do you have mayonnaise recipes?"}
]
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,这是一个具有以下架构选择的Transformer模型:
- 分组查询注意力(Grouped-Query Attention)
- 滑动窗口注意力(Sliding-Window Attention)
- 字节回退BPE分词器(Byte-fallback BPE tokenizer)
故障排除
如果您遇到以下错误:
Traceback (most recent call last):
File "", line 1, in
File "/transformers/models/auto/auto_factory.py", line 482, in from_pretrained
config, kwargs = AutoConfig.from_pretrained(
File "/transformers/models/auto/configuration_auto.py", line 1022, in from_pretrained
config_class = CONFIG_MAPPING[config_dict["model_type"]]
File "/transformers/models/auto/configuration_auto.py", line 723, in getitem
raise KeyError(key)
KeyError: 'mistral'
从源代码安装transformers
应该可以解决这个问题:
pip install git+https://github.com/huggingface/transformers
在transformers-v4.33.4
之后,应该不需要这样做。
📄 许可证
本模型使用apache-2.0许可证。
💡 使用建议
欢迎提交PR来修正transformers
分词器,使其结果与mistral_common
参考实现完全一致!
⚠️ 局限性
Mistral 7B指令模型是一个快速演示,表明基础模型可以很容易地进行微调以实现引人注目的性能。它没有任何审核机制。我们期待与社区合作,探索使模型更好地遵守规则的方法,以便在需要审核输出的环境中进行部署。
👥 Mistral AI团队
Albert Jiang, Alexandre Sablayrolles, Arthur Mensch, Chris Bamford, Devendra Singh Chaplot, Diego de las Casas, Florian Bressand, Gianna Lengyel, Guillaume Lample, Lélio Renard Lavaud, Lucile Saulnier, Marie-Anne Lachaux, Pierre Stock, Teven Le Scao, Thibaut Lavril, Thomas Wang, Timothée Lacroix, William El Sayed.