模型库 / RedHatAI/Llama-3.2-1B-Instruct-FP8-dynamic

Llama-3.2-1B-Instruct-FP8-dynamic

RedHatAI text-generation en de fr
RedHatAI/Llama-3.2-1B-Instruct-FP8-dynamic
2,114,374
下载量
4
收藏数
18
浏览量
llama3.2
许可

简介

模型概述 - **模型架构:** Meta-Llama-3.2 - **输入:** 文本 - **输出:** 文本 - **模型优化:** - **权重量化:** FP8 - **激活量化:** FP8 - **预期用途:** 适用于多语言的商业和研究用途。与Lla类似

模型卡片

许可协议 llama3.2
语言
en de fr it pt hi es th
任务 text-generation
fp8 vllm

模型配置

模型类型 llama
架构 LlamaForCausalLM

模型详情

已翻译

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

标签

llama fp8 vllm conversational en de fr it pt

操作


详细信息

厂商
RedHatAI
任务
text-generation
模型类型
llama
许可(HF)
llama3.2
语言
en, de, fr, it, pt, hi, es, th