🚀 Meta-Llama-3.1-8B-FP8
Meta-Llama-3.1-8BのFP8量子化バージョンで、多言語の商用および研究用途に最適化されています。
🚀 クイックスタート
このモデルは、多言語の商用および研究用途を目的としています。Meta-Llama-3.1-8B の量子化バージョンで、vLLMを使用した推論に最適化されています。
✨ 主な機能
- モデルアーキテクチャ: Meta-Llama-3.1
- モデル最適化:
- 対応言語: 英語、ドイツ語、フランス語、イタリア語、ポルトガル語、ヒンディー語、スペイン語、タイ語
- 使用ケース: 多言語の商用および研究用途
- 非対象範囲: 適用される法律や規制に違反する使用、英語以外の言語での使用
- リリース日: 2024年7月23日
- バージョン: 1.0
- ライセンス: llama3.1
- モデル開発者: Neural Magic
📦 インストール
このモデルは、vLLMを使用して推論を行うことができます。vLLMのインストール方法については、公式ドキュメント を参照してください。
💻 使用例
基本的な使用法
import torch
from datasets import load_dataset
from transformers import AutoTokenizer
from llmcompressor.transformers import SparseAutoModelForCausalLM, oneshot
from llmcompressor.transformers.compression.helpers import (
calculate_offload_device_map,
custom_offload_device_map,
)
recipe = """
quant_stage:
quant_modifiers:
QuantizationModifier:
ignore: ["lm_head"]
config_groups:
group_0:
weights:
num_bits: 8
type: float
strategy: tensor
dynamic: false
symmetric: true
input_activations:
num_bits: 8
type: float
strategy: tensor
dynamic: false
symmetric: true
targets: ["Linear"]
"""
model_stub = "meta-llama/Meta-Llama-3.1-8B"
model_name = model_stub.split("/")[-1]
device_map = calculate_offload_device_map(
model_stub, reserve_for_hessians=False, num_gpus=1, torch_dtype=torch.float16
)
model = SparseAutoModelForCausalLM.from_pretrained(
model_stub, torch_dtype=torch.float16, device_map=device_map
)
tokenizer = AutoTokenizer.from_pretrained(model_stub)
output_dir = f"./{model_name}-FP8"
DATASET_ID = "HuggingFaceH4/ultrachat_200k"
DATASET_SPLIT = "train_sft"
NUM_CALIBRATION_SAMPLES = 512
MAX_SEQUENCE_LENGTH = 4096
ds = load_dataset(DATASET_ID, split=DATASET_SPLIT)
ds = ds.shuffle(seed=42).select(range(NUM_CALIBRATION_SAMPLES))
def preprocess(example):
return {
"text": tokenizer.apply_chat_template(
example["messages"],
tokenize=False,
)
}
ds = ds.map(preprocess)
def tokenize(sample):
return tokenizer(
sample["text"],
padding=False,
max_length=MAX_SEQUENCE_LENGTH,
truncation=True,
add_special_tokens=False,
)
ds = ds.map(tokenize, remove_columns=ds.column_names)
oneshot(
model=model,
output_dir=output_dir,
dataset=ds,
recipe=recipe,
max_seq_length=MAX_SEQUENCE_LENGTH,
num_calibration_samples=NUM_CALIBRATION_SAMPLES,
save_compressed=True,
)
📚 ドキュメント
モデル最適化
このモデルは、Meta-Llama-3.1-8B の重みと活性化をFP8データ型に量子化することで得られました。この最適化により、パラメータごとのビット数が16から8に減少し、ディスクサイズとGPUメモリ要件が約50%削減されます。
評価
このモデルは、MMLU、ARC-Challenge、GSM-8K、Hellaswag、Winogrande、TruthfulQAで評価されました。評価は、Neural Magicの lm-evaluation-harness フォーク (branch llama_3.1_instruct) と vLLM エンジンを使用して行われました。
精度
ベンチマーク |
Meta-Llama-3.1-8B |
Meta-Llama-3.1-8B-FP8 (このモデル) |
回復率 |
MMLU (5-shot) |
65.19 |
65.01 |
99.72% |
ARC Challenge (25-shot) |
78.84 |
77.73 |
98.59% |
GSM-8K (5-shot, strict-match) |
50.34 |
48.82 |
96.98% |
Hellaswag (10-shot) |
82.33 |
81.96 |
99.55% |
Winogrande (5-shot) |
77.98 |
78.06 |
100.10% |
TruthfulQA (0-shot, mc2) |
44.14 |
43.83 |
99.30% |
平均 |
66.47 |
65.90 |
99.14% |
再現方法
結果は、以下のコマンドを使用して得られました。
MMLU
lm_eval \
--model vllm \
--model_args pretrained="neuralmagic/Meta-Llama-3.1-8B-FP8",dtype=auto,add_bos_token=True,max_model_len=4096,tensor_parallel_size=1 \
--tasks mmlu \
--num_fewshot 5 \
--batch_size auto
ARC-Challenge
lm_eval \
--model vllm \
--model_args pretrained="neuralmagic/Meta-Llama-3.1-8B-FP8",dtype=auto,add_bos_token=True,max_model_len=4096,tensor_parallel_size=1 \
--tasks arc_challenge_llama_3.1_instruct \
--num_fewshot 25 \
--batch_size auto
GSM-8K
lm_eval \
--model vllm \
--model_args pretrained="neuralmagic/Meta-Llama-3.1-8B-FP8",dtype=auto,add_bos_token=True,max_model_len=4096,tensor_parallel_size=1 \
--tasks gsm8k \
--num_fewshot 5 \
--batch_size auto
Hellaswag
lm_eval \
--model vllm \
--model_args pretrained="neuralmagic/Meta-Llama-3.1-8B-FP8",dtype=auto,add_bos_token=True,max_model_len=4096,tensor_parallel_size=1 \
--tasks hellaswag \
--num_fewshot 10 \
--batch_size auto
Winogrande
lm_eval \
--model vllm \
--model_args pretrained="neuralmagic/Meta-Llama-3.1-8B-FP8",dtype=auto,add_bos_token=True,max_model_len=4096,tensor_parallel_size=1 \
--tasks winogrande \
--num_fewshot 5 \
--batch_size auto
TruthfulQA
lm_eval \
--model vllm \
--model_args pretrained="neuralmagic/Meta-Llama-3.1-8B-FP8",dtype=auto,add_bos_token=True,max_model_len=4096,tensor_parallel_size=1 \
--tasks truthfulqa \
--num_fewshot 0 \
--batch_size auto
🔧 技術詳細
このモデルは、LLM Compressor with calibration samples from UltraChat を使用して作成されました。量子化は、トランスフォーマーブロック内の線形演算子の重みと活性化のみに適用され、対称的なパーテンソル量子化が使用されています。
📄 ライセンス
このモデルは、llama3.1 ライセンスの下で提供されています。