加强人大网站建设/怎么查权重查询

加强人大网站建设,怎么查权重查询,成都app开发价格表,为什么很多中国人去菲律宾做网站主要翻译外网: 解剖Deep Seek 系列,详细见参考部分。 目录: Multi-Head Attention (MHA) KV-Cache KV-Cache 公式 Multi-Query Attention(MQA) Grouped-Query Attention(GQA) Multi-Head Latent Attention …

   主要翻译外网: 解剖Deep Seek 系列,详细见参考部分。


目录:

  1.   Multi-Head Attention (MHA)
  2.   KV-Cache 
  3.   KV-Cache 公式
  4.    Multi-Query Attention(MQA)
  5.    Grouped-Query Attention(GQA)
  6.    Multi-Head Latent Attention
  7.   PyTorch Implementing MHA, MQA, and GQA 


一   Multi-Head Attention (MHA) 

      

    输入:     Q,K,V 通常为x ,其形状为:

                    [batch_size, seq_len, d_model]

     第一步:    进行线性空间变换:

                    q= W^Qh ...(1)

                    k= W^Kh ...(2)

                   v= W^Vh ...(3)

      

     第二步: 子空间投影(projection)

          其中n_h为子空间头数量一般设置为8

     第三步:  做 self-attention

    


二         KV-Cache 

           在Transformer的Decoder推理过程中,由于自注意力机制需要遍历整个先前输入的序列来计算每个新token的注意力权重,这导致了显著的计算负担。随着序列长度的延伸,计算复杂度急剧上升,不仅增加了延迟,还限制了模型处理长序列的能力。因此,优化Decoder的自注意力机制,减少不必要的计算开销,成为提升Transformer模型推理效率的关键所在。

      KV 缓存发生在多个 token 生成步骤中,并且仅发生在解码器中(即,在 GPT 等仅解码器模型中,或在 T5 等编码器-解码器模型的解码器部分中)。BERT 等模型不是生成式的,因此没有 KV 缓存。

    这种自回归行为重复了一些操作,我们可以通过放大在解码器中计算的掩蔽缩放点积注意力计算来更好地理解这一点。
            

     由于解码器是auto-regressive  的,因此在每个生成步骤中,我们都在重新计算相同的先前标记的注意力,而实际上我们只是想计算新标记的注意力。

    这就是 KV 发挥作用的地方。通过缓存以前的 Keys 和 Values,我们可以专注于计算新 token 的注意力。

       为什么这种优化很重要?如上图所示,使用 KV 缓存获得的矩阵要小得多,从而可以加快矩阵乘法的速度。唯一的缺点是它需要更多的 GPU VRAM(如果不使用 GPU,则需要 CPU RAM)来缓存 Key 和 Value 状态。


三   KV-Cache  公式

       基本和MHA 过程差不多,区别是每次输入的是h_t: 第t 时刻的token

           3.1  对当前时刻的输入进行线性变换

                   q_t= W^{Q}h_t \: \: \: \: \: \: \: (1)

                   k_t= W^{K}h_t \: \: \: \: \: \: \: (2)

                   v_t= W^{V}h_t \: \: \: \: \: \: \: (2)

                 h_t \in R^d

                 d: embedding 的维度

          3.2   进行子空间投影

                        

                       q_t =\begin{bmatrix} q_{t,1},q_{t,2},...q_{t,n_h} \end{bmatrix} \, \, \, \, \, \, \, \, (4)

                       k_t =\begin{bmatrix} k_{t,1},k_{t,2},...k_{t,n_h} \end{bmatrix} \, \, \, \, \, \, \, \, (5)

                      v_t =\begin{bmatrix} v_{t,1},v_{t,2},...v_{t,n_h} \end{bmatrix} \, \,\, \, \, \, \, \, \, (6)

                     其中:

                    n_h: attention head 数量

                    d_h: attention head 的维度

                    q_t,k_t,v_t \in R^{d_h*n_h}

                    q_{t,i}:  第i个头,t时刻的查询向量

   3.3  做self-attention

         

   我们把存储的K,V缓存叫做K-V Cache. 对于一个L层的模型,每个t个token 一共需要

2*n_hd_hLt 缓存。

     d_h 是一个head的size ,MLA 就是研究这个size 如何降维降低KV-Cache


四  Multi-Query Attention(MQA)

   为了缓解多头注意力(MHA)中的键值缓存瓶颈问题,Shazeer在2019年提出了多查询注意力(MQA)机制。在该机制中,所有的不同注意力头共享相同的键和值,即除了不同的注意力头共享同一组键和值之外,其余部分与MHA相同。这大大减轻了键值缓存的负担,从而显著加快了解码器的推理速度。然而,MQA会导致质量下降和训练不稳定。

    

    


