大模型长文本处理技术与GLM-4-Plus评测

本文将介绍Transformer模型在处理长文本数据时所采用的关键技术,特别是旋转位置编码(RoPE)和Flash Attention机制。

此外,本文介绍GLM系列模型,特别是最新发布的GLM-4-Plus模型。我们将通过实际的评测方法和结果,展示GLM-4-Plus模型在处理长文本任务时的卓越性能。

unsetunsetTransformer模型unsetunset

Transformer模型的核心是自注意力机制(Self-Attention),它允许模型在处理序列数据时,能够同时考虑序列中的所有位置,这一点与传统的循环神经网络(RNN)或卷积神经网络(CNN)不同,后者通常需要逐步处理序列数据。

位置编码

Transformer模型由编码器(Encoder)和解码器(Decoder)组成,每个部分都包含多个相同的层,这些层由自注意力机制和全连接网络组成。此外,Transformer 还引入了位置编码来保留序列中的顺序信息,因为自注意力机制本身并不包含序列的顺序信息。

位置编码通常是通过正弦和余弦函数的固定函数形式来生成的,每个位置的编码是唯一的,并且编码的维度与模型的维度相匹配。

对于位置 pos 和维度 i,位置编码的第 i 维度的值由下面的公式给出:

  • 对于偶数维度(2i):

  • 对于奇数维度(2i+1):

其中 pos 是单词在句子中的位置,i 是维度索引, 是模型的维度。

并行能力

由于自注意力机制不依赖于序列中前一个状态的输出,这使得模型的所有层可以并行处理,从而大大提高了训练效率。Transformer还采用了残差连接和层归一化技术,这些技术有助于改善深层网络的训练稳定性,并减少梯度消失或爆炸的问题。

残差连接(Residual Connection)

对于Transformer中的每个子层(自注意力层或前馈全连接层)的输出,残差连接可以表示为:

自注意力机制

自注意力机制(Self-Attention)的核心思想是计算序列中每个元素(如单词或字)与其他所有元素的关系,以便捕捉序列内的长距离依赖关系。

计算查询(Query)、键(Key)和值(Value):对于输入序列中的每个元素,我们分别计算其查询、键和值的表示。这通常是通过与权重矩阵的矩阵乘法来实现的:

计算注意力得分:使用查询和键的点积来计算注意力得分,然后通常通过一个缩放因子(通常是键向量维度的平方根)来防止点积结果过大,接着应用softmax函数来获取注意力权重:

unsetunset大模型长文本处理技术unsetunset

如果把 LLM 比作新时代的操作系统,上下文窗口便是它的「内存」。一个优秀的 LLM 也需要足够长的上下文长度来完成各种复杂的任务。

RoPE

Transformer模型依赖于位置编码来理解单词顺序,但标准的编码方式通常只适用于固定长度的上下文。为了处理超出训练时见过的长度,旋转位置编码(RoPE)允许模型处理比训练时更长的输入,但这样可能会以性能损失。

RoPE的核心思想是对词嵌入向量应用旋转变换,以注入位置信息。对于序列中的每个位置,RoPE通过旋转矩阵来调整词向量,旋转的角度与位置索引相关。这种旋转操作不仅保留了向量的模长(即词向量的大小不变),而且还能够引入相对位置信息。

在二维情况下,RoPE可以通过以下公式表达:

