1. Job Roadmap
  2. Home
  3. Problem Set
  4. codenotelist
  5. Forum
  6. course
  7. Shore Share Sessions
  8. Record
  1. Login
  2. Sign Up
  3. Language
    1. English
    2. 한국어
    3. 简体中文
    4. 正體中文
    ZhContent TextSol AI分析

解题思路

长序列下,将历史 token 划分为固定大小的空间连续块,每块做均值池化后经一个两层 MLP 压缩成向量,再用固定查询向量 q=1q=\mathbf{1}q=1 与压缩结果做打分。得到的压缩分数序列 A=(a1,…,am)A=(a_1,\dots,a_m)A=(a1​,…,am​) 之后,需要将其划分为恰好两个连续非空子数组,使两段和的最小值最大。整体可分为两部分:

  1. 数值构造:分块 + 池化 + MLP + 打分
  • 设序列长度为 nnn、维度为 ddd、块大小为 bbb,块数 m=⌈n/b⌉m=\lceil n/b\rceilm=⌈n/b⌉。
  • 第 kkk 个块的均值池化

P4275.第3题-基于空间连续块的稀疏注意力机制

    1000ms Tried: 630 Accepted: 137 Difficulty: 6 所属公司 : 华为
    算法与标签>前缀和

题目内容

在大语言模型推理过程中,随着上下文长度增加,标准 AttentionAttentionAttention 的计算开销以 O(n2)O(n^2)O(n2) 增长,成为性能瓶颈。为提升长序列处理效率,提出一种基于空间连续块的稀疏注意力机制。

具体流程如下:

  1. 一个长度为 nnn 的历史 tokentokentoken 序列,每个 tokentokentoken 表示为 111 个 ddd 维特征向量 xj∈Rd\mathbf{x}_j \in \mathbb{R}^dxj​∈Rd

    。按固定块大小bbb,将序列划分为 m=ceil(n/b)m = ceil(n/b)m=ceil(n/b)个空间连续块(最后一个块可不满)

    B1,B2,...,BmB_1, B_2, ..., B_mB1​,B2​,...,Bm​,其中:Bk=[x(k−1)b,...,xmin(kn)−1]B_k = [x_{(k-1)b}, ..., x_{min(kn)-1}]Bk​=[x(k−1)b​,...,xmin(kn)−1​]

  2. 对每个块 BkB_kBk​:

    (1) 计算平均池化向量:hk=1Bk∑x∈Bkx\mathbf{h}_k = \frac{1}{B_k} \sum_{x \in B_k} \mathbf{x}hk​=Bk​1​∑x∈Bk​​x

    (2) 使用一个两层多层感知机(MLPMLPMLP)进行非线性压缩(隐藏维度dl=1d_l = 1dl​=1):ck=W2⋅σ(W1⋅hk+b1)+b2\mathbf{c}_k = W_2 \cdot \sigma(W_1 \cdot \mathbf{h}_k + b_1) + b_2ck​=W2​⋅σ(W1​⋅hk​+b1​)+b2​

    其中:

    ① W1∈R1×dW_1 \in \mathbb{R}^{1 \times d}W1​∈R1×d,W2∈Rd×1W_2 \in \mathbb{R}^{d \times 1}W2​∈Rd×1,输出 ck∈Rd\mathbf{c}_k \in \mathbb{R}^dck​∈Rd

    ②b1=2b_1 = 2b1​=2,b2=1b_2 = 1b2​=1

    ③σ(x)=max(0,x)\sigma(x) = max(0, x)σ(x)=max(0,x)(即 ReLU 激活函数)

  3. 给定查询向量q∈Rd\mathbf{q} \in \mathbb{R}^dq∈Rd(题目中固定为全 111 向量:qi=1q_i = 1qi​=1),计算每个压缩块的注意力得分:

    ak=q⋅ckda_k = \frac{\mathbf{q} \cdot \mathbf{c}_k}{\sqrt{d}}ak​=d​q⋅ck​​

    得到压缩块注意力得分序列 A=(a1,a2,...,am)A = (a_1, a_2, ..., a_m)A=(a1​,a2​,...,am​)

  4. 将序列 AAA 划分为恰好 222 个连续非空子数组,目标是最大化这两个子数组和中的最小值 SSS 。

  5. 最终输出该最大化的最小值 SSS 的整数化得分,该子数组对应的 tokentokentoken 块将跳过细粒度 attentionattentionattention 计算,实现稀疏推理。

    其中,整数化得分即 S SS 乘以 100100100 后四舍五入得到的整数,以实现保留两位小数精度的整数化表示:

    round(100⋅S)round(100 \cdot S)round(100⋅S)

输入描述

第 111 行:nnn ddd bbb,以空格分隔,分别为序列长度、tokentokentoken 向量维度、块大小

接下来 nnn 行:每行 ddd 个数,以空格分隔,表示 xix_ixi​

倒数第 222 行:ddd 个数,以空格分隔,表示 W1W_1W1​

最后 111 行:ddd 个数,以空格分隔,表示 W2W_2W2​

约束条件:

1≤n≤10001 \leq n\leq 10001≤n≤1000

1≤b≤n1 \leq b\leq n1≤b≤n

