Llama 2最完整模型版本:7B/13B/70B参数选择指南
【免费下载链接】llama Llama 模型的推理代码。 项目地址: https://gitcode.com/GitHub_Trending/lla/llama
引言:你是否正在为Llama 2模型参数选择而困惑?
在人工智能(AI)大语言模型(LLM)快速发展的今天,选择合适的模型参数规模成为了开发者和研究者面临的关键挑战。Llama 2作为Meta推出的开源大语言模型,提供了7B、13B和70B三种参数规模,每种规模都有其独特的优势和适用场景。你是否在纠结于应该选择哪种参数规模的模型来满足你的需求?是追求极致性能还是更注重资源效率?本文将为你提供一份全面的Llama 2模型参数选择指南,帮助你根据实际需求做出明智的决策。
读完本文,你将能够:
- 了解Llama 2不同参数规模模型的基本特性和性能表现
- 掌握各模型在不同应用场景下的适用性
- 明确选择模型时需要考虑的关键因素
- 学会根据硬件条件和任务需求选择合适的Llama 2模型
- 获取各模型的部署和使用示例
Llama 2模型家族概述
Llama 2是Meta开发和发布的一系列大型语言模型,包括预训练模型和微调模型,参数规模从70亿到700亿不等。其中,微调模型Llama-2-Chat专为对话场景优化,在大多数基准测试中表现优于开源聊天模型,在人类对 helpfulness 和安全性的评估中,与ChatGPT和PaLM等流行的闭源模型相当。
模型基本信息
| 模型 | 参数规模 | 上下文长度 | Grouped-Query Attention (GQA) | 训练数据量 | 学习率 |
|---|---|---|---|---|---|
| Llama 2 | 7B | 4k | ❌ | 2.0T | 3.0 x 10-4 |
| Llama 2 | 13B | 4k | ❌ | 2.0T | 3.0 x 10-4 |
| Llama 2 | 70B | 4k | ✅ | 2.0T | 1.5 x 10-4 |
所有模型都支持长达4096个token的序列长度,但缓存是根据max_seq_len和max_batch_size值预分配的,因此需要根据硬件条件进行设置。
模型架构
Llama 2是一种自回归语言模型,采用了优化的Transformer架构。微调版本使用监督微调(SFT)和人类反馈强化学习(RLHF)来 align 人类对 helpfulness 和安全性的偏好。
各参数规模模型性能对比
学术基准测试表现
以下是Llama 1和Llama 2模型在标准学术基准测试上的结果:
| 模型 | 规模 | Code | Commonsense Reasoning | World Knowledge | Reading Comprehension | Math | MMLU | BBH | AGI Eval |
|---|---|---|---|---|---|---|---|---|---|
| Llama 1 | 7B | 14.1 | 60.8 | 46.2 | 58.5 | 6.95 | 35.1 | 30.3 | 23.9 |
| Llama 1 | 13B | 18.9 | 66.1 | 52.6 | 62.3 | 10.9 | 46.9 | 37.0 | 33.9 |
| Llama 1 | 33B | 26.0 | 70.0 | 58.4 | 67.6 | 21.4 | 57.8 | 39.8 | 41.7 |
| Llama 1 | 65B | 30.7 | 70.7 | 60.5 | 68.6 | 30.8 | 63.4 | 43.5 | 47.6 |
| Llama 2 | 7B | 16.8 | 63.9 | 48.9 | 61.3 | 14.6 | 45.3 | 32.6 | 29.3 |
| Llama 2 | 13B | 24.5 | 66.9 | 55.4 | 65.8 | 28.7 | 54.8 | 39.4 | 39.1 |
| Llama 2 | 70B | 37.5 | 71.9 | 63.6 | 69.4 | 35.2 | 68.9 | 51.2 | 54.2 |
注:Code:HumanEval和MBPP的平均pass@1分数;Commonsense Reasoning:PIQA、SIQA、HellaSwag、WinoGrande、ARC easy and challenge、OpenBookQA和CommonsenseQA的平均值;World Knowledge:NaturalQuestions和TriviaQA的5-shot性能平均值;Reading Comprehension:SQuAD、QuAC和BoolQ的0-shot平均值;MATH:GSM8K(8 shot)和MATH(4 shot)的平均值。
从结果可以看出,随着参数规模的增加,模型在各项任务上的表现总体呈上升趋势。Llama 2 70B在所有任务中都表现最佳,尤其是在代码生成(37.5)、常识推理(71.9)和MMLU(68.9)等任务上。
安全性能评估
预训练LLM在自动安全基准上的评估
| 模型 | 规模 | TruthfulQA | Toxigen |
|---|---|---|---|
| Llama 1 | 7B | 27.42 | 23.00 |
| Llama 1 | 13B | 41.74 | 23.08 |
| Llama 1 | 33B | 44.19 | 22.57 |
| Llama 1 | 65B | 48.71 | 21.77 |
| Llama 2 | 7B | 33.29 | 21.25 |
| Llama 2 | 13B | 41.86 | 26.10 |
| Llama 2 | 70B | 50.18 | 24.60 |
注:TruthfulQA:既真实又有信息量的生成百分比(越高越好);Toxigen:有毒生成的百分比(越低越好)。
微调LLM在不同安全数据集上的评估
| 模型 | 规模 | TruthfulQA | Toxigen |
|---|---|---|---|
| Llama-2-Chat | 7B | 57.04 | 0.00 |
| Llama-2-Chat | 13B | 62.18 | 0.00 |
| Llama-2-Chat | 70B | 64.14 | 0.01 |
微调后的Llama-2-Chat模型在安全性能上有显著提升,尤其是在Toxigen指标上表现出色,7B和13B模型的有毒生成百分比均为0。
模型选择关键因素
选择合适的Llama 2模型参数规模需要考虑以下关键因素:
1. 应用场景
- 7B模型:适用于资源受限的环境、边缘设备部署、简单的文本生成任务、原型开发和教育目的。
- 13B模型:平衡了性能和资源需求,适用于中等规模的自然语言处理任务、对话系统、内容创作和一般研究用途。
- 70B模型:适用于高性能需求的场景,如复杂的文本理解、高级推理任务、专业领域应用和研究前沿探索。
2. 硬件资源
不同参数规模的模型对硬件资源的要求差异很大:
训练资源需求
| 模型 | 训练时间(GPU小时) | 功耗(W) | 碳排放(tCO2eq) |
|---|---|---|---|
| Llama 2 7B | 184320 | 400 | 31.22 |
| Llama 2 13B | 368640 | 400 | 62.44 |
| Llama 2 70B | 1720320 | 400 | 291.42 |
推理资源需求
- 7B模型:可以在单个GPU上运行,甚至在性能较强的CPU上也能运行。推荐配置:至少8GB显存的GPU。
- 13B模型:需要更强大的GPU支持。推荐配置:16GB或以上显存的GPU。
- 70B模型:需要多GPU支持或高性能GPU。根据模型并行(MP)值,70B模型需要8个GPU。推荐配置:多个A100或同等性能的GPU。
不同模型需要不同的模型并行(MP)值:
| 模型 | MP值 |
|---|---|
| 7B | 1 |
| 13B | 2 |
| 70B | 8 |
3. 性能需求
根据任务的复杂度和性能要求选择合适的模型:
- 简单任务(如文本分类、简单问答):7B模型通常足够。
- 中等复杂度任务(如对话生成、摘要):13B模型可能是最佳选择。
- 复杂任务(如高级推理、代码生成、专业领域问答):70B模型能提供最佳性能。
4. 成本预算
- 7B模型:硬件成本最低,适合预算有限的项目。
- 13B模型:硬件成本适中,性价比较高。
- 70B模型:硬件成本最高,适合有充足预算的大型项目或研究机构。
模型选择决策流程图
各模型部署与使用示例
环境准备
- 克隆仓库并下载模型权重和tokenizer:
git clone https://gitcode.com/GitHub_Trending/lla/llama
cd llama
- 安装依赖:
pip install -e .
- 下载模型(需要访问权限):
./download.sh
7B模型使用示例
文本生成
torchrun --nproc_per_node 1 example_text_completion.py \
--ckpt_dir llama-2-7b/ \
--tokenizer_path tokenizer.model \
--max_seq_len 128 --max_batch_size 4
对话生成
torchrun --nproc_per_node 1 example_chat_completion.py \
--ckpt_dir llama-2-7b-chat/ \
--tokenizer_path tokenizer.model \
--max_seq_len 512 --max_batch_size 6
13B模型使用示例
文本生成
torchrun --nproc_per_node 2 example_text_completion.py \
--ckpt_dir llama-2-13b/ \
--tokenizer_path tokenizer.model \
--max_seq_len 128 --max_batch_size 4
对话生成
torchrun --nproc_per_node 2 example_chat_completion.py \
--ckpt_dir llama-2-13b-chat/ \
--tokenizer_path tokenizer.model \
--max_seq_len 512 --max_batch_size 6
70B模型使用示例
文本生成
torchrun --nproc_per_node 8 example_text_completion.py \
--ckpt_dir llama-2-70b/ \
--tokenizer_path tokenizer.model \
--max_seq_len 128 --max_batch_size 4
对话生成
torchrun --nproc_per_node 8 example_chat_completion.py \
--ckpt_dir llama-2-70b-chat/ \
--tokenizer_path tokenizer.model \
--max_seq_len 512 --max_batch_size 6
Python API使用示例
from llama import Llama, Dialog
# 初始化模型
generator = Llama.build(
ckpt_dir="llama-2-7b-chat/",
tokenizer_path="tokenizer.model",
max_seq_len=512,
max_batch_size=6,
)
# 定义对话
dialogs: List[Dialog] = [
[{"role": "user", "content": "what is the recipe of mayonnaise?"}],
[
{"role": "user", "content": "I am going to Paris, what should I see?"},
{
"role": "assistant",
"content": """\
Paris, the capital of France, is known for its stunning architecture, art museums, historical landmarks, and romantic atmosphere. Here are some of the top attractions to see in Paris:
1. The Eiffel Tower: The iconic Eiffel Tower is one of the most recognizable landmarks in the world and offers breathtaking views of the city.
2. The Louvre Museum: The Louvre is one of the world's largest and most famous museums, housing an impressive collection of art and artifacts, including the Mona Lisa.
3. Notre-Dame Cathedral: This beautiful cathedral is one of the most famous landmarks in Paris and is known for its Gothic architecture and stunning stained glass windows.
These are just a few of the many attractions that Paris has to offer. With so much to see and do, it's no wonder that Paris is one of the most popular tourist destinations in the world.""",
},
{"role": "user", "content": "What is so great about #1?"},
],
]
# 生成对话
results = generator.chat_completion(
dialogs,
max_gen_len=None,
temperature=0.6,
top_p=0.9,
)
# 输出结果
for dialog, result in zip(dialogs, results):
for msg in dialog:
print(f"{msg['role'].capitalize()}: {msg['content']}\n")
print(f"> {result['generation']['role'].capitalize()}: {result['generation']['content']}")
print("\n==================================\n")
模型调优建议
7B模型调优
对于7B模型,建议重点关注:
- 轻量级微调方法,如LoRA(Low-Rank Adaptation)
- 针对特定任务的少量样本微调
- 推理优化,如量化和剪枝
13B模型调优
对于13B模型,可以考虑:
- 中等规模的微调
- 特定领域知识注入
- 模型蒸馏,将知识迁移到更小的模型
70B模型调优
对于70B模型,建议:
- 充分利用模型的强大能力,进行复杂任务的微调
- 结合人类反馈的强化学习(RLHF)进一步提升性能
- 多任务学习,同时优化多个相关任务
结论与展望
Llama 2模型家族提供了7B、13B和70B三种参数规模,满足不同场景和需求。选择合适的模型需要综合考虑应用场景、硬件条件、性能需求和成本预算等因素。
- 7B模型:资源需求低,适合原型开发、简单任务和资源受限环境。
- 13B模型:平衡性能和资源需求,适合大多数中等规模的NLP任务。
- 70B模型:性能最强,适合复杂任务和高性能需求场景,但资源需求高。
随着硬件技术的进步和模型优化方法的发展,我们有理由相信,在不久的将来,更大规模、更强性能的模型将变得更加普及和易用。同时,针对特定领域的优化和微调也将成为Llama 2模型应用的重要方向。
无论你选择哪种参数规模的模型,Llama 2都为你提供了一个强大而灵活的基础,可以根据你的具体需求进行定制和优化。希望本文的指南能够帮助你做出明智的选择,充分发挥Llama 2模型的潜力。
如果你觉得本文对你有帮助,请点赞、收藏并关注我们,以获取更多关于Llama 2和其他AI技术的最新资讯和实用指南。下期我们将带来Llama 2模型微调实战教程,敬请期待!
【免费下载链接】llama Llama 模型的推理代码。 项目地址: https://gitcode.com/GitHub_Trending/lla/llama
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考



