Orca: FSS-based Secure Training and Inference with GPUs

目录

  • 1.Abstract
  • 2.Accelerating FSS on a GPU
    • 2.1 Accelerating FSS-based compute on GPU
      • 2.1.1 Faster AES computation (AES)
      • 2.1.2 Optimized data layout for cache locality (LAYOUT)
      • 2.1.3 Optimizing memory footprint (MEM)
    • 2.2 Reducing time to read FSS keys
      • 2.2.1 Bypassing OS page cache
      • 2.2.2 Overlapping key read with computation
      • 2.2.3 New cryptographic technique to limit key size
  • 3.Evaluation

1.Abstract

端到端系统ORCA:

  • 加速基于 FSS 的使用 GPU 的 2PC 协议的计算。
  • 新的基于 FSS 的 2PC 协议
  • 提供了第一个用于随机截断的安全协议,并在此基础上提供了对具有端到端安全性的训练的首次评估。
  • ORCA 在 CIFAR-10 上具有 4% 更高的准确性,98 倍更少的通信,并且速度提高了 26 倍。
  • 对于安全的 ImageNet 推断,ORCA 实现了 VGG-16 和 ResNet-50 的亚秒延迟,并且比最先进技术快 8-103 倍。

2.Accelerating FSS on a GPU

2.1 Accelerating FSS-based compute on GPU

2.1.1 Faster AES computation (AES)

在这里插入图片描述

  • AES 加密: AES 需要反复查找预先计算的查找表(lookup table)

  • 常量缓存(constant cache): GPU 中的常量缓存用于存储只读数据,在每个流处理器(SM)中都有一份副本。访问常量缓存通常很快,适合并行计算。

  • 访问模式要求: 常量缓存的性能依赖于 GPU 线程的访问模式。如果所有线程在同一时间访问同一个地址,性能非常高。如果不同线程访问不同地址,访问会被序列化,导致性能下降,甚至导致计算停滞(stall)。

问题分析:

  • 在 AES 加密过程中,不同的 GPU 线程会访问查找表中的不同索引。
  • 由于查找表存储在常量缓存中,当不同线程访问不同地址时,这些访问会被序列化。
  • 这种序列化会导致访问延迟(stall),从而影响整体性能。

解决方案:

1.查找表复制策略:

  • 每个 warp 复制查找表: 每个 SM(流处理器)中的 warp(通常为 32 个线程)都拥有一份查找表的副本。这意味着在每个 SM 中,共有 32 份查找表副本。
  • 这种策略基于先前的研究【61】,目的是减少不同线程访问同一份查找表时的冲突,从而减小序列化访问带来的性能损失。

2.将查找表放置在共享内存中:

  • 共享内存(scratchpad memory): 共享内存是每个 SM 上的高速缓存,用于存储线程块内共享的数据。
  • 共享内存的分块(banking):共享内存分为多个内存银行(banks),每个银行可以独立处理一个内存请求。这样设计使得不同银行的数据可以并行访问,从而避免了访问冲突和停滞。

3.查找表副本放置在不同的内存银行中:

  • 避免访问冲突: 通过将查找表副本放在共享内存的不同银行中,不同线程可以同时访问不同银行的数据,避免了因访问相同内存位置而导致的序列化访问问题。
  • 提高访问效率: 由于共享内存银行可以并行访问,查找表放置在不同银行后,线程访问查找表的速度显著提高,减少了计算停滞。

2.1.2 Optimized data layout for cache locality (LAYOUT)

背景:

  • DCF计算: 计算 DCF 需要评估者执行 n 个链式伪随机生成器(PRG),每个 PRG 调用两次 AES。评估者在调用第 个 PRG 之前,需要稍微修改第 个 PRG 的输出,并使用一个修正词(correction word,CWi)进行调整。
  • 修正词的数量和存储: 每个 DCF 键有 n 个修正词。这些修正词在内存中的布局会影响性能。

并行化实现

