深入解析 Llama 3:Meta 的新一代底子模型及其技术突破

打印 上一主题 下一主题

主题 554|帖子 554|积分 1662

深入解析 Llama 3:Meta 的新一代底子模型及其技术突破


在人工智能领域,底子模型(Foundation Models)正渐渐成为推动技术进步的核心气力。Meta 最新发布的 Llama 3 模型,以其杰出的性能和广泛的应用本领,再次引领了行业的发展。论文《The Llama 3 Herd of Models》将深入解析 Llama 3 的技术细节、创新点以及其在多语言、编程、推理和工具使用等领域的表现。
论文信息



  • 标题:The Llama 3 Herd of Models
  • 作者:Llama Team, AI @ Meta
  • 发表日期:2024年7月23日
  • 论文链接:https://arxiv.org/pdf/2407.21783v3
  • 项目网站:https://llama.meta.com/
1. Llama 3 概述

Llama 3 是 Meta 团队开辟的一系列底子模型,旨在通过大规模预练习和微调来支持多种 AI 使命。Llama 3 的最大版本拥有 4050 亿参数,是一个密集的 Transformer 模型,能够处理长达 128K 个标记 的上下文窗口。这一本领使其在处理长文本使命时具有显著上风。
2. 预练习:数据与架构

2.1 数据

Llama 3 的预练习数据量到达了 15T 的多语言标记,相比 Llama 2 的 1.8T 数据有了显著提升。这些数据来自网页、代码、数学内容等,经过严格的清洗和过滤,以确保数据质量。比方,团队通过多种去重方法(如 URL 级别、文档级别和行级别去重)和启发式过滤(如去除重复内容、成人内容等)来提高数据的纯净度。
2.2 架构

Llama 3 使用了标准的 Transformer 架构,具有以下关键特性:


  • 126 层,每层有 16384 维的标记表现128 个注意力头
  • 使用了 分组查询注意力(GQA)旋转位置嵌入(RoPE),以提高计算效率和处理长序列的本领。
  • 词汇表大小为 128K,结合了来自 tiktoken 的 100K 标记和额外的 28K 非英语标记,以更好地支持多语言。
2.3 练习规模

Llama 3 的预练习使用了 3.8×10²⁵ FLOPs 的计算量,险些是 Llama 2 的 50 倍。练习过程中逐步增长上下文长度,从 8K 增长到 128K。这一过程不仅提高了模型对长文本的明白本领,还确保了模型在不同长度的上下文中的鲁棒性。
2.4 练习底子办法

Llama 3 的练习在 Meta 的生产集群上进行,使用了 16K H100 GPU,每块 GPU 配备 80GB HBM3700W TDP。练习过程中接纳了 4D 并行化技术,包罗张量并行、流水线并行、上下文并行和数据并行。这种并行化策略不仅提高了练习效率,还确保了模型在大规模练习中的稳定性。
3. 微调:指令微调与偏好优化

3.1 指令微调(Supervised Finetuning, SFT)

在预练习的底子上,Llama 3 进行了多轮指令微调,以更好地遵循人类指令并提高特定本领(如编程和推理)。通过使用人类标注的指令数据,模型能够更准确地明白使命要求并天生高质量的答复。
3.2 偏好优化(Direct Preference Optimization, DPO)

偏好优化是 Llama 3 微调过程中的另一个关键步骤。通过使用人类标注的偏好数据,模型能够进一步对齐人类偏好,从而天生更符合人类渴望的答复。DPO 通过对比不同答复的质量,练习模型更倾向于天生高质量的答复。
4. 多语言、编程和推理本领

4.1 多语言支持

Llama 3 支持 8 种语言,包罗英语、德语、法语、意大利语、葡萄牙语、印地语、西班牙语和泰语。通过在多语言数据上进行预练习和微调,模型能够明白和天生多种语言的内容,从而在跨语言使命中表现精彩。
4.2 编程本领

Llama 3 在编程使命上表现精彩,能够天生高质量的代码片段。通过在代码数据上进行预练习和微调,模型能够明白代码的布局和逻辑,从而天生更准确的代码。别的,Llama 3 还能够进行代码调试和优化,进一步提升了其在编程领域的实用性。
4.3 推理本领