@torch.jit.script  
def apply_rotary_pos_emb(x: torch.Tensor, rope_cache: torch.Tensor) -> torch.Tensor:  
    # 获取输入张量 x 的各个维度大小  
    b, np, sq, hn = x.size(0), x.size(1), x.size(2), x.size(3)  
    # 计算旋转维度 rot_dim,它是 rope_cache 的倒数第二个维度的两倍  
    rot_dim = rope_cache.shape[-2] * 2  
      
    # 将 x 分为两部分:需要应用 RoPE 的维度和不需要变化的维度  
    x, x_pass = x[..., :rot_dim], x[..., rot_dim:]  
      
    # 根据序列长度 sq 截断 rope_cache,以确保它与当前处理的序列长度相匹配  
    rope_cache = rope_cache[:, :sq]  
      
    # 重塑 x 为 xshaped,以便将其与 rope_cache 进行运算  
    xshaped = x.reshape(b, np, sq, rot_dim // 2, 2)  
      
    # 重塑 rope_cache 以匹配 xshaped 的维度,并准备进行旋转运算  
    rope_cache = rope_cache.view(-1, 1, sq, xshaped.size(3), 2)  
      
    # 对 xshaped 中的每个元素应用旋转,使用复数的旋转公式  
    x_out2 = torch.stack(  
        [  
            xshaped[..., 0] * rope_cache[..., 0] - xshaped[..., 1] * rope_cache[..., 1],  # 实部旋转  
            xshaped[..., 1] * rope_cache[..., 0] + xshaped[..., 0] * rope_cache[..., 1],  # 虚部旋转  
        ],  
        -1,  
    )  
      
    # 将旋转后的张量 x_out2 重塑回原来的维度  
    x_out2 = x_out2.flatten(3)  
      
    # 将旋转后的张量 x_out2 与不需要变化的维度 x_pass 拼接起来,形成最终的输出  
    return torch.cat((x_out2, x_pass), dim=-1)  

FlashAttention

与传统的自注意力机制相比,Flash Attention将内存复杂度从O(N²)降低到O(N),这对于处理大规模数据集和大型模型尤为重要。

Flash Attention的算法包括两个主要思想:平铺和重新计算。在平铺过程中,注意力矩阵被划分为更小的块,以优化内存使用和计算效率。在重新计算过程中,利用存储的输出和softmax归一化统计数据来重新计算注意力矩阵,而无需存储大型中间矩阵。

unset

为了全面评估GLM系列模型在处理新闻文本分类任务上的能力,我们的评测方法采用了THUCNews数据集。

在评测过程中,我们将特别关注模型在处理不同长度文本时的表现。文本长度是影响模型性能的一个重要因素,因为它直接关系到模型处理信息的能力和复杂度。

unsetGLM 模型性能评测unsetunset

模型介绍

模型描述上下文
GLM-4-Plus高智能旗舰128K
GLM-4-0520高智能模型128K
GLM-4-Long Beta超长输入1M
GLM-4-AirX极速推理8K
GLM-4-Air高性价比128K
GLM-4-Flash免费调用128K

评测方法

通过THUCNews数据集,设置不同的文本长度,并通过大模型完成新闻分类:

def news_classify(news_path, texlen, model):  
    text = ''.join(open(news_path).readlines())[:texlen]  
    data = {  
        "model": model,  
        "messages": [{"role": "user", "content":  f'''请对下面的新闻进行分类,待选类别有: {class_names}\n {text}''' }]  
    }  
  
    try:  
        response = requests.post(url, headers=headers, json=data, timeout=200)  
        if news_path.split('/')[-2] in response.json()['choices'][0]['message']['content']:  
            return True  
        else:  
            return False  
    except:  
        return None  

评测结果

GLM-4-Plus整体表现非常稳定,精度始终保持在0.88以上,是所有模型中最高的。模型如GLM-4-Plus和GLM-4-Long在处理长文本时表现较好。

unsetunsetGLM-4-Plus介绍unsetunset

在 KDD 国际数据挖掘与知识发现大会上,智谱 GLM 团队发布了新一代基座大模型——GLM-4-Plus。作为智谱全自研 GLM 大模型的最新版本,GLM-4-Plus 标志着智谱AI在通用人工智能领域的持续深耕,推进大模型技术的独立自主创新。

GLM-4-Plus 在长文本处理能力上比肩国际先进水平。通过更精准的长短文本数据混合策略,显著增强了长文本的推理效果。

模型LongBench-ChatInfiniteBench/EN.MCRuler
Mistral-123B8.238.980.5
Llama 405B8.683.491.5
Claude Sonnet 3.58.679.5-
Gemini 1.5 Pro8.680.995.8
GPT-4o982.5-
GLM-4-Plus8.885.193
GLM-4-Plus/GPT-4o98%103%-
GLM-4-Plus/Claude 3.5 Sonnet102%107%-

调用示例

同步调用方法
from zhipuai import ZhipuAI  
client = ZhipuAI(api_key="") # 填写您自己的APIKey  
response = client.chat.completions.create(  
    model="glm-4-plus",  # 填写需要调用的模型编码  
    messages=[  
        {"role": "user", "content": "作为一名营销专家,请为智谱开放平台创作一个吸引人的slogan"},  
        {"role": "assistant", "content": "当然,为了创作一个吸引人的slogan,请告诉我一些关于您产品的信息"},  
        {"role": "user", "content": "智谱AI开放平台"},  
        {"role": "assistant", "content": "智启未来,谱绘无限一智谱AI,让创新触手可及!"},  
        {"role": "user", "content": "创造一个更精准、吸引人的slogan"}  
    ],  
)  
print(response.choices[0].message)  

流式调用方法
from zhipuai import ZhipuAI  
client = ZhipuAI(api_key="") # 请填写您自己的APIKey  
response = client.chat.completions.create(  
    model="glm-4-plus",  # 填写需要调用的模型编码  
    messages=[  
        {"role": "system", "content": "你是一个乐于解答各种问题的助手,你的任务是为用户提供专业、准确、有见地的建议。"},  
        {"role": "user", "content": "我对太阳系的行星非常感兴趣,特别是土星。请提供关于土星的基本信息,包括其大小、组成、环系统和任何独特的天文现象。"},  
    ],  
    stream=True,  
)  
for chunk in response:  
    print(chunk.choices[0].delta)  

  • System Message 格式
参数名称参数说明
role消息的角色信息,此时应为system
content消息内容
  • User Message 格式
参数名称参数说明
role消息的角色信息,此时应为user
content消息内容

GLM-4-Plus 能力介绍

  • 语言理解能力:GLM-4-Plus 使用了大量模型辅助构造高质量合成数据以提升模型性能;有效提升了模型推理(数学、代码算法题等)表现,更好反映人类偏好。

  • 长文本推理能力:GLM-4-Plus通过精准的长短文本数据混合策略、先进的预训练与微调技术,以及创新性的技术手段,成功地在长文本推理能力上达到了国际先进水平。

如何学习AI大模型?

大模型时代,火爆出圈的LLM大模型让程序员们开始重新评估自己的本领。 “AI会取代那些行业?”“谁的饭碗又将不保了?”等问题热议不断。

不如成为「掌握AI工具的技术人」,毕竟AI时代,谁先尝试,谁就能占得先机!

但是LLM相关的内容很多,现在网上的老课程老教材关于LLM又太少。所以现在小白入门就只能靠自学,学习成本和门槛很高

针对所有自学遇到困难的同学们,我帮大家系统梳理大模型学习脉络,将这份 LLM大模型资料 分享出来:包括LLM大模型书籍、640套大模型行业报告、LLM大模型学习视频、LLM大模型学习路线、开源大模型学习教程等, 😝有需要的小伙伴,可以 扫描下方二维码领取🆓↓↓↓

👉[CSDN大礼包🎁:全网最全《LLM大模型入门+进阶学习资源包》免费分享(安全链接,放心点击)]()👈

学习路线

在这里插入图片描述

第一阶段: 从大模型系统设计入手,讲解大模型的主要方法;

第二阶段: 在通过大模型提示词工程从Prompts角度入手更好发挥模型的作用;

第三阶段: 大模型平台应用开发借助阿里云PAI平台构建电商领域虚拟试衣系统;

第四阶段: 大模型知识库应用开发以LangChain框架为例,构建物流行业咨询智能问答系统;

第五阶段: 大模型微调开发借助以大健康、新零售、新媒体领域构建适合当前领域大模型;

第六阶段: 以SD多模态大模型为主,搭建了文生图小程序案例;

第七阶段: 以大模型平台应用与开发为主,通过星火大模型,文心大模型等成熟大模型构建大模型行业应用。

在这里插入图片描述

👉学会后的收获:👈

• 基于大模型全栈工程实现(前端、后端、产品经理、设计、数据分析等),通过这门课可获得不同能力;

• 能够利用大模型解决相关实际项目需求: 大数据时代,越来越多的企业和机构需要处理海量数据,利用大模型技术可以更好地处理这些数据,提高数据分析和决策的准确性。因此,掌握大模型应用开发技能,可以让程序员更好地应对实际项目需求;

• 基于大模型和企业数据AI应用开发,实现大模型理论、掌握GPU算力、硬件、LangChain开发框架和项目实战技能, 学会Fine-tuning垂直训练大模型(数据准备、数据蒸馏、大模型部署)一站式掌握;

• 能够完成时下热门大模型垂直领域模型训练能力,提高程序员的编码能力: 大模型应用开发需要掌握机器学习算法、深度学习框架等技术,这些技术的掌握可以提高程序员的编码能力和分析能力,让程序员更加熟练地编写高质量的代码。

在这里插入图片描述

1.AI大模型学习路线图
2.100套AI大模型商业化落地方案
3.100集大模型视频教程
4.200本大模型PDF书籍
5.LLM面试题合集
6.AI产品经理资源合集

👉获取方式:
😝有需要的小伙伴,可以保存图片到wx扫描二v码免费领取【保证100%免费】🆓

GLM-4V是一种大型模型,它的全称是Generalized Linear Model-4V。GLM-4V是一种广义线性模型,它是基于广义线性模型(Generalized Linear Model, GLM)的扩展和改进。 GLM-4V的原理如下: 1. 广义线性模型GLM):GLM是一种统计模型,用于建立因变量与自变量之间的关系。它通过将线性回归模型与非线性函数相结合,可以处理不满足正态分布假设的数据。GLM的基本假设是,因变量的分布可以通过一个链接函数与自变量的线性组合相关联。 2. 四个"V":GLM-4V中的四个"V"代表了四个重要的概念,分别是Variation、Variance、Value和Validation。 - Variation(变异性):GLM-4V关注因变量的变异性,通过分析因变量的变异程度来确定模型的拟合程度。 - Variance(方差):GLM-4V考虑了因变量的方差,通过对方差进行建模,可以更好地描述因变量的分布特征。 - Value(价值):GLM-4V关注因变量的价值,通过对因变量的价值进行建模,可以更好地理解因变量对自变量的响应。 - Validation(验证):GLM-4V通过验证模型的拟合程度和预测能力,来评估模型的有效性和可靠性。 3. 模型构建:GLM-4V的模型构建包括以下几个步骤: - 数据准备:包括数据清洗、变量选择和数据转换等。 - 模型选择:选择适当的链接函数和误差分布族,并确定自变量的形式。 - 参数估计:使用最大似然估计或广义最小二乘法等方法,估计模型的参数。 - 模型诊断:对模型进行诊断,检验模型的拟合程度和假设条件是否满足。 - 模型评估:通过交叉验证等方法,评估模型的预测能力和稳定性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值