Llama 系列简介与 Llama3 预训练模型推理

1. Llama 系列简介

1.1 Llama1

由 Meta AI 发布,包含 7B、13B、33B 和 65B 四种参数规模的开源基座语言模型

数据集:模型训练数据集使用的都是开源的数据集,总共 1.4T token

模型结构:原始的 Transformer 由编码器(Encoder)和解码器(Decoder)两个部分构成,同时 Encoder 和 Decoder 这两部分也可以单独使用,Llama是基于 Transformer Decoder 的架构,在此基础上做了以下改进:

(1)将 Layer-Norm 改成 RMSNorm(Root Mean square Layer Normalization),并将其从 output 层,移到 input 层

(2)采用 SwiGLU 激活函数

(3)采用 RoPE 旋转位置编码

分词器:采用 BPE 算法,使用 SentencePiece 实现,将所有数字拆分为单独的数字,并使用字节来分解未知的 UTF-8 字符,词表大小为 32k

优化器:采用 AdamW,是Adam的改进,可以有效地处理权重衰减,提供训练稳定性

Learning Rate:使用余弦学习率调整 cosine learning rate schedule,使得最终学习率等于最大学习率的10%,设置0.1的权重衰减和1.0的梯度裁剪,warmup 的步数为 2000,并根据模型的大小改变学习率和批处理大小

模型效果:Llama-13B (GPT-3 1/10大小) 在多数 benchmark 上超越 GPT-3 (175B),在规模较大的端,65B 参数模型也与最好的大型模型也具有竞争力

1.2 Llama2

由 Meta AI 发布,包含 7B、13B、34B、70B 四种参数规模的基座语言模型,除了 34B 其他模型均以开源且免费可商用

数据集:模型训练数据集使用的都是开源的数据集,相比上一代的训练数据增加了 40%,达到了增至 2T token,训练数据中的文本来源也更加的多样化。Llama2 对应的微调模型是在超过 100 万条人工标注的数据下训练而成(但是Llama2 语料库仍以英文(89.7%)为主,而中文仅占据了其中的 0.13%,这导致 Llama2 很难完成流畅、有深度的中文对话)

模型结构:

(1)Llama2 与 Llama1 的主要结构基本一致

(2)Llama2 上下文长度由之前的 2048 升级到 4096,可以理解和生成更长的文本

(3)7B 和13B 使用与 Llama1 相同的架构,34B 和 70B 模型采用了分组查询注意力(GQA)

优化器、Learning Rate、分词器:与 Llama1 一致

模型效果:从模型评估上看,Llama2 在众多的基准测试中,如推理、编程、对话能力和知识测验上,都优于 Llama1 和现有的开源大模型。Llama2 70B在 MMLU 和 GSM8K 上接近 GPT-3.5(OpenAI,2023),但在编码基准方面存在显著差距

Llama2 相比Llama1 的升级:

(1)Llama2 训练数据相比 Llama1 多出40%,上下文长度是由之前的 2048 升级到 4096,模型理解能力得以提升可以生成更长的文本

(2)模型训练数据集使用的相比上一代的训练数据增加了 40%,并且更加注重安全&隐私问题

(3)发布了Llama2-Chat,是 Llama2 微调后的模型(在公开数据集上预训练以后引入SFT(有监督微调)、RLHF(人类反馈强化学习)+拒绝采样+近端策略优化 (PPO)两个优化算法)

Meta 试图证明小模型在足够多的的数据上训练后,效果也能达到甚至超过大模型

1.3 Llama3

Llama3 有基础版和 Instruct 两个版本,每个版本拥有 8B、70B 和 405B 三个参数规模的模型

数据集:Llama3 的预训练数据集增加至 15T,这些数据都是从公开来源收集的高质量数据集(依旧强调高质量的训练数据集至关重要),其中包括了 4 倍以上的代码 token 以及 30 种语言中 5% 的非英语 token(这意味着 Llama3 在代码能力以及逻辑推理能力的性能将大幅度提升)。微调数据包括公开可用的指令数据集,以及超过1000万个人工注释的示例。预训练和微调数据集均不包含元用户数据。(主要还是以英语为主,中文占比依旧很低)

通过开发一系列数据过滤流程:包括使用启发式筛选器、NSFW 筛选器、语义重复数据删除方法和文本分类器来预测数据质量,以及使用 Llama 2 为 Llama 3 提供支持的文本质量分类器生成训练数据。

模型结构:Llama 3 总体上与 Llama2 相比没有重大变化,在 Llama 2 中只有 34B、70B 使用了分组查询注意 (GQA),为了提高模型的推理效率,Llama3 所有模型都采用了 GQA

