php能开发大型网站wordpress修改后台没反应

news/2025/9/29 6:02:42/文章来源:
php能开发大型网站,wordpress修改后台没反应,西安商城网站开发制作,东莞道滘网站建设写在前面 这篇文章提到了绝对位置编码和相对位置编码#xff0c;但是他们都有局限性#xff0c;比如绝对位置编码不能直接表征token的相对位置关系#xff1b;相对位置编码过于复杂#xff0c;影响效率。于是诞生了一种用绝对位置编码的方式实现相对位置编码的编码方式——…写在前面 这篇文章提到了绝对位置编码和相对位置编码但是他们都有局限性比如绝对位置编码不能直接表征token的相对位置关系相对位置编码过于复杂影响效率。于是诞生了一种用绝对位置编码的方式实现相对位置编码的编码方式——旋转位置编码Rotary Position Embedding, RoPE兼顾效率和相对位置关系。 RoPE的核心思想是通过旋转的方式将位置信息编码到每个维度从而使得模型能够捕捉到序列中元素的相对位置信息。现在已经在很多大模型证明了其有效性比如ChatGLM、LLaMA等。 一、RoPE的优点 1.真正的旋转位置编码 Transformer的原版位置编码也使用了三角函数但它生成的是每个位置的绝对编码三角函数的主要用途是生成具有可区分性的周期性模式也没有应用旋转变换的概念因此属于绝对位置编码。同时原版的编码使用加法在多层传递后导致位置信息的稀释如下图 没想到这张图也有被当做反面典型的时候吧 RoPE不是简单的加法而是通过复数乘法实现旋转变换这种旋转是将位置信息融入到token表示中的关键机制。RoPE在实现过程中通过乘法操作融入位置信息与模型中的Q和K深度融合将旋转操作真正植入Attention机制内部强化了位置编码信息的作用。 2.更好的相对位置信息编码 注意力机制通过计算Embedding的内积来确定它们之间的关系强度。 使用RoPE时两个位置的编码通过旋转变换后的内积自然地包含了它们之间的相对位置信息。这是因为旋转操作保持了内积的性质使得内积计算不仅反映了token的内容相似性还反映了它们的位置关系。 3.更适用于多维输入 这点很有意思传统的Transformer位置编码主要针对一维序列如文本序列。然而在某些任务中输入可能是二维或更高维的数据如图像或视频数据。旋转位置编码可以更灵活地应用于多维输入数据通过对不同维度的位置信息进行编码使得模型能够更好地理解多维数据中的位置关系。 4. 更善于处理长序列 RoPE可以减少位置信息的损失。在深层网络中RoPE通过乘法操作融入位置信息乘法操作有助于在深层网络中保持位置信息的完整性。在处理一个长文本时RoPE通过在每一层的自注意力计算中使用旋转变换确保了位置信息能够被有效保留和利用即使是在模型的较深层次。 二、公式 既然旋转的位置编码有这么多优点那怎么实现位置编码的旋转呢其实网上有很多介绍的文章。大概意思就是复数可以通过乘以e的幂来旋转角度其中幂就是角度再结合欧拉公式推出三角函数的表达大致流程如下。 欧拉公式 1 复数旋转角度θ 2 将1带入2 3 这块东西苏剑林老师已经从数学的角度进行过很深入的推导这里的融合式部分我就不班门弄斧了。我今天提供一种朴素的思考过程从代码实现的角度思考如何进行旋转。 众所周知一维向量是不能旋转的那我们就旋转一个[2,d]的二维向量q并且设即 4 要旋转q很容易乘以旋转矩阵就可以了如果我们要旋转角度θ 5 展开之后结果如下 6 上面的很眼熟吧就是沿用了transformer的机制这里有详细的介绍。 而且大家看到字母q也大概能猜到这就是Attention中的Q同样的操作也可以对K使用。经过上述操作其实已经以旋转的方式将位置编码融合到Attention机制内部。 下面就是根据式子6的代码实现了。这里提前说一句ChatGLM的Q和K的形状都是[b,1,32,64]其中b是token_ids的长度32是multi-head的个数64将被拆成两部分每部分32也就是上面的x,y,下面开始代码实现部分。 三、代码实现 我们以ChatGLM的代码为例展示一下RoPE的使用以下代码都在modeling_chatglm.py文件中一条训练数据 {context: 你好, target: 你好,我是大白话} 1.字符串转换成token_ids [ 5,  74874, 130001, 130004,  5,  74874, 6,  65806,  63850, 95351, 130005] 2.计算position_ids 根据上面的token_ids计算出position_ids [[0, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2],[0, 0, 0, 1, 2, 3, 4, 5, 6, 7, 8]] 解释一下position_ids第一行表示序列中每个元素的全局位置第一个“2”表明context结束了target要开始了后面所有的2都是target部分第二行则细化到更具体的局部位置从1开始表征整个target的内容这样用两个维度的编码很优雅的体现了context和target这种层次化处理对于理解上下文非常重要。 代码如下 def get_position_ids(self, input_ids, mask_positions, device, use_gmasksNone):根据token_ids生成position_ids:param input_ids: 这里是[[ 5, 74874, 130001, 130004, 5, 74874, 6, 65806, 63850, 95351, 130005]]:param mask_positions: 2 输出的第1维mask掉几位即这一位及其前面都是0后面是1,2...:param device::param use_gmasks::return: [[0, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2],[0, 0, 0, 1, 2, 3, 4, 5, 6, 7, 8]]batch_size, seq_length input_ids.shapeif use_gmasks is None:use_gmasks [False] * batch_sizecontext_lengths [seq.tolist().index(self.config.bos_token_id) for seq in input_ids]if self.position_encoding_2d:# 会走这一分支position_ids torch.arange(seq_length, dtypetorch.long, devicedevice).unsqueeze(0).repeat(batch_size, 1)for i, context_length in enumerate(context_lengths):position_ids[i, context_length:] mask_positions[i]block_position_ids [torch.cat((torch.zeros(context_length, dtypetorch.long, devicedevice),torch.arange(seq_length - context_length, dtypetorch.long, devicedevice) 1)) for context_length in context_lengths]block_position_ids torch.stack(block_position_ids, dim0)position_ids torch.stack((position_ids, block_position_ids), dim1)else:position_ids torch.arange(seq_length, dtypetorch.long, devicedevice).unsqueeze(0).repeat(batch_size, 1)for i, context_length in enumerate(context_lengths):if not use_gmasks[i]:position_ids[i, context_length:] mask_positions[i]return position_ids 3.角度序列Embedding 接下来将position_ids转换成角度序列Embedding,下表中每个格的公式为 其中m是position_ids中元素的数值i是编码的索引ChatGLM使用两个0-31拼接d是维度hidden_size // (num_attention_heads * 2)46 第一部分position_ids[0, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2]每个值编码成长度64的角度序列 m | i013101310m0, i0m0, i1...m0, i31m0, i0m0, i1...m0, i311m1, i0m1, i1m1, i31m1, i0m1, i1m1, i312m2, i0m2, i1m2, i31m2, i0m2, i1m2, i31...2m2, i0m2, i1m2, i31m2, i0m2, i1m2, i31 第二部分block_position_ids[0, 0, 0, 1, 2, 3, 4, 5, 6, 7, 8] m | i013101310m0, i0m0, i1...m0, i31m0, i0m0, i1...m0, i310m0, i0m0, i1...m0, i31m0, i0m0, i1...m0, i310m0, i0m0, i1...m0, i31m0, i0m0, i1...m0, i311m1, i0m1, i1m1, i31m1, i0m1, i1m1, i31...8m8, i0m8, i1m8, i31m8, i0m8, i1m8, i31 代码如下 class RotaryEmbedding(torch.nn.Module):def _load_from_state_dict(self, state_dict, prefix, local_metadata, strict, missing_keys, unexpected_keys,error_msgs):passdef __init__(self, dim, base10000, precisiontorch.half, learnableFalse):根据position_ids计算旋转角度的Embedding:param dim: 这里hidden_size // (num_attention_heads * 2)46其中hidden_size4096 num_attention_heads32:param base::param precision::param learnable:super().__init__()# 初始化“频率”可以理解为position_id每增加1增加的角度是Embedding形式的。inv_freq 1. / (base ** (torch.arange(0, dim, 2).float() / dim))inv_freq inv_freq.half()self.learnable learnableif learnable:self.inv_freq torch.nn.Parameter(inv_freq)self.max_seq_len_cached Noneelse:self.register_buffer(inv_freq, inv_freq)self.max_seq_len_cached Noneself.cos_cached Noneself.sin_cached Noneself.precision precisiondef forward(self, x, seq_dim1, seq_lenNone):if seq_len is None:seq_len x.shape[seq_dim]if self.max_seq_len_cached is None or (seq_len self.max_seq_len_cached):self.max_seq_len_cached None if self.learnable else seq_len# 1.对position_ids去重并正序排列得到t如[[0, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2]] -- t[[0, 1, 2]]t torch.arange(seq_len, devicex.device, dtypeself.inv_freq.dtype)# 2.t与初始化好的“频率”做外积得到每个position_id的角度是Embeddingfreqs torch.einsum(i,j-ij, t, self.inv_freq)# 3.每个Embedding重复叠加一次emb torch.cat((freqs, freqs), dim-1).to(x.device)if self.precision torch.bfloat16:emb emb.float()# 4.算cos和sin并增加维度cos_cached emb.cos()[:, None, :]sin_cached emb.sin()[:, None, :]if self.precision torch.bfloat16:cos_cached cos_cached.bfloat16()sin_cached sin_cached.bfloat16()if self.learnable:return cos_cached, sin_cachedself.cos_cached, self.sin_cached cos_cached, sin_cachedreturn self.cos_cached[:seq_len, ...], self.sin_cached[:seq_len, ...]def apply_rotary_pos_emb_index(q, k, cos, sin, position_id):# position_id: [sq, b], q, k: [sq, b, np, hn], cos: [sq, 1, hn] - [sq, b, 1, hn]# 类似于查表根据每个position_id获取相应的Embeddingcos, sin F.embedding(position_id, cos.squeeze(1)).unsqueeze(2), \F.embedding(position_id, sin.squeeze(1)).unsqueeze(2)...... 4.截取拼接Q和K 这一步对Q或者K做截断并将第二段取反拼在第一段的前面拼接成公式第二项的q部分。 上述3、4流程示意图 代码如下 def rotate_half(x):x1, x2 x[..., :x.shape[-1] // 2], x[..., x.shape[-1] // 2:]return torch.cat((-x2, x1), dimx1.ndim - 1) 5.旋转位置编码融合 将旋转位置编码融合到Q和K中计算第一部分的cos(1)和sin(1)并与输入的Q1、K1做乘法融合计算第二部分的cos(1)和sin(1)并与输入的Q1、K1做乘法融合最后将Q和K分别拼接组成融合了旋转位置编码的新Q和K。整体流程图如下其中rotary_pos_emb是上图也就是步骤3、4 代码如下 def apply_rotary_pos_emb_index(q, k, cos, sin, position_id):# position_id: [sq, b], q, k: [sq, b, np, hn], cos: [sq, 1, hn] - [sq, b, 1, hn]# 类似于查表根据每个position_id获取相应的Embeddingcos, sin F.embedding(position_id, cos.squeeze(1)).unsqueeze(2), \F.embedding(position_id, sin.squeeze(1)).unsqueeze(2)# 执行旋转位置编码与QK的融合q, k (q * cos) (rotate_half(q) * sin), (k * cos) (rotate_half(k) * sin)return q, k# 整体流程如下 # 1.拆分出Q1、Q2、K1、K2 q1, q2 query_layer.chunk(2, dim(query_layer.ndim - 1)) k1, k2 key_layer.chunk(2, dim(key_layer.ndim - 1)) # 2.计算旋转Embedding cos, sin self.rotary_emb(q1, seq_lenposition_ids.max() 1) position_ids, block_position_ids position_ids[:, 0, :].transpose(0, 1).contiguous(), \position_ids[:, 1, :].transpose(0, 1).contiguous() # 3.旋转位置编码融合 q1, k1 apply_rotary_pos_emb_index(q1, k1, cos, sin, position_ids) q2, k2 apply_rotary_pos_emb_index(q2, k2, cos, sin, block_position_ids) # 4.将拆分出的Q1、Q2、K1、K2合并成新的Q、K query_layer torch.concat([q1, q2], dim(q1.ndim - 1)) key_layer torch.concat([k1, k2], dim(k1.ndim - 1)) 位置编码对于Transformer的重要性毋庸置疑旋转位置编码也确实解决了一些问题。最有意思的就是它是一个二维编码将旋转信息通过乘法操作融入Attention机制内部强化了位置编码信息现在已经有很多开源大模型都使用了旋转位置编码可见其效果不俗。 旋转位置编码就介绍到这里关注不迷路(#^.^#)

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

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