1.CPU上的并行实现:

  • 在 CPU 上,每个线程独立地在一个 CPU 核心上计算 DCF。将用于 DCF 计算的 n 个修正词在内存中连续布局,可以更好地利用缓存局部性,从而提高缓存命中率。

2.GPU上的并行实现:

  • 在 GPU 上每个线程计算 DCF 时同步进行。Warp 中的所有线程必须在第 𝑘−1 个 PRG 计算完成后,才能继续第 𝑘 个 PRG 计算。

内存布局优化:

  • 传统布局的缺点: 如果像在 CPU 实现中一样,将 n 个修正词在内存中连续布局,会导致缓存命中率低下。这是因为每个线程在不同的时间访问不同的修正词,导致缓存局部性差。
  • 优化布局的策略: 为了提高 GPU 上的缓存命中率,应第 k 轮 PRG 计算的所有修正词在内存中连续放置,第 k+1 轮 PRG 计算的修正词紧接其后,以此类推。

2.1.3 Optimizing memory footprint (MEM)

背景和问题:

  • FSS 协议:FSS 协议降低了通信开销,但要求较大的密钥大小。
  • 存储和读取:密钥通常存储在 SSD 上,并在在线计算期间读入内存。读取大密钥会非常慢,尤其是从 SSD 读取。
  • 数据传输:大密钥不仅增加了通过 PCIe 总线在 CPU 和 GPU 之间传输的数据量,还占用了有限的 GPU 内存。

解决方案:

1.减少密钥大小:

  • 使用小负载的 DCF: 例如,使用 1-bit 而不是 64-bit 的负载,并尽可能使用 40-bit 而不是 64-bit 的输入进行比较。
  • 优势: 减少密钥大小降低了 CPU 和 GPU 之间的数据移动量,并减小了 GPU 内存占用。

2.避免内存膨胀:

  • 问题: 如果简单地将 1-bit 输出存储到标准数据类型(如字节),会导致 8 倍的内存膨胀。
  • 解决方案: 在 ORCA 中,warp 中的 32 个线程以锁步方式将各自的 1-bit DCF 输出写入一个 32-bit 整数中。

3.避免使用锁:

  • 问题: 在 GPU 上使用锁非常慢。
  • 解决方案: 利用 CUDA 的 warp 同步原语,确保 warp 中的每个线程在写入时不会相互干扰。

结果和性能提升:

  • 通过这种优化,执行一千万个 DCF 的时间减少到 523 毫秒,比简单实现提高了 27%。总体上,比原始的简单实现提高了 6.3 倍

2.2 Reducing time to read FSS keys

FSS 协议的优势:

  • 主要优势是减少各方之间的通信量。
  • 需要在进行在线计算时读取大量预生成的密钥。

性能瓶颈:

  • 尽管通过优化策略加速了 GPU 上的计算,读取 FSS 密钥的时间(从 SSD 到 GPU 内存)成为新的瓶颈。

2.2.1 Bypassing OS page cache

背景:

  • 默认情况下,操作系统将文件内容缓存到CPU的DRAM上,希望随着时间的推移,文件的数据将被反复访问。

问题:

  • 页面缓存会在访问文件内容的关键路径上增加开销

原因:

  • FSS密钥只能使用一次,没有再利用
  • 包含FSS密钥的文件不会受益于页面缓存,但支付开销

2.2.2 Overlapping key read with computation

减少键读取时间的影响

  • 将第i次训练迭代的计算与第(i + 1)次迭代的键读取计算重叠。
  • 确保整个键读取时间都不在关键路径上。

2.2.3 New cryptographic technique to limit key size

问题:

  • 即使经过上述优化,对于较大的网络,从SSD读取密钥的时间也会超过GPU的计算时间

原因 :

  • 当计算在GPU上像在ORCA中那样得到很好的加速时,键读取时间才会成为瓶颈
  • 其它情况并非如此

解决方案: 构建了新的FSS协议

  • 减少流行的非线性(如ReLU和maxpool)中的密钥大小
  • 减少在线通信
  • 与量化训练中的截断相结合

3.Evaluation

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/634556.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

计算机图形学入门games103——碰撞检测

