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

news2024/9/20 18:40:18

本文将介绍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

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2114263.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

管理学习(一)马云《赢在中国》创业演讲整理

目录 一、小公司也需要制度二、不要害怕冒险三、创业者要的不是技术,而是胆识四、不要惧怕和大企业竞争五、理念不一样,老板永远是对的六、要真实地为客户创造价值七、跟风险投资谈判,说到要做到八、风险投资,只能帮你不能救你九、…

24秋开学考

文件上传 上传一个.php的格式,上面说是非法的文件格式。 2.传了一个phpinfo.gif,说什么在目录里。 3.有两个页面一个labs1一个labs2 ,当在第一个页面上传1.jpg,在第二个页面上传1.jpg时,给了我们一个目录,在测试其他时…

[图解]识别类和属性-投资少见效快产量高

1 00:00:00,530 --> 00:00:04,360 接下来,我们就要来识别实体类和属性了 2 00:00:05,670 --> 00:00:07,260 前面也讲了,从哪里识别 3 00:00:08,120 --> 00:00:11,470 从用例规约那里来识别 4 00:00:12,400 --> 00:00:15,770 在识别的时候…

气膜体育馆投资前景广阔:健康产业中的新兴机遇—轻空间

气膜体育馆作为一种新型的建筑形式,为投资者带来了丰富的商业机会。随着全民健身的理念普及,气膜体育馆在市场上逐渐展现出巨大潜力。 市场需求不断增长 随着健康意识提升,人们对运动场地的需求日益增加。气膜体育馆凭借其灵活的建筑形式&…

【线性代数】正定矩阵,二次型函数

本文主要介绍正定矩阵,二次型函数,及其相关的解析证明过程和各个过程的可视化几何解释(深蓝色字体)。 非常喜欢清华大学张颢老师说过的一段话:如果你不能用可视化的方式看到事情的结果,那么你就很难对这个…

select、poll、epoll的区别

select、poll、epoll均为linux中的多路复用技术。3种技术出现的顺序是select、poll、epoll,3个版本反应了多路复用技术的迭代过程。我们现在开发网络应用时, 一般都会使用多路复用,很少有用一个线程来监听一个fd的,其中epoll又是最…

鸿蒙开发5.0【Picker的受限权限适配方案】

Picker由系统独立进程实现,应用可以通过拉起Picker组件,用户在Picker上选择对应的资源(如图片、文档等),应用可以获取Picker返回的结果。 类型受限权限使用的picker音频ohos.permission.READ_AUDIO,ohos.p…

【无人机设计与控制】 四轴飞行器的位移控制

摘要 本文介绍了一种四轴飞行器的位移控制方法,并通过Simulink模型进行仿真和验证。该方法通过PID控制器对飞行器的位移进行精确调节,以实现飞行器在三维空间中的稳定定位和路径跟踪。通过参数调节,能够适应不同的飞行任务需求,确…

UnLua环境搭建

一、环境搭建 1、下载UnLua工程:https://github.com/Tencent/UnLua 2、复制Plugins/UnLua目录下的插件到自己的项目中 3、重新生成自己的VS工程 4、打开VS工程的项目名.Build.cs文件,引用UnLua插件,重新编译工程 PublicDependencyModuleNames.AddRan…

【Nacos】Nacos快速上手使用(注册中心)【详解】

文章目录 1.基本介绍2. 使用Nacos服务注册中心2.1创建Nacos提供者集群 8001,80022.2创建Nacos消费者集群 8887 1.基本介绍 Nacos(Dynamic Naming and Configuration Service)是服务中心的另外一种实现。从注册中心的功能实现角度,与Eureka等价&#xff…

HumanNeRF:Free-viewpoint Rendering of Moving People from Monocular Video 翻译

HumanNeRF:单目视频中运动人物的自由视点绘制 引言。我们介绍了一种自由视点渲染方法- HumanNeRF -它适用于一个给定的单眼视频ofa人类执行复杂的身体运动,例如,从YouTube的视频。我们的方法可以在任何帧暂停视频,并从任意新的摄…

Python批量读取身份证信息录入系统和重命名

前言 大家好, 如果你对自动化处理身份证图片感兴趣,可以尝试以下操作:从身份证图片中快速提取信息,填入表格并提交到网页系统。如果你无法完成这个任务,我们将在“Python自动化办公2.0”课程中详细讲解实现整个过程。…

教师节送什么礼物给老师好 送礼送什么显高档又实用

教师节送什么礼物给老师好 送礼送什么显高档又实用 教师节即将到来,许多学生和家长都在思考如何表达对老师的感激之情。选择一份合适的礼物不仅能够表达心意,还能让老师感受到学生的关心和尊重。那么,送什么礼物给老师既显高档又实用呢&#…

字节跳动笔试题:自动校对程序:解决王大锤的拼写错误

字节跳动面试题:自动校对程序:解决王大锤的拼写错误 引言问题描述数据范围输入输出描述算法与数据结构伪代码C 代码实现代码解释测试用例边界情况复杂度分析结论后记引言 王大锤,一个出版社的编辑,每天面对海量的英文稿件,不胜其烦。然而,凭借他蓝翔技校挖掘机和程序设计…

[情商-13]:语言的艺术:何为真实和真相,所谓真相,就是别人想让你知道的真相!洞察谎言与真相!

目录 前言: 一、说话的真实程度分级 二、说谎动机分级:善意谎言、中性谎言、恶意谎言 三、小心:所谓真相:只说对自己有利的真相 四、小心:所谓真相:就是别人想让你知道的真相 五、小心:所…

Redis 事务:支持回滚吗?深入解析

今天我们要来探讨一个关于 Redis 事务的重要问题:Redis 事务支持回滚吗?这个问题在 Redis 的使用中经常被提及,对于正确理解和使用 Redis 事务至关重要。那么,让我们一起深入解析这个问题吧! 一、Redis 事务简介 在了…

Linux命令分享 三 (ubuntu 16.04)

1、‘>’ >>输出重定向 用法:命令 参数 > 文件 ls > a.txt ‘>’ 将一个命令的结果不输出到屏幕上,输出到文件中,如果文件不存在就创建文件,如果存在就覆盖文件。 ls >> a.txt ‘>>’ 如果文件不存…

数据结构与算法02 - 复杂度

1、空间复杂度 空间复杂度指的是临时占用存储空间大小的量度;空间复杂度计算的是变量的个数,也采用大O渐进表示法;由于函数在运行的时候所需要的栈空间(存储参数、局部变量、一些寄存器信息等)在编译器已经确定好了&a…

BERN2(生物医学领域)命名实体识别与命名规范化工具

BERN2: an advanced neural biomedical named entity recognition and normalization tool 《Bioinformatics》2022 1 摘要 NER和NEN:在生物医学自然语言处理中,NER和NEN是关键任务,它们使得从生物医学文献中自动提取实体(如疾病…

modelsim仿真流程

modelsim仿真流程 1、建立工程 project new "../prj" test.mpf2、添加rtl文件 project addfile "../test.v" verilog3、建立仿真库 vlib work4、编译rtl到仿真库中 vlog -sv -sv09compat defineT133 incdir"../rtl" test.v -work work5、加载…