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

news2024/11/17 11:52:50

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)

测试结果:

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Git 与远程分支

90.远程仓库和分支 我们经常需要对远程仓库里的分支进行更新。 ‍ 当从远程库 clone 时,默认情况下,只会拉取 master ​分支,并且会将本地的 master 分支和远程的 master 分支关联起来: $ git branch * master‍ ‍ 推送本地…

什么是分布式缓存,它是如何工作的?

嗨,你好啊,我是猿java 在日常开发中,我们经常会使用到缓存,当数据集较小时,通常将所有缓存数据保存在一台服务器上就足够了,但是当数据集较大时,我们需要将缓存数据分布在多个服务器上&#xf…

无线领夹麦克风怎么挑选?选购麦克风需要注意的五大选购陷阱!

无线领夹麦克风只所以成为现在自媒体行业的主流拾音设备,很大程度取决于它的轻巧的设计以及便携性。相较于传统的手持麦克风,领夹麦在使用时无需手持,直接佩戴在衣领上即可使用,腾出的双手可以更好的投入到录制当中,在…

Python与SQL Server数据库结合导出Excel并做部分修改

Python与SQL Server数据库结合导出Excel并做部分修改 需求:在数据库中提取需要的字段内容;并根据字段内容来提取与拆分数据做为新的列最后导出到Excel文件 # -*- coding: utf-8 -*- import pandas as pd import re import pymssql import timestart_ti…

Activiti的Web在线工作流设计器的几种搭建方式

说明 Activiti Activiti是一个使用Java开发的工作流流程管理(BPM)平台,可以帮助开发者和企业自动化管理业务流程。它提供了一整套工具,用于定义、执行、监控和优化业务流程。Activiti支持BPMN 2.0标准,具有强大的扩展能力和易用性&#xff…

Git GUI操作流程

1,点击运行 Gt GUI 2,界面如下 3,点击Creat new Repository或者在菜单栏点击Repository--new 4,点击Browse选择目录,点击create,创建本地git仓库 5,对应盘里生成一个.git文件,用于版本管理 6&am…

2024最新测评:低代码平台在企业复杂应用场景的适用性如何?

低代码平台种类多,不好一概而论。但最近有做部分低代码平台的测评,供大家参考。 一个月前接到老板紧急任务:调研有没有一款低代码平台能开发我司的软件场景。我司是一家快速发展中的制造业企业,业务遍布全国,需要一个…

DAY81服务攻防-开发框架安全SpringBootStruts2LaravelThinkPHPCVE 复现

知识点: 1、PHP-框架安全-Thinkphp&Laravel 2、J2EE-框架安全-SpringBoot&Struts2 常见语言开发框架: PHP:Thinkphp Laravel YII CodeIgniter CakePHP Zend等 JAVA:Spring MyBatis Hibernate Struts2 Springboot等 P…

Elasticsearch讲解

1.Elasticsearch基本知识 1.基本认识和安装 Elasticsearch是由elastic公司开发的一套搜索引擎技术,它是elastic技术栈中的一部分。完整的技术栈包括: Elasticsearch:用于数据存储、计算和搜索 Logstash/Beats:用于数据收集 Kib…

Dos.ORM简单说明

1 下载Dos.Tools-master 地址:Dos.Tool: 实体生成工具,成熟轻量级ORM、上手简单、性能高、功能强大! 2 Dos.ORM仅支持DbFirst模式,即必须先有数据库,这里以Sql Server为例 3 新建项目,添加引用Dos.ORM.dll&…

3.javaweb-Servlet与过滤器

javaweb-Servlet与过滤器 文章目录 javaweb-Servlet与过滤器一、Servlet:server applet二、Servlet做了什么?三、Servlet是什么?四、jsp与Servlet关系五、Servlet API1.主要Servlet API介绍2.如何创建Servlet3.Servlet中主要方法4.ServletReq…

使用Docker快速本地部署RSSHub结合内网穿透访问RSS订阅源

文章目录 前言1. Docker 安装2. Docker 部署Rsshub3. 本地访问Rsshub4. Linux安装Cpolar5. 配置公网地址6. 远程访问Rsshub7. 固定Cpolar公网地址8. 固定地址访问 前言 今天和大家分享的是如何在本地快速简单部署Rsshub工具,并结合cpolar内网穿透工具使用公网地址远…

ArcGIS Desktop使用入门(三)常用工具条——拓扑(下篇:地理数据库拓扑)

系列文章目录 ArcGIS Desktop使用入门(一)软件初认识 ArcGIS Desktop使用入门(二)常用工具条——标准工具 ArcGIS Desktop使用入门(二)常用工具条——编辑器 ArcGIS Desktop使用入门(二&#x…

mobaxterm、vscode通过跳板机连接服务器

目标服务器:111.111.11.11 跳板机:100.100.10.10 1. mobaxterm通过跳板机连接服务器 1.1 目标服务器信息 1.2 跳板机信息 1.3 登录 点击登录,会输入密码,成功 参考:https://blog.csdn.net/qq_40636486/article/det…

Linux 运维 | 6.从零开始,Shell编程中正则表达式 RegExp 速成指南

[ 知识是人生的灯塔,只有不断学习,才能照亮前行的道路 ] 0x00 前言概述 在 Linux 运维以及Shell脚本编程中往往会使用到各种文本处理工具(例如,文本三剑客 awk、grep、sed)以及Shell脚本编程(后续作者会在#…

【C语言从不挂科到高绩点】23-指针05-结构体指针【重点知识】

Hello!彦祖们,俺又回来了!!!,继续给大家分享 《C语言从不挂科到高绩点》课程!! 本节将为大家讲解C语言中非常重要的知识点-指针: 本套课程将会从0基础讲解C语言核心技术,适合人群: 大学中开设了C语言课程的同学想要专升本或者考研的同学想要考计算机等级证书的同学想…

CSS在线格式化、美化、压缩工具

网上有不少CSS格式化压缩的工具,但是不少站点有广告干扰,或操作起来不方便,或打开速度比较慢,所以自己定制了这个css格式化压缩的工具,也希望对大家有帮助,提供的这个CSS代码格式化和css在线压缩工具&#…

银发产业新闻 | 饿了么、一龄集团、达因药业、爱奇艺有哪些布局

一周银发产业大事件速览 9月27日 星期五 1 养老服务 国家医保局发布长护险编码规则民政部召开全国养老服务工作推进会议市场监管总局发布《适老家具通用技术要求》中央财政安排3亿元引导资金支持“老年食堂”发展全国老龄委印发《关于深入开展新时代“银龄行动”的指导意见…

行业标准如何立项?具体的步骤有哪些

一、前期准备 1. 明确需求: • 确定所在行业存在哪些问题或不足,需要通过制定行业标准来规范和解决。 • 分析行业发展趋势和市场需求,确保立项的标准具有前瞻性和实用性。 收集资料: 查阅国内外相关行业标准和法律法规&#xff0…

数字单总线输出的工业级温湿度一体传感器-MHT04

温湿度传感芯片 - MHT04,该芯片是数字单总线输出的工业级温湿度一体传感器,采用防尘防水透气的铂金叠层湿敏探头结合高精度电容调理芯片MDC04架构,数字单总线输出,可长距离串联多个节点,适用于仓储、冷链、畜牧、工农业…