《A generic framework for privacy preserving deep learning》
0.摘要
syft是一個(gè)隱私保護(hù)的深度學(xué)習(xí)框架工三,核心的操作基于命令鏈和tensor伤塌。支持FL、MPC和差分隱私DP如庭。
1.創(chuàng)新點(diǎn)
- 在worker之間建立了標(biāo)準(zhǔn)的通信協(xié)議
- 使用tensor鏈模型有效的override操作
- 實(shí)現(xiàn)了DP和MPC
2.抽象的tensor運(yùn)算標(biāo)準(zhǔn)框架
2.1鏈結(jié)構(gòu)
構(gòu)成:用圖一所示的操作鏈來實(shí)現(xiàn)tensor的轉(zhuǎn)換和分發(fā)給其他worker愉耙,每一種tensor操作都用鏈中特殊的子類實(shí)現(xiàn)的榛。鏈上的節(jié)點(diǎn)稱為 SyftTensor晰筛,每個(gè) SyftTensor表示數(shù)據(jù)的狀態(tài)或者轉(zhuǎn)換等操作,多個(gè) SyftTensor連在一起構(gòu)成操作鏈莹汤。鏈的頭節(jié)點(diǎn)稱為 PyTorch tensor快鱼,所有的操作都是從頭節(jié)點(diǎn)開始,鏈中上面的節(jié)點(diǎn)是下面節(jié)點(diǎn)的父節(jié)點(diǎn)纲岭,下面節(jié)點(diǎn)是上面節(jié)點(diǎn)的子節(jié)點(diǎn)抹竹,節(jié)點(diǎn)之間是父子關(guān)系。
-
兩個(gè)重要的節(jié)點(diǎn):LocalTensor 和PointerTensor
- LocalTensor是在 Torch tensor實(shí)例化的時(shí)候自動(dòng)創(chuàng)建的止潮,作用是在torch tensor上執(zhí)行與重載操作對(duì)應(yīng)的native操作窃判,例如,要執(zhí)行加法操作時(shí)喇闸,LocalTensor會(huì)在head tensor上執(zhí)行native_add操作袄琳,LocalTensor的子節(jié)點(diǎn)可以是頭節(jié)點(diǎn),這樣構(gòu)成了循環(huán)鏈燃乍,降低了新建子節(jié)點(diǎn)的性能開銷唆樊。
- PointerTensor 是在tensor被發(fā)送出去的時(shí)候創(chuàng)建的。整個(gè)鏈被發(fā)送到了遠(yuǎn)程worker刻蟹,原來的鏈被擁有兩個(gè)節(jié)點(diǎn)的新鏈取代逗旁,一個(gè)是空的tensor節(jié)點(diǎn),一個(gè)是用來區(qū)分?jǐn)?shù)據(jù)方和合作方的PointerTensor節(jié)點(diǎn)舆瘪,這個(gè)節(jié)點(diǎn)沒有子節(jié)點(diǎn)片效。
2.2虛擬worker
多個(gè)虛擬worker存在于同一個(gè)物理機(jī)器红伦,彼此之間不通過網(wǎng)絡(luò)通信,他們僅僅復(fù)制命令鏈淀衣,并展示與實(shí)際worker完全相同的接口用來彼此通信昙读。
FL在這個(gè)框架中有兩種實(shí)現(xiàn)方式,一種是建立在plain網(wǎng)絡(luò)socket上的舌缤;另一種建立在web socket上箕戳;后者允許多個(gè)worker在瀏覽器中實(shí)例化某残,每個(gè)worker都在自己的標(biāo)簽頁中国撵。