原创 | 大模型扫盲系列——大模型实用技术介绍(上)

本文深入探讨大模型技术,包括Attention形式、Tokenizer算法(如BytePair Encoding、SentencePiece)、向量位置编码(如RoPE Embeddings)以及激活函数(ReLU、GeLU、SwiGLU、GeGLU)。通过实例分析Gemma模型的参数计算,揭示大模型在处理长序列和提高效率方面的策略。同时,文章介绍了归一化技术如RMSNorm在大模型中的应用,帮助读者理解大模型背后的理论与实践技巧。
摘要由CSDN通过智能技术生成

a417aa7e65e6fea30a6f3578a8d5c49c.png

作者:金一鸣
本文约9400字,建议阅读10+分钟
本文从技术的角度聚焦大模型的实战经验,总结大模型从业者关注的具体方向以及相关发展,帮助打算参与到大模型工作的人高效上手相关工作。

Gemma模型架构和参数计算

上一篇文章《原创 | 大模型扫盲系列——初识大模型》从比较宏观的角度初步介绍大模型领域的相关知识,旨在带领读者构建一个大模型知识框架。近期,大模型相关的技术和应用层出不穷,各个方向的论文百花齐放,底层的核心技术是大家公认的精华部分。本文从技术的角度聚焦大模型的实战经验,总结大模型从业者关注的具体方向以及相关发展,帮助打算参与到大模型工作的人高效上手相关工作。

基座模型参数

在动手实践之初,首要任务便是选取一款市场上表现卓越的基座模型,为各种任务打下坚实的基础。在这个领域,OpenAI的ChatGPT-4以其独特的优势领跑,一时间,普通企业难以望其项背。因此,其他顶尖科技公司不得不寻找新的道路,争相进入开源领域,竞争打造出最强效果的大型模型。随着大模型技术成为热门趋势,无论是从学术论文的频繁引用还是商业应用实践来看,业界对这些基座模型的效果已达成广泛共识。

目前,业内普遍认可且实用性最高的四个基座模型分别为:Meta的Llama系列,被誉为欧洲"OpenAI"的Mistral AI所开源的Mistral系列,国内表现优秀的Qwen系列,以及最近发布、在同等参数级别中表现最佳的开源模型——Google的Gemma系列。本文将从模型的参数、网络结构和效果等多个方面进行深入分析,旨在提供一套适用于理解和评估任何开源模型的方法论和关注点。这里会以目前同量级效果最好的谷歌的Gemma系列作为举例来说明整体流程,具体模型见

https://huggingface.co/docs/transformers/en/model_doc/gemma

Gemma:

谷歌发布了一系列的Gemma模型(如下表格),以最常用的7B模型为例子具体剖析:

2019810352744187c4d65586ac1733b5.png

从模型卡(model card)中,能快速了解整个模型的架构以及在现有公开数据集上训练的效果,这里用大部分篇幅介绍计算模型参数,掌握这步计算对模型结构深入理解以及模型部署的推理优化都有非常重要的意义。

3d564450ba7d641045339dd7c59ac51d.png

图1

参数估算

7B的意思是模型参数的数量为70亿,这个数据包含嵌入层(Embedding)的参数,模型网络结构中的权重(weight)和偏差(bias)的总和,从官方发布的报告(https://storage.googleapis.com/deepmind-media/gemma/gemma-report.pdf)来看,所有参数总和应该是85亿(Table2中嵌入层参数+非嵌入层参数),这里的7b命名可能也是考虑到与差不多量级的Llama2进行对比。

d970a4604c6ab01d873e0840c20aece3.png

2781ef028d1731b825611847de33f4a9.png

对于Table 1的7B模型,结合图1中的config.json文件中的参数得到具体计算流程

Part 1:嵌入层参数(Embedding Parameters)

  • 词汇嵌入(vocab embeddings):vocab_size * dmodel

  • 位置嵌入(position embeddings):max_position_embeddings * dmodel

  • 嵌入层总参数量:(vocab_size + max_position_embeddings)* dmodel

注意Table 1中的dmodel就是指隐藏层的维度大小,对应json文件中的hidden size,而Gemma采用的是RoPE的位置编码方式,所以实际上位置嵌入的参数不算入嵌入层的参数,所以最后代入具体对应的数值有:

256128 * 3072 = 786,825,216

db97dbaa7a290c1da6f2d3374cf218ae.png

a74b842ac081bf1fce8f53adaed1e4de.png

图2

Part 2:非嵌入层参数(Non-Embedding Parameters)

这次Gemma使用的是Multi-Head attention,由上图得知Transformer结构由多个相同的层组成(Gemma是decoder-only模型,我们只需要关注decoder部分的网络结构就行),每个层分为三大部分:

  • 多头注意力层(Multi-head attention)

  • 前馈网络(Feed-forward network)

  • 归一化层(Layer normalization)

注意力机制层参数(每层):

438cce4b45a63cefc32ee48b758229f2.png

  • 查询(query)权重:dmodel * dq * 00577265297024cb82683edca1c01ea0.png

  • 键(key)权重:dmodel * dk * d676af8c4b05a149f356ea8809898875.png

  • 值(value)权重:dmodel * dv * 39963ed2e2fe9ff8b66f3fcabe23a1a8.png

  • 注意力输出权重:dmodel * dkqv * 0d82468747ab679c5e6b50c6c3082ddf.png

注意力层总参数量:3* 3c2edd0f854e69e5467389e877ea852f.png * dmodel * dkqv + (dmodel * 64756f78024bf2629f970db36405a6e4.png * dkqv)

这里注意一下注意力输出权重的计算是用Multi-head Attention的方式,从图2的Multi-Head Attention组件结构可知,Q、K、V做完 Scaled Dot-Product Attention之后,将得到的加权值(Values)通过一个线性变换来生成最终的输出。在一个典型的Transformer模型中,每个头会输出一个dmodel维的向量,然后把所有头的输出被拼接起来,形成一个更长的向量,这个向量随后会通过一个线性层的权重矩阵W_O实现的,它的维度是dmodel

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值