相关文章

山东临沂市需要建设网站的公司软件开发公司在哪里

给定一句英语,要求你编写程序,将句中所有单词的顺序颠倒输出。 输入格式: 测试输入包含一个测试用例,在一行内给出总长度不超过 80 的字符串。字符串由若干单词和若干空格组成,其中单词是由英文字母(大小…

电商网站开发外包有关外贸的网站有哪些内容

Wifi设备监管 某知名跨国公司,在全球范围内拥有大量园区,园区内会有不同部门的同事在一起办公。每个园区内都要配备大量的Wifi设备从而为园区同事提供方便的上网服务。因此,集团需要一套完善的监管系统维护所有的Wifi设备。 公司通过监管系…

厦门百城建设有限公司网站专门做恐怖电影网站

eclipse 导入项目后会出现项目中的js文件报错(红叉),如下图所示,有时候报错的文件很多,需要集中处理。 解决办法: 右键项目名称》Properties》MyEclipse》JavaScript》Include Path,在右侧选择“…

价值共生的语法革命:从“悬荡悟空”到“元人文构境”

价值共生的语法革命:从“悬荡悟空”到“元人文构境” 副标题:互搏三回合:为元人文构想锻造“反脆弱”对话框架 AI/岐金兰 对话开始 说句实在,如果我不说悬荡悟空,直接说,等一下,我用大模型算一下,再来定夺决策…

济源市建设工程管理处网站孟津网站建设

计划写一个专题,该专题主要介绍CANalyzer的使用,每次文档计划写一个点,自己不累,别人看着也不累,并且方便拓展。本文作为专题的开篇主要介绍下CANalyzer软件的背景,软件界面等信息。 1 软件介绍 CANalyze…

17zwd一起做网站官网网站 模板 php

2019独角兽企业重金招聘Python工程师标准>>> VirtualBox是一款虚拟机软件。虽然它的功能并不及VMware Workstation Pro,但它对开源精神的坚持使得它在Linux中依然深受欢迎。 唯一难以令人接受的是,VirtualBox的安装步骤较为复杂。不过&#x…

市直部门网站建设方案公司网页设计思路

新手学习:ArcGIS对SHP文件裁剪 新手学习 记录每个步骤,因为有很多控件可能刚开始还不熟悉,根本不知道在哪里,所以写的比较详细。 1.添加要裁剪的shp文件 2.查看shp文件的地理坐标系 双击shp文件,就可以查看shp文件的…

视频网站的链接怎么做的年栾洪全单页做网站教程

摘要: 随着移动互联网的快速发展,移动学习已成为教育领域的重要趋势。本文介绍了基于uni-app和图鸟UI框架开发的云课堂小程序,该小程序实现了移动教学、移动学习、移动阅读和移动社交的完美结合,为用户提供了一个便捷、高效的学习…

毕业设计用PHP做旅游网站做网站怎样调用支付宝接口

什么是ChatGpt ChatGPT是一个由美国的OpenAI公司开发的聊天机器人,它使用了大型语言模型,现在有GPT-3、GPT-3.5、GPT-4.0多个版本,目前还在快速发展,通过监督学习和强化学习进行了微调。它可以根据用户的提示执行各种语言任务&am…

2025工业冷水机、风冷式、螺杆式、小型、水冷式、实验室等多类型冷水机品牌排行榜,帮企业选靠谱设备

在工业生产与商业运营里,冷水机是控温核心设备,其性能稳定度、能效高低和适配情况,直接关系到生产效率、产品质量以及运营成本。当前冷水机市场品牌繁杂,产品类型多样,但不同品牌在技术研发、生产工艺、品控标准和…

广州网站建设设计公司信息保网官网

1、设计模式 1)观察者模式定义了对象间的一种一对多依赖关系,使得每当一个对象改变状态,则所有依赖于它的对象都会得到通知并被自动更新【消息订阅】。在该模式中,发生改变的对象称为观察目标,被通知的对象称为观察者&…

