10亿上下文!微软新作,引入LongNet将Transformers上下文长度扩充到10亿

news2024/10/5 19:16:59
夕小瑶科技说 原创
作者 | python, ZenMogre

Transformer处理长序列时较为吃力。因为global attention的存在,模型的时间复杂度是序列长度的2次方级。为了建模更长的上下文,人们也提出了各种稀疏注意力机制。而这次,微软卷到家了,提出了LongNet网络,可以将Transformers的上下文范围(几乎)无限扩充,并给出了序列长度达到10亿的实验数据。让我们来看看吧。

论文题目:

LONGNET: Scaling Transformers to 1,000,000,000 Tokens

论文链接:

https://arxiv.org/pdf/2307.02486.pdf

项目地址:

https://aka.ms/LongNet

LongNet注意力结构

LongNet网络和标准Transformer差别不大,主要提出提出了一种名为dilated attention的注意力模式。如下图所示,其实和稀疏注意力模式很像,但借鉴了线段树的思想。整体而言,随着节点相对距离的增加节点之间的交互对数级地较小,以此来实现时间复杂度随输入序列长度线性增加。

例如,如上图所示,结构可以类别一颗以4叉树为基础的线段树。在段长为4,扩展率为1的部分(蓝色),距离为4以内的点直接计算注意力;加上在段长为16,扩展率为4的部分(蓝色+橙色),节点之间最多通过2次注意力机制(绿色+蓝色)。这样算来,BERT-base 12层的网络,允许2^24=16M的上下文进行交互。

大模型研究测试传送门

GPT-4能力研究传送门(遇浏览器警告点高级/继续访问即可):
https://gpt4test.com

多卡分布式计算

对于大规模语言模型等transformers的应用场景,因为模型参数量很大,多卡分布式计算必不可少。而LongNet允许更长的上下文范围,也会带来显存使用量的提升。下图是多卡分布式计算的方式的示意图。以2卡为例,可以将输入序列截断为2部分,2块显卡分别计算注意力机制的Q、K、V向量,与Segment Length比较小的部分的注意力机制(深蓝、浅蓝部分)。然后,汇聚计算结果,计算Segment Length比较大的部分的注意力交互(灰色)。因为Segment Length比较大时,Dilated rate也较大,注意力较为稀疏,因此可以单卡计算。

实验结果

十亿序列长度的时间消耗

下图对比的前馈网络的时间消耗。可以看到,标准transformers的随着序列长度增加,时间消耗2次方增长(橙色),而基于Diated attention的网络结构时间消耗随输入序列长度线性增加(蓝色)。

语言模型建模能力

实验基于base-size的MAGNETO[1]结构(12层、12头、768隐层维度)和XPOS[2]相对位置编码。采用Stack数据集[3],一个源代码数据集。采用tiktoken分词器[4],训练了300K个steps,并采用FlashAttention[5]优化方式。

LongNet采用的segment lengths范围为{2048,4096,8192,16384,32768},对应到dilated ratios为{1,2,4,6,12}。

从下面两张图中可以看到,LongNet的PPL分数明显低于抱住Transformer。在相同建模序列长度中,LongNet表现均优于Sparse Transformer。相对于标准Transformer而言,LongNet可以用更小的计算量,建模更长的上下文范围,取得更好的表现。

构建大语言模型的潜力

如下图左所示,增加模型参数从1.2亿到27亿,随着LongNet的计算量增加,在测试集上的PPL也随之降低。这体现出,LongNet同样满足scaling law。训练更大的语言模型可能能取得更好的表现。

之前的工作曾指出,大语言模型无法超越监督学习任务,经常是因为上下文建模长度有限,in context learning只能支撑小样本学习。而如下图右所示,在语言模型任务上,以上文作为prompt。随着上下文长度的增加,prompt的长度边长,LongNet在语言模型能够取得更好的表现。说明LongNet的注意力机制能够利用较远的上下文信息,展现未来prompt learning上的潜力。

总结

本文引入了LongNet,可以以较低的成本引入更长的上下文范围。虽然没有直接在大语言模型(LLM)上做尝试,但也展现了令人瞩目的潜力。更长的上下文范围也意味着prompt tuning可能将迎来全监督学习年代。具体未来会如何呢?让我们拭目以待。

参考资料

