Pixtral 12b FP8 Dynamic
pixtral-12b-FP8-dynamic 是 mistral-community/pixtral-12b 的量化版本,通過將權重和激活量化為 FP8 數據類型,減少磁盤大小和 GPU 內存需求約 50%,適用於多種語言的商業和研究用途。
下載量 87.31k
發布時間 : 10/10/2024
模型概述
該模型是一個多模態模型,支持文本和圖像輸入,輸出為文本。適用於多種語言的商業和研究用途,特別適合類似助手的聊天場景。
模型特點
FP8量化
通過將權重和激活量化為FP8數據類型,減少磁盤大小和GPU內存需求約50%。
多語言支持
支持英語、德語、法語、意大利語、葡萄牙語、印地語、西班牙語、泰語等多種語言。
高效推理
可使用vLLM後端進行高效推理,優化推理速度。
模型能力
文本生成
圖像分析
多模態理解
使用案例
商業助手
多語言客服
用於多語言客服場景,支持多種語言的文本生成和理解。
研究
多模態研究
用於多模態理解和生成的研究,支持文本和圖像的聯合處理。
🚀 pixtral-12b-FP8-dynamic
這是 mistral-community/pixtral-12b 的量化版本,該模型將權重和激活量化為 FP8 數據類型,適用於多種語言的商業和研究用途,可藉助 vLLM 進行高效推理。
🚀 快速開始
本模型可使用 vLLM 後端進行高效部署,示例代碼如下:
from vllm import LLM, SamplingParams
# Initialize the LLM
model_name = "neuralmagic/pixtral-12b-FP8-dynamic"
llm = LLM(model=model_name, max_model_len=10000)
# Create the prompt
image_url = "https://upload.wikimedia.org/wikipedia/commons/thumb/d/dd/Gfp-wisconsin-madison-the-nature-boardwalk.jpg/2560px-Gfp-wisconsin-madison-the-nature-boardwalk.jpg"
messages = [
{
"role": "user",
"content": [
{"type": "text", "text": "Describe the image."},
{"type": "image_url", "image_url": {"url": image_url}},
],
},
]
# Set up sampling parameters
sampling_params = SamplingParams(temperature=0.2, max_tokens=100)
# Generate the response
outputs = llm.chat(messages, sampling_params=sampling_params)
# Print the generated text
for output in outputs:
print(output.outputs[0].text)
vLLM 還支持與 OpenAI 兼容的服務,更多詳情請參閱 文檔。
vllm serve neuralmagic/pixtral-12b-FP8-dynamic
✨ 主要特性
- 多語言支持:支持英語、德語、法語、意大利語、葡萄牙語、印地語、西班牙語、泰語等多種語言。
- 模型優化:通過將權重和激活量化為 FP8 數據類型,減少磁盤大小和 GPU 內存需求約 50%。
- 高效推理:可使用 vLLM 後端進行高效推理。
📦 安裝指南
文檔未提供具體安裝步驟,故跳過該章節。
💻 使用示例
基礎用法
from vllm import LLM, SamplingParams
# Initialize the LLM
model_name = "neuralmagic/pixtral-12b-FP8-dynamic"
llm = LLM(model=model_name, max_model_len=10000)
# Create the prompt
image_url = "https://upload.wikimedia.org/wikipedia/commons/thumb/d/dd/Gfp-wisconsin-madison-the-nature-boardwalk.jpg/2560px-Gfp-wisconsin-madison-the-nature-boardwalk.jpg"
messages = [
{
"role": "user",
"content": [
{"type": "text", "text": "Describe the image."},
{"type": "image_url", "image_url": {"url": image_url}},
],
},
]
# Set up sampling parameters
sampling_params = SamplingParams(temperature=0.2, max_tokens=100)
# Generate the response
outputs = llm.chat(messages, sampling_params=sampling_params)
# Print the generated text
for output in outputs:
print(output.outputs[0].text)
高級用法
from transformers import AutoProcessor, LlavaForConditionalGeneration
from llmcompressor.modifiers.quantization import QuantizationModifier
from llmcompressor.transformers import oneshot, wrap_hf_model_class
MODEL_ID = "mistral-community/pixtral-12b"
# Load model.
model_class = wrap_hf_model_class(LlavaForConditionalGeneration)
model = model_class.from_pretrained(MODEL_ID, device_map="auto", torch_dtype="auto")
processor = AutoProcessor.from_pretrained(MODEL_ID)
# Configure the quantization algorithm and scheme.
# In this case, we:
# * quantize the weights to fp8 with per channel via ptq
# * quantize the activations to fp8 with dynamic per token
recipe = QuantizationModifier(
targets="Linear",
scheme="FP8_DYNAMIC",
ignore=["re:.*lm_head", "re:multi_modal_projector.*", "re:vision_model.*"],
)
# Apply quantization and save to disk in compressed-tensors format.
SAVE_DIR = MODEL_ID.split("/")[1] + "-FP8-Dynamic"
oneshot(model=model, recipe=recipe, output_dir=SAVE_DIR)
processor.save_pretrained(SAVE_DIR)
# Confirm generations of the quantized model look sane.
print("========== SAMPLE GENERATION ==============")
input_ids = processor(text="Hello my name is", return_tensors="pt").input_ids.to("cuda")
output = model.generate(input_ids, max_new_tokens=20)
print(processor.decode(output[0]))
print("==========================================")
📚 詳細文檔
模型概述
- 模型架構:Pixtral (Llava)
- 輸入:文本/圖像
- 輸出:文本
- 模型優化:
- 權重量化:FP8
- 激活量化:FP8
- 預期用例:適用於多種語言的商業和研究用途,類似於 mistralai/Pixtral-12B-2409,該模型旨在用於類似助手的聊天場景。
- 不適用範圍:以任何違反適用法律法規(包括貿易合規法律)的方式使用,以及使用英語以外的語言。
- 發佈日期:2024 年 11 月 1 日
- 版本:1.0
- 許可證:Apache 2.0
- 模型開發者:Neural Magic
模型優化
本模型是通過將 mistral-community/pixtral-12b 的權重和激活量化為 FP8 數據類型得到的,可使用從源代碼構建的 vLLM 進行推理。此優化將每個參數的位數從 16 位減少到 8 位,將磁盤大小和 GPU 內存需求降低了約 50%。僅對變壓器塊內線性算子的權重和激活進行量化,採用對稱的逐通道量化,其中每個輸出維度的線性縮放映射量化權重和激活的 FP8 表示。激活也在每個令牌的動態基礎上進行量化,使用 LLM Compressor 進行量化。
創建過程
本模型通過應用 LLM Compressor 創建,代碼如下:
from transformers import AutoProcessor, LlavaForConditionalGeneration
from llmcompressor.modifiers.quantization import QuantizationModifier
from llmcompressor.transformers import oneshot, wrap_hf_model_class
MODEL_ID = "mistral-community/pixtral-12b"
# Load model.
model_class = wrap_hf_model_class(LlavaForConditionalGeneration)
model = model_class.from_pretrained(MODEL_ID, device_map="auto", torch_dtype="auto")
processor = AutoProcessor.from_pretrained(MODEL_ID)
# Configure the quantization algorithm and scheme.
# In this case, we:
# * quantize the weights to fp8 with per channel via ptq
# * quantize the activations to fp8 with dynamic per token
recipe = QuantizationModifier(
targets="Linear",
scheme="FP8_DYNAMIC",
ignore=["re:.*lm_head", "re:multi_modal_projector.*", "re:vision_model.*"],
)
# Apply quantization and save to disk in compressed-tensors format.
SAVE_DIR = MODEL_ID.split("/")[1] + "-FP8-Dynamic"
oneshot(model=model, recipe=recipe, output_dir=SAVE_DIR)
processor.save_pretrained(SAVE_DIR)
# Confirm generations of the quantized model look sane.
print("========== SAMPLE GENERATION ==============")
input_ids = processor(text="Hello my name is", return_tensors="pt").input_ids.to("cuda")
output = model.generate(input_ids, max_new_tokens=20)
print(processor.decode(output[0]))
print("==========================================")
評估
多模態基準測試
pixtral-12b | pixtral-12b-FP8-dynamic | |
---|---|---|
MMMU (思維鏈) | 49.44 | 51.11 |
Mathvista (思維鏈) | 58.1 | 59.4 |
ChartQA (思維鏈) | 82.64 | 82.68 |
DocVQA (平均歸一化 Levenshtein 相似度) | 89.36 | 89.35 |
文本基準測試
pixtral-12b | pixtral-12b-FP8-dynamic | |
---|---|---|
大規模多任務語言理解 (5 次提示) | 69.27 | 68.96 |
數學 (0 次提示) | 43.82 | 43.27 |
人類評估 (單次通過率) | 77.80 | 76.4 |
復現
待確定
🔧 技術細節
本模型的優化過程涉及將 mistral-community/pixtral-12b 的權重和激活量化為 FP8 數據類型,僅對變壓器塊內線性算子的權重和激活進行量化,採用對稱的逐通道量化,激活也在每個令牌的動態基礎上進行量化,使用 LLM Compressor 進行量化。此優化將每個參數的位數從 16 位減少到 8 位,將磁盤大小和 GPU 內存需求降低了約 50%。
📄 許可證
本模型採用 Apache 2.0 許可證。
信息表格
屬性 | 詳情 |
---|---|
模型類型 | Pixtral (Llava) |
訓練數據 | 文檔未提及 |
Clip Vit Large Patch14 336
基於Vision Transformer架構的大規模視覺語言預訓練模型,支持圖像與文本的跨模態理解
文本生成圖像
Transformers