一.怎么发现碰撞,有没有碰撞 碰撞最难的是布料的碰撞 碰撞检测分为两个部分: 第一阶段:去除不可能发生碰撞的元素,输出的就是可能碰撞的备选目标,这阶段叫做碰撞剔除 这常用的套路有两种:第一种是Spati…

算法题解记录26+++翻转二叉树(百日筑基)

题目描述: 题目难度:简单 给你一棵二叉树的根节点 root ,翻转这棵二叉树,并返回其根节点。 示例 1: 输入:root [4,2,7,1,3,6,9] 输出:[4,7,2,9,6,3,1]示例 2: 输入:roo…

C++ TCP发送Socket数据

DEVC需要加入ws2_32库 #include <iostream> #include <winsock2.h>#pragma comment(lib, "ws2_32.lib")void sendData(const char* ip, int port, const char* data) {WSADATA wsaData;SOCKET sockfd;struct sockaddr_in server_addr;// 初始化Winsock…

HDR视频相关标准-HDR vivid(二)

上文介绍了HDRvivid的一些技术。今天从全局角度来看看HDR视频的处理流程&#xff0c;HDR视频系统&#xff0c;即建立一个比SDR视频更大的色彩/亮度坐标体系&#xff0c;并改变系统的传输函数&#xff0c;以再现更大的色域(WCG)和更高的亮度动态范围。 菁彩 HDR技术的专业术语 …

(全面)Nginx格式化插件,Nginx生产工具,Nginx常用命令

目录 &#x1f3ab; 前言 &#x1f389; 开篇福利 &#x1f381; 开篇福利 x2 Double happiness # 介绍 # 地址 # 下载 &#x1f4bb; 命令及解析 # 整个文件系统中搜索名为nginx.conf的文件 # 编辑nginx.conf文件 # 重新加载配置文件 # 快速查找nginx.conf文件并使…

python的协程异步

参考资料 https://blog.csdn.net/qq_43380180/article/details/111573642?spm1001.2014.3001.5506 协程的概念 指的是在一个线程中&#xff0c;可以在某个地方挂起的特殊函数&#xff0c;并且可以重新在挂起处继续运行。协程不是进程&#xff0c;也不是线程。 进程 VS 线程…

Polar 上传

Polar 上传 开题&#xff0c;是一个文件上传界面 对文件后缀有过滤 测试了一下是黑名单&#xff0c;过滤了php相关的文件&#xff0c;但是没过滤.ini、.htaccess后缀的文件 对内容的过滤是<?、file&#xff0c;所以不能用.user.ini配置文件绕过 我们选择使用.htaccess配置…

晶体振荡器

一、晶振与晶体区别 晶振是有源晶振的简称&#xff0c;又叫振荡器&#xff0c;英文名称是oscillator&#xff0c;内部有时钟电路&#xff0c;只需供电便可产生振荡信号&#xff1b;晶体是无源晶振的简称&#xff0c;也叫谐振器&#xff0c;英文名称是crystal&#xff0c;是无极…

第197题|奇偶性的四则运算,你掌握了吗?|函数强化训练(四)|武忠祥老师每日一题 5月22日

解题思路&#xff1a;这道题如果我们会21号的题的话&#xff0c;简直是小菜一碟&#xff01;主要就是要用到下面这个结论&#xff1a; &#xff08;A&#xff09; 直接看奇偶性我们不好看&#xff0c;我们需要拆项&#xff1a; 我们先看前一项的奇偶性&#xff0c;x是奇函数&a…

民国漫画杂志《时代漫画》第13期.PDF

时代漫画13.PDF: https://url03.ctfile.com/f/1779803-1247458360-14efab?p9586 (访问密码: 9586) 《时代漫画》的杂志在1934年诞生了&#xff0c;截止1937年6月战争来临被迫停刊共发行了39期。 ps:资源来源网络&#xff01;

P1【知识点】【数据结构】【链表LinkedList】C++版

