🚀 Meta-Llama-3-70B-Instruct-FP8
Meta-Llama-3-70B-InstructをFP8に量子化したモデルで、商用および研究用途に最適。vLLMを用いた推論が可能で、ディスクサイズとGPUメモリ要件を約50%削減します。
🚀 クイックスタート
このモデルは、商用および英語による研究用途を目的としています。以下に、vLLMを用いたモデルの使用例を示します。
✨ 主な機能
- モデルアーキテクチャ: Meta-Llama-3
- モデル最適化:
- 想定使用ケース: 英語での商用および研究用途。Meta-Llama-3-70B-Instructと同様に、アシスタントのようなチャットに適しています。
- 非対象範囲: 適用される法律や規制(貿易コンプライアンス法律を含む)に違反する方法での使用。英語以外の言語での使用。
- リリース日: 2024年6月8日
- バージョン: 1.0
- ライセンス: Llama3
- モデル開発者: Neural Magic
📦 インストール
このモデルは、vLLM >= 0.5.0を用いて推論が可能です。以下に、vLLMを用いたモデルのデプロイ例を示します。
💻 使用例
基本的な使用法
from vllm import LLM, SamplingParams
from transformers import AutoTokenizer
model_id = "neuralmagic/Meta-Llama-3-70B-Instruct-FP8"
sampling_params = SamplingParams(temperature=0.6, top_p=0.9, max_tokens=256)
tokenizer = AutoTokenizer.from_pretrained(model_id)
messages = [
{"role": "system", "content": "You are a pirate chatbot who always responds in pirate speak!"},
{"role": "user", "content": "Who are you?"},
]
prompts = tokenizer.apply_chat_template(messages, tokenize=False)
llm = LLM(model=model_id)
outputs = llm.generate(prompts, sampling_params)
generated_text = outputs[0].outputs[0].text
print(generated_text)
高度な使用法
from datasets import load_dataset
from transformers import AutoTokenizer
from auto_fp8 import AutoFP8ForCausalLM, BaseQuantizeConfig
pretrained_model_dir = "meta-llama/Meta-Llama-3-70B-Instruct"
quantized_model_dir = "Meta-Llama-3-70B-Instruct-FP8"
tokenizer = AutoTokenizer.from_pretrained(pretrained_model_dir, use_fast=True, model_max_length=4096)
tokenizer.pad_token = tokenizer.eos_token
ds = load_dataset("mgoin/ultrachat_2k", split="train_sft").select(range(512))
examples = [tokenizer.apply_chat_template(batch["messages"], tokenize=False) for batch in ds]
examples = tokenizer(examples, padding=True, truncation=True, return_tensors="pt").to("cuda")
quantize_config = BaseQuantizeConfig(
quant_method="fp8",
activation_scheme="dynamic",
ignore_patterns=["re:.*lm_head"],
)
model = AutoFP8ForCausalLM.from_pretrained(
pretrained_model_dir, quantize_config=quantize_config
)
model.quantize(examples)
model.save_quantized(quantized_model_dir)
📚 ドキュメント
モデル最適化
このモデルは、Meta-Llama-3-70B-Instructの重みと活性化をFP8データ型に量子化することで得られました。この最適化により、パラメータあたりのビット数が16から8に減少し、ディスクサイズとGPUメモリ要件が約50%削減されます。
トランスフォーマーブロック内の線形演算子の重みと活性化のみが量子化されます。対称的なパーテンソル量子化が適用され、単一の線形スケーリングが量子化された重みと活性化のFP8表現をマッピングします。AutoFP8が、512シーケンスのUltraChatを用いた量子化に使用されました。
評価
このモデルは、OpenLLMのリーダーボードタスク(バージョン1)で評価されました。評価には、lm-evaluation-harness(コミット383bbd54bc621086e05aa1b030d8d4d5635b25e6)とvLLMエンジンが使用され、以下のコマンドが実行されました。
lm_eval \
--model vllm \
--model_args pretrained="neuralmagic/Meta-Llama-3-70B-Instruct-FP8",dtype=auto,gpu_memory_utilization=0.4,add_bos_token=True,max_model_len=4096 \
--tasks openllm \
--batch_size auto
精度
Open LLM Leaderboard評価スコア
ベンチマーク |
Meta-Llama-3-70B-Instruct |
Meta-Llama-3-70B-Instruct-FP8(このモデル) |
回復率 |
MMLU (5-shot) |
80.18 |
80.06 |
99.85% |
ARC Challenge (25-shot) |
72.69 |
72.61 |
99.88% |
GSM-8K (5-shot, strict-match) |
92.49 |
91.12 |
98.51% |
Hellaswag (10-shot) |
85.50 |
85.41 |
99.89% |
Winogrande (5-shot) |
83.34 |
83.03 |
99.62% |
TruthfulQA (0-shot) |
62.90 |
62.73 |
99.72% |
平均 |
79.51 |
79.16 |
99.55% |
🔧 技術詳細
このモデルは、AutoFP8 with calibration samples from ultrachatを適用することで作成されました。ただし、Neural Magicは、AutoFP8ではサポートされていないいくつかの量子化スキームやモデルをサポートするllm-compressorの使用に移行しています。
📄 ライセンス
このモデルは、Llama3ライセンスの下で提供されています。