Mistral Small 24B Instruct 2501 Quantized.w8a8
M
Mistral Small 24B Instruct 2501 Quantized.w8a8
由RedHatAI開發
經過INT8量化的24B參數Mistral指令微調模型,顯著降低GPU內存需求並提高計算吞吐量
下載量 158
發布時間 : 3/3/2025
模型概述
基於Mistral-Small-24B-Instruct-2501的量化版本,支持多語言文本生成和對話任務,適用於低延遲推理場景
模型特點
高效量化
採用W8A8量化方案,減少50%內存佔用和磁盤空間,提升2倍計算吞吐量
多語言支持
支持24種語言的文本生成和理解
低延遲推理
優化後的模型特別適合需要快速響應的對話場景
企業級部署支持
提供Red Hat生態系統全棧部署方案
模型能力
多語言文本生成
指令跟隨
長文檔理解
編程輔助
數學推理
使用案例
對話系統
客服機器人
構建低延遲多語言客服對話系統
開發輔助
代碼生成
幫助開發者生成和優化代碼片段
教育
數學問題解答
解釋和解決數學問題
GSM8K評估得分90.00
🚀 Mistral-Small-24B-Instruct-2501量化模型(w8a8)
本項目提供了經過量化處理的Mistral-Small-24B-Instruct-2501模型,通過優化顯著降低了GPU內存需求並提高了計算吞吐量,適用於多種自然語言處理場景。
語言支持
支持以下語言:
- 英語、法語、德語、西班牙語、葡萄牙語、意大利語、日語、韓語、俄語、中文、阿拉伯語、波斯語、印尼語、馬來語、尼泊爾語、波蘭語、羅馬尼亞語、塞爾維亞語、瑞典語、土耳其語、烏克蘭語、越南語、印地語、孟加拉語
許可證
採用Apache-2.0許可證。
庫名稱
vllm
基礎模型
- mistralai/Mistral-Small-24B-Instruct-2501
任務類型
圖像文本到文本
標籤
- neuralmagic、redhat、llmcompressor、quantized、int8
🚀 快速開始
本模型可使用 vLLM 後端高效部署,以下是示例代碼:
from vllm import LLM, SamplingParams
from transformers import AutoProcessor
model_id = "RedHatAI/Mistral-Small-24B-Instruct-2501-FP8-quantized.w8a8"
number_gpus = 1
sampling_params = SamplingParams(temperature=0.7, top_p=0.8, max_tokens=256)
processor = AutoProcessor.from_pretrained(model_id)
messages = [{"role": "user", "content": "Give me a short introduction to large language model."}]
prompts = processor.apply_chat_template(messages, add_generation_prompt=True, tokenize=False)
llm = LLM(model=model_id, tensor_parallel_size=number_gpus)
outputs = llm.generate(prompts, sampling_params)
generated_text = outputs[0].outputs[0].text
print(generated_text)
vLLM 還支持兼容 OpenAI 的服務,更多詳情請參閱 文檔。
✨ 主要特性
模型概述
- 模型架構:Mistral3ForConditionalGeneration
- 輸入:文本/圖像
- 輸出:文本
- 模型優化:
- 激活量化:INT8
- 權重量化:INT8
- 預期用例:
- 快速響應的對話代理。
- 低延遲的函數調用。
- 通過微調實現特定領域的專家知識。
- 適用於處理敏感數據的愛好者和組織的本地推理。
- 編程和數學推理。
- 長文檔理解。
- 視覺理解。
- 不適用場景:以任何違反適用法律法規(包括貿易合規法律)的方式使用。在模型未正式支持的語言環境中使用。
- 發佈日期:2025 年 3 月 3 日
- 版本:1.0
- 模型開發者:Red Hat (Neural Magic)
模型優化細節
本模型通過將 Mistral-Small-24B-Instruct-2501 的激活和權重量化為 INT8 數據類型而獲得。這種優化將表示權重和激活所需的位數從 16 位減少到 8 位,從而減少了 GPU 內存需求(約 50%)並提高了矩陣乘法的計算吞吐量(約 2 倍)。權重量化還將磁盤空間需求減少了約 50%。
僅對 Transformer 塊內線性算子的權重和激活進行量化。權重採用對稱靜態逐通道方案進行量化,而激活採用對稱動態逐令牌方案進行量化。量化過程應用了 SmoothQuant 和 GPTQ 算法的組合,具體實現於 llm-compressor 庫中。
📦 安裝指南
在 Red Hat AI 推理服務器上部署
podman run --rm -it --device nvidia.com/gpu=all -p 8000:8000 \
--ipc=host \
--env "HUGGING_FACE_HUB_TOKEN=$HF_TOKEN" \
--env "HF_HUB_OFFLINE=0" -v ~/.cache/vllm:/home/vllm/.cache \
--name=vllm \
registry.access.redhat.com/rhaiis/rh-vllm-cuda \
vllm serve \
--tensor-parallel-size 8 \
--max-model-len 32768 \
--enforce-eager --model RedHatAI/Mistral-Small-24B-Instruct-2501-quantized.w8a8
更多詳情請參閱 Red Hat AI 推理服務器文檔。
在 Red Hat Enterprise Linux AI 上部署
# 從 Red Hat 註冊表通過 docker 下載模型
# 注意:除非指定 --model-dir,否則模型將下載到 ~/.cache/instructlab/models
ilab model download --repository docker://registry.redhat.io/rhelai1/mistral-small-24b-instruct-2501-quantized-w8a8:1.5
# 通過 ilab 服務模型
ilab model serve --model-path ~/.cache/instructlab/models/mistral-small-24b-instruct-2501-quantized-w8a8
# 與模型進行對話
ilab model chat --model ~/.cache/instructlab/models/mistral-small-24b-instruct-2501-quantized-w8a8
更多詳情請參閱 Red Hat Enterprise Linux AI 文檔。
在 Red Hat Openshift AI 上部署
# 使用 ServingRuntime 設置 vllm 服務器
# 保存為: vllm-servingruntime.yaml
apiVersion: serving.kserve.io/v1alpha1
kind: ServingRuntime
metadata:
name: vllm-cuda-runtime # 可選更改: 設置唯一名稱
annotations:
openshift.io/display-name: vLLM NVIDIA GPU ServingRuntime for KServe
opendatahub.io/recommended-accelerators: '["nvidia.com/gpu"]'
labels:
opendatahub.io/dashboard: 'true'
spec:
annotations:
prometheus.io/port: '8080'
prometheus.io/path: '/metrics'
multiModel: false
supportedModelFormats:
- autoSelect: true
name: vLLM
containers:
- name: kserve-container
image: quay.io/modh/vllm:rhoai-2.20-cuda # 如有需要更改。如果是 AMD: quay.io/modh/vllm:rhoai-2.20-rocm
command:
- python
- -m
- vllm.entrypoints.openai.api_server
args:
- "--port=8080"
- "--model=/mnt/models"
- "--served-model-name={{.Name}}"
env:
- name: HF_HOME
value: /tmp/hf_home
ports:
- containerPort: 8080
protocol: TCP
# 將模型附加到 vllm 服務器。這是一個 NVIDIA 模板
# 保存為: inferenceservice.yaml
apiVersion: serving.kserve.io/v1beta1
kind: InferenceService
metadata:
annotations:
openshift.io/display-name: mistral-small-24b-instruct-2501-quantized-w8a8 # 可選更改
serving.kserve.io/deploymentMode: RawDeployment
name: mistral-small-24b-instruct-2501-quantized-w8a8 # 指定模型名稱。此值將用於在有效負載中調用模型
labels:
opendatahub.io/dashboard: 'true'
spec:
predictor:
maxReplicas: 1
minReplicas: 1
model:
modelFormat:
name: vLLM
name: ''
resources:
limits:
cpu: '2' # 這是特定於模型的
memory: 8Gi # 這是特定於模型的
nvidia.com/gpu: '1' # 這是特定於加速器的
requests: # 此塊同樣適用
cpu: '1'
memory: 4Gi
nvidia.com/gpu: '1'
runtime: vllm-cuda-runtime # 必須與上面的 ServingRuntime 名稱匹配
storageUri: oci://registry.redhat.io/rhelai1/modelcar-mistral-small-24b-instruct-2501-quantized-w8a8:1.5
tolerations:
- effect: NoSchedule
key: nvidia.com/gpu
operator: Exists
# 確保首先進入要部署模型的項目
# oc project <項目名稱>
# 應用兩個資源以運行模型
# 應用 ServingRuntime
oc apply -f vllm-servingruntime.yaml
# 應用 InferenceService
oc apply -f qwen-inferenceservice.yaml
# 替換下面的 <推理服務名稱> 和 <集群入口域名>:
# - 如果不確定,請運行 `oc get inferenceservice` 查找 URL。
# 使用 curl 調用服務器:
curl https://<推理服務名稱>-predictor-default.<域名>/v1/chat/completions
-H "Content-Type: application/json" \
-d '{
"model": "mistral-small-24b-instruct-2501-quantized-w8a8",
"stream": true,
"stream_options": {
"include_usage": true
},
"max_tokens": 1,
"messages": [
{
"role": "user",
"content": "How can a bee fly when its wings are so small?"
}
]
}'
更多詳情請參閱 Red Hat Openshift AI 文檔。
🔧 技術細節
模型創建
本模型使用 llm-compressor 創建,以下是創建代碼:
from transformers import AutoTokenizer, AutoModelForCausalLM
from llmcompressor.modifiers.quantization import GPTQModifier
from llmcompressor.modifiers.smoothquant import SmoothQuantModifier
from llmcompressor.transformers import oneshot
from datasets import load_dataset
# 加載模型
model_stub = "mistralai/Mistral-Small-24B-Instruct-2501"
model_name = model_stub.split("/")[-1]
num_samples = 1024
max_seq_len = 8192
tokenizer = AutoTokenizer.from_pretrained(model_stub)
model = AutoModelForCausalLM.from_pretrained(
model_stub,
device_map="auto",
torch_dtype="auto",
)
# 數據處理
def preprocess_text(example):
text = tokenizer.apply_chat_template(example["messages"], tokenize=False, add_generation_prompt=False)
return tokenizer(text, padding=False, max_length=max_seq_len, truncation=True)
ds = load_dataset("neuralmagic/calibration", name="LLM", split="train").select(range(num_samples))
ds = ds.map(preprocess_text, remove_columns=ds.column_names)
# 配置量化算法和方案
recipe = [
SmoothQuantModifier(
smoothing_strength=0.9,
mappings=[
[["re:.*q_proj", "re:.*k_proj", "re:.*v_proj"], "re:.*input_layernorm"],
[["re:.*gate_proj", "re:.*up_proj"], "re:.*post_attention_layernorm"],
[["re:.*down_proj"], "re:.*up_proj"],
],
),
GPTQModifier(
ignore=["lm_head"],
sequential_targets=["MistralDecoderLayer"],
dampening_frac=0.1,
targets="Linear",
scheme="W8A8",
),
]
# 應用量化
oneshot(
model=model,
dataset=ds,
recipe=recipe,
max_seq_length=max_seq_len,
num_calibration_samples=num_samples
)
# 以壓縮張量格式保存到磁盤
save_path = model_name + "-quantized.w8a8"
model.save_pretrained(save_path)
processor.save_pretrained(save_path)
print(f"模型和分詞器保存到: {save_path}")
模型評估
本模型在 OpenLLM 排行榜 V1 和 V2 上進行了評估,使用以下命令:
OpenLLM 排行榜 V1
lm_eval \
--model vllm \
--model_args pretrained="neuralmagic/Mistral-Small-24B-Instruct-2501-FP8-Dynamic",dtype=auto,add_bos_token=True,max_model_len=4096,tensor_parallel_size=1,gpu_memory_utilization=0.8,enable_chunked_prefill=True,trust_remote_code=True \
--tasks openllm \
--write_out \
--batch_size auto \
--output_path output_dir \
--show_config
OpenLLM 排行榜 V2
lm_eval \
--model vllm \
--model_args pretrained="neuralmagic/Mistral-Small-24B-Instruct-2501-FP8-Dynamic",dtype=auto,add_bos_token=False,max_model_len=4096,tensor_parallel_size=1,gpu_memory_utilization=0.8,enable_chunked_prefill=True,trust_remote_code=True \
--apply_chat_template \
--fewshot_as_multiturn \
--tasks leaderboard \
--write_out \
--batch_size auto \
--output_path output_dir \
--show_config
準確率
OpenLLM 排行榜 V1 評估得分
指標 | mistralai/Mistral-Small-24B-Instruct-2501 | nm-testing/Mistral-Small-24B-Instruct-2501-quantized.w8a8 |
---|---|---|
ARC-Challenge (Acc-Norm, 25-shot) | 72.18 | 68.86 |
GSM8K (Strict-Match, 5-shot) | 90.14 | 90.00 |
HellaSwag (Acc-Norm, 10-shot) | 85.05 | 85.06 |
MMLU (Acc, 5-shot) | 80.69 | 80.25 |
TruthfulQA (MC2, 0-shot) | 65.55 | 65.69 |
Winogrande (Acc, 5-shot) | 83.11 | 81.69 |
平均得分 | 79.45 | 78.59 |
恢復率 (%) | 100.00 | 98.92 |
📄 許可證
本項目採用 Apache-2.0 許可證。
Phi 2 GGUF
其他
Phi-2是微軟開發的一個小型但強大的語言模型,具有27億參數,專注於高效推理和高質量文本生成。
大型語言模型 支持多種語言
P
TheBloke
41.5M
205
Roberta Large
MIT
基於掩碼語言建模目標預訓練的大型英語語言模型,採用改進的BERT訓練方法
大型語言模型 英語
R
FacebookAI
19.4M
212
Distilbert Base Uncased
Apache-2.0
DistilBERT是BERT基礎模型的蒸餾版本,在保持相近性能的同時更輕量高效,適用於序列分類、標記分類等自然語言處理任務。
大型語言模型 英語
D
distilbert
11.1M
669
Llama 3.1 8B Instruct GGUF
Meta Llama 3.1 8B Instruct 是一個多語言大語言模型,針對多語言對話用例進行了優化,在常見的行業基準測試中表現優異。
大型語言模型 英語
L
modularai
9.7M
4
Xlm Roberta Base
MIT
XLM-RoBERTa是基於100種語言的2.5TB過濾CommonCrawl數據預訓練的多語言模型,採用掩碼語言建模目標進行訓練。
大型語言模型 支持多種語言
X
FacebookAI
9.6M
664
Roberta Base
MIT
基於Transformer架構的英語預訓練模型,通過掩碼語言建模目標在海量文本上訓練,支持文本特徵提取和下游任務微調
大型語言模型 英語
R
FacebookAI
9.3M
488
Opt 125m
其他
OPT是由Meta AI發佈的開放預訓練Transformer語言模型套件,參數量從1.25億到1750億,旨在對標GPT-3系列性能,同時促進大規模語言模型的開放研究。
大型語言模型 英語
O
facebook
6.3M
198
1
基於transformers庫的預訓練模型,適用於多種NLP任務
大型語言模型
Transformers

