大模型入门(一)—— LLaMa/Alpaca/Vicuna

LLaMa模型是Meta开源的大模型,模型参数从7B到65B不等,LLaMa-7B在大多数基准测试上超过了GPT3-173B,而LLaMa-65B和Chinchilla-70B、PaLM-540B相比也极具竞争力。相比于ChatGPT或者GPT4来说,LLaMa可能效果上还有差距,但相比Closed AI,至少LLaMa论文和模型都开源出来了,目前hugging face已集成了LLaMa的代码实现和开源模型。学术界和工业界都可以在此基础上进行学习和研究。

LLaMa 模型介绍

LLaMa的模型架构使用的是Transformer Decoder结构,但LLaMa在细节上做了一些优化:

1)Pre-normalization

Pre-norm很早就被提出,原生的transformer中使用的是post-norm,也就是在每个子层输出后进行归一化,相比post-norm,pre-norm是在每个子层输入前对输入的数据归一化,pre-norm的训练会更稳定,甚至都可以不需要做warm-up也能很好地训练transformer大模型。除此之外,LLaMa还是用RMSNorm(Root Mean Square Layer Normalization)取代了Layer Norm,RMSNorm是Layer Norm的一种变体,和Layer Norm中减去均值、除以方差的归一化方式不同,RMSNorm是直接除以均方根。

2)SwiGLU激活函数

LLaMa使用SwiGLU激活函数替代了原有的ReLU激活函数。SwiGLU是Swish和GLU两个函数的结合

其中 S w i s h = x c d o t s i g m o i d ( b e t a x ) Swish = x \\cdot sigmoid(\\beta x) Swish=xcdotsigmoid(betax) S w i G L U = S w i s h ( W x + b ) b i g o t i m e s ( V x + c ) SwiGLU=Swish(Wx + b) \\bigotimes (Vx + c) SwiGLU=Swish(Wx+b)bigotimes(Vx+c)

3)RoPE旋转位置编码

使用旋转位置编码替代绝对位置编码,详见https://spaces.ac.cn/archives/8265。

Alpaca 模型介绍

Alpaca是斯坦福在LLaMa-7B的基础上监督微调出来的模型,斯坦福是用OpenAI的Text-davinci-003 API配合self-instruct技术,使用175个提示语种子自动生成了52K条提示-回复的指示数据集,在LLaMa-7B上微调得到的模型,在8张80G的A100上训练了3小时。

Vicuna 模型介绍

Vicuna是在LLaMa-13B的基础上使用监督数据微调得到的模型,数据集来自于ShareGPT.com 产生的用户对话数据,共70K条。使用Pytorch FSDP在8张A100上训练了一天。相较于Alpaca,Vicuna在训练中将序列长度由512扩展到了2048,并且通过梯度检测和flash attention来解决内存问题;调整训练损失考虑多轮对话,并仅根据模型的输出进行微调。通过GPT4来打分评测,Vicuna可以达到ChatGPT 90%的效果。并且还提供了可调用的分布式聊天服务FastChat

相关推荐

  1. 模型入门相关文章

    2024-07-17 12:44:03       26 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-07-17 12:44:03       67 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-07-17 12:44:03       71 阅读
  3. 在Django里面运行非项目文件

    2024-07-17 12:44:03       58 阅读
  4. Python语言-面向对象

    2024-07-17 12:44:03       69 阅读

热门阅读

  1. v3+ts一套(详细)

    2024-07-17 12:44:03       22 阅读
  2. 【linux】将一个c文件编译成so库文件

    2024-07-17 12:44:03       26 阅读
  3. 2024CAIP省赛

    2024-07-17 12:44:03       23 阅读
  4. jekins 是如何知道git 提交了代码?

    2024-07-17 12:44:03       20 阅读
  5. MFC:文本可视化输出

    2024-07-17 12:44:03       22 阅读
  6. 七种软件设计原则

    2024-07-17 12:44:03       22 阅读
  7. 常见的排序算法,复杂度

    2024-07-17 12:44:03       18 阅读
  8. c#视觉应用开发中如何在C#中进行图像去伪影?

    2024-07-17 12:44:03       29 阅读
  9. @RequestPart和@RequestParam 区别和联系

    2024-07-17 12:44:03       22 阅读
  10. 聚合支付+分账系统体系

    2024-07-17 12:44:03       24 阅读
  11. 解释 Git 的基本概念和使用方式。

    2024-07-17 12:44:03       25 阅读
  12. SQL Error: 1406, SQLState: 22001

    2024-07-17 12:44:03       25 阅读
  13. cn.hutool.core.util.IdUtil.getSnowflake

    2024-07-17 12:44:03       25 阅读
  14. redistemplate介绍与演示

    2024-07-17 12:44:03       18 阅读
  15. Fixing a Binary String

    2024-07-17 12:44:03       27 阅读
  16. vue搜索框过滤--- computed、watch区别

    2024-07-17 12:44:03       25 阅读