许可证:apache-2.0
支持语言:
Mixtral-8x7B-Instruct的Hugging Face Transformers转换模型
Mixtral-8x7B模型介绍
Mixtral-8x7B大语言模型(LLM)是一种预训练的生成式稀疏混合专家模型。在我们测试的大多数基准中,Mixtral-8x7B的表现优于Llama 2 70B。
关于该模型的完整详情,请阅读我们的发布博客文章。
警告
此仓库包含与vLLM模型服务以及Hugging Face transformers库兼容的权重。它基于原始的Mixtral种子发布,但文件格式和参数名称有所不同。请注意,该模型目前无法通过HF实例化。
指令格式
必须严格遵守此格式,否则模型将生成次优输出。
用于构建Instruct模型提示的模板定义如下:
<s> [INST] 指令 [/INST] 模型回答</s> [INST] 后续指令 [/INST]
注意,<s>
和</s>
是字符串开始(BOS)和字符串结束(EOS)的特殊标记,而[INST]和[/INST]是常规字符串。
作为参考,以下是微调期间用于标记指令的伪代码:
def tokenize(text):
return tok.encode(text, add_special_tokens=False)
[BOS_ID] +
tokenize("[INST]") + tokenize(用户消息1) + tokenize("[/INST]") +
tokenize(机器人消息1) + [EOS_ID] +
…
tokenize("[INST]") + tokenize(用户消息N) + tokenize("[/INST]") +
tokenize(机器人消息N) + [EOS_ID]
在上述伪代码中,请注意tokenize
方法不应自动添加BOS或EOS标记,但应添加前缀空格。
运行模型
from transformers import AutoModelForCausalLM, AutoTokenizer
model_id = "mistralai/Mixtral-8x7B-Instruct-v0.1"
tokenizer = AutoTokenizer.from_pretrained(model_id)
model = AutoModelForCausalLM.from_pretrained(model_id)
text = "你好,我的名字是"
inputs = tokenizer(text, return_tensors="pt")
outputs = model.generate(**inputs, max_new_tokens=20)
print(tokenizer.decode(outputs[0], skip_special_tokens=True))
默认情况下,transformers会以全精度加载模型。因此,您可能希望通过HF生态系统提供的优化进一步降低运行模型的内存需求:
半精度
注意float16
精度仅适用于GPU设备
点击展开
+ import torch
from transformers import AutoModelForCausalLM, AutoTokenizer
model_id = "mistralai/Mixtral-8x7B-Instruct-v0.1"
tokenizer = AutoTokenizer.from_pretrained(model_id)
+ model = AutoModelForCausalLM.from_pretrained(model_id, torch_dtype=torch.float16).to(0)
text = "你好,我的名字是"
+ inputs = tokenizer(text, return_tensors="pt").to(0)
outputs = model.generate(**inputs, max_new_tokens=20)
print(tokenizer.decode(outputs[0], skip_special_tokens=True))
使用bitsandbytes
降低精度(8位和4位)
点击展开
+ import torch
from transformers import AutoModelForCausalLM, AutoTokenizer
model_id = "mistralai/Mixtral-8x7B-Instruct-v0.1"
tokenizer = AutoTokenizer.from_pretrained(model_id)
+ model = AutoModelForCausalLM.from_pretrained(model_id, load_in_4bit=True)
text = "你好,我的名字是"
+ inputs = tokenizer(text, return_tensors="pt").to(0)
outputs = model.generate(**inputs, max_new_tokens=20)
print(tokenizer.decode(outputs[0], skip_special_tokens=True))
使用Flash Attention 2加载模型
点击展开
+ import torch
from transformers import AutoModelForCausalLM, AutoTokenizer
model_id = "mistralai/Mixtral-8x7B-Instruct-v0.1"
tokenizer = AutoTokenizer.from_pretrained(model_id)
+ model = AutoModelForCausalLM.from_pretrained(model_id, use_flash_attention_2=True)
text = "你好,我的名字是"
+ inputs = tokenizer(text, return_tensors="pt").to(0)
outputs = model.generate(**inputs, max_new_tokens=20)
print(tokenizer.decode(outputs[0], skip_special_tokens=True))
局限性
Mixtral-8x7B Instruct模型是一个快速演示,表明基础模型可以轻松微调以实现引人注目的性能。
它没有任何审核机制。我们期待与社区合作,探索如何使模型严格遵守护栏,从而能够在需要审核输出的环境中部署。
Mistral AI团队
Albert Jiang, Alexandre Sablayrolles, Arthur Mensch, Blanche Savary, Chris Bamford, Devendra Singh Chaplot, Diego de las Casas, Emma Bou Hanna, Florian Bressand, Gianna Lengyel, Guillaume Bour, Guillaume Lample, Lélio Renard Lavaud, Louis Ternon, Lucile Saulnier, Marie-Anne Lachaux, Pierre Stock, Teven Le Scao, Théophile Gervet, Thibaut Lavril, Thomas Wang, Timothée Lacroix, William El Sayed.