🚀 phi-4-quantized.w4a16
このモデルは、言語モデルの研究を加速するために設計されており、生成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互換のサービングもサポートしています。詳細はドキュメントを参照してください。
✨ 主な機能
モデル概要
- モデルアーキテクチャ: Phi3ForCausalLM
- モデルの最適化:
- 想定される使用ケース: このモデルは、言語モデルの研究を加速するために設計されており、生成AI機能の構成要素として使用できます。主に英語で、以下のような汎用AIシステムやアプリケーションで使用されます。
- メモリ/計算資源に制約のある環境。
- レイテンシーが重要なシナリオ。
- 推論と論理。
- 想定外の使用ケース: このモデルは、すべての下流の目的に特に設計または評価されていないため、以下の点に注意してください。
- 開発者は、使用ケースを選択する際に言語モデルの一般的な制限を考慮し、特定の下流の使用ケースで使用する前に、精度、安全性、公平性を評価し、緩和策を講じる必要があります。特に高リスクのシナリオでは、この点が重要です。
- 開発者は、使用ケースに関連する適用可能な法律や規制(プライバシー、貿易コンプライアンス法など)を認識し、遵守する必要があります。このモデルは主に英語に焦点を当てています。
- このモデルカードに含まれる内容は、モデルがリリースされたライセンスに対する制限または変更として解釈またはみなされるものではありません。
- リリース日: 2025年3月3日
- バージョン: 1.0
- モデル開発者: Red Hat (Neural Magic)
モデルの最適化
このモデルは、phi-4の重みをINT4データ型に量子化することで得られました。この最適化により、パラメータごとのビット数が16から4に減少し、ディスクサイズとGPUメモリ要件が約75%削減されます。
トランスフォーマーブロック内の線形演算子の重みのみが量子化されます。重みは、グループサイズ128の対称的なグループごとのスキームを使用して量子化されます。量子化には、GPTQアルゴリズムがllm-compressorライブラリで実装されたものが適用されています。
📚 ドキュメント
作成
作成の詳細
このモデルは、[llm-compressor](https://github.com/vllm-project/llm-compressor)を使用して、以下のコードスニペットを実行することで作成されました。
from transformers import AutoModelForCausalLM, AutoTokenizer
from llmcompressor.modifiers.quantization import GPTQModifier
from llmcompressor.transformers import oneshot
from datasets import load_dataset
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)
recipe = GPTQModifier(
targets="Linear",
scheme="W4A16",
ignore=["lm_head"],
sequential_targets=["Phi3DecoderLayer"],
dampening_frac=0.01,
)
oneshot(
model=model,
dataset=ds,
recipe=recipe,
max_seq_length=max_seq_len,
num_calibration_samples=num_samples,
)
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}")
評価
このモデルは、lm-evaluation-harnessとvLLMエンジンを使用して、OpenLLMリーダーボードタスク(バージョン1)で評価されました。以下のコマンドを使用しました。
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
精度
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ライセンスの下で公開されています。詳細はこちらを参照してください。