LLaMA论文阅读笔记

论文:https://arxiv.org/pdf/2302.13971

1、为什么要做这个研究(理论走向和目前缺陷) ?
之前的效果的模型要么不开源,要么用了私有数据训练,完全开源的效果都不咋地。
2、他们怎么做这个研究 (方法,尤其是与之前不同之处) ?
用完全开源的数据(1.4万亿tokens),并没有大的离谱模型(7B到65B), 做了一系列前面研究做的优化,如RMSNorm的Pre-normalization减少计算量,FFN的激活函数替换为SwiGLU增强表现能力更好,旋转位置编码RoPE提升模型长度外推性。这些优化基本都成了后续大模型设计的标配。
3、发现了什么(总结结果,补充和理论的关系)?
算是首个完全开源且效果和闭源模型相当的LLM模型,候选qwen也是基于这个模型改进得到的。

摘要

发布LLaMA系列模型,参数量从7B到65B量级,训练数据在1.5万亿tokens,且全是开源的数据,13B参数量的比175B的GPT-3性能还要好,65B的模型达到当前最好的大语言模型效果。

1 引言

在算力固定的情况下,小模型+大数据比大模型+小数据效果更好,而且小模型+大数据可能训练时间很长,但是推理时长比较短。

2 方案

2.1 预训练数据

全是开源数据,大部分都是其他LLM训练用的数据。
英文爬虫获取数据(67%)。预处理之前别人通过爬虫获得的(2017-2020)文献,但做了以下处理,1)数据去重。2)用fastText线性分类器区分是否英文数据,把非英文的踢掉。3)ngram语言模型滤除内容质量底下的数据。4)训练了一个分类器区分是否来自维基百科数据,把非维基百科的数据丢弃掉。
C4数据(15%)。预处理包括去重以及去非英文数据。
github数据(4.5%)。去重,去低质量数据。
Wiki百科(4.5%)。2022年1月-2022年月的数据。把超链接、评论、及废话去掉。
Gutenberg and Books3 [4.5%]。来自书本的预料库,也做了去重。
ArXiv [2.5%]. 移除文章第一节前的所有内容,包括作者信息也被移除。
Stack Exchange [2%]. 有高质量问答数据的网站,类似stackoverflow。

分词器: BPE.
最终获得共计1.4T(1.4万亿)个训练tokens,大多数训练数据只会被训练一次,除了维基百科和书本里的数据训练了两次。

2.2 架构

基于transformer了架构,并混合了后续模型提出的各种优化方法。包括:
Pre-normalization [GPT3]. 使用RMSNorm在transofmer子层输入之前先做归一化,而不是像标准的transfomer一样在输出之后做LayerNorm归一化,可以提升训练的稳定性。注:LayerNorm和RMSNorm的主要区别在于是否有中心化,LayerNorm会减去特征均值,实现数据中心化,而RMSNorm没有这一步,故不会中心化。在大模型训练时,中心化不是必须的,而缩放是必要的,且RMSNorm计算量更小,

[图片]

SwiGLU activation function [PaLM]。SwiGLU替换FFN层中ReLU层。SwiGLU中的G即gate,引入了门控(0~1)之间权重逐元素和线性变换后的原始值相乘。虽然增加了计算量,但在大模型中表现能力更好,基本是现代大模型的标配。

[图片]

Rotary Embeddings [GPTNeo]。即RoPE相对位置编码。位置编码一般有绝对位置编码,即可学习的位置编码或标准的transfomer中使用的Sinusoidal位置编码。可学习的位置编码缺点是模型不具有长度外推性,因为位置编码矩阵的大小是预设的,若对其进行扩展,将会破坏模型在预训练阶段学习到的位置信息。Sinusoidal位置编码还具有远程衰减的性质,具体表现为对于两个相同的词向量,如果它们之间的距离越近,则他们的内积分数越高,反之则越低。Sinusoidal位置编码中的正弦余弦函数具备周期性,并且具备远程衰减的特性,所以理论上也具备一定长度外推的能力。而RoPE作者的出发点为:通过绝对位置编码的方式实现相对位置编码。Sinusoidal位置编码通过加法把相对位置信息融入到内容信息中,但需要模型隐式学习这种相对位置信息,而RoPE通过旋转(乘法)把相对位置信息融入到内容信息中,是一种显式的注入,不需要隐式学习,在长度外推性方面,RoPE比Sinusoidal更好。参考
https://hub.baai.ac.cn/view/32862 获取更详细的信息。

在这里插入图片描述

2.3 优化器

AdamW 优化器,cosine learning rate schedule等

2.4 高效实现

做了一些优化提升训练速度。首先是采用高效因果多头注意力(from xformers)减少内存占用和运行时间,即下三角矩阵只计算需要的部分,不用的部分不存不算,从而减少显存占用。其次,保存线性层的激活值,避免反向传播时还要重新计算。
最终训练65B的模型,1.4万亿的tokens数据,需要80G A100训练21天。

3 主要结果

在20个benchmarks做了实验。

  1. Zero-shot: 提供任务描述和一道测试题输入到模型中,让模型生成问题解答或选择正确答案。
  2. Few-shot: 提供一些任务解答案例和一道测试题,让模型生成问题解答或选择正确答案。
    对比的模型:
  • 闭源:GPT-3 2020, Gopher 2021, Chinchilla 2022, PaLM 2022
  • 开源:OPT 2022, GPT-J 2021, GPT-Neo 2022, 以及指令微调的模型OPT-IML, Flan-PaLM.

