AI大模型注意力机制详解

简介: 注意力机制是Transformer的核心,实现序列间动态关注。包括自注意力、交叉注意力、多头(MHA)、分组(GQA)、多查询(MQA)及低秩压缩的MLA等变体,平衡效率与性能,广泛应用于大模型优化与推理加速。

🎯 概述

注意力机制是Transformer架构的核心,允许模型在处理序列时动态地关注重要信息。

🏗️ 注意力机制类型

1️⃣ 自注意力机制 (Self-Attention, SA)

原理:序列中的每个元素关注序列中的其他所有元素

数学公式

代码示例

import torch
import torch.nn as nn
class SelfAttention(nn.Module):
    def __init__(self, d_model, d_k, d_v):
        super().__init__()
        self.w_q = nn.Linear(d_model, d_k)
        self.w_k = nn.Linear(d_model, d_k)
        self.w_v = nn.Linear(d_model, d_v)
        self.scale = torch.sqrt(torch.FloatTensor([d_k]))
    
    def forward(self, x, mask=None):
        Q = self.w_q(x)
        K = self.w_k(x)
        V = self.w_v(x)
        
        scores = torch.matmul(Q, K.transpose(-2, -1)) / self.scale
        
        if mask is not None:
            scores = scores.masked_fill(mask == 0, -1e9)
        
        attention = torch.softmax(scores, dim=-1)
        return torch.matmul(attention, V)

2️⃣ 交叉注意力机制 (Cross-Attention, CA)

原理:一个序列关注另一个序列的信息

应用场景

  • 编码器-解码器架构
  • 多模态融合
  • 知识蒸馏

3️⃣ 多头注意力机制 (Multi-Head Attention, MHA)

原理:并行运行多个注意力头,捕获不同类型的关系

架构

class MultiHeadAttention(nn.Module):
    def __init__(self, d_model, n_heads):
        super().__init__()
        assert d_model % n_heads == 0
        
        self.d_model = d_model
        self.n_heads = n_heads
        self.d_k = d_model // n_heads
        
        self.w_q = nn.Linear(d_model, d_model)
        self.w_k = nn.Linear(d_model, d_model)
        self.w_v = nn.Linear(d_model, d_model)
        self.w_o = nn.Linear(d_model, d_model)
    
    def forward(self, query, key, value, mask=None):
        batch_size = query.size(0)
        
        # 线性变换并分头
        Q = self.w_q(query).view(batch_size, -1, self.n_heads, self.d_k).transpose(1, 2)
        K = self.w_k(key).view(batch_size, -1, self.n_heads, self.d_k).transpose(1, 2)
        V = self.w_v(value).view(batch_size, -1, self.n_heads, self.d_k).transpose(1, 2)
        
        # 注意力计算
        scores = torch.matmul(Q, K.transpose(-2, -1)) / torch.sqrt(torch.FloatTensor([self.d_k]))
        
        if mask is not None:
            mask = mask.unsqueeze(1).unsqueeze(1)
            scores = scores.masked_fill(mask == 0, -1e9)
        
        attention = torch.softmax(scores, dim=-1)
        context = torch.matmul(attention, V)
        
        # 合并多头
        context = context.transpose(1, 2).contiguous().view(
            batch_size, -1, self.d_model
        )
        
        return self.w_o(context)

4️⃣ 分组注意力机制 (Grouped Query Attention, GQA)

原理:将查询头分组,每组共享键值头,平衡MHA和MQA

优势

  • 减少内存带宽需求
  • 保持模型质量
  • 推理加速

5️⃣ 多查询注意力机制 (Multi-Query Attention, MQA)

原理:所有查询头共享相同的键值头

特点

  • 显著减少内存带宽
  • 推理速度提升
  • 可能轻微影响质量

6️⃣ 多头潜在注意力 (Multi-Head Latent Attention, MLA)

原理:通过低秩投影减少键值缓存

DeepSeek创新

  • 低秩键值联合压缩
  • 减少推理时KV缓存
  • 保持表达能力

📊 注意力机制对比

机制

参数量

内存占用

推理速度

质量

MHA

GQA

MQA

MLA

极低

🎯 面试重点

高频问题

  1. 自注意力和交叉注意力的区别?
  2. 为什么需要多头注意力?
  3. GQA和MQA的权衡?
  4. 如何计算注意力权重?
  5. 注意力机制的时间和空间复杂度?

实战分析

# 计算注意力复杂度
def attention_complexity(seq_len, d_model, n_heads):
    # 计算注意力矩阵: O(n²d)
    # 存储KV缓存: O(nhd)
    time_complexity = seq_len * seq_len * d_model
    space_complexity = seq_len * n_heads * (d_model // n_heads)
    return time_complexity, space_complexity

📚 深入阅读

目录
相关文章
|
机器学习/深度学习 数据采集 算法
KMeans+DBSCAN密度聚类+层次聚类的使用(附案例实战)
KMeans+DBSCAN密度聚类+层次聚类的使用(附案例实战)
2978 0
|
9月前
|
缓存 算法 C++
⚡ 模型推理加速
大模型推理加速涵盖KV-Cache优化、连续批处理、投机解码、模型并行等技术,通过算法与系统协同优化,提升推理效率。vLLM等框架实现高效部署,兼顾吞吐与延迟,助力大模型落地。
353 0
 ⚡ 模型推理加速
|
算法 Shell
通信系统中ZF,ML,MRC以及MMSE四种信号检测算法误码率matlab对比仿真
通信系统中ZF,ML,MRC以及MMSE四种信号检测算法误码率matlab对比仿真
|
数据采集 分布式计算 监控
DataX教程(03)- 源码解读(超详细版)
DataX教程(03)- 源码解读(超详细版)
4539 0
DataX教程(03)- 源码解读(超详细版)
|
机器学习/深度学习 运维 算法
梯度&散度&旋度&峰度&偏度你分得清楚吗?驻点&鞍点你分得清楚吗?曲率&斜率你分得清楚吗?
本文介绍了四种常见的物理量:加速度,速度,位移和力学功。详细介绍了它们的定义、计算以及在物理学和工程学领域中的应用。此外,本文还介绍了四种与物理量相关的概念:向量、标量、质量和密度。 数学,物理,机器学习领域常见概念区分
4220 0
|
3月前
|
人工智能 运维 API
2026年阿里云百炼通义千问Qwen3.7-plus深度介绍 功能特性、使用优势及618大促订阅方案指南
大模型技术的普及,让AI能力逐步融入个人办公、内容创作、代码编写、企业运营、教育培训等各类场景。不同定位的模型对应不同使用需求,旗舰级模型性能强劲但使用成本偏高,轻量化模型价格低廉却难以胜任复杂任务,而介于两者之间的中端主力模型,凭借均衡的能力、亲民的定价、广泛的场景适配性,成为绝大多数个人用户、小型团队、中小企业的首选。
1491 2
|
7月前
|
人工智能 安全 数据安全/隐私保护
OpenClaw(Clawdbot)汉化版完整搭建指南 全平台安装+附阿里云上部署教程
在AI工具爆发的2026年,OpenClaw(曾用名Clawd、Moltbot)以黑马之姿崛起——一周内GitHub Stars从7800飙升至12万+,成为历史上增长最快的开源项目之一。这款由PSPDFKit创始人Peter Steinberger打造的通用AI助手,打破了普通聊天机器人的功能局限,能真正执行系统控制、浏览器自动化、邮件管理等实用任务。但原版全英文界面对中文用户不够友好,第三方团队推出的汉化版完美解决这一痛点,实现命令行与网页控制台的全中文适配,让国内用户轻松上手。
7263 13