🚀 Meta-Llama-3.1-70B-FP8
Meta-Llama-3.1-70B-FP8は、Meta-Llama-3.1-70BをFP8データ型に量子化したモデルです。複数言語に対応し、商用および研究用途を想定しています。
🚀 クイックスタート
Meta-Llama-3.1-70B-FP8は、Meta-Llama-3.1-70Bの量子化バージョンです。このモデルは、複数言語に対応しており、商用および研究用途に使用できます。
✨ 主な機能
- 多言語対応:英語、ドイツ語、フランス語、イタリア語、ポルトガル語、ヒンディー語、スペイン語、タイ語など、複数の言語に対応しています。
- 量子化最適化:重みと活性化関数をFP8データ型に量子化することで、ディスクサイズとGPUメモリ要件を約50%削減します。
- 高い精度:OpenLLMベンチマークで平均79.70のスコアを達成しています。
📦 インストール
このモデルは、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-70B"
model_name = model_stub.split("/")[-1]
device_map = calculate_offload_device_map(
model_stub, reserve_for_hessians=False, num_gpus=2, 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-70Bの量子化バージョン |
入力 |
テキスト |
出力 |
テキスト |
重み量子化 |
FP8 |
活性化量子化 |
FP8 |
想定使用ケース |
商用および研究用途での複数言語対応 |
非対象用途 |
適用される法律や規制に違反する使用、英語以外の言語での使用 |
リリース日 |
2024年7月23日 |
バージョン |
1.0 |
ライセンス |
llama3.1 |
モデル開発者 |
Neural Magic |
モデル最適化
このモデルは、Meta-Llama-3.1-70Bの重みと活性化関数をFP8データ型に量子化することで得られました。この最適化により、パラメータごとのビット数が16から8に減少し、ディスクサイズとGPUメモリ要件が約50%削減されます。
評価
このモデルは、MMLU、ARC-Challenge、GSM-8K、Hellaswag、Winogrande、TruthfulQAで評価されました。評価は、Neural Magicフォークのlm-evaluation-harness(ブランチllama_3.1_instruct)とvLLMエンジンを使用して行われました。
精度
ベンチマーク |
Meta-Llama-3.1-70B |
Meta-Llama-3.1-70B-FP8 |
回復率 |
MMLU (5-shot) |
78.81 |
78.85 |
100.0% |
ARC Challenge (0-shot) |
93.43 |
93.43 |
100.0% |
GSM-8K (5-shot, strict-match) |
81.88 |
81.35 |
99.35% |
Hellaswag (10-shot) |
87.98 |
87.82 |
99.82% |
Winogrande (5-shot) |
85.78 |
85.87 |
100.1% |
TruthfulQA (0-shot) |
51.18 |
50.90 |
99.45% |
平均 |
79.84 |
79.70 |
99.82% |
再現方法
結果は、以下のコマンドを使用して得られました。
MMLU
lm_eval \
--model vllm \
--model_args pretrained="neuralmagic/Meta-Llama-3.1-70B-FP8",dtype=auto,add_bos_token=True,max_model_len=4096,tensor_parallel_size=2 \
--tasks mmlu \
--num_fewshot 5 \
--batch_size auto
ARC-Challenge
lm_eval \
--model vllm \
--model_args pretrained="neuralmagic/Meta-Llama-3.1-70B-FP8",dtype=auto,add_bos_token=True,max_model_len=4096,tensor_parallel_size=2 \
--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-70B-FP8",dtype=auto,add_bos_token=True,max_model_len=4096,tensor_parallel_size=2 \
--tasks gsm8k \
--num_fewshot 5 \
--batch_size auto
Hellaswag
lm_eval \
--model vllm \
--model_args pretrained="neuralmagic/Meta-Llama-3.1-70B-FP8",dtype=auto,add_bos_token=True,max_model_len=4096,tensor_parallel_size=2 \
--tasks hellaswag \
--num_fewshot 10 \
--batch_size auto
Winogrande
lm_eval \
--model vllm \
--model_args pretrained="neuralmagic/Meta-Llama-3.1-70B-FP8",dtype=auto,add_bos_token=True,max_model_len=4096,tensor_parallel_size=2 \
--tasks winogrande \
--num_fewshot 5 \
--batch_size auto
TruthfulQA
lm_eval \
--model vllm \
--model_args pretrained="neuralmagic/Meta-Llama-3.1-70B-FP8",dtype=auto,add_bos_token=True,max_model_len=4096,tensor_parallel_size=2 \
--tasks truthfulqa_mc \
--num_fewshot 0 \
--batch_size auto
🔧 技術詳細
このモデルは、LLM Compressorを使用して量子化されました。量子化には、UltraChatの512シーケンスが使用されました。
📄 ライセンス
このモデルは、llama3.1ライセンスの下で提供されています。