跳到主要内容
返回时间线
arXiv来源发表:

Perseus把同态加密推理栈收进一个公开Python库:Llama-3-8B解码延迟低于已知最快实现Sylph

核心概要

同态加密能在密文上直接算模型,但自举(bootstrapping,刷新密文可用乘法深度的昂贵操作)带来的延迟让加密大模型难以实用,而现有优化分散在不同、有时闭源的框架里,集成困难且耗时。Perseus是一个公开的Python库,覆盖密码后端、数据打包和自举放置三层,在GPU上实现内核内密钥再生、复数Cachemir打包,以及按系数幅值和打包周期性规划自举。在Llama-3-8B解码上,其延迟低于已知最快实现Sylph,后者运行在相近硬件但基于闭源的HEaaN。

AI-generated editorial illustration: Perseus: A Full-Stack System for Homomorphic Model Inference

深度剖析

加密模型推理现在有一个公开的Python库,把密码后端、数据打包和自举放置三层放在同一套环境里,使用者可以用纯Python在Rust与CUDA的CKKS运行时之上写新模型、新打包或新自举方案。 此前的优化大多落在不同且有时闭源的框架中,彼此集成困难而耗时,正交的优化难以叠加收益。 在已实现的GPT-2、Llama-3-8B、ViT和BERT上,这套组合取得所报告的最先进延迟;对代码公开的对比方法复现其结果,对代码不可得的方法引用已发表结果。

延迟的下降来自三层各自的改动:密钥切换密钥的一半是均匀随机的,改为在用到它的两个内核里用计数器模式ChaCha12现场重算,密钥存储减半;打包把Cachemir扩展到CKKS的复数槽,每个密文携带两个实向量;自举放置先记录计算图,并按每个密文的系数幅值和打包周期性标注,再用迭代最小割决定自举位置。 此前的Cachemir只利用密文的实数槽,已有的最小割放置器只依据深度和尺度决定自举,不看数值本身。 复数Cachemir使许多操作和层的吞吐大约翻倍、内存需求大约减半;放置器平均执行的自举次数少于同类放置器;全部测量在一张NVIDIA RTX PRO 6000上、32位RNS CKKS链、128位安全级别下完成。

在Llama-3-8B解码上,Perseus在由自身规划器确定的固定自举调度下,相对已知最快实现Sylph降低延迟,后者运行在相近硬件但基于闭源的HEaaN。 Sylph是此前已知最快的加密Llama-3-8B实现,Perseus以它为对照。 解码的加密困惑度与明文参考值并列报告,质量指标在近似校准集的留出数据上计算;预填充阶段同样是最快实现,归一化准确率在留出提示上给出。

启示与展望

评测覆盖GPT-2-small、Llama-3-8B、ViT和BERT四个模型;Llama-3-8B同时测试解码与预填充两种执行模态,GPT-2-small报告预填充,ViT与BERT为分类任务。全部测量在单张NVIDIA RTX PRO 6000、32位RNS CKKS链、128位安全级别下完成,质量指标在近似校准集的留出数据上计算。作者还公开一个加密GPT-2的公开排行榜,邀请社区继续改进。

加密模型的困惑度与明文参考值并列报告,归一化准确率被用作CKKS近似算术、自举和非线性近似所带来性能退化的代理指标。作者指出,CKKS执行大模型仍远未达到实用,尽管各层优化频繁出现。