Meta Llama 3.1 8B Instruct Quantized.w4a16
Meta-Llama-3.1-8B-Instruct的量化版本,经过优化减少磁盘空间和GPU内存需求,适用于英文商业和研究用途的聊天助手场景。
下载量 27.51k
发布时间 : 7/26/2024
模型简介
这是一个经过INT4权重量化的8B参数大语言模型,专为英文聊天助手场景优化,适用于商业和研究用途。
模型特点
高效量化
采用INT4权重量化技术,减少75%的磁盘空间和GPU内存需求
高性能推理
支持vLLM后端部署,实现高效推理
商业用途
专为商业和研究用途优化,适用于助手类聊天场景
多平台支持
支持在Red Hat AI Inference Server、Red Hat Enterprise Linux AI和Red Hat Openshift AI等多种平台上部署
模型能力
英文文本生成
多轮对话
知识问答
指令跟随
使用案例
商业助手
客户服务聊天机器人
用于处理客户咨询和提供信息
能准确理解用户意图并提供相关回答
研究工具
知识问答系统
用于学术研究和知识检索
在MMLU等基准测试中表现优异
🚀 Meta-Llama-3.1-8B-Instruct-quantized.w4a16
Meta-Llama-3.1-8B-Instruct-quantized.w4a16 是 Meta-Llama-3.1-8B-Instruct 的量化版本,经过优化,能有效减少磁盘空间和 GPU 内存需求,适用于英文的商业和研究用途,可用于类似助手的聊天场景。
🚀 快速开始
本模型可使用 vLLM 后端进行高效部署,示例代码如下:
from vllm import LLM, SamplingParams
from transformers import AutoTokenizer
model_id = "neuralmagic/Meta-Llama-3.1-8B-Instruct-quantized.w4a16"
number_gpus = 1
max_model_len = 8192
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, add_generation_prompt=True, tokenize=False)
llm = LLM(model=model_id, tensor_parallel_size=number_gpus, max_model_len=max_model_len)
outputs = llm.generate(prompts, sampling_params)
generated_text = outputs[0].outputs[0].text
print(generated_text)
vLLM 还支持与 OpenAI 兼容的服务,更多详情请参阅 文档。
✨ 主要特性
- 模型架构:Meta-Llama-3,输入和输出均为文本。
- 模型优化:采用 INT4 权重量化,将每个参数的位数从 16 位减少到 4 位,磁盘大小和 GPU 内存需求约降低 75%。
- 预期用例:适用于英文的商业和研究用途,可用于类似助手的聊天场景。
- 适用范围外:禁止以任何违反适用法律法规(包括贸易合规法律)的方式使用,不支持英文以外的语言。
📦 安装指南
本模型可使用 vLLM 后端进行部署,示例代码如上。此外,还支持在不同平台上进行部署:
在 Red Hat AI Inference Server 上部署
podman run --rm -it --device nvidia.com/gpu=all -p 8000:8000 \
--ipc=host \
--env "HUGGING_FACE_HUB_TOKEN=$HF_TOKEN" \
--env "HF_HUB_OFFLINE=0" -v ~/.cache/vllm:/home/vllm/.cache \
--name=vllm \
registry.access.redhat.com/rhaiis/rh-vllm-cuda \
vllm serve \
--tensor-parallel-size 8 \
--max-model-len 32768 \
--enforce-eager --model RedHatAI/Meta-Llama-3.1-8B-Instruct-quantized.w4a16
更多详情请参阅 Red Hat AI Inference Server 文档。
在 Red Hat Enterprise Linux AI 上部署
# 从 Red Hat Registry 通过 docker 下载模型
# 注意:除非指定 --model-dir,否则模型将下载到 ~/.cache/instructlab/models
ilab model download --repository docker://registry.redhat.io/rhelai1/llama-3-1-8b-instruct-quantized-w4a16:1.5
# 通过 ilab 提供模型服务
ilab model serve --model-path ~/.cache/instructlab/models/llama-3-1-8b-instruct-quantized-w4a16
# 与模型进行聊天
ilab model chat --model ~/.cache/instructlab/models/llama-3-1-8b-instruct-quantized-w4a16
更多详情请参阅 Red Hat Enterprise Linux AI 文档。
在 Red Hat Openshift AI 上部署
# 设置带有 ServingRuntime 的 vllm 服务器
# 保存为: vllm-servingruntime.yaml
apiVersion: serving.kserve.io/v1alpha1
kind: ServingRuntime
metadata:
name: vllm-cuda-runtime # 可选更改: 设置唯一名称
annotations:
openshift.io/display-name: vLLM NVIDIA GPU ServingRuntime for KServe
opendatahub.io/recommended-accelerators: '["nvidia.com/gpu"]'
labels:
opendatahub.io/dashboard: 'true'
spec:
annotations:
prometheus.io/port: '8080'
prometheus.io/path: '/metrics'
multiModel: false
supportedModelFormats:
- autoSelect: true
name: vLLM
containers:
- name: kserve-container
image: quay.io/modh/vllm:rhoai-2.20-cuda # 如有需要更改。如果是 AMD: quay.io/modh/vllm:rhoai-2.20-rocm
command:
- python
- -m
- vllm.entrypoints.openai.api_server
args:
- "--port=8080"
- "--model=/mnt/models"
- "--served-model-name={{.Name}}"
env:
- name: HF_HOME
value: /tmp/hf_home
ports:
- containerPort: 8080
protocol: TCP
# 将模型附加到 vllm 服务器。这是一个 NVIDIA 模板
# 保存为: inferenceservice.yaml
apiVersion: serving.kserve.io/v1beta1
kind: InferenceService
metadata:
annotations:
openshift.io/display-name: llama-3-1-8b-instruct-quantized-w4a16 # 可选更改
serving.kserve.io/deploymentMode: RawDeployment
name: llama-3-1-8b-instruct-quantized-w4a16 # 指定模型名称。此值将用于在有效负载中调用模型
labels:
opendatahub.io/dashboard: 'true'
spec:
predictor:
maxReplicas: 1
minReplicas: 1
model:
modelFormat:
name: vLLM
name: ''
resources:
limits:
cpu: '2' # 这是特定于模型的
memory: 8Gi # 这是特定于模型的
nvidia.com/gpu: '1' # 这是特定于加速器的
requests: # 此块同理
cpu: '1'
memory: 4Gi
nvidia.com/gpu: '1'
runtime: vllm-cuda-runtime # 必须与上面的 ServingRuntime 名称匹配
storageUri: oci://registry.redhat.io/rhelai1/modelcar-llama-3-1-8b-instruct-quantized-w4a16:1.5
tolerations:
- effect: NoSchedule
key: nvidia.com/gpu
operator: Exists
# 首先确保位于要部署模型的项目中
# oc project <project-name>
# 应用两个资源以运行模型
# 应用 ServingRuntime
oc apply -f vllm-servingruntime.yaml
# 应用 InferenceService
oc apply -f qwen-inferenceservice.yaml
# 替换下面的 <inference-service-name> 和 <cluster-ingress-domain>:
# - 如果不确定,请运行 `oc get inferenceservice` 查找您的 URL。
# 使用 curl 调用服务器:
curl https://<inference-service-name>-predictor-default.<domain>/v1/chat/completions
-H "Content-Type: application/json" \
-d '{
"model": "llama-3-1-8b-instruct-quantized-w4a16",
"stream": true,
"stream_options": {
"include_usage": true
},
"max_tokens": 1,
"messages": [
{
"role": "user",
"content": "How can a bee fly when its wings are so small?"
}
]
}'
更多详情请参阅 Red Hat Openshift AI 文档。
💻 使用示例
基础用法
from vllm import LLM, SamplingParams
from transformers import AutoTokenizer
model_id = "neuralmagic/Meta-Llama-3.1-8B-Instruct-quantized.w4a16"
number_gpus = 1
max_model_len = 8192
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, add_generation_prompt=True, tokenize=False)
llm = LLM(model=model_id, tensor_parallel_size=number_gpus, max_model_len=max_model_len)
outputs = llm.generate(prompts, sampling_params)
generated_text = outputs[0].outputs[0].text
print(generated_text)
📚 详细文档
模型概述
属性 | 详情 |
---|---|
模型类型 | Meta-Llama-3 |
输入 | 文本 |
输出 | 文本 |
模型优化 | 权重量化:INT4 |
预期用例 | 适用于英文的商业和研究用途,用于类似助手的聊天场景 |
适用范围外 | 以任何违反适用法律法规(包括贸易合规法律)的方式使用;使用英文以外的语言 |
发布日期 | 2024 年 7 月 26 日 |
版本 | 1.0 |
许可证 | Llama3.1 |
模型开发者 | Neural Magic |
模型创建
本模型通过应用 AutoGPTQ 库创建,代码示例如下:
from transformers import AutoTokenizer
from auto_gptq import AutoGPTQForCausalLM, BaseQuantizeConfig
from datasets import load_dataset
model_id = "meta-llama/Meta-Llama-3.1-8B-Instruct"
num_samples = 756
max_seq_len = 4064
tokenizer = AutoTokenizer.from_pretrained(model_id)
def preprocess_fn(example):
return {"text": tokenizer.apply_chat_template(example["messages"], add_generation_prompt=False, tokenize=False)}
ds = load_dataset("neuralmagic/LLM_compression_calibration", split="train")
ds = ds.shuffle().select(range(num_samples))
ds = ds.map(preprocess_fn)
examples = [tokenizer(example["text"], padding=False, max_length=max_seq_len, truncation=True) for example in ds]
quantize_config = BaseQuantizeConfig(
bits=4,
group_size=128,
desc_act=True,
model_file_base_name="model",
damp_percent=0.1,
)
model = AutoGPTQForCausalLM.from_pretrained(
model_id,
quantize_config,
device_map="auto",
)
model.quantize(examples)
model.save_pretrained("Meta-Llama-3.1-8B-Instruct-quantized.w4a16")
模型评估
本模型在 Arena-Hard、OpenLLM v1、OpenLLM v2、HumanEval 和 HumanEval+ 等知名基准测试中进行了评估,所有情况下,模型输出均使用 vLLM 引擎生成。
准确率
类别 | 基准测试 | Meta-Llama-3.1-8B-Instruct | Meta-Llama-3.1-8B-Instruct-quantized.w4a16 (本模型) | 恢复率 |
---|---|---|---|---|
LLM 作为评判 | Arena Hard | 25.8 (25.1 / 26.5) | 27.2 (27.6 / 26.7) | 105.4% |
OpenLLM v1 | MMLU (5-shot) | 68.3 | 66.9 | 97.9% |
OpenLLM v1 | MMLU (CoT, 0-shot) | 72.8 | 71.1 | 97.6% |
OpenLLM v1 | ARC Challenge (0-shot) | 81.4 | 80.2 | 98.0% |
OpenLLM v1 | GSM-8K (CoT, 8-shot, strict-match) | 82.8 | 82.9 | 100.2% |
OpenLLM v1 | Hellaswag (10-shot) | 80.5 | 79.9 | 99.3% |
OpenLLM v1 | Winogrande (5-shot) | 78.1 | 78.0 | 99.9% |
OpenLLM v1 | TruthfulQA (0-shot, mc2) | 54.5 | 52.8 | 96.9% |
OpenLLM v1 | 平均 | 74.3 | 73.5 | 98.9% |
OpenLLM v2 | MMLU-Pro (5-shot) | 30.8 | 28.8 | 93.6% |
OpenLLM v2 | IFEval (0-shot) | 77.9 | 76.3 | 98.0% |
OpenLLM v2 | BBH (3-shot) | 30.1 | 28.9 | 96.1% |
OpenLLM v2 | Math-lvl-5 (4-shot) | 15.7 | 14.8 | 94.4% |
OpenLLM v2 | GPQA (0-shot) | 3.7 | 4.0 | 109.8% |
OpenLLM v2 | MuSR (0-shot) | 7.6 | 6.3 | 83.2% |
OpenLLM v2 | 平均 | 27.6 | 26.5 | 96.1% |
编码 | HumanEval pass@1 | 67.3 | 67.1 | 99.7% |
编码 | HumanEval+ pass@1 | 60.7 | 59.1 | 97.4% |
多语言 | 葡萄牙语 MMLU (5-shot) | 59.96 | 58.69 | 97.9% |
多语言 | 西班牙语 MMLU (5-shot) | 60.25 | 58.39 | 96.9% |
多语言 | 意大利语 MMLU (5-shot) | 59.23 | 57.82 | 97.6% |
多语言 | 德语 MMLU (5-shot) | 58.63 | 56.22 | 95.9% |
多语言 | 法语 MMLU (5-shot) | 59.65 | 57.58 | 96.5% |
多语言 | 印地语 MMLU (5-shot) | 50.10 | 47.14 | 94.1% |
多语言 | 泰语 MMLU (5-shot) | 49.12 | 46.72 | 95.1% |
结果复现
以下是复现评估结果的命令:
MMLU
lm_eval \
--model vllm \
--model_args pretrained="neuralmagic/Meta-Llama-3.1-8B-Instruct-quantized.w4a16",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/Meta-Llama-3.1-8B-Instruct-quantized.w4a16",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/Meta-Llama-3.1-8B-Instruct-quantized.w4a16",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/Meta-Llama-3.1-8B-Instruct-quantized.w4a16",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/Meta-Llama-3.1-8B-Instruct-quantized.w4a16",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-Instruct-quantized.w4a16",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-Instruct-quantized.w4a16",dtype=auto,add_bos_token=True,max_model_len=4096,tensor_parallel_size=1 \
--tasks truthfulqa \
--num_fewshot 0 \
--batch_size auto
OpenLLM v2
lm_eval \
--model vllm \
--model_args pretrained="neuralmagic/Meta-Llama-3.1-8B-Instruct-quantized.w4a16",dtype=auto,max_model_len=4096,tensor_parallel_size=1,enable_chunked_prefill=True \
--apply_chat_template \
--fewshot_as_multiturn \
--tasks leaderboard \
--batch_size auto
MMLU 葡萄牙语
lm_eval \
--model vllm \
--model_args pretrained="neuralmagic/Meta-Llama-3.1-8B-Instruct-quantized.w4a16",dtype=auto,max_model_len=3850,max_gen_toks=10,tensor_parallel_size=1 \
--tasks mmlu_pt_llama_3.1_instruct \
--fewshot_as_multiturn \
--apply_chat_template \
--num_fewshot 5 \
--batch_size auto
MMLU 西班牙语
lm_eval \
--model vllm \
--model_args pretrained="neuralmagic/Meta-Llama-3.1-8B-Instruct-quantized.w4a16",dtype=auto,max_model_len=3850,max_gen_toks=10,tensor_parallel_size=1 \
--tasks mmlu_es_llama_3.1_instruct \
--fewshot_as_multiturn \
--apply_chat_template \
--num_fewshot 5 \
--batch_size auto
MMLU 意大利语
lm_eval \
--model vllm \
--model_args pretrained="neuralmagic/Meta-Llama-3.1-8B-Instruct-quantized.w4a16",dtype=auto,max_model_len=3850,max_gen_toks=10,tensor_parallel_size=1 \
--tasks mmlu_it_llama_3.1_instruct \
--fewshot_as_multiturn \
--apply_chat_template \
--num_fewshot 5 \
--batch_size auto
MMLU 德语
lm_eval \
--model vllm \
--model_args pretrained="neuralmagic/Meta-Llama-3.1-8B-Instruct-quantized.w4a16",dtype=auto,max_model_len=3850,max_gen_toks=10,tensor_parallel_size=1 \
--tasks mmlu_de_llama_3.1_instruct \
--fewshot_as_multiturn \
--apply_chat_template \
--num_fewshot 5 \
--batch_size auto
MMLU 法语
lm_eval \
--model vllm \
--model_args pretrained="neuralmagic/Meta-Llama-3.1-8B-Instruct-quantized.w4a16",dtype=auto,max_model_len=3850,max_gen_toks=10,tensor_parallel_size=1 \
--tasks mmlu_fr_llama_3.1_instruct \
--fewshot_as_multiturn \
--apply_chat_template \
--num_fewshot 5 \
--batch_size auto
MMLU 印地语
lm_eval \
--model vllm \
--model_args pretrained="neuralmagic/Meta-Llama-3.1-8B-Instruct-quantized.w4a16",dtype=auto,max_model_len=3850,max_gen_toks=10,tensor_parallel_size=1 \
--tasks mmlu_hi_llama_3.1_instruct \
--fewshot_as_multiturn \
--apply_chat_template \
--num_fewshot 5 \
--batch_size auto
MMLU 泰语
lm_eval \
--model vllm \
--model_args pretrained="neuralmagic/Meta-Llama-3.1-8B-Instruct-quantized.w4a16",dtype=auto,max_model_len=3850,max_gen_toks=10,tensor_parallel_size=1 \
--tasks mmlu_th_llama_3.1_instruct \
--fewshot_as_multiturn \
--apply_chat_template \
--num_fewshot 5 \
--batch_size auto
🔧 技术细节
模型优化细节
本模型通过将 Meta-Llama-3.1-8B-Instruct 的权重量化为 INT4 数据类型获得。仅对 Transformer 块内线性算子的权重进行量化,采用对称的每组量化,即每组 128 个参数进行线性缩放,以映射量化权重的 INT4 和浮点表示。使用 AutoGPTQ 进行量化,阻尼因子为 10%,并从 Neural Magic 的 LLM 压缩校准数据集 中选取 768 个序列。
模型创建细节
使用 AutoGPTQ 库创建模型,代码如下:
from transformers import AutoTokenizer
from auto_gptq import AutoGPTQForCausalLM, BaseQuantizeConfig
from datasets import load_dataset
model_id = "meta-llama/Meta-Llama-3.1-8B-Instruct"
num_samples = 756
max_seq_len = 4064
tokenizer = AutoTokenizer.from_pretrained(model_id)
def preprocess_fn(example):
return {"text": tokenizer.apply_chat_template(example["messages"], add_generation_prompt=False, tokenize=False)}
ds = load_dataset("neuralmagic/LLM_compression_calibration", split="train")
ds = ds.shuffle().select(range(num_samples))
ds = ds.map(preprocess_fn)
examples = [tokenizer(example["text"], padding=False, max_length=max_seq_len, truncation=True) for example in ds]
quantize_config = BaseQuantizeConfig(
bits=4,
group_size=128,
desc_act=True,
model_file_base_name="model",
damp_percent=0.1,
)
model = AutoGPTQForCausalLM.from_pretrained(
model_id,
quantize_config,
device_map="auto",
)
model.quantize(examples)
model.save_pretrained("Meta-Llama-3.1-8B-Instruct-quantized.w4a16")
📄 许可证
本模型使用 Llama3.1 许可证。
Phi 2 GGUF
其他
Phi-2是微软开发的一个小型但强大的语言模型,具有27亿参数,专注于高效推理和高质量文本生成。
大型语言模型 支持多种语言
P
TheBloke
41.5M
205
Roberta Large
MIT
基于掩码语言建模目标预训练的大型英语语言模型,采用改进的BERT训练方法
大型语言模型 英语
R
FacebookAI
19.4M
212
Distilbert Base Uncased
Apache-2.0
DistilBERT是BERT基础模型的蒸馏版本,在保持相近性能的同时更轻量高效,适用于序列分类、标记分类等自然语言处理任务。
大型语言模型 英语
D
distilbert
11.1M
669
Llama 3.1 8B Instruct GGUF
Meta Llama 3.1 8B Instruct 是一个多语言大语言模型,针对多语言对话用例进行了优化,在常见的行业基准测试中表现优异。
大型语言模型 英语
L
modularai
9.7M
4
Xlm Roberta Base
MIT
XLM-RoBERTa是基于100种语言的2.5TB过滤CommonCrawl数据预训练的多语言模型,采用掩码语言建模目标进行训练。
大型语言模型 支持多种语言
X
FacebookAI
9.6M
664
Roberta Base
MIT
基于Transformer架构的英语预训练模型,通过掩码语言建模目标在海量文本上训练,支持文本特征提取和下游任务微调
大型语言模型 英语
R
FacebookAI
9.3M
488
Opt 125m
其他
OPT是由Meta AI发布的开放预训练Transformer语言模型套件,参数量从1.25亿到1750亿,旨在对标GPT-3系列性能,同时促进大规模语言模型的开放研究。
大型语言模型 英语
O
facebook
6.3M
198
1
基于transformers库的预训练模型,适用于多种NLP任务
大型语言模型
Transformers