分词器:与 Llama2 不同的是,Llama3 将 tokenizer 由 sentencepiece 换成 tiktoken,词汇量从 32K 增加到 128K,增加了 4 倍。更大的词汇库能够更高效地编码文本,增加编码效率,可以实现更好的下游性能。不过这也会导致嵌入层的输入和输出矩阵尺寸增大,模型参数量也会增大。

序列长度:输入上下文长度从 4096(Llama 2)和 2048(Llama 1)增加到 8192,但相对于 GPT-4 的 128K 来说还是相当小

模型效果:在多项行业基准测试中展示了最先进的性能,从下表可以看出,Llama3 性能远远高于 Llama2,Llama3 8B 性能远高于 Llama2 70B,Llama3 70B模型在五项测评中有三项高于 GPT-4,Llama3 400B 模型更是全面碾压 GPT-4

BenchMark

Llama2 7B

Llama2 13B

Llama2 70B

Llama3 8B

Llama3 70B

Llama3 400B

GPT-3.5

GPT-4

MMLU

34.1

47.8

52.9

68.4

82

86.1

70

86.4

GPQA

21.7

22.3

21.0

34.2

39.5

48

28.1

35.7

HumanEval

7.9

14.0

25.6

62.2

81.7

84.1

48.1

67

GSM-8K

25.7

77.4

57.5

79.6

93

94.1

57.1

92

MATH

3.8

6.7

11.6

30.0

50.4

57.8

34.1

52.9

缩放定律:制定了一系列的缩放定律,通过小模型表现可以在大模型训练前预测大模型的表现。根据之前 Scaling Law 推算 8B 模型对应 200B Token(2000亿),但是 Meta 使用到了 15T Token(15万亿)训练,性能还可以提升。

从目前模型效果来看,Meta 使用的 Scaling Law 法则是非常有效的,Meta 得到了一个非常强大的模型,它非常小,易于使用和推理,而且 Meta 表示,即使这样,该模型似乎也没有在标准意义上“收敛”,性能还能改善。这就意味着,一直以来我们使用的 LLM 训练是不足的,远远没有达到使模型收敛的点。较大的模型在训练计算较少的情况下可以与较小模型的性能相匹配,考虑到推理过程中使效率更高,还是会选择小模型。

为了训练最大的 Llama3 模型,Meta 结合了三种类型的并行化:数据并行化、模型并行化和管道并行化。最高效的实现是在 16K GPU 上同时训练时,每个 GPU 的计算利用率超过 400 TFLOPS。在两个定制的 24000 个 GPU 集群上训练,有效训练时间超过95%,比 Llama2 训练效率提高了 3 倍

模型

训练(GPU小时)

GPU

训练 Token

Llama1 65B

1.0 M

A100 80G

1.4 万亿

Llama2 70B

1.7 M

A100 80G

2 万亿

Llama3 70B

7.7 M

H100 80G

15 万亿

Llama2 微调后的模型为 Llama2-Chat,Llama3 微调后的模型为Llama3-Instruct,不光用在聊天上,也用在指令跟随

指令微调:为了在聊天用例中充分释放预训练模型的潜力,Meta 对指令调整方法进行了创新。训练方法结合了监督微调 (SFT)、拒绝采样(RS)、近端策略优化 (PPO) 和直接策略优化 (DPO) 的组合。这种组合训练,提高了模型在复杂推理任务中的表现。

2. Llama3 预训练模型推理

2.1 下载项目与模型

下载项目

git clone https://github.com/meta-llama/llama3.git

下载模型

官网下载
https://llama.meta.com/llama-downloads/

在官网填写信息后,申请下载权限,会发送一个URL到填写的邮箱内,像这样:

进入到项目目录,执行./download.sh:

按照要求输入邮件中的URL,以及需要下载的模型,可选 8B、8B-instruct、70B 和 70B-instruct,按需下载即可,下载中:



下载完成:

huggingface 下载【推荐】
https://huggingface.co/meta-llama/Meta-Llama-3-8B

可以直接点击下载按钮在网页下载,也可以点 Clone 进行命令行下载~  

2.2 环境配置

# 1.安装虚拟环境
conda create -n llama python=3.11
conda activate llama
# 2.安装依赖包
cd llama3
pip3 install -e .

2.3 模型推理

1. 模型并行值

  • 8B模型的模型并行 (MP) 值为1
  • 70B模型的模型并行 (MP) 值为8

在 Llama3 模型中,MP 值指的是并行化模型时使用的硬件单元数。一个 MP 值为 1 的 8B 模型可能意味着整个模型可以在单个计算设备上运行,而一个 MP 值为 8 的 70B 模型可能意味着模型被分成 8 部分,每部分在不同的计算设备上运行。

