🚀 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
許可證。