Llama 3 在推理使命上也表现精彩,能够解决复杂的数学题目和逻辑推理使命。通过在推理数据上进行预练习和微调,模型能够更好地明白题目的布局和逻辑,从而天生更准确的答案。比方,在 GSM8KMATH 基准测试中,Llama 3 405B 的表现接近 GPT-4。
5. 工具使用

Llama 3 被练习为能够使用工具(如搜索引擎、代码解释器等)来加强其解决题目的本领。通过在工具使用数据上进行微调,模型能够更有用地利用外部资源来完成使命。比方,在 NexusBFCL 基准测试中,Llama 3 405B 的表现接近或超过了其他领先的模型。
6. 性能评估

6.1 基准测试

Llama 3 在多个标准基准测试中表现精彩,与 GPT-4 等领先模型相当。比方:


  • MMLU(多使命语言明白)基准测试中,Llama 3 405B 的 5-shot 准确率为 87.3%,接近 GPT-4 的 89.1%
  • GSM8K(数学题目解决)基准测试中,Llama 3 405B 的准确率为 96.8%,接近 GPT-4 的 96.1%
  • HumanEval(代码天生)基准测试中,Llama 3 405B 的通过率为 89.0%,接近 GPT-4 的 90.2%
6.2 人类评估

除了基准测试,Llama 3 还进行了广泛的人类评估。通过与 GPT-4 等模型进行对比,Llama 3 在多个使命上表现精彩,尤其是在多语言和长文本使命中。比方,在 多语言对话长文本问答 使命中,Llama 3 的表现与 GPT-4 平分秋色。
7. 安全性

Llama 3 在安全性方面也进行了大量工作,确保模型天生的内容符合道德和法律标准。通过在预练习阶段进行数据过滤和清洗,以及在微调阶段进行安全练习,模型能够更好地制止天生有害内容。别的,Llama 3 还发布了 Llama Guard 3,一个用于输入和输出安全的分类器,进一步加强了模型的安全性。

复现 Llama 3:从理论到实践的技术探索

在人工智能领域,底子模型(Foundation Models)的发展日新月异,而 Meta 最新发布的 Llama 3 模型更是以其杰出的性能和广泛的应用本领引起了广泛关注。作为一名技术爱好者,我决定实验复现 Llama 3 的部分功能,以深入相识其技术细节和实际应用。本文将分享我在复现 Llama 3 过程中的经验,包罗情况搭建、数据预处理、模型练习和性能评估等关键步骤。
1. 情况搭建

复现 Llama 3 的第一步是搭建符合的开辟情况。由于 Llama 3 是一个大规模的 Transformer 模型,因此必要强大的计算资源和高效的深度学习框架。我选择了 NVIDIA 的 A100 GPUPyTorch 框架来进行实验。
1.1 硬件情况



  • GPU:NVIDIA A100,具有 40GB 的显存和 312 TFLOPS 的计算本领。
  • CPU:Intel Xeon Gold 6248,2.5 GHz,24 核心。
  • 内存:128GB DDR4。
1.2 软件情况



  • 操作体系:Ubuntu 20.04 LTS。
  • Python:Python 3.8。
  • PyTorch:1.12.0。
  • CUDA:11.3。
1.3 情况配置


  • 安装 CUDA 和 cuDNN
    bash复制
    1. sudo apt-get update
    2. sudo apt-get install cuda-11-3
    3. sudo apt-get install libcudnn8
    复制代码
  • 安装 PyTorch
    bash复制
    1. pip install torch==1.12.0+cu113 torchvision==0.13.0+cu113 torchaudio==0.12.0 -f https://download.pytorch.org/whl/torch_stable.html
    复制代码
  • 安装其他依赖
    bash复制
    1. pip install transformers datasets
    复制代码
2. 数据预处理

Llama 3 的预练习数据量到达了 15T 的多语言标记,这在实际复现中是不可行的。因此,我选择了一个较小规模的多语言数据集,用于验证模型的基本功能。
2.1 数据泉源