3.1 常识推理

8个benchmark: BoolQ, PIQA,SIQA , HellaSwag, WinoGrande, ARC easy/challenge, OpenBookQA.

[图片]

3.2 书本知识问答

两个benchmark: Natural Questions和TriviaQA

[图片]
[图片]

3.3 阅读理解

RACE benchmark,来源于中国初高中英语测试的阅读理解题。

[图片]

3.4 数学推理

2 benchmark: MATH, GSM8k,初高中数学题。
Minerva是PaLM在arxiv以及数学网站数据微调出来的模型,故效果很好。

[图片]

3.5 代码生成

2个benchmark: HumanEval, MBPP

[图片]

3.6 大规模多任务语言理解

MMLU benchmark

[图片]

3.7 训练时的性能进化

训练时评估模型性能,一般情况下,训的tokens越多,性能越好。

[图片]

4 指令微调

加点指令微调后,模型效果大幅提升。

[图片]

5 偏见、戾气以及错误

6 碳排放

7 相关研究

8 结论

开源了不同大小的LLaMA模型,通过相对较小模型+大量数据实现不错的效果,且所有数据都是开源的。

Read more

NoneBot+Lagrange搭建qq机器人保姆级别教程

NoneBot+Lagrange搭建qq机器人保姆级别教程

前言 因为一些原因,go-cqhttp不一定能使用,gocq的作者也是呼吁大家尽快转移到无头NTQQ项目当中去,其中就有很多优秀的平替作品,如:NapNeko/NapCatQQ: 基于NTQQ的无头Bot框架 (github.com)还有今天要介绍的LagrangeDev/Lagrange.Core: An Implementation of NTQQ Protocol, with Pure C#, Derived from Konata.Core (github.com) 准备工作 1. 一台电脑或服务器(服务器搭建bot的教程后面会出) 2. Lagrange程序 3. python3.9及以上版本 4. nonebot插件 1.关于操作系统 可供选择的操作系统: 1. Windows 2. Linux 3. MacOS 2.Lagrange程序下载

neo4j 5.26版本下载安装配置步骤

安装环境要求 操作系统:Windows 10/8/7、macOS 10.13或更高版本、Linux(Ubuntu、CentOS、Red Hat 等) JDK 17 或更高版本(Neo4j 5.26开始需要JDK 17或更高版本。如果您使用的是较旧的JDK版本,则需要升级到JDK 17或更高版本以运行Neo4j 5.26)64位操作系统 下载Neo4j 由于官方下载速度极慢,我已经把安装文件打包上传到网盘,直接下载即可: 下载地址:https://pan.quark.cn/s/0f2a99911586 下载配置JDK 推荐链接:https://blog.ZEEKLOG.net/ts5218/article/details/135252463 配置环境变量

Java 大视界 -- Java 大数据在智能家居设备联动与场景化节能中的应用拓展(413)

Java 大视界 -- Java 大数据在智能家居设备联动与场景化节能中的应用拓展(413)

Java 大视界 -- Java 大数据在智能家居设备联动与场景化节能中的应用拓展(413) * 引言: * 正文: * 一、技术基石:Java 大数据赋能智能家居的 “三位一体” 架构 * 1.1 架构全景图 * 1.2 核心技术栈选型与生产配置(附数据出处) * 1.3 核心数据模型(POJO 类,附表结构与业务含义) * 1.3.1 设备状态实体类(对应 ClickHouse 实时表) * 1.3.2 联动规则实体类(对应 MySQL 配置表) * 1.3.3 缺失工具类补充:SpringContextUtil(生产必用) * 二、核心场景 1:

【Part 4 XR综合技术分享】第一节|技术上的抉择:三维实时渲染与VR全景视频的共生

【Part 4 XR综合技术分享】第一节|技术上的抉择:三维实时渲染与VR全景视频的共生

《VR 360°全景视频开发》专栏 将带你深入探索从全景视频制作到Unity眼镜端应用开发的全流程技术。专栏内容涵盖安卓原生VR播放器开发、Unity VR视频渲染与手势交互、360°全景视频制作与优化,以及高分辨率视频性能优化等实战技巧。 📝 希望通过这个专栏,帮助更多朋友进入VR 360°全景视频的世界! Part 4|XR综合技术分享 最后一Part了,我将分享一些关于当前常用的XR综合技术,内容涵盖三维实时渲染与全景视频的共生、多模态交互体验的融合,以及AI如何深度赋能XR应用,推动智能化发展。同时畅想通向全感知XR智能沉浸时代的未来,探索如何通过更先进的技术不断提升用户体验。毕竟,360°全景视频仅是XR应用中的冰山一角。 第一节|技术上的抉择:三维实时渲染与VR全景视频的共生 文章目录 * 《VR 360°全景视频开发》专栏 * Part 4|XR综合技术分享 * 第一节|技术上的抉择:三维实时渲染与VR全景视频的共生 * 1、VR内容形态的分化与融合 * 1.1 三维实时渲染的发展 * 1.2