链表是一种逻辑上连续&#xff0c;内存上分散的线性表数据结构&#xff0c;是用一组任意的空间&#xff08;可以连续&#xff0c;也可以不连续&#xff09;来存放数据元素。每个数据元素成为一个”结点“&#xff0c;每个结点由数据域和指针域组成。 访问元素&#xff08;Acce…

特征融合篇 | YOLOv8改进之引入轻量级跨尺度特征融合模块CCFM | 源自RT-DETR

前言:Hello大家好,我是小哥谈。CCFM(Cross-Scale Feature Fusion Module)即为跨尺度特征融合模块。这个模块的作用是将不同尺度的特征通过融合操作整合起来,以增强模型对于尺度变化的适应性和对小尺度对象的检测能力。CCFM可以有效地整合细节特征和上下文信息,从而提高模…

【全开源】简单商城系统(PC/UniAPP)

轻松构建您的在线商店 在当今数字化时代&#xff0c;拥有一个在线商店对于许多商家来说已成为必不可少的营销手段。为了满足这一需求&#xff0c;我们推出了“简单商城系统源码”&#xff0c;让您轻松构建并管理您的在线商店。 一、简单易用&#xff0c;快速上手 “简单商城…

python demo

文章背景&#xff0c;记录python 小demo 集合 1、使用python matplotlib库描绘曲线 import matplotlib.pyplot as NLAx_index [0, 5, 10, 15, 20, 25, 30, 35, 40, 45, 50, 55, 60, 65, 70, 75, 80, 85, 90, 95, 100] y_index [6.1, 7.4, 9.1, 11.1, 12.69, 14.35, 16.1, 1…

成都爱尔周进院长提醒当双眼度数差距过大,我们该做些什么

每个人的用眼方式、用眼习惯且两只眼睛“天生条件”不一定相同&#xff0c;当发生近视&#xff0c;双眼近视程度也就可能不同&#xff0c;双眼度数必然会变得不一样。当双眼度数产生差异&#xff0c;尤其是当双眼度数差别过大时会引发哪些问题&#xff1f; 双眼度数不一致&…

面试八股之MySQL篇4——事务篇

&#x1f308;hello&#xff0c;你好鸭&#xff0c;我是Ethan&#xff0c;一名不断学习的码农&#xff0c;很高兴你能来阅读。 ✔️目前博客主要更新Java系列、项目案例、计算机必学四件套等。 &#x1f3c3;人生之义&#xff0c;在于追求&#xff0c;不在成败&#xff0c;勤通…

【ARFoundation自学03】AR Point Cloud 点云(参考点标记)功能详解

和平面识别框架一样 1为XR Origin添加AR Point Cloud Manager组件 然后你的ar应用就具备了点云识别功能&#xff0c;就这么简单 2.可视化这些云点 创建一个美术效果的预制体&#xff0c;人家提供了预设模板 然后拖到仓库&#xff08;ASSETS&#xff09;创建预制体&#xff…

Redis持久化之☞AOF、AOF是怎样执行持久化的?

AOF持久化机制&#xff1a; AOF&#xff08;Append Of File&#xff09;&#xff1a;将redis执行过的所有写指令记录下来&#xff0c;在下次redis重新启动时&#xff0c;只要把这些指令从前到后重复执行一遍&#xff0c;就可以实现数据恢复了。 以独立日志的方式记录每次写命…

本特利330878-90-00前置传感器在PLC系统中的应用与优势

本特利330878-90-00前置传感器在PLC系统中的应用与优势 一、引言 在现代工业自动化领域中&#xff0c;传感器作为信息获取的重要工具&#xff0c;其性能的稳定性和准确性直接影响到整个系统的运行效率。其中&#xff0c;本特利330878-90-00前置传感器以其卓越的性能和广泛的应…

查看主机的php参数short_open_tag 是否为 on

我想要查看主机的php参数short_open_tag 是否为 on&#xff0c;由于我使用的是Hostease的Linux虚拟主机产品&#xff0c;在cPanel面板中并没有找到这个参数选项&#xff0c;因此无法查看。这边联系了Hostease技术支持了解&#xff0c;可以通过以下方式进行查看。 1.先登陆cPane…