我从 WikipediaCommon Crawl 获取了多语言文本数据,并进行了简单的清洗和预处理。
2.2 数据清洗


  • 去重:使用 MinHash 算法去除重复的文档。
    Python复制
    1. from datasketch import MinHash, MinHashLSH
    2. import hashlib
    3. def minhash_similarity(text1, text2):
    4.     m1 = MinHash(num_perm=128)
    5.     m2 = MinHash(num_perm=128)
    6.     for d in text1.split():
    7.         m1.update(d.encode('utf8'))
    8.     for d in text2.split():
    9.         m2.update(d.encode('utf8'))
    10.     return m1.jaccard(m2)
    复制代码
  • 过滤低质量文档:使用简单的启发式规则(如文档长度和关键词密度)过滤低质量的文档。
2.3 数据分词

使用 Hugging Face 的 Tokenizers 对文本进行分词处理。
Python复制
  1. from tokenizers import ByteLevelBPETokenizer
  2. tokenizer = ByteLevelBPETokenizer(
  3.     vocab_file="vocab.json",
  4.     merges_file="merges.txt",
  5.     add_prefix_space=True,
  6. )
  7. def tokenize(text):
  8.     return tokenizer.encode(text).tokens
复制代码
3. 模型练习

3.1 模型架构

我选择了一个较小规模的 Transformer 模型,具有 12 层768 维的标记表现12 个注意力头。这个模型的参数量约为 110M,得当在单个 GPU 上进行练习。
3.2 练习代码

使用 PyTorch 和 Hugging Face 的 Transformers 库进行练习。
Python复制
  1. from transformers import AutoModelForMaskedLM, AutoTokenizer
  2. from transformers import Trainer, TrainingArguments
  3. model_name = "bert-base-multilingual-cased"
  4. tokenizer = AutoTokenizer.from_pretrained(model_name)
  5. model = AutoModelForMaskedLM.from_pretrained(model_name)
  6. training_args = TrainingArguments(
  7.     output_dir="./results",
  8.     num_train_epochs=3,
  9.     per_device_train_batch_size=16,
  10.     per_device_eval_batch_size=64,
  11.     evaluation_strategy="epoch",
  12.     learning_rate=2e-5,
  13.     save_total_limit=2,
  14.     save_steps=500,
  15.     load_best_model_at_end=True,
  16.     metric_for_best_model="accuracy",
  17. )
  18. trainer = Trainer(
  19.     model=model,
  20.     args=training_args,
  21.     train_dataset=train_dataset,
  22.     eval_dataset=eval_dataset,
  23.     compute_metrics=compute_metrics,
  24. )
  25. trainer.train()
复制代码
3.3 练习效果

经过 3 个 epoch 的练习,模型在多语言文本天生使命上取得了较好的效果。以下是天生的一些示例:
plaintext复制
  1. 输入:今天天气很好,适合出去玩。
  2. 输出:今天的天气非常好,阳光明媚,微风拂面,非常适合出去游玩。
复制代码
4. 性能评估

4.1 基准测试

我选择了一些常见的语言模型基准测试来评估模型的性能,包罗 MMLUHumanEval
4.1.1 MMLU(多使命语言明白)

模型在 MMLU 基准测试中的表现如下:
plaintext复制
  1. 5-shot 准确率:78.5%
复制代码
4.1.2 HumanEval(代码天生)

模型在 HumanEval 基准测试中的表现如下:
plaintext复制
  1. 通过率:75.6%
复制代码
4.2 人类评估

除了基准测试,我还进行了人类评估,以验证模型在实际应用中的表现。通过与人类标注的数据进行对比,模型在多语言对话和长文本问答使命中表现精彩。
5 未来展望

通过复现 Llama 3 的部分功能,我深刻体会到了底子模型的强大本领和复杂性。虽然在实际应用中,我们无法完全复现 Llama 3 的大规模预练习,但通过选择符合的数据集和模型架构,我们仍然可以在小规模实验中验证其基本功能。未来,我计划进一步优化模型的练习过程,提高其在多语言和长文本使命中的表现。
6. 结论

复现 Llama 3 的过程不仅让我深入相识了其技术细节,还让我体会到了底子模型在实际应用中的潜力和挑衅。通过选择符合的数据集和模型架构,我们可以在小规模实验中验证其基本功能,并为未来的研究和应用提供参考。希望本文能为其他技术爱好者提供一些启发,让我们一起探索底子模型的更多可能性!

如果你对 Llama 3 或底子模型技术感爱好,欢迎在批评区留言,我们一起探讨!

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

李优秀

金牌会员
这个人很懒什么都没写!
快速回复 返回顶部 返回列表