深圳龙华做网站的,建设小说网站用什么软件,天蝎网站推广优化,app大全免费软件下载安装1. Llama 系列简介
1.1 Llama1
由 Meta AI 发布#xff0c;包含 7B、13B、33B 和 65B 四种参数规模的开源基座语言模型
数据集#xff1a;模型训练数据集使用的都是开源的数据集#xff0c;总共 1.4T token
模型结构#xff1a;原始的 Transformer 由编码器#xff08…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 很难完成流畅、有深度的中文对话
模型结构
1Llama2 与 Llama1 的主要结构基本一致
2Llama2 上下文长度由之前的 2048 升级到 4096可以理解和生成更长的文本
37B 和13B 使用与 Llama1 相同的架构34B 和 70B 模型采用了分组查询注意力GQA
优化器、Learning Rate、分词器与 Llama1 一致
模型效果从模型评估上看Llama2 在众多的基准测试中如推理、编程、对话能力和知识测验上都优于 Llama1 和现有的开源大模型。Llama2 70B在 MMLU 和 GSM8K 上接近 GPT-3.5OpenAI2023但在编码基准方面存在显著差距
Llama2 相比Llama1 的升级
1Llama2 训练数据相比 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 倍。更大的词汇库能够更高效地编码文本增加编码效率可以实现更好的下游性能。不过这也会导致嵌入层的输入和输出矩阵尺寸增大模型参数量也会增大。
序列长度输入上下文长度从 4096Llama 2和 2048Llama 1增加到 8192但相对于 GPT-4 的 128K 来说还是相当小
模型效果在多项行业基准测试中展示了最先进的性能从下表可以看出Llama3 性能远远高于 Llama2Llama3 8B 性能远高于 Llama2 70BLlama3 70B模型在五项测评中有三项高于 GPT-4Llama3 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 Token2000亿但是 Meta 使用到了 15T Token15万亿训练性能还可以提升。
从目前模型效果来看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-ChatLlama3 微调后的模型为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 python3.11
conda activate llama
# 2.安装依赖包
cd llama3
pip3 install -e . 2.3 模型推理
1. 模型并行值
8B模型的模型并行 (MP) 值为170B模型的模型并行 (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 torchpipeline transformers.pipeline(tasktext-generation,model/root/models/Meta-Llama-3-8B-instruct,model_kwargs{torch_dtype: torch. bfloat16},devicecuda
)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 OpenAIclient OpenAI(base_urlhttp://localhost:8000/v1,api_key123456
)
print(服务连接成功)
completionclient.completions.create(model/root/models/Meta-Llama-3-8B,promptSan Francisco is a,max_tokens128
)
print(### San Francisco is : )
print(Completion result: , completion)
测试结果