🚀 phi-4-quantized.w4a16
本項目是對phi-4模型進行量化處理後的版本,通過將權重量化為INT4數據類型,有效減少了磁盤空間和GPU內存需求,可用於加速語言模型研究,為生成式AI功能提供支持。
🚀 快速開始
部署模型
此模型可以使用 vLLM 後端高效部署,示例代碼如下:
from vllm import LLM, SamplingParams
from transformers import AutoTokenizer
model_id = "neuralmagic-ent/phi-4-quantized.w4a16"
number_gpus = 1
sampling_params = SamplingParams(temperature=0.7, top_p=0.8, max_tokens=256)
tokenizer = AutoTokenizer.from_pretrained(model_id)
messages = [
{"role": "user", "content": "Give me a short introduction to large language model."},
]
prompts = tokenizer.apply_chat_template(messages, 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 兼容的服務,更多詳細信息請參閱 文檔。
創建模型
此模型使用 llm-compressor 創建,具體代碼如下:
創建詳情
```python
from transformers import AutoModelForCausalLM, AutoTokenizer
from llmcompressor.modifiers.quantization import GPTQModifier
from llmcompressor.transformers import oneshot
from datasets import load_dataset
Load model
model_stub = "microsoft/phi-4"
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_fn(example):
return {"text": tokenizer.apply_chat_template(example["messages"], add_generation_prompt=False, tokenize=False)}
ds = load_dataset("neuralmagic/LLM_compression_calibration", split="train")
ds = ds.map(preprocess_fn)
Configure the quantization algorithm and scheme
recipe = GPTQModifier(
targets="Linear",
scheme="W4A16",
ignore=["lm_head"],
sequential_targets=["Phi3DecoderLayer"],
dampening_frac=0.01,
)
Apply quantization
oneshot(
model=model,
dataset=ds,
recipe=recipe,
max_seq_length=max_seq_len,
num_calibration_samples=num_samples,
)
Save to disk in compressed-tensors format
save_path = model_name + "-quantized.w4a16"
model.save_pretrained(save_path)
tokenizer.save_pretrained(save_path)
print(f"Model and tokenizer saved to: {save_path}")
</details>
### 評估模型
該模型在 OpenLLM 排行榜任務(版本 1)上使用 [lm-evaluation-harness](https://github.com/EleutherAI/lm-evaluation-harness) 和 [vLLM](https://docs.vllm.ai/en/stable/) 引擎進行評估,使用以下命令:
lm_eval
--model vllm
--model_args pretrained="neuralmagic-ent/phi-4-quantized.w4a16",dtype=auto,gpu_memory_utilization=0.6,max_model_len=4096,enable_chunk_prefill=True,tensor_parallel_size=1
--tasks openllm
--batch_size auto
## ✨ 主要特性
### 模型概述
- **模型架構**:Phi3ForCausalLM
- **輸入**:文本
- **輸出**:文本
- **模型優化**:
- **權重量化**:INT4
- **預期用例**:該模型旨在加速語言模型的研究,作為生成式 AI 功能的構建塊。它適用於通用 AI 系統和應用程序(主要為英文),這些應用需要:
1. 內存/計算受限的環境。
2. 低延遲場景。
3. 推理和邏輯能力。
- **適用範圍外**:該模型並非專門為所有下游用途設計或評估,因此:
1. 開發者在選擇用例時應考慮語言模型的常見侷限性,並在特定下游用例中使用之前評估和緩解準確性、安全性和公平性問題,特別是在高風險場景中。
2. 開發者應瞭解並遵守與其用例相關的適用法律或法規(包括隱私、貿易合規法等),包括該模型主要針對英文的情況。
3. 本模型卡片中的任何內容均不應被解釋為或視為對模型發佈所依據的許可證的限制或修改。
- **發佈日期**:2025 年 3 月 3 日
- **版本**:1.0
- **模型開發者**:Red Hat (Neural Magic)
### 模型優化細節
此模型通過將 [phi-4](https://huggingface.co/microsoft/phi-4) 的權重量化為 INT4 數據類型獲得。這種優化將每個參數的位數從 16 位減少到 4 位,使磁盤大小和 GPU 內存需求減少約 75%。
僅對 Transformer 塊內的線性算子的權重進行量化。權重使用對稱的每組方案進行量化,組大小為 128。量化應用了 [GPTQ](https://arxiv.org/abs/2210.17323) 算法,該算法在 [llm-compressor](https://github.com/vllm-project/llm-compressor) 庫中實現。
## 📚 詳細文檔
### 準確性
#### Open LLM 排行榜評估分數
| 基準測試 | phi-4 | phi-4-quantized.w4a16(本模型) | 恢復率 |
| ---- | ---- | ---- | ---- |
| MMLU (5-shot) | 80.30 | 79.87 | 99.5% |
| ARC Challenge (25-shot) | 64.42 | 62.88 | 97.6% |
| GSM-8K (5-shot, strict-match) | 90.07 | 89.69 | 99.6% |
| Hellaswag (10-shot) | 84.37 | 83.42 | 98.9% |
| Winogrande (5-shot) | 80.58 | 80.74 | 100.2% |
| TruthfulQA (0-shot, mc2) | 59.37 | 59.18 | 99.7% |
| **平均** | **76.52** | **75.96** | **99.3%** |
## 📄 許可證
本模型採用 MIT 許可證,詳情請見 [許可證鏈接](https://huggingface.co/microsoft/phi-4/resolve/main/LICENSE)。