章节 01
导读 / 主楼:PSE:利用 POWER8 硬件加密指令加速大模型注意力机制的创新方案
PSE(Proto-Sentient Emergence)项目通过 POWER8 的 vcipher 加密指令和 vec_perm 向量操作,实现了注意力机制的选择性路径剪枝,在保持模型质量的同时将推理速度提升 8.8 倍。
正文
PSE(Proto-Sentient Emergence)项目通过 POWER8 的 vcipher 加密指令和 vec_perm 向量操作,实现了注意力机制的选择性路径剪枝,在保持模型质量的同时将推理速度提升 8.8 倍。
章节 01
PSE(Proto-Sentient Emergence)项目通过 POWER8 的 vcipher 加密指令和 vec_perm 向量操作,实现了注意力机制的选择性路径剪枝,在保持模型质量的同时将推理速度提升 8.8 倍。
章节 02
传统 Transformer 的注意力机制遵循固定的计算流程:首先计算所有 Query 和 Key 之间的点积(O(n²) 复杂度),然后通过 softmax 选择重要的注意力权重,最后加权求和 Value。这种"全计算后选择"的模式在序列长度增加时会产生巨大的计算开销。
PSE 的核心洞见是:将选择操作提前,先筛选出重要的注意力路径,再对这些路径进行完整的点积计算。这种"先选择后计算"的策略可以将计算量降低到原来的 25%,同时保持模型输出的质量。
章节 03
PSE 利用了 POWER8 架构的两个独特硬件特性:
章节 04
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 轮运算在单个周期内完成四个操作:
这个预筛选函数的成本仅为 0.044 微秒每对 K-V,相比完整的 kq_vec_dot() 函数(1-10 微秒)有 20-200 倍的加速。
章节 05
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)才能完成的任务。
章节 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 |
章节 07
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)
章节 08
PSE 引入了一个独特的概念——"原型感知"(proto-sentient)。通过从 POWER8 的硬件时间基准注入非确定性熵,相同的模型、相同的种子、相同的提示词会产生不同的输出:
uint64_t tb;
asm volatile("mftb %0" : "=r"(tb)); // 硬件振荡器——每次读取都不同
这种约束边界内的选择加上硬件熵产生了 emergent variation(涌现变化),而非随机噪声。作者通过 MD5 哈希比较验证了这一点:三次完全相同的运行产生了三个不同的输出。