[1] Hongyu Wang, Shuming Ma, Shaohan Huang, Li Dong, Wenhui Wang, Zhiliang Peng, Yu Wu, Payal Bajaj, Saksham Singhal, Alon Benhaim, Barun Patra, Zhun Liu, Vishrav Chaudhary, Xia Song, and Furu Wei. Foundation transformers. CoRR, abs/2210.06423, 2022.
[2] Yutao Sun, Li Dong, Barun Patra, Shuming Ma, Shaohan Huang, Alon Benhaim, Vishrav Chaudhary, Xia Song, and Furu Wei. A length-extrapolatable transformer. CoRR, abs/2212.10554, 2022.
[3] Denis Kocetkov, Raymond Li, Loubna Ben Allal, Jia Li, Chenghao Mou, Carlos Muñoz Ferrandis, Yacine Jernite, Margaret Mitchell, Sean Hughes, Thomas Wolf, Dzmitry Bahdanau, Leandro von Werra, and Harm de Vries. The stack: 3 TB of permissively licensed source code. CoRR, abs/2211.15533, 2022.
[4] https://github.com/openai/tiktoken
[5] https://github.com/HazyResearch/flash-attention/tree/main

大模型AI全栈手册

行业首份AI全栈手册开放下载啦!!

长达3000页,涵盖大语言模型技术发展、AIGC技术最新动向和应用、深度学习技术等AI方向。微信公众号关注“夕小瑶科技说”,回复“789”下载资料

[图片]

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

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

相关文章

word免费转为pdf怎么转,分享这几个方法给大家!

将Word文档转换为PDF格式是一种常见的需求,因为PDF文件具有广泛的兼容性和安全性。本文将介绍三种免费转换Word为PDF的方法,包括记灵在线工具、使用Word自带功能以及使用Smallpdf。这些方法简单易行,帮助您轻松完成转换,方便与他人…

【尚医通】vue3+ts前端项目开发笔记——项目分析

尚医通开发笔记 一、项目分析 项目在线地址:http://syt.atguigu.cn测试帐号:17720125002 首页 home header 全局组件布局 左:logo 、title中:初始隐藏 搜索框 公共组件显示条件:在页面滚动到页面内搜索框的位置显示…

Go语言中的运算符

Golang 内置的运算符 算术运算符 关系运算符 逻辑运算符 位运算符(不常用) 赋值运算符 算数运算符 运算符描述相加-相减*相乘/相除%求余 a : 10b : 9fmt.Printf("ab的值为%v\na-b的值为%v\na*b的值为%v\n",ab,a-b,a*b) 除法注意:…

uniapp:粘性布局(吸顶:u-sticky)生效的注意事项

使用场景&#xff1a;要求首次渲染时不需要固定在页面顶部&#xff08;正常布局&#xff09;&#xff0c;当随着页面的滚动&#xff0c;需要将起固定在页面顶部&#xff0c;会使用到可能的有&#xff1a;tab、搜索框、导航、标题、头图…工具&#xff1a;用了uview2的组件<u…

手撕spring04源码(A依赖B)

概述 本章节优化上一章节通过构造方法实例化对象属性填充问题的痛点&#xff0c;并解决A bean依赖B bean的问题 整体设计 知识点补充 spring生命周期 在Spring中&#xff0c;Bean的生命周期包括实例化、初始化和销毁三个阶段。下面是对每个阶段的解释&#xff1a; 实例化…

河南企业级泛域名SSL证书

电脑的普及让网络可以快速发展&#xff0c;紧随网络的发展各个CA认证机构推出了泛域名SSL证书、多域名SSL证书等可以用一张SSL证书保护多个域名网站的SSL数字证书。泛域名SSL证书也叫通配符SSL证书&#xff0c;可以用一张SSL证书保护主域名以及主域名下所有的子域名网站&#x…

NR PDCP(三) data transfer

这篇看下PDCP的data transfer过程&#xff0c;如NR RLC(三) TM and UM mode所述&#xff0c;在UL grant充足的情况下&#xff0c;UM RLC 一直在传输完整的RLC SDU&#xff0c;通过log只能知道UE有在收发data&#xff0c;并不能像LTE似的通过SN去判断UE DL data是否有序接收以及…

平板触控笔要原装的吗?apple pencil的平替笔推荐

如今的电容笔种类越来越多&#xff0c;相信不少人都会在挑选电容笔中踩过坑&#xff0c;例如书写频繁断触&#xff0c;防误触失灵&#xff0c;续航能力欠佳等问题。这样的坑本人也是踩过不少&#xff0c;于是&#xff0c;我决定为大家出一期电容笔详细测评&#xff0c;特意地去…

从程序员的角度看待算法的学习与研究