1
unslothai
6.2M
1
Llama 3.1 8B Instruct
Llama 3.1是Meta推出的多语言大语言模型系列,包含8B、70B和405B参数规模,支持8种语言和代码生成,优化了多语言对话场景。
大型语言模型
Transformers 支持多种语言

L
meta-llama
5.7M
3,898
T5 Base
Apache-2.0
T5基础版是由Google开发的文本到文本转换Transformer模型,参数规模2.2亿,支持多语言NLP任务。
大型语言模型 支持多种语言
T
google-t5
5.4M
702
精选推荐AI模型
Llama 3 Typhoon V1.5x 8b Instruct
专为泰语设计的80亿参数指令模型,性能媲美GPT-3.5-turbo,优化了应用场景、检索增强生成、受限生成和推理任务
大型语言模型
Transformers 支持多种语言

L
scb10x
3,269
16
Cadet Tiny
Openrail
Cadet-Tiny是一个基于SODA数据集训练的超小型对话模型,专为边缘设备推理设计,体积仅为Cosmo-3B模型的2%左右。
对话系统
Transformers 英语

C
ToddGoldfarb
2,691
6
Roberta Base Chinese Extractive Qa
基于RoBERTa架构的中文抽取式问答模型,适用于从给定文本中提取答案的任务。
问答系统 中文
R
uer
2,694
98