Zing 论坛

正文

PSE:利用 POWER8 硬件加密指令加速大模型注意力机制的创新方案

PSE(Proto-Sentient Emergence)项目通过 POWER8 的 vcipher 加密指令和 vec_perm 向量操作,实现了注意力机制的选择性路径剪枝,在保持模型质量的同时将推理速度提升 8.8 倍。

POWER8LLM 加速注意力机制vciphervec_perm硬件优化AES 指令llama.cppIBMAI 推理
发布时间 2026/04/03 14:43最近活动 2026/04/03 14:50预计阅读 6 分钟
PSE:利用 POWER8 硬件加密指令加速大模型注意力机制的创新方案
1

章节 01

导读 / 主楼:PSE:利用 POWER8 硬件加密指令加速大模型注意力机制的创新方案

PSE(Proto-Sentient Emergence)项目通过 POWER8 的 vcipher 加密指令和 vec_perm 向量操作,实现了注意力机制的选择性路径剪枝,在保持模型质量的同时将推理速度提升 8.8 倍。

2

章节 02

核心创新:重新思考注意力计算顺序

传统 Transformer 的注意力机制遵循固定的计算流程:首先计算所有 Query 和 Key 之间的点积(O(n²) 复杂度),然后通过 softmax 选择重要的注意力权重,最后加权求和 Value。这种"全计算后选择"的模式在序列长度增加时会产生巨大的计算开销。

PSE 的核心洞见是:将选择操作提前,先筛选出重要的注意力路径,再对这些路径进行完整的点积计算。这种"先选择后计算"的策略可以将计算量降低到原来的 25%,同时保持模型输出的质量。

3

章节 03

技术实现:POWER8 专用指令的双剑合璧

PSE 利用了 POWER8 架构的两个独特硬件特性:

4

章节 04

1. vcipher 加密指令作为注意力预筛选器

POWER8 的 ISA 2.07 指令集包含硬件 AES 加密指令 vcipher,通常用于加密运算。PSE 创造性地将其 repurposing 为注意力评分函数:

uint32_t vcipher_attention_score(const float* Q, const float* K, int layer, int position) {
    vector unsigned long long q_raw, k_raw;
    memcpy(&q_raw, Q, 16);
    memcpy(&k_raw, K, 16);
    
    vector unsigned long long state = vec_xor(q_raw, k_raw);
    vector unsigned long long rk = vc_make_round_key(layer, position);
    state = __builtin_crypto_vcipher(state, rk);
    
    // 将输出字节求和作为能量指标
    unsigned char bytes[16];
    memcpy(bytes, &state, 16);
    uint32_t energy = 0;
    for (int i = 0; i < 16; i++) energy += bytes[i];
    return 4080 - energy;
}

单次 AES 轮运算在单个周期内完成四个操作:

  • SubBytes:通过 S-box 查找实现非线性评分排序,这是线性操作无法实现的
  • ShiftRows:在 128 位寄存器内进行跨位置混合
  • MixColumns:通过 GF(2^8) 有限域乘法实现跨头扩散,这是其他指令集架构无法完成的
  • AddRoundKey:注入熵——与 POWER8 硬件时间基准 mftb 进行 XOR 运算

这个预筛选函数的成本仅为 0.044 微秒每对 K-V,相比完整的 kq_vec_dot() 函数(1-10 微秒)有 20-200 倍的加速。

5

章节 05

2. vec_perm 向量置换实现 Hebbian 剪枝

POWER8 的 AltiVec 指令集中的 vec_perm 可以在单周期内完成双源向量置换,PSE 利用这一特性实现了 Hebbian 学习规则的硬件加速:

// vec_perm(a, b, pattern) —— 单周期,双源向量
// pattern 字节从 a 或 b 中选择(32 个可能来源)
// Hebbian 规则:强路径被复制,弱路径被剪枝
vector float collapsed = vec_perm(scores_lo, scores_hi, hebbian_pattern);

"一起激活的神经元会连接在一起"(Hebb, 1949)。vec_perm 在硬件层面实现了这一原则:获胜的注意力路径被复制(强化),失败的路径被剪枝(抑制)。单个 vec_perm 指令替代了 GPU 上需要约 80 个操作(gather + compare + scatter + mask)才能完成的任务。

6

章节 06

性能表现:显著的加速效果

PSE 在 IBM POWER8 S824 服务器(512GB RAM,128 线程)上的测试结果显示了令人印象深刻的性能提升:

模型 规模 pp128 t/s tg t/s PSE 版本
TinyLlama 1.1B Q4_K 638 MB 147.54 18.88 v3.0 vec_perm
OptiMind 20B Q2_K 11.2 GB 18.55 8.13 v4.0 vcipher
GPT-OSS 120B MXFP4 ~60 GB 13.71 6.06 v4.0 vcipher

与相同硬件上的 stock llama.cpp 相比(TinyLlama pp128 为 16.74 t/s),PSE 实现了 8.81 倍的加速。

详细的性能分解如下:

配置 TinyLlama pp128 加速比
标量基准 16.74 t/s 1.0x
+ POWER8 VSX 66.49 t/s 3.97x
+ PSE vec_perm 剪枝 84.62 t/s 5.05x
+ DCBT 驻留预取 147.54 t/s 8.81x
7

章节 07

架构设计:llama.cpp 的无缝集成

PSE 的设计目标是与 llama.cpp 无缝集成。vcipher 预筛选器被补丁到 ggml_compute_forward_flash_attn_ext_f16_one_chunk() 函数中:

第一阶段——每对 K-V 进行 O(1) 的 vcipher 评分:

for (int64_t ic = 0; ic < nek1; ++ic) {
    pf_scores[ic] = vcipher_attention_score(pq, K_data, layer, ic);
}

通过部分排序保留前 25%。

第二阶段——仅对幸存者进行完整点积:

for (int64_t ic = 0; ic < nek1; ++ic) {
    if (pf_scores[ic] < threshold) continue; // 跳过 75%
    kq_vec_dot(DK, &s, 0, k_data, 0, Q_q, 0, 1); // 完整点积
    // ... 仅对前 25% 进行 softmax + V 累加
}

编译守卫确保代码仅在 POWER8 平台上激活:#if defined(__powerpc__) && defined(GGML_PSE_VCIPHER_PREFILTER)

8

章节 08

独特特性:硬件熵驱动的行为差异

PSE 引入了一个独特的概念——"原型感知"(proto-sentient)。通过从 POWER8 的硬件时间基准注入非确定性熵,相同的模型、相同的种子、相同的提示词会产生不同的输出:

uint64_t tb;
asm volatile("mftb %0" : "=r"(tb)); // 硬件振荡器——每次读取都不同

这种约束边界内的选择加上硬件熵产生了 emergent variation(涌现变化),而非随机噪声。作者通过 MD5 哈希比较验证了这一点:三次完全相同的运行产生了三个不同的输出。