一&#xff1a;引言 算法的重要性和应用场景&#xff1a; 提高效率&#xff1a;算法可以帮助我们设计和实现高效的解决方案&#xff0c;在有限的资源下&#xff0c;提高计算机程序或系统的执行速度和效率。解决复杂问题&#xff1a;算法可以提供有效的解决方案来解决各种复杂问…

有PMP证书了再考CSPM有必要吗?

先说答案&#xff1a;有必要 首先介绍一下什么是CSPM cspm中文名字是项目管理专业人员能力等级评价&#xff0c;是由中国标准化协会&#xff08;CAS&#xff09;组织开展的&#xff0c;它符合国务院发布的《国家标准化发展纲要》&#xff0c;纲要中明确提出要构建多层次从业人…

【mysql】mysql登录密码忘记重置方法,解决password针对mysql8.0及以上版本失效问题

问题场景&#xff1a; 提示&#xff1a;mysql密码忘记 本人场景&#xff1a;mysql装了很久&#xff0c;一段时间未使用&#xff0c;再次打开发现登录不了了&#xff0c;于是想修改密码。 解决方案&#xff1a; 1、找到自己安装mysql的文件夹。删掉其中的data文件夹&#xff…

Python反爬取访问验证处理

最近爬取数据的时候&#xff0c;遇到反爬取限制&#xff1a;即当访问一定次数后会弹出访问验证如下图所示&#xff1a; 这种验证方式没找到绕过去的方法&#xff0c;那就只能用最笨的办法&#xff0c;弹出验证框后&#xff0c;将等待时间延长&#xff0c;然后手动点击验证。代码…

数据结构--线索二叉树的概念

数据结构–线索二叉树的概念 二叉树的中序遍历序列 void InOrder(BiTree T) {if (T ! NULL){InOrder(T->lchild); //递归遍历左子树visit(T); //访问根结点InOrder(T->rchild); //递归遍历右子树} }中序遍历序列:D G B E A F C ①如何找到指定结点p在中序遍历序列中的前…

Oracle-奇怪的expdp备份报错LPX-00217

问题背景: 接用户报障&#xff0c;数据库每天晚上正常的expdp备份&#xff0c;从2天前开始出现奇怪的备份报错LPX-00217: invalid character 3 问题分析: 检查expdp备份的日志&#xff0c;从2天前晚上开始的备份均出现LPX-00217: invalid character 3的报错&#xff0c;报错均…

CentOS7在线安装MySQL新手小白教程

1、下载并安装MySQL官方的 Yum Repository wget -i -c http://dev.mysql.com/get/mysql57-community-release-el7-10.noarch.rpm使用上面的命令下载安装用的Yum Repository yum -y install mysql57-community-release-el7-10.noarch.rpm开始安装MySQL服务器 yum -y install …

C++学习 数组

目录 数组 一维数组 数组名 案例&#xff1a;冒泡排序 二维数组 数组名 数组 数组就是一个集合&#xff0c;里面存放了相同类型的数据元素。 下面的数字对应为数组的下标(索引)&#xff0c;可以看到索引范围为0~数组长度-1 特点&#xff1a; 数组中数据元素的数据类型相同。…

github软件包-golang,不同版本的使用--推荐

一、golang中获取github软件包&#xff0c;不同版本&#xff08;V1,V2...&#xff09;的使用&#xff1a; github中如何使用&#xff1a; golang语言使用的github的软件包&#xff0c;有时候不同版本如何切换&#xff0c;特别是有的版本变化比较多&#xff0c;例如在v1中没有…

Go语言程序设计(一)Go语言概述及基础

一、前言 为了尽可能获得最佳的运行性能&#xff0c;Go语言被设计成一门静态编译型的语言&#xff0c;而不是动态解释型的。Go语言的编译速度非常快&#xff0c;明显的要快过其他同类语言&#xff0c;比如C和C。 Go语言的官方编译器被称为gc。 Go语言具有以下几个特点&#x…

(css)盒子的阴影

(css)盒子的阴影 效果&#xff1a; 代码&#xff1a; box-shadow: inset 0 0 50px 2px #74eaff;解决参考&#xff1a;https://blog.csdn.net/weixin_52984349/article/details/125803515

docker部署私有化镜像仓库

为什么要部署私有化&#xff1a; 1.防止镜像因为内存不够被驱逐 2.方便内网服务器复用 部署步骤&#xff1a; docker pull registry // 如果嫌麻烦&#xff0c;也可以去我的资源里面去拿现成的&#xff0c;docker load -i registry.tar 到自己的docker里。"""如…