2. 序列长度和批处理大小

  • 所有模型支持最多 8192 个 tokens 的序列长度

  • 缓存是根据 max_seg_len 和 max batch_size 值预分配的,应根据你的硬件配置这些值

3. 基于 transformers 进行预训练模型推理

import transformers
import torch

pipeline transformers.pipeline(
    task="text-generation",
    model=""/root/models/Meta-Llama-3-8B-instruct"",
    model_kwargs={"torch_dtype": torch. bfloat16},
    device="cuda"
)

print(pipeline("Hey how are you doing today ?"))

4. 基于 vLLM 进行预训练模型推理

安装依赖:

pip3 install vllm

服务部署:

python3 -m vllm.entrypoints.openai.api_server --model /root/models/Meta-Llama-3-8B --dtype auto --api-key 123456

另起一个终端,进行服务测试:

from openai import OpenAI

client = OpenAI(
    base_url="http://localhost:8000/v1",
    api_key="123456"
)
print("服务连接成功")
completion=client.completions.create(
    model="/root/models/Meta-Llama-3-8B",
    prompt="San Francisco is a",
    max_tokens=128
)
print("### San Francisco is : ")
print("Completion result: ", completion)

测试结果:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/886264.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

C++入门基础 (超详解)

文章目录 前言1. C关键字2. C的第一个程序3. 命名空间3.1 namespace的定义3.2 命名空间的嵌套3.3 命名空间使用3.4 查找优先级总结 4. C输入和输出4.1 标准输入输出 (iostream库)4.2 文件输入输出 (fstream库)4.3 字符串流 (sstream库)4.4 C格式化输出4.5 std::endl和\n的区别 …

56 门控循环单元(GRU)_by《李沐:动手学深度学习v2》pytorch版

系列文章目录 文章目录 系列文章目录门控循环单元(GRU)门控隐状态重置门和更新门候选隐状态隐状态 从零开始实现初始化模型参数定义模型训练与预测 简洁实现小结练习 门控循环单元(GRU) 之前我们讨论了如何在循环神经网络中计算梯…

生信初学者教程(二十三):REF+SVM筛选候选标记物