五  Grouped Query Attention — (GQA)

     分组查询注意力(GQA)通过在多头注意力(MHA)和多查询注意力(MQA)之间引入一定数量的查询头子组(少于总注意力头的数量),每个子组有一个单独的键头和值头,从而实现了一种插值。与MQA相比,随着模型规模的增加,GQA在内存带宽和容量上保持了相同比例的减少。中间数量的子组导致了一个插值模型,该模型的质量高于MQA但推理速度快于MHA。很明显,只有一个组的GQA等同于MQA。

        


六  PyTorch Implementing MHA, MQA, and GQA 

num_kv_heads 和 num_heads  一样的时候就是 MHA

num_kv_heads= 1                 就是MQA

num_kv_heads<num_heads  就是GQA

# -*- coding: utf-8 -*-
"""
Created on Fri Feb 21 15:02:18 2025@author: chengxf2
"""import torch.nn as nn
import torch.nn.functional as F
import torchdef scaled_dot_product_attention(query, key, value, mask=None, dropout=None):# 获取 key 的维度大小,用于缩放d_k = query.size(-1)# 计算点积注意力得分scores = torch.matmul(query, key.transpose(-2, -1)) / torch.sqrt(torch.tensor(d_k, dtype=torch.float32))# 如果提供了 mask,将其应用到得分上if mask is not None:scores = scores.masked_fill(mask == 0, -1e9)# 对得分进行 softmax 操作,得到注意力权重p_attention = F.softmax(scores, dim=-1)# 如果提供了 dropout,应用 dropoutif dropout is not None:p_attention = dropout(p_attention)# 使用注意力权重对 value 进行加权求和return torch.matmul(p_attention, value)class  Attention(nn.Module):def __init__(self, d_model=512,num_heads=8, num_kv_heads=2,dropout=0.5):super().__init__()self.num_heads = num_headsself.head_dim =  d_model//num_headsself.num_kv_heads = num_kv_headsassert self.num_heads%self.num_kv_heads == 0self.num_queries_per_kv = self.num_heads//self.num_kv_heads#Linearself.query =   nn.Linear(d_model, self.head_dim * self.num_heads)self.key =     nn.Linear(d_model,   self.head_dim * self.num_kv_heads)self.value =   nn.Linear(d_model, self.head_dim * self.num_kv_heads)#输出self.proj = nn.Linear(d_model, d_model)self.attn_dropout = nn.Dropout(dropout)def forward(self, inputs):batch, seq_len, d_model = inputs.shapeq = self.query(inputs)k = self.key(inputs)v = self.value(inputs)# shape = (B, seq_len, num_heads, head_dim)q = q.view(batch, seq_len, -1,  self.head_dim)k = k.view(batch, seq_len, -1 , self.head_dim)  v = v.view(batch, seq_len, -1,  self.head_dim)print("default q.shape",q.shape)print("default k.shape",k.shape)print("default v.shape",v.shape)# Grouped Query Attention#[batch, seq_len, num_kv_heads, head_dim]->[batch, seq_len, num_heads, head_dim]if self.num_kv_heads != self.num_heads:k = torch.repeat_interleave(k, self.num_queries_per_kv, dim=2)v = torch.repeat_interleave(v, self.num_queries_per_kv, dim=2)# shape = (B, num_heads, seq_len, head_dim) k = k.transpose(1, 2)  q = q.transpose(1, 2)v = v.transpose(1, 2)print("q.shape",q.shape)print("k.shape",k.shape)print("v.shape",v.shape)output = scaled_dot_product_attention(q,k,v,  # order impotentNone,self.attn_dropout,)print("v.shape",v.shape)print("output.shape",output.shape)output = output.transpose(1, 2).contiguous().view(batch, seq_len, d_model)# final projection into the residual streamoutput = self.proj(output)return output
net = Attention()
batch_size =2
seq_len = 5
d_model =512
x = torch.randn(batch_size,seq_len, d_model)
net(x)


七  Multi-Head Latent Attention — (MLA)

Multi-Head Latent Attention (MLA) achieves superior performance than MHA, as well as significantly reduces KV-cache boosting inference efficiency. Instead of reducing KV-heads as in MQA and GQA, MLA jointly compresses the Key and Value into a latent vector.

Low-Rank Key-Value Joint Compression

Instead of caching both the Key and Value matrices, MLA jointly compresses them in a low-rank vector which allows caching fewer items since the compression dimension is much less compared to the output projection matrix dimension in MHA.

Comparison of Deepseek’s new Multi-latent head attention with MHA, MQA, and GQA.

参考:

https://github.com/deepseek-ai/DeepSeek-V3/blob/main/DeepSeek_V3.pdf

缓存与效果的极限拉扯:从MHA、MQA、GQA到MLA - 科学空间|Scientific Spaces

DeepSeek-V3 Explained 1: Multi-head Latent Attention | Towards Data Science

https://medium.com/@zaiinn440/mha-vs-mqa-vs-gqa-vs-mla-c6cf8285bbec

https://medium.com/@zaiinn440/mha-vs-mqa-vs-gqa-vs-mla-c6cf8285bbec

deepseek技术解读(1)-彻底理解MLA(Multi-Head Latent Attention)-CSDN博客

怎么加快大模型推理?10分钟学懂VLLM内部原理,KV Cache,PageAttention_哔哩哔哩_bilibili

https://medium.com/@joaolages/kv-caching-explained-276520203249

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

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

相关文章

Web刷题之PolarDN(中等)

1.到底给不给flag呢 代码审计 一道典型的php变量覆盖漏洞 相关知识 什么是变量覆盖漏洞 自定义的参数值替换原有变量值的情况称为变量覆盖漏洞 经常导致变量覆盖漏洞场景有&#xff1a;$$使用不当&#xff0c;extract()函数使用不当&#xff0c;parse_str()函数使用不当&…

Nginx 源码编译安装

创建虚拟机&#xff0c;内存 4G 处理器 2 核&#xff0c;NAT 网络。 准备 Nginx 源码包&#xff0c;1.24 版本&#xff0c;用于实验。 一、下载 Nginx 源码包 Nginx 官网&#xff1a;www.nginx.org download 下载相关的版本&#xff0c;如下图&#xff1a; wget 下载 Nginx…

DPVS-5: 后端服务监控原理与测试

后端监控原理 被动监测 DPVS自带了被动监控&#xff0c;通过监控后端服务对外部请求的响应情况&#xff0c;判断服务器是否可用。 DPVS的被动监测&#xff0c;并不能获取后端服务器的详细情况&#xff0c;仅仅通过丢包/拒绝情况来发觉后端服务是否可用。 TCP session state…

【计算机网络协议01】应用层协议HTTP

应用层协议HTTP 引言 应用层协议是程序员自己制定的&#xff0c;但是良好的协议是保证网络通信的基础&#xff0c;前代的计算工程师已经帮助我们制定了一些很好用的应用层协议&#xff0c;http(hybertext transfer protocol)(超文本传输协议)就是其中之一。 http协议是客户端…

uniapp 系统学习,从入门到实战(四)—— 页面与路由管理

​ 全篇大概 2700 字(含代码)&#xff0c;建议阅读时间 20min 在跨平台开发中&#xff0c;高效的路由管理直接影响用户体验和开发效率。本文将深入探讨uniapp的页面创建、路由跳转、参数传递和生命周期管理&#xff0c;助您构建流畅的多端应用。 &#x1f4da; 目录 页面创建…

BOOST电路设计

目录 1电路模型 2器件选型 2.1设计需求 2.2参数计算 2.2.1电感L计算 2.2.2电容计算 2.2.3电阻计算 3仿真测试 4参数测试 4.1负载调整率 4.2电容测试 4.3电感测试 5实际应用 1电路模型 Boost升压电路,可以工作在电流断续工作模式(DCM)和电流连续工作模式(CCM)。CCM工…

miqiu的分布式锁(二):实战——用JMeter验证JVM锁能否解决MySQL超卖问题

miqiu的分布式锁二&#xff1a;实战——用JMeter验证JVM锁能否解决MySQL超卖问题 实验背景 在秒杀场景中&#xff0c;超卖问题是典型的并发编程挑战。本文通过JMeter压测工具&#xff0c;验证基于JVM的两种锁机制&#xff08;synchronized/ReentrantLock&#xff09;对MySQL库…

初阶数据结构(C语言实现)——2算法的时间复杂度和空间复杂度

目录 本节目标1. 算法效率1.1 如何衡量一个算法的好坏1.2 算法的复杂度 2.时间复杂度2.1 时间复杂度的概念2.1.1 入门习题2.1.2 进阶习题 2.2 常见时间复杂度 3. 空间复杂度3.1 常见空间复杂度 本节目标 算法效率时间复杂度空间复杂度常见时间复杂度以及复杂度oj练习 1. 算法…

排序算法(3):

这是我们的最后一篇排序算法了&#xff0c;也是我们的初阶数据结构的最后一篇了。 我们来看&#xff0c;我们之前已经讲完了插入排序&#xff0c;选择排序&#xff0c;交换排序&#xff0c;我们还剩下最后一个归并排序&#xff0c;我们今天就讲解归并排序&#xff0c;另外我们还…

