一种隐私计算中间数据流零拷贝装置及方法与流程
未命名
07-22
阅读:106
评论:0
1.本发明属于隐私计算技术领域,具体涉及一种隐私计算中间数据流零拷贝装置及方法。
背景技术:
2.目前已知的各种隐私计算技术,每一种技术都有其具体的应用场景,从而产生独特的安全保护作用。
3.但往往在网络数据传输、节点数据执行时等过程中产生很多效率性问题,同时因为节点内应用层系统与底层系统之间或底层系统与底层系统之间使用了不同的技术或不同的编程语言,造成在节点内系统之间的数据共享过程中损耗了大量的时间和资源,比如把cpu宝贵资源完全浪费在对数据的序列化和反序列化过程。
4.目前已存在得隐私计算技术再大多致力于解决隐私安全问题,没有重点解决数据传输、共享、序列化反序列化上出现得时效性和资源浪费等问题。
技术实现要素:
5.针对现有技术的不足,本发明的目的在于提供一种隐私计算中间数据流零拷贝装置及方法,致力于在原有隐私计算技术体系下,进一步提升网络数据传输、节点数据执行、数据序列化反序列化等影响时效性和硬件资源的性能,采用一种在软件层面+内核+硬件+网络传输层面四种层面上进行数据零拷贝的装置,以达到节点内系统之间数据内存共享、网络传输无需序列化反序列化、提升数据执行的执行效率,使得整体系统在整个数据传输、数据共享、数据执行过程中达到数据零拷贝。
6.本发明的目的可以通过以下技术方案实现:
7.一种隐私计算中间数据流零拷贝装置,零拷贝装置包括隐私计算联盟网络模块,所述隐私计算联盟网络模块包括多个节点,节点与节点之间进行隐私计算,节点与节点之间互相传输加密过程数据和中间因子以优化和计算各自节点本地模型与算法。
8.所述节点具有两种服务状态,两种服务状态分别为用户态和内核态,用户态为节点的上层应用程序和底层计算引擎,内核态为节点在硬件上的数据共享流通。
9.进一步的,所述上层应用程序使用java语言实现,底层计算引擎则使用python或rust语言实现。
10.所述上层应用程序部署有用于将本地隐私数据进行数据预处理和转换成内存数据格式的平台应用,转换成内存数据格式使用的转换技术为apachearrow。
11.所述底层计算引擎部署有多种隐私计算底层技术。
12.进一步的,所述上层应用程序和底层计算引擎均通过arrow和相关mmap、sendfile和dma技术充分实现内存共享。
13.所述内核态在硬件层面上使用dma,内核态在指令方面使用mmap和sendfi le+dma方式,内核态在网卡传输数据至外部时,用户态中采用apachearrowf light技术进行网络
传输。
14.上述的零拷贝装置的零拷贝方法,其特征在于,所述零拷贝方法包括如下步骤:
15.s1:用户态上层服务转换隐私数据。
16.s2:用户态切换内核态内存映射并落盘。
17.s3:用户态上层调用底层并内存共享数据机制。
18.s4:用户态底层对数据执行计算。
19.s5:用户态切换内核态计算结果内存映射并外部传输。
20.s6:用户态接收传输数据并参与底层运算。
21.进一步的,所述s1的具体操作如下:用户态上层应用程序接入用户的隐私数据,首先需要对隐私数据进行预处理,隐私数据进行预处理的具体方法如下:
22.s11:null值填充,null值使用其他的已知标识符进行代替。
23.s12:同类数据类型筛选组合,对数据集中相同类型的数据进行筛选组合,使相同类型的数据归为一列或邻近的列。
24.int8和int16两类数据类型归为一列,int32、int64规模比较大的列则分别归为一列,突出数据范围计算设计成临近列,float、double列分别归为一列,突出数据范围计算设计成临近列。
25.s13:通过s11和s12进行隐私数据预处理完成之后,使用arrow技术对其进行连续转换在内存上形成列式数据表,记为:arrow_private_data。
26.进一步的,所述s2的具体操作如下:
27.用户态和内核态进行一次的服务状态切换,同时用户态上层应用程序调用mmap指令,将用户态内存缓冲区与内核态的内核缓冲区进行地址映射,内核态内核缓冲区直接共享得到用户态内存缓存区中的arrow_private_data数据。
28.用户态程序将arrow_private_data进行落盘,服务状态切换到内核态,内核态cpu通知dma设备将用户态已写入至用户态内存缓冲区共享到内核缓冲区中的arrow_private_data进行写入落盘至本地磁盘,记为arrow_private_dat a_file。
29.进一步的,所述s3的具体操作如下:
30.用户态中的底层计算引擎对本地隐私数据进行数据计算或模型训练,由用户态上层应用调用发起。
31.用户态与内核态进行一次的服务状态切换,并调用mmap指令,将内核态内核缓冲区与用户态内存缓冲区再次进行地址映射,实现用户态内存缓冲区直接共享得到内核态的内核缓冲区的数据,服务状态切换到内核态后,cpu通过arr ow技术的特性指向到了磁盘中的arrow_private_data_file。
32.内核态读arrow文件时以零拷贝的方式直接写到内核态内存缓冲区,服务状态从内核态切换回用户态,用户态底层计算引擎读用户态内存缓冲区中已经由内核态内核缓冲区共享的arrow_private_data_file数据。
33.用户态底层计算引擎使用python、rust语言编写,使用arrow的python、rust库来进行接收arrow_private_data_file数据。
34.进一步的,所述s4的具体操作如下:
35.用户态底层计算引擎对arrow_private_data_file进行计算,计算过程包括:机器
学习、深度学习、数据治理清洗、数据加解密、同态计算。
36.计算过程中会在用户态的内存中输出一份以当前节点计算出来的过程数据、密文数据,过程数据使用同态加密方式进行同态加密。
37.用户态底层计算引擎使用arrow技术对过程数据进行数据连续转换和数据预处理,方式与s1步骤一致,最终得到列式过程数据、列式密文数据,记为arrow_process_encrypt_data、arrow_encrypt_data。
38.进一步的,所述s5的具体操作如下:
39.用户态底层计算引擎将arrow_process_encrypt_data、arrow_encrypt_da ta进行临时性落盘。
40.落盘操作与s2步骤一致,得到arrow_process_encrypt_data_file、arro w_encrypt_data_file,服务状态为内核态,内核态下使用sendfile指令,告知dma并直接通过dma技术将落盘操作中的内核缓冲区的arrow_process_encr ypt_data、arrow_encrypt_data数据收集拷贝至网卡。
41.内核态网卡与用户态flight网络传输协议技术结合将arrow_process_enc rypt_data、arrow_encrypt_data传输至其他节点。
42.进一步的,所述s6的具体操作如下:
43.其他节点内核态的网卡接收到来自外部传输过来的arrow_process_encryp t_data和arrow_encrypt_data的数据,内核态使用sendfile指令,告知dma并直接通过dma技术将网卡中的arrow_process_encrypt_data、arrow_encryp t_data的数据收集拷贝至内核态中的内核缓冲区。
44.内核态通过mmap指令与用户态建立内存地址映射共享关系,将内核态中的内核缓冲区中的arrow_process_encrypt_data、arrow_encrypt_data数据共享至用户态内存缓冲区,状态切换至用户态,用户态的底层计算引擎读取用户态内存缓冲区的arrow_process_encrypt_data、arrow_encrypt_data数据。
45.节点的过程数据和密文数据与其他节点传输过来的arrow_process_encryp t_data、arrow_encrypt_data数据进行融合计算。
46.若节点在内存中的数据有丢失,按照s3步骤的方式进行零拷贝无需反序列化方式读取arrow_process_encrypt_data_file、arrow_encrypt_data_file数据。
47.通过不断的迭代轮询s3-s6步骤对隐私数据进行多节点多方的隐私计算,得到最终的计算结果。
48.本发明的有益效果:
49.1、本发明拷贝方法及装置采用一种在软件层面+内核+硬件+网络传输层面四种层面上进行数据零拷贝的装置,以达到节点内系统之间数据内存共享、网络传输无需序列化反序列化、提升数据执行的执行效率,使得整体系统在整个数据传输、数据共享、数据执行过程中达到数据零拷贝;
50.2、本发明拷贝方法整个过程在基于原有隐私计算技术体系下,提升在网络数据传输、节点数据执行、数据序列化反序列化等影响时效性的过程上进一步提升数据流通效率,在硬件资源上,充分的解放cpu资源,让cpu更多的参与到用户态底层计算引擎中的隐私计算过程,同时在软件方面上数据格式是arro w的列式存储格式,充分的cpu资源和arrow数
据格式,让整个隐私计算过程执行效率极大的得到提升。
附图说明
51.为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
52.图1是本发明零拷贝装置的整体架构图;
53.图2是本发明零拷贝方法的流程图。
具体实施方式
54.下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其它实施例,都属于本发明保护的范围。
55.一种隐私计算中间数据流零拷贝装置,如图1所示,零拷贝装置包括隐私计算联盟网络模块,隐私计算联盟网络模块包括多个节点,多个节点分别表示为:节点a、节点b、节点c...,节点与节点之间进行隐私计算,节点与节点之间互相传输加密过程数据和中间因子等以优化和计算各自节点本地模型与算法,节点的内部数据流通基本一致,可见图1的节点架构图。
56.节点具有两种服务状态,两种服务状态分别为用户态和内核态。
57.用户态是不直接访问节点硬件的一种服务状态,通常用于部署软件应用,在本发明中用户态做为节点的上层应用程序和底层计算引擎,这两层都是使用不同的编程语言进行实现,其中上层应用程序使用java语言实现,底层计算引擎则使用python、rust等语言实现。
58.上层应用程序部署有平台应用,平台应用不仅能够将本地隐私数据进行数据预处理,同时还能够将本地隐私数据转换成内存数据格式,转换成内存数据格式的转换技术为apachearrow,apachearrow是一种内存映射文件,内存列存数据格式,支持数据在系统间的零拷贝使用,让数据在异构大数据系统间移动、处理地更快,该转换技术是利用cpu资源对隐私数据进行转换至列式的数据表。
59.底层计算引擎部署有多种隐私计算底层技术如:联邦学习、多方安全计算等,上层应用程序和底层计算引擎均可以通过arrow和相关mmap、sendfile、dma(这三块属于内核态功能)等技术充分实现内存共享,底层计算引擎基于内存共享,此时无需使用cpu资源,底层计算引擎可直接访问内存中的数据进行cpu资源级别计算。
60.内核态主要是响应用户态的指令调用和直接访问硬件,在本发明中内核态为节点在硬件上的数据共享流通,硬件层面上使用dma,dma是一种直接存储器访问的设备,dma传输方式无需cpu直接控制传输,即在数据传输过程中,可以解放cpu资源。
61.内核态在指令方面使用mmap和sendfile+dma方式,mmap是一种内存映射文件的方法,即将一个文件或者其它对象映射到进程的地址空间,实现文件磁盘地址和进程虚拟地址空间中一段虚拟地址的一一对映关系,使用mmap便于用户态中生成的内存数据直接共享
至内核态中的内核缓冲区,同样地内核态中的内核缓冲区数据也可以直接共享至用户态中的内存缓冲区,使得cpu、dma等无需再次从内存拷贝数据;sendfile是系统调用在两个文件描述符之间直接传递数据(完全在内核态中操作),从而避免了数据在内核缓冲区和用户缓冲区之间的拷贝,操作效率很高,被称之为零拷贝。
62.在本发明中因为sendfile完全在内核态中操作,所以直接使用sendfile将内核缓冲区的数据使用dma收集拷贝至网卡,无需再次拷贝一份内核缓冲区到socket(套接字)缓冲区,此过程也无需cpu参与。
63.内核态在网卡方面主要用于节点与节点之间的加密过程数据、中间因子等的网络传输,这里对应用户态应用则使用apachearrowflight技术,flight用于分析的大容量数据传输提供高性能有线协议,专为满足现代数据世界的需求而设计,包括跨平台语言支持、无限并行性、高效率、强大的安全性、多区域分布和高效的网络利用率,同时因为是arrow体系下,所以flight可以无需序列化和反序列化的传输arrow格式数据。
64.在本发明中结合以上两种服务状态,从软硬件+网络传输方面进行全方位的数据流零拷贝,极致的提升隐私计算体系下的性能时效性、效率性、执行性等,以及更加释放宝贵的cpu资源,充分在隐私计算计算过程中使用cpu资源。
65.上述零拷贝装置的零拷贝方法,如图2所示,所述零拷贝方法包括如下步骤:
66.s1:用户态上层服务转换隐私数据
67.用户态上层应用程序接入用户的隐私数据,首先需要对隐私数据进行预处理,隐私数据进行预处理的具体方法如下:
68.s11:null值填充,null会直接影响到用户态和内核态间的数据零拷贝方式,当不对null值填充,arrow技术无法识别其数据和数据类型对其进行内存上的连续转换,从而导致后续在读该份数据时,cpu仍然会以拷贝的方式从内存或磁盘中拷贝数据到用户态的内存缓冲区。
69.在本发明中null值使用其他的已知标识符进行代替,比如空字符串、nan、undefined等,arrow在连续转换时默认这些为真实数据等进行操作,从而避免数据拷贝,而本发明的用户态底层在计算过程中会对其进行过滤计算,不参与计算。
70.s12:同类数据类型筛选组合,因为在本发明中数据集在内存中是以列式格式存在,列式格式很适合用于大规模的olap(联机分析处理)计算,所以需要对数据集中相同类型的数据进行筛选组合,使相同类型的数据归为一列或邻近的列,在计算过程中就会相对集中于这些集中的列进行计算,而不用扫描所有的数据行和列,达到大规模数据olap计算。
71.在本发明中如int8、int16这两类数据类型归为一列,int32、int64等规模比较大的列则分别归为一列,突出数据范围计算设计成临近列,float、doub le等列则分别归为一列,突出数据范围计算设计成临近列。
72.最终使得数据以同类数据类型分布的更加均匀,基于arrow技术的转换,还能够使得相同类型数据存储在连续内存中,形成向量数据结构和列式存储结构。
73.s13:通过s11和s12进行隐私数据预处理完成之后,使用arrow技术对其进行连续转换在内存上形成列式数据表,记为:arrow_private_data。
74.s2:用户态切换内核态内存映射并落盘
75.用户态和内核态进行一次的服务状态切换,同时用户态上层应用程序调用mmap指
令,将用户态内存缓冲区与内核态的内核缓冲区进行地址映射,实现内核态内核缓冲区直接共享得到用户态内存缓存区中的arrow_private_data数据,无需进行cpu的数据零拷贝。
76.此时用户态程序需要将arrow_private_data进行落盘,服务状态切换到内核态,此时内核态cpu通知dma设备将用户态已写入至用户态内存缓冲区共享到内核缓冲区中的arrow_private_data进行写入落盘至本地磁盘,记为arrow_private_data_file。在此过程中,用户态与内核态使用arrow+mmap+dma方式进行落盘数据,无需拷贝内存数据,并且并不占用cpu资源,cpu只负责传达指令。
77.s3:用户态上层调用底层并内存共享数据机制
78.用户态中的底层计算引擎开始对本地隐私数据进行数据计算或模型训练,由用户态上层应用调用发起。
79.此时用户态与内核态进行一次的服务状态切换,并调用mmap指令,将内核态内核缓冲区与用户态内存缓冲区再次进行地址映射,实现用户态内存缓冲区直接共享得到内核态的内核缓冲区的数据,服务状态切换到内核态后,cpu通过arrow技术的特性指向到了磁盘中的arrow_private_data_file。
80.由于arrow一种内存映射文件,并且在s1步骤已对隐私数据集进行预处理,以至于内核态读arrow时可以以零拷贝的方式直接写到内核态内存缓冲区,服务状态从内核态切换回用户态,此时因为内核缓冲区已经有arrow_private_da ta_file的数据,而且用户态和内核态使用mmap建立了内存地址映射共享关系,用户态底层计算引擎可以直接读到用户态内存缓冲区中已经由内核态内核缓冲区共享的arrow_private_data_file数据,同时由于用户态上层服务程序是使用java编写的,编写时使用了arrow的java库进行写入数据。
81.用户态底层计算引擎使用python、rust语言编写,也同样使用arrow的python、rust库来进行接收arrow_private_data_file数据,由于arrow的特性,用户态底层计算引擎无需反序列化数据即可直接使用用户态内存缓冲区中的ar row_private_data_file数据。在该步骤避免cpu参与数据的零拷贝、数据的序列化和反序列化带来的时效性和资源浪费等问题,极大的提升了数据在节点系统内的数据传输共享效率。
82.s4:用户态底层对数据执行计算
83.用户态底层计算引擎对arrow_private_data_file进行计算,计算过程包括但不限于:机器学习、深度学习、数据治理清洗、数据加解密、同态计算等,计算过程中会在用户态的内存中输出一份以当前节点计算出来的过程数据(中间因子、梯度、损失值等)、密文数据等,其中过程数据因为后续需要网络传输至其他节点,所以这里也使用同态加密方式进行同态加密,保证数据隐私安全。
84.用户态底层计算引擎使用arrow技术对过程数据进行数据连续转换和数据预处理,方式与s1步骤一致,即最终得到列式过程数据、列式密文数据,记为arrow_process_encrypt_data、arrow_encrypt_data。
85.s5:用户态切换内核态计算结果内存映射并外部传输
86.用户态底层计算引擎需要将arrow_process_encrypt_data、arrow_encryp t_data进行临时性落盘,以便后续的过程计算使用。
87.落盘操作与s2步骤一致,得到arrow_process_encrypt_data_file、arro w_encrypt_data_file,此时服务状态为内核态,内核态下使用sendfile指令,无需切换回用
户态,同时告知dma并直接通过dma技术将落盘操作中的内核缓冲区的arrow_process_encrypt_data、arrow_encrypt_data数据无需cpu拷贝的方式直接收集拷贝至网卡,省去了一次cpu拷贝,节省cpu资源。
88.最终内核态网卡与用户态flight网络传输协议技术结合将arrow_process_encrypt_data、arrow_encrypt_data传输至其他节点。
89.s6:用户态接收传输数据并参与底层运算
90.其他节点内核态的网卡接收到来自外部传输过来的arrow_process_encryp t_data和arrow_encrypt_data的数据,该数据此时在内核态中的网卡中,内核态使用sendfile指令,无需切换回用户态,同时告知dma并直接通过dma技术将网卡中的arrow_process_encrypt_data、arrow_encrypt_data的数据收集拷贝至内核态中的内核缓冲区,省去了一次cpu拷贝,节省cpu资源。
91.随后内核态通过mmap指令与用户态建立内存地址映射共享关系,将内核态中的内核缓冲区中的arrow_process_encrypt_data、arrow_encrypt_data数据共享至用户态内存缓冲区,状态切换至用户态,此时用户态的底层计算引擎读取用户态内存缓冲区的arrow_process_encrypt_data、arrow_encrypt_data数据,由于该数据是使用flight技术传输,属于arrow技术体系下,所以用户态底层计算引擎无需进行反序列化即可直接使用用户态内存缓冲区中的arrow_pr ocess_encrypt_data、arrow_encrypt_data数据。
92.因为整体流程是隐私计算网络,所以节点与节点之间的隐私计算任务是同时进行,以至于其他节点在接收到该arrow_process_encrypt_data、arrow_en crypt_data数据之前,已经有自己的一份底层过程数据和密文数据,此时节点的过程数据和密文数据与其他节点传输过来的arrow_process_encrypt_data、arrow_encrypt_data数据进行融合计算,,因为其他节点采用的是arrowfligh t技术将arrow数据格式传输至当前节点,当前节点在接收到这些数据时,无需进行序列化反序列化操作即可直接将本地过程数据和密文数据与arrow_proces s_encrypt_data、arrow_encrypt_data进行融合计算。
93.若节点在内存中的数据有丢失,可按照s3步骤的方式进行零拷贝无需反序列化方式读取arrow_process_encrypt_data_file、arrow_encrypt_data_file数据。
94.计算过程中,所有的数据都是经过arrow转换而来,即都是列式的数据表,可以有效的有针对性的进行大规模olap计算,提升执行效率。
95.最终通过不断的迭代轮询s3-s6步骤对隐私数据进行多节点多方的隐私计算,得到最终的计算结果。
96.整个过程在基于原有隐私计算技术体系下,提升在网络数据传输、节点数据执行、数据序列化反序列化等影响时效性的过程上进一步提升数据流通效率。在硬件资源上,充分的解放cpu资源,让cpu更多的参与到用户态底层计算引擎中的隐私计算过程,同时在软件方面上数据格式是arrow的列式存储格式,充分的cpu资源和arrow数据格式,让整个隐私计算过程执行效率极大的得到提升。
97.在本说明书的描述中,参考术语“一个实施例”、“示例”、“具体示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本发明的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不一定指的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任何的一个或多个实施例或示例中以合
适的方式结合。
98.以上显示和描述了本发明的基本原理、主要特征和本发明的优点。本行业的技术人员应该了解,本发明不受上述实施例的限制,上述实施例和说明书中描述的只是说明本发明的原理,在不脱离本发明精神和范围的前提下,本发明还会有各种变化和改进,这些变化和改进都落入要求保护的本发明范围内。
技术特征:
1.一种隐私计算中间数据流零拷贝装置,零拷贝装置包括隐私计算联盟网络模块,其特征在于,所述隐私计算联盟网络模块包括多个节点,节点与节点之间进行隐私计算,节点与节点之间互相传输加密过程数据和中间因子以优化和计算各自节点本地模型与算法;所述节点具有两种服务状态,两种服务状态分别为用户态和内核态,用户态为节点的上层应用程序和底层计算引擎,内核态为节点在硬件上的数据共享流通。2.根据权利要求1所述的一种隐私计算中间数据流零拷贝装置,其特征在于,所述上层应用程序使用java语言实现,底层计算引擎则使用python或ru st语言实现;所述上层应用程序部署有用于将本地隐私数据进行数据预处理和转换成内存数据格式的平台应用,转换成内存数据格式使用的转换技术为apachearrow;所述底层计算引擎部署有多种隐私计算底层技术。3.根据权利要求2所述的一种隐私计算中间数据流零拷贝装置,其特征在于,所述上层应用程序和底层计算引擎均通过arrow和相关mmap、sendfile和dma技术充分实现内存共享;所述内核态在硬件层面上使用dma,内核态在指令方面使用mmap和sendfi le+dma方式,内核态在网卡传输数据至外部时,用户态中采用apachearrowf light技术进行网络传输。4.根据权利要求3所述的零拷贝装置的零拷贝方法,其特征在于,所述零拷贝方法包括如下步骤:s1:用户态上层服务转换隐私数据;s2:用户态切换内核态内存映射并落盘;s3:用户态上层调用底层并内存共享数据机制;s4:用户态底层对数据执行计算;s5:用户态切换内核态计算结果内存映射并外部传输;s6:用户态接收传输数据并参与底层运算。5.根据权利要求4所述的零拷贝方法,其特征在于,所述s1的具体操作如下:用户态上层应用程序接入用户的隐私数据,首先需要对隐私数据进行预处理,隐私数据进行预处理的具体方法如下:s11:null值填充,null值使用其他的已知标识符进行代替。s12:同类数据类型筛选组合,对数据集中相同类型的数据进行筛选组合,使相同类型的数据归为一列或邻近的列;int8和int16两类数据类型归为一列,int32、int64规模比较大的列则分别归为一列,突出数据范围计算设计成临近列,float、double列分别归为一列,突出数据范围计算设计成临近列;s13:通过s11和s12进行隐私数据预处理完成之后,使用arrow技术对其进行连续转换在内存上形成列式数据表,记为:arrow_private_data。6.根据权利要求5所述的零拷贝方法,其特征在于,所述s2的具体操作如下:用户态和内核态进行一次的服务状态切换,同时用户态上层应用程序调用mmap指令,将用户态内存缓冲区与内核态的内核缓冲区进行地址映射,内核态内核缓冲区直接共享得到用户态内存缓存区中的arrow_private_data数据;
用户态程序将arrow_private_data进行落盘,服务状态切换到内核态,内核态cpu通知dma设备将用户态已写入至用户态内存缓冲区共享到内核缓冲区中的arrow_private_data进行写入落盘至本地磁盘,记为arrow_private_dat a_file,cpu只负责通知作用,后续的落盘至磁盘由dma来处理,释放cpu资源。7.根据权利要求6所述的零拷贝方法,其特征在于,所述s3的具体操作如下:用户态中的底层计算引擎对本地隐私数据进行数据计算或模型训练,由用户态上层应用调用发起;用户态与内核态进行一次的服务状态切换,并调用mmap指令,将内核态内核缓冲区与用户态内存缓冲区再次进行地址映射,实现用户态内存缓冲区直接共享得到内核态的内核缓冲区的数据,服务状态切换到内核态后,cpu通过arr ow技术的特性指向到了磁盘中的arrow_private_data_file;内核态读arrow文件时以零拷贝的方式直接写到内核态内存缓冲区,服务状态从内核态切换回用户态,用户态底层计算引擎读用户态内存缓冲区中已经由内核态内核缓冲区共享的arrow_private_data_file数据;用户态底层计算引擎使用python、rust语言编写,使用arrow的python、rust库来进行接收arrow_private_data_file数据。8.根据权利要求7所述的零拷贝方法,其特征在于,所述s4的具体操作如下:用户态底层计算引擎对arrow_private_data_file进行计算,计算过程包括:机器学习、深度学习、数据治理清洗、数据加解密、同态计算;计算过程中会在用户态的内存中输出一份以当前节点计算出来的过程数据、密文数据,过程数据使用同态加密方式进行同态加密;用户态底层计算引擎使用arrow技术对过程数据进行数据连续转换和数据预处理,方式与s1步骤一致,最终得到列式过程数据、列式密文数据,记为arrow_process_encrypt_data、arrow_encrypt_data。9.根据权利要求8所述的零拷贝方法,其特征在于,所述s5的具体操作如下:用户态底层计算引擎将arrow_process_encrypt_data、arrow_encrypt_da ta进行临时性落盘;落盘操作与s2步骤一致,得到arrow_process_encrypt_data_file、arro w_encrypt_data_file,服务状态为内核态,内核态下使用sendfile指令,告知dma并直接通过dma技术将落盘操作中的内核缓冲区的arrow_process_encr ypt_data、arrow_encrypt_data数据收集拷贝至网卡;内核态网卡与用户态flight网络传输协议技术结合将arrow_process_enc rypt_data、arrow_encrypt_data传输至其他节点。10.根据权利要求9所述的零拷贝方法,其特征在于,所述s6的具体操作如下:其他节点内核态的网卡接收到来自外部传输过来的arrow_process_encryp t_data和arrow_encrypt_data的数据,内核态使用sendfile指令,告知dma并直接通过dma技术将网卡中的arrow_process_encrypt_data、arrow_encryp t_data的数据收集拷贝至内核态中的内核缓冲区;内核态通过mmap指令与用户态建立内存地址映射共享关系,将内核态中的内核缓冲区
中的arrow_process_encrypt_data、arrow_encrypt_data数据共享至用户态内存缓冲区,状态切换至用户态,用户态的底层计算引擎读取用户态内存缓冲区的arrow_process_encrypt_data、arrow_encrypt_data数据;节点的过程数据和密文数据与其他节点传输过来的arrow_process_encryp t_data、arrow_encrypt_data数据进行融合计算;若节点在内存中的数据有丢失,按照s3步骤的方式进行零拷贝无需反序列化方式读取arrow_process_encrypt_data_file、arrow_encrypt_data_file数据;通过不断的迭代轮询s3-s6步骤对隐私数据进行多节点多方的隐私计算,得到最终的计算结果。
技术总结
本发明公开一种隐私计算中间数据流零拷贝装置及方法,零拷贝装置包括隐私计算联盟网络模块,隐私计算联盟网络模块包括多个节点,节点与节点之间进行隐私计算,节点与节点之间互相传输加密过程数据和中间因子以优化和计算各自节点本地模型与算法;节点具有两种服务状态,两种服务状态分别为用户态和内核态,用户态为节点的上层应用程序和底层计算引擎,内核态为节点在硬件上的数据共享流通。本发明零拷贝装置采用一种在软件层面+内核+硬件+网络传输层面上进行数据零拷贝的装置,以达到节点内系统之间数据内存共享、网络传输无需序列化反序列化、提升数据执行的执行效率,使得整体系统在整个数据传输、数据共享、数据执行过程中达到数据零拷贝。中达到数据零拷贝。中达到数据零拷贝。
技术研发人员:王济平 黎刚 高俊杰 汤克云 杨劲业 梁孟
受保护的技术使用者:京信数据科技有限公司
技术研发日:2023.03.23
技术公布日:2023/7/20
版权声明
本文仅代表作者观点,不代表航空之家立场。
本文系作者授权航家号发表,未经原创作者书面授权,任何单位或个人不得引用、复制、转载、摘编、链接或以其他任何方式复制发表。任何单位或个人在获得书面授权使用航空之家内容时,须注明作者及来源 “航空之家”。如非法使用航空之家的部分或全部内容的,航空之家将依法追究其法律责任。(航空之家官方QQ:2926969996)
飞行汽车 https://www.autovtol.com/