C
openai
5.9M
241
Fashion Clip
MIT
FashionCLIP是基於CLIP開發的視覺語言模型,專門針對時尚領域進行微調,能夠生成通用產品表徵。
文本生成圖像
Transformers 英語

F
patrickjohncyh
3.8M
222
Gemma 3 1b It
Gemma 3是Google推出的輕量級先進開放模型系列,基於與Gemini模型相同的研究和技術構建。該模型是多模態模型,能夠處理文本和圖像輸入並生成文本輸出。
文本生成圖像
Transformers

G
google
2.1M
347
Blip Vqa Base
Bsd-3-clause
BLIP是一個統一的視覺語言預訓練框架,擅長視覺問答任務,通過語言-圖像聯合訓練實現多模態理解與生成能力
文本生成圖像
Transformers

B
Salesforce
1.9M
154
CLIP ViT H 14 Laion2b S32b B79k
MIT
基於OpenCLIP框架在LAION-2B英文數據集上訓練的視覺-語言模型,支持零樣本圖像分類和跨模態檢索任務
文本生成圖像
Safetensors
C
laion
1.8M
368
CLIP ViT B 32 Laion2b S34b B79k
MIT
基於OpenCLIP框架在LAION-2B英語子集上訓練的視覺-語言模型,支持零樣本圖像分類和跨模態檢索
文本生成圖像
Safetensors
C
laion
1.1M
112
Pickscore V1
PickScore v1 是一個針對文本生成圖像的評分函數,可用於預測人類偏好、評估模型性能和圖像排序等任務。
文本生成圖像
Transformers

P
yuvalkirstain
1.1M
44
Owlv2 Base Patch16 Ensemble
Apache-2.0
OWLv2是一種零樣本文本條件目標檢測模型,可通過文本查詢在圖像中定位對象。
文本生成圖像
Transformers

O
google
932.80k
99
Llama 3.2 11B Vision Instruct
Llama 3.2 是 Meta 發佈的多語言多模態大型語言模型,支持圖像文本到文本的轉換任務,具備強大的跨模態理解能力。
文本生成圖像
Transformers 支持多種語言

L
meta-llama
784.19k
1,424
Owlvit Base Patch32
Apache-2.0
OWL-ViT是一個零樣本文本條件目標檢測模型,可以通過文本查詢搜索圖像中的對象,無需特定類別的訓練數據。
文本生成圖像
Transformers

O
google
764.95k
129
精選推薦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