Llama-3.2-1B-Instruct-FP8-dynamic
简介
模型概述 - **模型架构:** Meta-Llama-3.2 - **输入:** 文本 - **输出:** 文本 - **模型优化:** - **权重量化:** FP8 - **激活量化:** FP8 - **预期用途:** 适用于多语言的商业和研究用途。与Lla类似
模型卡片
模型配置
模型详情
已翻译Llama-3.2-1B-Instruct-FP8-dynamic
模型概述
- 模型架构: Meta-Llama-3.2
- 输入: 文本
- 输出: 文本
- 模型优化:
- 权重量化: FP8
- 激活量化: FP8
- 预期用途: 适用于多语言的商业和研究用途。与 Llama-3.2-1B-Instruct 类似,该模型旨在用于类助手聊天场景。
- 超出范围: 任何违反适用法律或法规(包括贸易合规法律)的使用方式。非英语语言的使用。
- 发布日期: 2024年9月25日
- 版本: 1.0
- 许可证: llama3.2
- 模型开发者: Neural Magic
Llama-3.2-1B-Instruct 的量化版本。
在 OpenLLM 基准测试(版本1)的部分任务上,该模型平均得分为 50.88,而未量化模型得分为 51.70。
模型优化
该模型通过将 Llama-3.2-1B-Instruct 的权重和激活量化为 FP8 数据类型获得,可直接使用从源码构建的 vLLM 进行推理。
此优化将每个参数的位数从 16 位减少到 8 位,使磁盘大小和 GPU 内存需求降低约 50%。
仅量化 transformer 块内线性算子的权重和激活。采用对称逐通道量化,其中每个输出维度的线性缩放因子用于映射量化权重和激活的 FP8 表示。激活还基于逐 token 动态进行量化。
使用 LLM Compressor 进行量化。
部署
与 vLLM 配合使用
该模型可使用 vLLM 后端高效部署,如下例所示。
from vllm import LLM, SamplingParams
from transformers import AutoTokenizer
model_id = "neuralmagic/Llama-3.2-1B-Instruct-FP8-dynamic"
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)
vLLM 还支持 OpenAI 兼容的服务接口。更多详情请参阅 文档。
创建
该模型通过应用 LLM Compressor 创建,如下代码片段所示。
import torch
from transformers import AutoTokenizer
from llmcompressor.transformers import SparseAutoModelForCausalLM, oneshot
from llmcompressor.transformers.compression.helpers import ( # noqa
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: channel
dynamic: false
symmetric: true
input_activations:
num_bits: 8
type: float
strategy: token
dynamic: true
symmetric: true
targets: ["Linear"]
"""
model_stub = "meta-llama/Llama-3.2-1B-Instruct"
model_name = model_stub.split("/")[-1]
device_map = calculate_offload_device_map(
model_stub, reserve_for_hessians=False, num_gpus=1, torch_dtype="auto"
)
model = SparseAutoModelForCausalLM.from_pretrained(
model_stub, torch_dtype="auto", device_map=device_map
)
output_dir = f"./{model_name}-FP8-dynamic"
oneshot(
model=model,
recipe=recipe,
output_dir=output_dir,
save_compressed=True,
tokenizer=AutoTokenizer.from_pretrained(model_stub),
)
评估
该模型在 MMLU、ARC-Challenge、GSM-8K 和 Winogrande 上进行了评估。
评估使用 Neural Magic 分支的 lm-evaluation-harness(分支 llama_3.1_instruct)和 vLLM 引擎进行。
此版本的 lm-evaluation-harness 包含了与 Meta-Llama-3.1-Instruct-evals 提示风格相匹配的 ARC-Challenge、GSM-8K、MMLU 和 MMLU-cot 版本。
准确率
Open LLM Leaderboard 评估分数
基准测试
Llama-3.2-1B-Instruct
Llama-3.2-1B-Instruct-FP8-dynamic(本模型)
恢复率
MMLU(5-shot)
47.66
47.55
99.8%
MMLU-cot(0-shot)
47.10
46.79
99.3%
ARC Challenge(0-shot)
58.36
57.25
98.1%
GSM-8K-cot(8-shot,严格匹配)
45.72
45.94
100.5%
Winogrande(5-shot)
62.27
61.40
98.6%
Hellaswag(10-shot)
61.01
60.95
99.9%
TruthfulQA(0-shot, mc2)
43.52
44.23
101.6%
平均
52.24
52.02
99.7%
复现
使用以下命令获得上述结果:
MMLU
lm_eval \
--model vllm \
--model_args pretrained="neuralmagic/Llama-3.2-1B-Instruct-FP8-dynamic",dtype=auto,max_model_len=3850,max_gen_toks=10,tensor_parallel_size=1 \
--tasks mmlu_llama_3.1_instruct \
--fewshot_as_multiturn \
--apply_chat_template \
--num_fewshot 5 \
--batch_size auto
MMLU-CoT
lm_eval \
--model vllm \
--model_args pretrained="neuralmagic/Llama-3.2-1B-Instruct-FP8-dynamic",dtype=auto,max_model_len=4064,max_gen_toks=1024,tensor_parallel_size=1 \
--tasks mmlu_cot_0shot_llama_3.1_instruct \
--apply_chat_template \
--num_fewshot 0 \
--batch_size auto
ARC-Challenge
lm_eval \
--model vllm \
--model_args pretrained="neuralmagic/Llama-3.2-1B-Instruct-FP8-dynamic",dtype=auto,max_model_len=3940,max_gen_toks=100,tensor_parallel_size=1 \
--tasks arc_challenge_llama_3.1_instruct \
--apply_chat_template \
--num_fewshot 0 \
--batch_size auto
GSM-8K
lm_eval \
--model vllm \
--model_args pretrained="neuralmagic/Llama-3.2-1B-Instruct-FP8-dynamic",dtype=auto,max_model_len=4096,max_gen_toks=1024,tensor_parallel_size=1 \
--tasks gsm8k_cot_llama_3.1_instruct \
--fewshot_as_multiturn \
--apply_chat_template \
--num_fewshot 8 \
--batch_size auto
Hellaswag
lm_eval \
--model vllm \
--model_args pretrained="neuralmagic/Llama-3.2-1B-Instruct-FP8-dynamic",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/Llama-3.2-1B-Instruct-FP8-dynamic",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/Llama-3.2-1B-Instruct-FP8-dynamic",dtype=auto,add_bos_token=True,max_model_len=4096,tensor_parallel_size=1 \
--tasks truthfulqa \
--num_fewshot 0 \
--batch_size auto
正在翻译中,请稍候...
标签
操作
详细信息
- 厂商
- RedHatAI
- 任务
- text-generation
- 模型类型
- llama
- 许可(HF)
- llama3.2
- 语言
- en, de, fr, it, pt, hi, es, th