1
unslothai
6.2M
1
Llama 3.1 8B Instruct
Llama 3.1是Meta推出的多語言大語言模型系列,包含8B、70B和405B參數規模,支持8種語言和代碼生成,優化了多語言對話場景。
大型語言模型
Transformers 支持多種語言

L
meta-llama
5.7M
3,898
T5 Base
Apache-2.0
T5基礎版是由Google開發的文本到文本轉換Transformer模型,參數規模2.2億,支持多語言NLP任務。
大型語言模型 支持多種語言
T
google-t5
5.4M
702
精選推薦AI模型
Llama 3 Typhoon V1.5x 8b Instruct
專為泰語設計的80億參數指令模型,性能媲美GPT-3.5-turbo,優化了應用場景、檢索增強生成、受限生成和推理任務
大型語言模型
Transformers 支持多種語言

L
scb10x
3,269
16
Cadet Tiny
Openrail
Cadet-Tiny是一個基於SODA數據集訓練的超小型對話模型,專為邊緣設備推理設計,體積僅為Cosmo-3B模型的2%左右。
對話系統
Transformers 英語

C
ToddGoldfarb
2,691
6
Roberta Base Chinese Extractive Qa
基於RoBERTa架構的中文抽取式問答模型,適用於從給定文本中提取答案的任務。
問答系統 中文
R
uer
2,694
98