AI智能体与大语言模型:重塑SaaS系统的未来航向

在数字化转型的浪潮中&#xff0c;软件即服务&#xff08;SaaS&#xff09;系统一直是企业提升效率、优化业务流程的重要工具。随着AI智能体和大语言模型&#xff08;LLMs&#xff09;的迅速发展&#xff0c;SaaS系统正迎来前所未有的变革契机。本文将从AI智能体和大语言模型对…

AOP进阶-03.切入点表达式-execution

一.切入点表达式-execution 访问修饰符(public/private等)&#xff0c;包名.类名.&#xff0c;throws 异常都可以省略&#xff0c;但是建议包名.类名.不要省略&#xff0c;否则的话匹配范围太大影响程序执行效率。 *主要用来匹配单个参数&#xff0c;通配任意返回值、包名、类…

NLP09-加强1-对比SVM

支持向量机&#xff08;SVM&#xff09; &#xff08;一&#xff09;导入 SVM 相关库 &#xff08;二&#xff09; 修改模型初始化 &#xff08;三&#xff09; 比较 朴素贝叶斯分类器 SVM分类器 支持向量机&#xff08;SVM&#xff09; 代码修改基于NLP09-朴素贝叶斯问句…

DeepSeek 开源了 DeepEP

DeepSeek又开源了一个超强技术&#xff1a;DeepEP通信库。实现了MOE之间的通信&#xff0c;性能更强了&#xff01; DeepEP作为全球首个专为MoE&#xff08;专家混合&#xff09;模型训练和推理量身定制的EP&#xff08;专家并行&#xff09;通信库&#xff0c;其诞生标志着通…

【C语言】指针笔试题

前言&#xff1a;上期我们介绍了sizeof与strlen的辨析以及sizeof&#xff0c;strlen相关的一些笔试题&#xff0c;这期我们主要来讲指针运算相关的一些笔试题&#xff0c;以此来巩固我们之前所学的指针运算&#xff01; 文章目录 一&#xff0c;指针笔试题1&#xff0c;题目一…

电脑键盘知识

1、键盘四大功能区 1. 功能区 2. 主要信息输入区 3. 编辑区 4. 数字键盘区 笔记本电脑键盘的功能区&#xff0c;使用前需先按Fn键 1.1、功能区 ESC&#xff1a;退出 F1&#xff1a;显示帮助信息 F2&#xff1a;重命名 F4&#xff1a;重复上一步操作 F5&#xff1a;刷新网页 …

Spring MVC框架六:Ajax技术

精心整理了最新的面试资料&#xff0c;有需要的可以自行获取 点击前往百度网盘获取 点击前往夸克网盘获取 简介 jQuery.ajax Ajax原理 结语 创作不易&#xff0c;希望能对大家给予帮助 想要获取更多资源? 点击链接获取

在 Vue 组件中,如何确认父组件在 add 模式下传入 value 的情况及其对子组件 getProducts() 方法的触发影响?

文章目录 父组件中 <ave-form> 的使用add 模式下触发逻辑value 的传入情况是否触发 getProducts()&#xff1f; 验证 add 模式下 getProducts() 是否触发结论&#xff1a; 检查父组件传入 value 的完整情况如何明确知道父组件传入的 value最终回答 父组件 index.vue子组件…

第十四届蓝桥杯Scratch11月stema选拔赛真题——小猫照镜子

编程实现&#xff1a; 小猫照镜子。(背景非源素材) 具体要求&#xff1a; 1). 运行程序&#xff0c;角色、背景如图所示&#xff1b; 完整题目可点击下方链接查看&#xff0c;支持在线编程~ 小猫照镜子_scratch_少儿编程题库学习中心-嗨信奥https://www.hixinao.com/tiku/s…

python的列表和元组别再傻傻分不清啦

目录 什么是下标&#xff1a; 正数索引&#xff1a;正数索引从左到右&#xff0c;从 0 开始。 负数索引&#xff1a;负数索引从右到左&#xff0c;从 -1 开始。 切片&#xff08;slice&#xff09;&#xff1a;除了单个元素&#xff0c;Python还支持通过切片访问序列的子集。…

在 compare-form.vue 中添加 compareDate 隐藏字段,并在提交时自动填入当前时间

在 compare-form.vue 中添加 compareDate 隐藏字段&#xff0c;并在提交时自动填入当前时间。 提交表单时存入的对象是FakeRegistration&#xff0c;这个对象里面有compareDate字段&#xff0c;刚好表格查询的对象也是FakeRegistration&#xff0c;所以表格展示的时间就是刚才…