网站建设各模块功能简述wordpress小程序 守望轩

1.利用数组的includes()方法 includes() 方法用来判断一个数组是否包含一个指定的值,如果是返回 true,否则false。 var fruits [苹果,"香蕉", 榴莲, 橘子, 菠萝蜜,"梨子"]; if(fruits.includes(榴莲)){console.log("该值在数组…

门户网站营销怎么做wordpress分销商城

本篇博文会从代理的概念出发,介绍Java中动态代理技术的使用,并进一步探索它的实现原理。由于个人水平有限,叙述中难免出现不清晰或是不准确的地方,希望大家可以指正,谢谢大家:) 一、概述 1. 什么…

FreeFileSync 本地文件同步及开机自启

目的:2 个地方有同名文件,一处修改时,另一处也要同步修改。 使用教程 1 保存脚本 界面右边有 2 个大框,表示 2 个文件夹。选择好 2 个文件夹,(配置过滤器),点击 Compare,(下方的勾选对于后面的脚本是没有用的…

2025登车桥生产厂家最新推荐榜单:聚焦月台登车桥、装卸登车桥、卸货平台登车桥、10吨登车桥产品,精选五家实力企业助力采购

在物流行业高速发展的当下,登车桥作为连接货车与装卸平台的关键设备,其性能好坏直接影响货物装卸效率与作业安全。当前市场上,登车桥生产厂家数量众多,但产品质量参差不齐,部分厂家为压缩成本使用劣质材料,导致设…

腾讯云如何创建网站网站建设便宜不可信

来源:图灵教育猜一猜,下图中是什么动物?图1 看图猜动物尽管图中的动物胖得出奇,你也应该能够猜到它是一只长颈鹿。人类的大脑拥有强大的辨识能力,它是一个由差不多 800 亿个神经元组成的复杂网络。即使某物并非我们熟知…

网站加盟代理什么是网络营销网络营销的方法有哪些

来源:中国生物技术网肠道,也被称为“第二大脑”。研究人员对它研究得越多,就发现肠道微生物与大脑之间的联系越多。肠道细菌似乎会影响从抑郁症到自闭症的所有疾病。近日发表在《Nature》上一项有关小鼠如何克服恐惧的研究开始揭示出更多关于…

2025 年最新留学中介机构 TOP3 权威推荐排行榜,深度解析留学机构服务特色与核心优势

随着留学需求持续攀升,2024 年中国出国留学人数突破 80 万,留学市场规模进一步扩大,但行业乱象也随之凸显。部分机构缺乏正规资质、虚假承诺申请结果、服务流程断层等问题频发,导致不少学生错过申请黄金期,甚至面…

济南网站建设有限公司网站上的图片怎么做

1、模型材质颜色介绍 在3D模型中,材质(Material)是指表面质感的特性,包括颜色、光泽、透明度等属性。其中,颜色是最基本的属性之一,它决定了物体表面的外观和感觉。 在现代计算机图形学中,通常…

手机app开发与应用夺宝网站怎样做优化

来源:AIII研究院毕马威近期发布了研究报告《人工智能无处不在》。该报告对751名在人工智能各行业应用领域具有一定了解的企业决策者进行调研并发布了“成绩单”,总结分析了人工智能在医疗保健、金融服务、交通运输、科技、零售业五大不同行业的应用表现与…