文章目录 介绍加载R包导入数据准备数据机器学习特征筛选数据分割基础模型Recursive Feature Elimination特征筛选调参最终分类模型测试集验证标记基因输出结果总结介绍 采用了REF(Recursive Feature Elimination) 结合 SVM(Support Vector Machine) 的方法,对差异基因(参…

探索未来:hbmqtt,Python中的AI驱动MQTT

文章目录 **探索未来:hbmqtt,Python中的AI驱动MQTT**1. 背景介绍2. hbmqtt是什么?3. 安装hbmqtt4. 简单的库函数使用方法4.1 连接到MQTT服务器4.2 发布消息4.3 订阅主题4.4 接收消息4.5 断开连接 5. 应用场景示例5.1 智能家居控制5.2 环境监测…

react-问卷星项目(4)

项目实战 使用CSS 尽量不要使用内联CSS 内联style代码多&#xff0c;性能差&#xff0c;扩展性差外链css文件可复用代码&#xff0c;可单独缓存文件 元素内联style 和HTMl元素的style相似必须用JS写法&#xff0c;不能是字符串&#xff0c;里面必须是对象 <span style…

实现epoll事件的两种模型(ET/LT)、epoll反应堆模型

前置知识&#xff1a; 多进程/线程并发服务器、多路I/O转接服务器的简单实现-CSDN博客 1. 事件模型 EPOLL事件有两种模型&#xff1a; Edge Triggered (ET) 边缘触发只有数据到来才触发&#xff0c;不管缓存区中是否还有数据。Level Triggered (LT) 水平触发只要有数据都会…

C++基类构造器的自动调用

C基类构造器的自动调用 虽然基类的构造器和解构器不会被派生类继承&#xff0c;但它们会被派生类的构造器和解构器自动调用&#xff0c;今天我们用代码实证一下。 验证代码 源代码&#xff0c;仔细看注释内容&#xff1a; D:\YcjWork\CppTour>vim c2004.cpp #include &l…

Ubuntu下安装Zookeeper集群

Zookeeper集群是一个开源的分布式协调服务系统&#xff0c;它由Apache软件基金会维护&#xff0c;旨在为分布式应用提供一致性和可靠性的服务。 在Zookeeper集群中&#xff0c;服务器可以扮演三种角色——领导者&#xff08;Leader&#xff09;、跟随者&#xff08;Follower&a…

如何使用ssm实现基于HTML的中国传统面食介绍网站的搭建+vue

TOC ssm758基于HTML的中国传统面食介绍网站的搭建vue 第1章 绪论 1.1选题动因 当前的网络技术&#xff0c;软件技术等都具备成熟的理论基础&#xff0c;市场上也出现各种技术开发的软件&#xff0c;这些软件都被用于各个领域&#xff0c;包括生活和工作的领域。随着电脑和笔…

Python和C++混淆矩阵地理学医学物理学视觉语言模型和算法模型评估工具

&#x1f3af;要点 优化损失函数评估指标海岸线检测算法评估遥感视觉表征和文本增强乳腺癌预测模型算法液体中闪烁光和切伦科夫光分离多标签分类任务性能评估有向无环图、多路径标记和非强制叶节点预测二元分类评估特征归因可信性评估马修斯相关系数对比其他准确度 Python桑…

数据集-目标检测系列- 螃蟹 检测数据集 crab >> DataBall

数据集-目标检测系列- 螃蟹 检测数据集 crab >> DataBall 数据集-目标检测系列- 螃蟹 检测数据集 crab >> DataBall 数据量&#xff1a;3k 想要进一步了解&#xff0c;请联系。 DataBall 助力快速掌握数据集的信息和使用方式&#xff0c;会员享有 百种数据集&a…

Python Tips6 基于数据库和钉钉机器人的通知

说明 起因是我第一版quant程序的短信通知失效了。最初认为短信是比较即时且比较醒目的通知方式&#xff0c;现在看来完全不行。 列举三个主要问题&#xff1a; 1 延时。在早先还能收到消息的时候&#xff0c;迟滞就很严重&#xff0c;几分钟都算短的。2 完全丢失。我手机没有…

Mac 电脑配置yolov8运行环境实现目标追踪、计数、画出轨迹、多线程

&#x1f947; 版权: 本文由【墨理学AI】原创首发、各位读者大大、敬请查阅、感谢三连 &#x1f389; 声明: 作为全网 AI 领域 干货最多的博主之一&#xff0c;❤️ 不负光阴不负卿 ❤️ 文章目录 &#x1f4d9; Mac 电脑 配置 yolov8 环境&#x1f4d9; 代码运行推理测试模型训…

计算机前沿技术-人工智能算法-大语言模型-最新研究进展-2024-09-27

计算机前沿技术-人工智能算法-大语言模型-最新研究进展-2024-09-27 目录 文章目录 计算机前沿技术-人工智能算法-大语言模型-最新研究进展-2024-09-27目录1. VisScience: An Extensive Benchmark for Evaluating K12 Educational Multi-modal Scientific Reasoning VisScience:…

kubeadm部署k8s集群,版本1.23.6;并设置calico网络BGP模式通信,版本v3.25--未完待续

1.集群环境创建 三台虚拟机&#xff0c;一台master节点&#xff0c;两台node节点 (根据官网我们知道k8s 1.24版本之后就需要额外地安装cri-dockerd作为桥接才能使用Docker Egine。经过尝试1.24后的版本麻烦事很多&#xff0c;所以此处我们选择1.23.6版本) 虚拟机环境创建参考…

Webstorm 中对 Node.js 后端项目进行断点调试

首先&#xff0c;肯定需要有一个启动服务器的命令脚本。 然后&#xff0c;写一个 debug 的配置&#xff1a; 然后&#xff0c;debug 模式 启动项目和 启动调试服务&#xff1a; 最后&#xff0c;发送请求&#xff0c;即可调试&#xff1a; 这几个关键按钮含义&#xff1a; 重启…

Geoserver关于忘记密码的解决方法

第一次安装后&#xff0c;如果你设置密码那一栏一直都是默认的话&#xff0c;那么登录密码应该是账户 admin&#xff0c;密码 geoserver 但是&#xff0c;如果你自己设置了密码和账户&#xff0c;登录又登录不上&#xff0c;或者忘记了&#xff0c;有以下方法可以解决。 本质…

CSS——文字闪烁效果

CSS——文字闪烁效果 今天来完成一个文字闪烁的动态效果&#xff0c;具体呈现效果如下&#xff1a; 文字闪烁动态效果 实现步骤 基础的样式 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta name"vi…

收单外包机构备案分析及建议

2020年9月16日&#xff0c;中国支付清算协会&#xff08;下称“中支协”或“协会”&#xff09;公示了首批收单外包服务机构备案名单。历经5年&#xff0c;约进行50次公示后&#xff0c;截至9月21日共备案收单外包机构32457家&#xff0c;取消备案机构316家&#xff0c;拟取消机…

8642 快速排序

### 思路 快速排序是一种分治算法&#xff0c;通过选择一个基准元素将数组分成两部分&#xff0c;然后递归地对每部分进行排序。每次分区后输出当前排序结果。 ### 伪代码 1. 读取输入的待排序关键字个数n。 2. 读取n个待排序关键字并存储在数组中。 3. 对数组进行快速排序&am…