🚀 Hugging Face Transformers对Mixtral - 8x7B - Instruct的转换
Mixtral - 8x7B是一个预训练的生成式稀疏专家混合大语言模型(LLM),在我们测试的大多数基准测试中,它的表现优于Llama 2 70B。
🚀 快速开始
若要了解该模型的完整细节,请阅读我们的发布博客文章。
✨ 主要特性
- 高性能:在多数基准测试中超越Llama 2 70B。
- 多语言支持:支持法语、意大利语、德语、西班牙语和英语。
📦 安装指南
文档未提及具体安装步骤,暂不提供。
💻 使用示例
基础用法
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 = "Hello my name is"
inputs = tokenizer(text, return_tensors="pt")
outputs = model.generate(**inputs, max_new_tokens=20)
print(tokenizer.decode(outputs[0], skip_special_tokens=True))
高级用法
半精度运行
注意,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 = "Hello my name is"
+ 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 = "Hello my name is"
+ 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 = "Hello my name is"
+ 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))
📚 详细文档
指令格式
必须严格遵守此格式,否则模型将生成不理想的输出。
用于为指令模型构建提示的模板定义如下:
<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标记,但应添加前缀空格。
模型运行
见使用示例部分。
局限性
Mixtral - 8x7B指令模型是一个快速演示,表明基础模型可以轻松微调以实现出色的性能。它没有任何审核机制。我们期待与社区合作,探索使模型严格遵守规则的方法,以便在需要审核输出的环境中进行部署。
🔧 技术细节
文档未提供足够的技术实现细节,暂不展示。
📄 许可证
本项目采用Apache - 2.0许可证。
团队信息
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。
⚠️ 重要提示
此仓库包含与vLLM服务以及Hugging Face transformers库兼容的权重。它基于原始的Mixtral 种子发布,但文件格式和参数名称不同。请注意,目前尚不能使用HF实例化该模型。