学习视频:https://www.bilibili.com/video/BV1Am421G7ow
讲师:谭晋(SPU负责人)
一、为何做SPU
1. 引言
- 考虑大模型预测的场景
- 模型是公司资产
- 提示词包含用户的隐私
- 如何同时保护模型和提示词,利用隐私计算计算
- 用户将提示词加密
- 模型在加密环境里进行推理
2. 为什么需要隐私计算
- 数据是敏感的
- 生物识别信息: 人脸, 声音, 基因组
- 金融信息: 收入, 消费, 贷款
- 各国都有相应法规: PISS/GDPR
- 数据是重要的
- 数据是互联网公司最重要的资产
- 联合数据产生更大的价值
3. 隐私计算技术路线
-
隐私保护的技术分类
-
多方安全计算
-
同态加密
-
差分隐私
-
可信硬件
……
-
-
将上述抽象应用于引言中讨论的大模型
- 模型权重保存在LLM公司
- 用户的提示词在用户侧可见
4. 加密计算的问题和挑战
-
加密计算的挑战:
- 易用性差—类型简单(加法/乘法)、算子底层
- 性能较差
-
我们需要
- 易用性—高级语言编程
- 性能好—系统性优化
-
SPU应运而生
-
易用—原生AI框架支持
-
性能好—编译器运行时协同优化
-
二、SPU简介
一个虚拟加密处理设备
-
CPU、GPU和SPU的类比
- CPU是一个物理、通用和快速的设备
- GPU是一个物理、高性能并行计算设备
- SPU是一个虚拟的、安全的、多个参与方的、运算相对较慢的设备。
1. 前端
- 编程语言复用原生支持主流AI前端:Tensorflow、JAX、PyTorch
- 降低学习成本
- 复用AI前端能力,如自动求导
2. 编译器
-
将前端产生的机器学习表达加入自定义的隐私保护语义,翻译到运行时。
-
隐私保护领域IR:PPHLO和PPLLO
PP: Privacy Preserving
HLO: High Level Ops
LLO: Low Level Ops
任何数据和密态变量进行计算,结果仍为密态变量。
-
加密计算的优化
-
密文 ✖️ 明文 = 明文 ✖️ 明文 ✖️ 密文
更多的明文计算,优化性能
-
条件变量前置处理
-
3. 运行时
-
多种并发模型支持
交替出现的本地计算和网络通信
- 本地计算,网络等待
- 网络交互,本地计算空闲
矩阵拆块,提高吞吐量。
-
支持多种协议
- 两方、三方、多方
- 半诚实、恶意
- 安全协议可扩展
-
支持多部署模式
- 物理部署透明
- 面向虚拟设备面呈
- 一次书写到处执行
- 左边是物理Layout,右边是虚拟Layout。
- 在物理部署中可以看到两种方式:
- out-sourcing:参考left-upper图例,计算节点和数据节点分离
- collocation:参考left-lower图例,计算节点和数据节点均参与到计算中
- 右侧为SPU抽象的虚拟部署方式:
- 三个数据提供节点
- 一个虚拟SPU
4. 编程界面
-
原生AI框架编程:
- 定义比较逻辑
- 定义数据来源
- 在SPU上运行
对于百万富翁比较问题,可以直接使用jax.numpy或者numpy包。
-
使用JIT编译执行
将compare编译为子节码,让SPU虚拟机运行。
-
生态无缝衔接
模拟大模型进行的推理的过程:
- P1模拟用户,输入query token
- P2模拟大模型部署商,提供对应的模型服务能力
-
修改配置文件即可更改安全协议
node_ids
指定参与方,runtime_config
的protocol
指定协议。- Upper图例对应3个参与方,运行ABY3协议
- Lower图例对应2个参与方,运行CHEETAH协议
-
优化和错误排查
- Profiling – multi-level profiling
- Tracing – full stack trace
- Debugging – plaintext runner
三、现状和展望
1. 现状
-
隐语开源生态
- SPU 支持 PPML
- SPU 支持联邦学习
- SPU 支持 SCQL
-
学术支持
- 计算机系统
- 隐私保护机器学习
- 密码协议创新
2. 构建加密计算生态
SPU 屏蔽了密码学协议,支持numpy原生编程
- 建安全sklearn-like机器学习库
- 构建安全pandas-like数据分析库
- 支持更多的安全后端