【NLP】大模型长文本处理技术与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可以通过以下公式表达:

https://huggingface.co/THUDM/glm-4-9b/blob/main/modeling_chatglm.py

@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归一化统计数据来重新计算注意力矩阵,而无需存储大型中间矩阵。

https://huggingface.co/THUDM/glm-4-9b/blob/main/modeling_chatglm.py

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大模型?

作为一名热心肠的互联网老兵,我决定把宝贵的AI知识分享给大家。 至于能学习到多少就看你的学习毅力和能力了 。我已将重要的AI大模型资料包括AI大模型入门学习思维导图、精品AI大模型学习书籍手册、视频教程、实战学习等录播视频免费分享出来。

这份完整版的大模型 AI 学习资料已经上传CSDN,朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费

一、全套AGI大模型学习路线

AI大模型时代的学习之旅:从基础到前沿,掌握人工智能的核心技能!

img

二、640套AI大模型报告合集

这套包含640份报告的合集,涵盖了AI大模型的理论研究、技术实现、行业应用等多个方面。无论您是科研人员、工程师,还是对AI大模型感兴趣的爱好者,这套报告合集都将为您提供宝贵的信息和启示。

img

三、AI大模型经典PDF籍

随着人工智能技术的飞速发展,AI大模型已经成为了当今科技领域的一大热点。这些大型预训练模型,如GPT-3、BERT、XLNet等,以其强大的语言理解和生成能力,正在改变我们对人工智能的认识。 那以下这些PDF籍就是非常不错的学习资源。

img

四、AI大模型商业化落地方案

img

作为普通人,入局大模型时代需要持续学习和实践,不断提高自己的技能和认知水平,同时也需要有责任感和伦理意识,为人工智能的健康发展贡献力量。

本文转自 https://blog.csdn.net/python123456_/article/details/141964830?spm=1001.2014.3001.5501,如有侵权,请联系删除。

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值