🚀 Mixtral 8X7B Instruct v0.1 - AWQ
Mixtral 8X7B Instruct v0.1 - AWQ是基于Mixtral模型的量化版本,采用了高效的AWQ量化方法,能在保证一定精度的同时,提升推理速度和降低内存需求。该模型支持多种语言,适用于多种推理场景。
🚀 快速开始
环境准备
本模型支持在Linux和Windows系统上使用,且仅支持NVidia GPU。macOS用户请使用GGUF模型。
依赖安装
根据不同的使用场景,需要安装相应的依赖库。例如,使用Transformers进行推理时,需要安装transformers
和autoawq
库:
pip3 install --upgrade "autoawq>=0.1.6" "transformers>=4.35.0"
下载和使用模型
以下是在text-generation-webui
中下载和使用该模型的步骤:
- 确保你使用的是最新版本的text-generation-webui。
- 强烈建议使用一键安装程序,除非你确定知道如何手动安装。
- 点击Model tab。
- 在Download custom model or LoRA下,输入
TheBloke/Mixtral-8x7B-Instruct-v0.1-AWQ
。
- 点击Download。
- 模型开始下载,下载完成后会显示“Done”。
- 在左上角,点击Model旁边的刷新图标。
- 在Model下拉菜单中,选择你刚刚下载的模型:
Mixtral-8x7B-Instruct-v0.1-AWQ
。
- 选择Loader: AutoAWQ。
- 点击Load,模型将加载并准备好使用。
- 如果你需要自定义设置,设置完成后点击Save settings for this model,然后在右上角点击Reload the Model。
- 准备好后,点击Text Generation标签,输入提示信息即可开始!
✨ 主要特性
- 多语言支持:支持法语、意大利语、德语、西班牙语和英语等多种语言。
- 高效量化:采用AWQ量化方法,支持4位量化,相比GPTQ,在基于Transformer的推理中提供更快的速度,且质量相当或更好。
- 广泛兼容性:支持多种推理工具和框架,如
text-generation-webui
、vLLM
、Hugging Face Text Generation Inference (TGI)
和Transformers
等。
📦 安装指南
安装依赖
根据不同的使用场景,安装相应的依赖库:
- 使用
text-generation-webui
:确保使用最新版本,并按照上述快速开始中的步骤进行安装。
- 使用
vLLM
:确保使用vLLM版本0.2或更高版本,并安装相应的依赖。
- 使用
Hugging Face Text Generation Inference (TGI)
:使用TGI版本1.1.0或更高版本,并安装相应的依赖。
- 使用
Transformers
:安装transformers
4.35.0或更高版本,以及autoawq
0.1.6或更高版本。
下载模型
可以从Hugging Face Hub下载不同格式的模型:
💻 使用示例
基础用法
以下是使用Transformers
库进行推理的示例代码:
from transformers import AutoModelForCausalLM, AutoTokenizer, TextStreamer
model_name_or_path = "TheBloke/Mixtral-8x7B-Instruct-v0.1-AWQ"
tokenizer = AutoTokenizer.from_pretrained(model_name_or_path)
model = AutoModelForCausalLM.from_pretrained(
model_name_or_path,
low_cpu_mem_usage=True,
device_map="cuda:0"
)
streamer = TextStreamer(tokenizer, skip_prompt=True, skip_special_tokens=True)
prompt = "Tell me about AI"
prompt_template=f'''[INST] {prompt} [/INST]
'''
tokens = tokenizer(
prompt_template,
return_tensors='pt'
).input_ids.cuda()
generation_params = {
"do_sample": True,
"temperature": 0.7,
"top_p": 0.95,
"top_k": 40,
"max_new_tokens": 512,
"repetition_penalty": 1.1
}
generation_output = model.generate(
tokens,
streamer=streamer,
**generation_params
)
generation_output = model.generate(
tokens,
**generation_params
)
token_output = generation_output[0]
text_output = tokenizer.decode(token_output)
print("model.generate output: ", text_output)
from transformers import pipeline
pipe = pipeline(
"text-generation",
model=model,
tokenizer=tokenizer,
**generation_params
)
pipe_output = pipe(prompt_template)[0]['generated_text']
print("pipeline output: ", pipe_output)
高级用法
使用vLLM进行多用户推理
from vllm import LLM, SamplingParams
prompts = [
"Tell me about AI",
"Write a story about llamas",
"What is 291 - 150?",
"How much wood would a woodchuck chuck if a woodchuck could chuck wood?",
]
prompt_template=f'''[INST] {prompt} [/INST]
'''
prompts = [prompt_template.format(prompt=prompt) for prompt in prompts]
sampling_params = SamplingParams(temperature=0.8, top_p=0.95)
llm = LLM(model="TheBloke/Mixtral-8x7B-Instruct-v0.1-AWQ", quantization="awq", dtype="auto")
outputs = llm.generate(prompts, sampling_params)
for output in outputs:
prompt = output.prompt
generated_text = output.outputs[0].text
print(f"Prompt: {prompt!r}, Generated text: {generated_text!r}")
使用Hugging Face Text Generation Inference (TGI)进行多用户推理
from huggingface_hub import InferenceClient
endpoint_url = "https://your-endpoint-url-here"
prompt = "Tell me about AI"
prompt_template=f'''[INST] {prompt} [/INST]
'''
client = InferenceClient(endpoint_url)
response = client.text_generation(prompt,
max_new_tokens=128,
do_sample=True,
temperature=0.7,
top_p=0.95,
top_k=40,
repetition_penalty=1.1)
print(f"Model output: ", response)
📚 详细文档
模型信息
属性 |
详情 |
模型创建者 |
Mistral AI |
模型名称 |
Mixtral 8X7B Instruct v0.1 |
模型类型 |
mixtral |
支持语言 |
法语、意大利语、德语、西班牙语、英语 |
许可证 |
apache-2.0 |
量化者 |
TheBloke |
提示模板
[INST] {prompt} [/INST]
提供的文件和AWQ参数
目前仅发布128g GEMM模型,正在积极考虑添加group_size 32模型和GEMV内核模型。模型以分片的safetensors文件形式发布。
兼容性
提供的文件经过测试,可与以下工具和框架兼容:
🔧 技术细节
AWQ量化方法
AWQ是一种高效、准确且快速的低比特权重量化方法,目前支持4位量化。与GPTQ相比,它在基于Transformer的推理中提供更快的速度,且质量相当或更好。
模型加载和推理优化
在使用模型进行推理时,可以通过以下方式进一步优化内存使用和推理速度:
- 半精度加载:在GPU设备上使用
float16
精度加载模型,可减少内存需求。
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))
- 低精度加载(8位和4位):使用
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:加载模型时启用
use_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))
📄 许可证
本模型采用apache-2.0
许可证。