1≤d≤1001 \leq d \leq 1001≤d≤100

所有向量非零

输出描述

返回一个整数,即上述步骤 555 的整数化得分

样例1

输入

3 1 1
2.0
4.0
6.0
1.0
2.0

输出

1700

说明

①分块:B1=[2.0]B_1 = [2.0]B1​=[2.0],B2=[4.0]B_2 = [4.0]B2​=[4.0],B3=[6.0]B_3 = [6.0]B3​=[6.0]

②平均池化:h1=[2.0]h_1 = [2.0]h1​=[2.0],h2=[4.0]h_2 = [4.0]h2​=[4.0],h3=[6.0]h_3 = [6.0]h3​=[6.0]

③MLPMLPMLP 压缩:c1=[9.0]c_1 = [9.0]c1​=[9.0],c2=[13.0]c_2 = [13.0]c2​=[13.0],c3=[17.0]c_3 = [17.0]c3​=[17.0]

④注意力得分:A=[9,13,17]A=[9,13,17]A=[9,13,17]

⑤划分为 222 个连续非空子数组,最大化min(sum)min(sum)min(sum):

[9]∣[13,17][9]|[13,17][9]∣[13,17] →→→ 和:9,30→min=99, 30 → min = 99,30→min=9

[9,13]∣[17][9,13]|[17][9,13]∣[17] →→→ 和:22,17→min=17→S=1722, 17 → min = 17→ S=1722,17→min=17→S=17,输出 1700

样例2

输入

3 2 1
2.0 1.0
3.0 2.0
4.0 3.0
1.0 0.5
2.0 1.0

输出

1732

说明

①分块:B1=[2.0,1.0]B_1 = [2.0, 1.0]B1​=[2.0,1.0],B2=[3.0,2.0]B_2 = [3.0, 2.0]B2​=[3.0,2.0],B3=[4.0,3.0]B_3 = [4.0, 3.0]B3​=[4.0,3.0]

②平均池化:h1=[2.0,1.0]h_1 = [2.0, 1.0]h1​=[2.0,1.0],h2=[3.0,2.0]h_2 = [3.0, 2.0]h2​=[3.0,2.0],h3=[4.0,3.0]h_3 = [4.0, 3.0]h3​=[4.0,3.0]

③MLPMLPMLP 压缩:c1=[10.0,5.5]c_1 = [10.0, 5.5]c1​=[10.0,5.5],c2=[13.0,7.0]c_2 = [13.0, 7.0]c2​=[13.0,7.0],c3=[16.0,8.5]c_3 = [16.0, 8.5]c3​=[16.0,8.5]

④注意力得分:A=[15.52,20.02,24.52]A = [\frac{15.5}{\sqrt{2}}, \frac{20.0}{\sqrt{2}}, \frac{24.5}{\sqrt{2}}]A=[2​15.5​,2​20.0​,2​24.5​]

⑤划分为 222 个连续非空子数组,最大化(min(sum)):

[15.52],[20.02,24.52]→[\frac{15.5}{\sqrt{2}}] , [\frac{20.0}{\sqrt{2}}, \frac{24.5}{\sqrt{2}}] → [2​15.5​],[2​20.0​,2​24.5​]→和:15.52\frac{15.5}{\sqrt{2}}2​15.5​,44.52\frac{44.5}{\sqrt{2}}2​44.5​ →min=→ min =→min= 15.52\frac{15.5}{\sqrt{2}}2​15.5​

[15.52,20.02],[24.52]→[\frac{15.5}{\sqrt{2}}, \frac{20.0}{\sqrt{2}}] , [\frac{24.5}{\sqrt{2}}] →[2​15.5​,2​20.0​],[2​24.5​]→ 和:35.52\frac{35.5}{\sqrt{2}}2​35.5​,24.52\frac{24.5}{\sqrt{2}}2​24.5​ →min=24.52→S=24.52→ min = \frac{24.5}{\sqrt{2}}→ S = \frac{24.5}{\sqrt{2}}→min=2​24.5​→S=2​24.5​,输出 1732

登录后即可使用 AI 分析。

模式
倒计时时长
:

最长 10 小时 59 分;应用后按此时长重新开始。

提示:点击提交记录在左侧题面区域查看详情
题库
AI分析设置
留空使用官方API Key,每天有次数限制(自定义API Key仅限会员和管理员使用,不限次数)
会员和管理员可切换模型;切到 Kimi/智谱/通义/豆包时需填写对应供应商 API Key
升级会员,可将运行与提交冷却时间缩短至 1 秒起

Status

  • Judging Queue
  • Service Status

Development

  • Open Source

Support

  • Help
  • Contact Us

About

  • About
  • Privacy
  • Terms of Service
  • Copyright Complaint
  1. Language
    1. English
    2. 한국어
    3. 简体中文
    4. 正體中文
  2. Legacy mode
  3. Theme
    1. Light
    2. Dark
  1. 京ICP备2025123107号-1
  2. Worker 0, 155ms
  3. Powered by Hydro v5.0.0-beta.18 Community
CLOSE


ScanQRCodePrompt

请使用微信扫描下方二维码完成注册

Forgot password or username?