常见大模型——LLama系列

LLaMA简介

LLaMA(Large Language Model Meta AI)是由Meta开发的一种大规模语言模型,旨在提高自然语言处理任务的性能。LLaMA基于Transformer机构,并经过大规模数据训练,以便在多种语言任务中表现出色。
LLaMA所采用的Transformer结构和细节,与标准的Transformer结构不同的地方是包括了采用前置层归一化(Pre-normalization)并使用RMSNorm归一化函数(Normalizing Function)、激活函数更换为了SwiGLU,并使用了旋转位置嵌入(RoPE),整体Transformer架构与GPT-2类似。
在这里插入图片描述

RMSNorm归一化函数

为了使得模型训练的过程更加稳定,GPT-2相较于GPT就引入了前置层归一化方法,将第一个归一化移动到了多头注意力层之前,第二个归一化也移动到了全连接层之前,同时残差链接的位置也调整到了多头注意力层与全连接层之后。归一化中也采用了RMSNorm归一化函数。针对输入向量RNSNorm函数的计算公式如下:
在这里插入图片描述
代码实现如下:

class LLaMARMSNorm(nn.Module):
	def __init__(self,hidden_size,eps=1e-6):
		super().__init__()
		self.weight=nn.Parameter(torch.ones(hidden_size))
		self.variance_epsilon=eps
	def forward(self,hidden_states):
		input_dtype=hidden_states.dtype
		variance=hidden_states.to(torch.float32).pow(2).mean(-1,keepdim=True)
		hidden_states=hidden_states*torch.rsqrt(variance+self.variance_epsilon)
		return (self.weight*hidden_states).to(input_dtype)

SwiGLU激活函数

SwiGLU激活函数是相较于ReLU函数在大部分测评中都有不少的提升。在LLaMA中全连接层使用带有SwiGLU激活函数的FFN(Position-wise Feef-Forward Network)计算公式如下:
在这里插入图片描述
其中Swish函数是Sigmoid函数。当取不同的β时,激活函数的图像如下图所示。当β趋近于0时,Swish函数趋近于线性函数y=x;当β趋近于无穷大时,Swish函数趋近于ReLU函数。
在这里插入图片描述
LLaMA中直接将FFN中的ReLU替换为SwiGLU,并将维度放缩为(2/3)*4d

### Llama模型在机器视觉方面的应用与实现 尽管Llama系列模型最初设计用于自然语言处理任务,但它可以通过特定的技术手段扩展到其他领域,比如机器视觉。以下是关于如何利用Llama模型应用于机器视觉的一些方法和技术: #### 跨模态预训练技术 跨模态学习是一种将不同数据形式(如文本和图像)联合起来进行训练的方法。通过引入多模态数据集并调整架构设计,可以使得像Llama这样的语言模型具备理解图像的能力[^1]。 例如,在某些研究中,研究人员会先构建一个多模态编码器解码器结构,其中输入既包括来自图片特征提取网络的结果也包含相应的描述文字序列。接着采用类似于Transformer机制来融合这两种异构信息源,并最终完成诸如图文检索、视觉问答(VQA)等复杂任务。 #### Vision-Language Models (VLMs) 为了使纯文本的语言模型能够处理视觉数据,一种常见做法就是创建vision-language models (VLMs),这类模型通常由两部分组成:一个是负责分析图像内容的卷积神经网络(CNN)或者基于transformer 的 vision transformer;另一个则是用来理解和生成有关这些图像的文字说明的标准NLP组件——在这里即指代Llama家族成员之一作为基础框架改造而成的新版本. 具体来说,当面对一张新照片时,Vision Transformer 将其转换成一系列向量表示; 同时,Llama接收该表征以及任何附加提示(如果有的话),从而预测最合适的响应或标签[^2]. 下面给出一段简单的伪代码展示这一过程: ```python class MultiModalModel(nn.Module): def __init__(self, image_encoder, text_decoder): super(MultiModalModel, self).__init__() self.image_encoder = image_encoder self.text_decoder = text_decoder def forward(self, images, captions=None): img_features = self.image_encoder(images) outputs = self.text_decoder(captions, encoder_hidden_states=img_features) return outputs ``` 此代码片段定义了一个结合了图像编码器和文本解码器的多功能模块化体系结构。在这个例子当中,image_encoder 可能是一个预先经过ImageNet 数据库充分优化过的ResNet 或者ViT ,而text_decoder 则是以Llama为核心定制版变体。 #### 结合CLIP或其他对比学习算法 另一种有效途径是借助已经成功验证过效果良好的开源项目成果—OpenAI发布的Contrastive Language–Image Pre-training(CLIP). CLIP本质上是一套双塔式的嵌入系统,它学会了把配对好的句子同它们所对应的图画映射至同一高维空间里靠近彼此的位置上。因此如果我们希望让现有的Llama获得一定程度上的‘看图说话’本领的话,则可以直接加载官方提供的权重参数文件并与自定义修改后的Llama实例对接即可快速搭建起初步可用的服务原型. ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值