Slalom 项目使用教程
1. 项目介绍
Slalom 是一个用于在可信硬件中加速深度神经网络评估的框架。它通过选择性地将计算外包给不受信任(但速度更快)的同地设备,同时保持计算的完整性和隐私性。当前实现中,Slalom 在 Intel SGX enclave 中运行神经网络的评估,并将所有线性层的计算委托给同一机器上的不受信任的 GPU。
该项目基于以下论文:
- Slalom: Fast, Verifiable and Private Execution of Neural Networks in Trusted Hardware
- 作者:Florian Tramèr 和 Dan Boneh
- 链接:arXiv:1806.03287
免责声明:此软件仅用于 Slalom 框架的性能测试,不适合用于任何真实世界的数据或计算。它包含许多安全漏洞,便于测试、调试和性能测量。
2. 项目快速启动
2.1 环境准备
在开始之前,请确保您已经安装了以下依赖:
- Intel SGX 驱动和 SDK for Linux
- TensorFlow (版本 1.8.0),并支持 GPU
- CUDA 安装
2.2 克隆项目
git clone https://github.com/ftramer/slalom.git
cd slalom
2.3 安装依赖
pip install -r requirements.txt
2.4 构建项目
2.4.1 构建自定义 TensorFlow Ops
cd slalom/App
make
make -f Makefile_cu
2.4.2 构建 SGXDNN 库
cd slalom/SGXDNN
make
2.4.3 构建 SGX 应用程序
cd slalom
make
2.5 运行 Slalom
2.5.1 完整性评估
python -m python.slalom.scripts.eval [vgg_16 | mobilenet | mobilenet_sep] sgxdnn --batch_size=8 --max_num_batches=4 [--verify] [--verify_batched] [--verify_preproc] [--use_sgx]
2.5.2 隐私和完整性评估
python -m python.slalom.scripts.eval_slalom [vgg_16 | mobilenet | mobilenet_sep] --batch_size=8 --max_num_batches=4 [--blinding] [--integrity] [--use_sgx]
3. 应用案例和最佳实践
3.1 应用案例
Slalom 主要用于需要在可信硬件中执行深度神经网络评估的场景,特别是在需要保证计算的完整性和隐私性的情况下。例如:
- 金融行业:在处理敏感交易数据时,确保计算的完整性和隐私性。
- 医疗行业:在处理患者数据时,确保数据不被泄露。
3.2 最佳实践
- 性能优化:通过调整
--batch_size
和--max_num_batches
参数,优化计算性能。 - 安全性增强:在真实世界部署中,确保所有安全漏洞已被修复,并实现必要的额外安全措施,如安全通信通道和可验证的证明。
4. 典型生态项目
- Intel SGX:Slalom 依赖 Intel SGX 提供的可信执行环境。
- TensorFlow:Slalom 使用 TensorFlow 进行神经网络的构建和评估。
- CUDA:Slalom 使用 CUDA 加速 GPU 上的计算。
通过以上步骤,您可以快速启动并使用 Slalom 项目,确保在可信硬件中安全地执行深度神经网络评估。
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考