主頁 >  其他 > 隱私計算開源框架「隱語SecretFlow」分層拆解和聯邦學習演算法使用

隱私計算開源框架「隱語SecretFlow」分層拆解和聯邦學習演算法使用

2022-11-16 07:15:55 其他

本文首發于 微信公眾號:隱語的小劇場

一、“隱語”架構設計全貌

1.隱語框架設計思想

隱私計算是一個新興的跨學科領域,涉及密碼學、機器學習、資料庫、硬體等多個領域,根據過去幾年的實踐經驗,我們發現

  • 隱私計算技術方向多樣,不同場景下有其各自更為合適的技術解決方案
  • 隱私計算學習曲線很高,非隱私計算背景的用戶使用困難
  • 隱私計算涉及領域眾多,需要領域專家共同協作

隱語的設計目標是使得資料科學家和機器學習開發者可以非常容易地使用隱私計算技術進行資料分析和機器學習建模,而無需了解底層技術細節,

為達到這個目標,隱語提供了一層設備抽象,將多方安全計算(MPC)同態加密(HE)可信執行環境(TEE)等隱私計算技術抽象為密文設備, 將單方計算抽象為明文設備,

基于這層抽象,資料分析和機器學習作業流可以表示為一張計算圖,其中節點表示某個設備上的計算,邊表示設備之間的資料流動,不同型別設備之間的資料流動會自動進行協議轉換,在這一點上,隱語借鑒了主流的深度學習框架,后者將神經網路表示為一張由設備上的算子和設備間的張量流動構成的計算圖, 隱語框架圍繞開放這一核心思想,提供了不同層次的設計抽象,希望為不同型別的開發者都提供良好的開發體驗,

 

 

在設備層,隱語提供了良好的設備介面和協議介面,支持更多的設備和協議插拔式的接入,我們希望與密碼學、可信硬體、硬體加速等領域專家通力合作,不斷擴展密態計算的型別和功能,不斷提升協議的安全性和計算性能,

同時,隱語提供了良好的設備介面,第三方隱私計算協議可作為設備插拔式接入,在演算法層,為機器學習提供了靈活的編程介面,演算法開發者可以很容易定義自己的演算法,

2.架構分層總覽

隱語總體架構自底向上一共分為五層:

  1. 資源管理層:主要承擔了兩方面的職責,第一是面向業務交付團隊,可以屏蔽不同機構底層基礎設施的差異,降低業務交付團隊的部署運維成本,另一方面,通過對不同機構的資源進行集中式管理,構建出一個高效協作的資料協同網路,
  2. 明密文計算設備與原語層:提供了統一的可編程設備抽象,將多方安全計算(MPC)、同態加密(HE)、可信硬體(TEE)等隱私計算技術抽象為密態設備,將單方本地計算抽象為明文設備,同時,提供了一些不適合作為設備抽象的基礎演算法,如差分隱私(DP)、安全聚合(Secure Aggregation)等,
  3. 明密文混合調度層:提供了統一的設備調度抽象,將上層演算法描述為一張有向無環圖,其中節點表示某個設備上的計算,邊表示設備之間的資料流動,即邏輯計算圖,邏輯計算圖由分布式框架進一步拆分并調度至物理節點,
  4. AI & BI 隱私演算法層:這一層的目的是屏蔽掉隱私計算技術細節,但保留隱私計算的概念,其目的是降低隱私計算演算法的開發門檻,提升開發效率,有隱私計算演算法開發訴求的同學,可以根據自身場景和業務的特點,設計出一些特化的隱私計算演算法,來滿足自身業務和場景對安全性、計算性能和計算精度的平衡,在這一層上,隱語本身也會提供一些通用的演算法能力,比如MPC的LR/XGB/NN,聯邦學習演算法,SQL能力等,
  5. 用戶界面層:隱語的目標并不是做一個端到端的產品,而是為了讓不同的業務都能夠通過快速集成隱語而具備全面的隱私計算能力,因此我們會在最上層去提供一層比較薄的產品API,以及一些SDK,去降低業務方集成隱語的成本,

3.架構細節拆解

設備與原語層

隱語的設備分為物理設備和邏輯設備,其中,物理設備是隱私計算各個參與方的物理機器,邏輯設備則由一個或多個物理設備構成,邏輯設備支持一組 特定的計算算子(Device Ops),有自己特定的資料表示(Device Object),邏輯設備分為明文和密文兩種型別,前者執行單方本地計算,后者執行多方參與的隱私計算,

邏輯設備的運行時負責記憶體管理、資料傳輸、算子調度等職責,運行在一個或多個物理設備上,邏輯設備和物理設備不是一對一的關系,一個物理設備可能同時屬于多個邏輯設備,在同一組物理設備上,可以根據不同的隱私協議和參與組合虛擬出不同的邏輯設備,

下表是隱語目前暫定支持的設備串列:

設備

型別

運行時

算子

協議

前端

狀態

PYU

明文

Python Interpreter

Python

Release

SPU

密文

SPU VM

PSI, XLA HLO

SPDZ-2k, ABY3

JAX, TensorFlow, PyTorch

Alpha

HEU

密文

HEU Runtime

Add, XLA HLO

Paillier, OU, TFHE

Numpy, JAX

Alpha

TEE

密文

TEE Runtime

XLA HLO

Intel SGX

JAX, TensorFlow, PyTorch

WIP

可編程性

邏輯設備具備可編程性,即用戶可以在設備上自定義計算邏輯,每個設備對用戶提供了協議無關的編程介面,在一個設備上,用戶可以定義從簡單的矩陣運算, 到完整的深度模型訓練,當然,這一切取決于設備提供的計算能力,

對于明文設備PYU,它的前端為python,用戶可以通過@device將一段預定義python函式調度至其上執行,

對于密文設備SPU、HEU、TEE,它們的前端可以是任何支持XLA 的框架, 如JAX, TensorFlow,PyTorch等,同樣的,用戶也可以通過@device將基于這些前端自定義的函式調度至指定的設備執行,

1 import jax.numpy as jnp
2 
3 dev = Device()  # maybe PYU, SPU, HEU, TEE
4 
5 @device(dev)
6 def selu(x, alpha=1.67, lmbda=1.05):
7     return lmbda * jnp.where(x > 0, x, alpha * jnp.exp(x) - alpha)
8 
9 res = selu(x)  # res is a DeviceObject

用戶自定義函式首先轉換成XLA HLO Computation,由XLA進行設備無關的代碼優化和分析,并發往后端設備,后端設備進一步執行代碼優化和分析,并生成最終 的可執行代碼,可執行代碼或由設備的虛擬機解釋執行(SPU, HEU),或由硬體直接執行(TEE),使用XLA HLO作為IR,使得我們可以復用XLA前端和設備無關 代碼優化,同時使得后端實作更加簡潔干凈,

對于密文設備(半同態)HEU,它僅支持一組有限的計算,因此提供了一組預定義算子如__add____mul__等,用戶不能通過@device進行自定義編程,

1 x, y = HEUObject(), PYUObject()
2 z = x + y  # add
3 z = x * y  # mul
4 z = x @ y  # matmul
協議轉換

用戶在邏輯設備上進行編程,構建邏輯計算圖,其節點表示設備上的一段函式或算子,邊表示設備物件的流動,邏輯計算圖被設備進一步分割為子圖,兩個子圖間的 邊表示跨設備的物件流動,此時需要進行協議轉換,設備物件的DeviceObject.to介面用于轉換至目標設備物件,任何新增的設備都應該提供相應的轉換函式并 插入物件轉換表中,

下表是各個邏輯設備物件的轉換表:

  PYU SPU HEU TEE
PYU   share encrypt encrypt
SPU reconstruct   encrypt+add reconstruct+encrypt
HEU decrypt minus+decrypt   decrypt+encrypt
TEE decrypt decrypt+share decrypt+encrypt  
分布式引擎

用戶基于設備構建了一張邏輯計算圖,那么我們如何執行這張計算圖?由于邏輯設備映射到一個或多個物理設備,因此我們需要將邏輯設備上的算子正確調度到其對應的物理設備,同時處理好這些物理設備間的資料傳輸關系,毫無疑問,我們需要一個分布式圖執行引擎來解決這些問題,

那么我們需要一個怎樣的分布式圖執行引擎?以下是隱語對它的要求 

  • 細粒度的異構計算:在一張邏輯計算圖中,具有不同粒度的計算任務,既有簡單的資料處理(秒級),也有復雜的多方訓練(幾個小時至幾十小時),同時,物理節點具有不同的硬體環境,CPU, GPU, TEE, FPGA等,

  • 靈活的計算模型:在水平、垂直場景下,針對資料處理和模型訓練等不同作業流,支持多種并行模型,如資料并行、模型并行、混合并行,

  • 動態執行:在聯邦學習場景下,不同機構的資料規模、帶寬延遲、機器性能可能有較大差異,這導致同步模式的效率受限于最慢的作業節點,因此,我們希望支持 異步訓練模式,這要求圖執行引擎具有動態執行能力,

隱語針對隱私計算場景,已經對框架進行了一些安全加固作業:通過身份認證、代碼預裝、代碼存證等手段對框架做了整體加固,未來,還將探索沙箱隔離、訪問控制、靜態圖等機制以進一步提升安全水位,在環境適配方面,為了適配跨機構網路通信的特點,推進了GCS gRPC通信、域名支持、弱網斷線處理等相關功能的開發,

AI & BI 隱私演算法

這一層的目的是其目的是降低隱私計算演算法的開發門檻,提升開發效率,有隱私計算演算法開發訴求的同學,可以根據自身場景和業務的特點,設計出一些特化的隱私計算演算法,來滿足自身業務和場景對安全性、計算性能和計算精度的平衡,在這一層上,隱語本身也會提供一些通用的演算法能力,比如MPC的LR/XGB/NN,聯邦學習演算法,SQL能力等,

二、使用“隱語”框架構建隱私計算演算法

邏輯設備抽象為演算法開發者提供了極大的靈活性,他們可以像積木一樣自由組合這些設備,在設備上自定義計算,從而構建自己的隱私計算演算法,接下來,我們通過一個具體的演算法來展示隱語框架的通用編程能力,

聯邦學習演算法

聯邦機器學習又名聯邦學習,聯合學習,聯盟學習,是一種機器學習框架,能有效幫助多個機構在滿足用戶隱私保護、資料安全和政府法規的要求下,進行資料使用和機器學習建模,

聯邦學習的演算法流程如上圖所示,大致分為以下四個步驟

  1. 機構節點在本地進行多輪訓練,得到模型引數
  2. 機構節點使用加密協議,將模型引數上傳至聚合節點
  3. 聚合節點使用加密協議,對模型引數進行聚合,得到全域模型
  4. 機構節點從聚合節點獲取最新的全域模型,進入下一輪訓練

節點本地訓練

機構節點運行在機構本地,隱語提供了一個邏輯設備PYU,執行本地的明文計算,下面的BaseTFModel定義了本地模型訓練邏輯,用戶可以選擇自己喜好的機器學習框架,如TensorFlow, PyTorch等,隱語提供了@proxy裝飾器,對一個普通的類進行了初始設定,以便后續在邏輯設備上對其實體化,@proxy(PYUObject)表明該類需要在PYU設備上實體化,

 1 @proxy(PYUObject)
 2 class BaseTFModel:
 3     def train_step(self, weights, cur_steps, train_steps) -> Tuple[np.ndarray, int]:
 4     self.model.set_weights(weights)
 5         num_sample = 0
 6         for _ in range(train_steps):
 7             x, y = next(self.train_set)
 8             num_sample += x.shape[0]
 9             self.model.fit(x, y)
10 
11         return self.model.get_weights(), num_sample

模型安全聚合

模型聚合對各個機構節點的模型引數進行加權平均,如下面_average所示,隱語邏輯設備的最大特點在于可編程性,用戶可以將一段函式調度到多種設備執行,以達到使用不同隱私計算技術的目的,目前,DeviceAggregator可以支持PYU明文聚合,也可以支持SPU MPC協議聚合,后續我們還將支持TEE, HEU等多種密文設備,

 1 @dataclass
 2 class DeviceAggregator(Aggregator):
 3     device: Union[PYU, SPU]
 4 
 5     def average(self, data: List[DeviceObject], axis=0, weights=None):
 6         # 2. 機構節點使用加密協議,將模型引數上傳至聚合節點
 7         data = https://www.cnblogs.com/secretflow/archive/2022/11/15/[d.to(self.device) for d in data]
 8         if isinstance(weights, (list, tuple)):
 9             weights = [w.to(self.device) if isinstance(w, DeviceObject) else w for w in weights]
10 
11         def _average(data, axis, weights):
12             return [jnp.average(element, axis=axis, weights=weights) for element in zip(*data)]
13 
14         # 3. 聚合節點使用加密協議,對模型引數進行聚合,得到全域模型
15         return self.device(_average, static_argnames='axis')(data, axis=axis, weights=weights)

訓練流程整合

有了節點本地訓練、模型安全聚合,我們就可以將其整合起來形成完整的訓練流程,首先,我們在每個PYU設備(代表機構節點)創建BaseTFModel實體,同時,初始化聚合器,可以是PYU, SPU, TEE, Secure Aggregation,然后,按照上述描述的聯邦學習演算法流程進行迭代訓練,

 1 class FedTFModel:
 2     def __init__(self, device_list: List[PYU] = [], model: Callable[[], tf.keras.Model] = None, aggregator=None):
 3         # 在每個機構節點(PYU)創建一個BaseTFModel實體
 4         self._workers = {device: BaseTFModel(
 5             model, device=device) for device in device_list}
 6         # 聚合器,可以是PYU, SPUPPU, TEE, Secure Aggregation
 7     self._aggregator = aggregator
 8 
 9     def fit(self, x: Union[HDataFrame, FedNdarray], y: Union[HDataFrame, FedNdarray], batch_size=32, epochs=1, verbose='auto',
10             callbacks=None, validation_data=https://www.cnblogs.com/secretflow/archive/2022/11/15/None, shuffle=True,
11             class_weight=None, sample_weight=None, validation_freq=1, aggregate_freq=1):
12     self.handle_data(train_x, train_y, batch_size=batch_size,
13                      shuffle=shuffle, epochs=epochs)
14 
15     # 初始化模型引數
16     current_weights = {
17         device: worker.get_weights() for device, worker in self._workers.items()}
18 
19     for epoch in range(epochs):
20         for step in range(0, self.steps_per_epoch, aggregate_freq):
21             weights, sample_nums = [], []
22             for device, worker in self._workers.items():
23                 # 1. 機構節點在本地進行多輪訓練,得到模型引數
24                 weight, sample_num = worker.train_step(current_weights[device], epoch*self.steps_per_epoch+step, aggregate_freq)
25                 weights.append(weight)
26                 sample_nums.append(sample_num)
27             # 模型引數聚合,可以是:PYU, SPU, TEE, Secure Aggregation
28             current_weight = self._aggregator.average(
29                 weights, weights=sample_nums)
30             # 4. 機構節點從聚合節點獲取最新的全域模型,進入下一輪訓練
31             current_weights = {device: current_weight.to(device) for device, worker in self._workers.items()}

更多演算法:

通過以上聯邦學習演算法的例子,我們展示了隱語作為隱私計算框架的可編程性、可擴展性,期待您基于隱語探索更多有趣的用法!更多詳情請參考我們的教程和實作,

https://secretflow.readthedocs.io/zh_CN/latest/

  • 在SPU進行PSI對齊,邏輯回歸、神經網路訓練

  • 使用SPU HEU的組合構建HESS-LR, HESS-XGB演算法

  • 橫向聯邦學習,在PYU進行本地訓練,使用SPU、TEE、Secure Aggregation進行梯度、權重聚合

  • 縱向拆分學習,將一個模型拆分至多個PYU,使用PYU聚合隱層,使用差分隱私保護前向隱層和反向梯度

 

隱語官網:   https://www.secretflow.org.cn 隱語社區及代碼訪問:   https://github.com/secretflow   https://gitee.com/secretflow 關注我們:      公眾號:隱語的小劇場   B站:隱語secretflow   郵箱:[email protected] 關注微信公眾號:隱語的小劇場

轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/534174.html

標籤:其他

上一篇:get、post、狀態碼型別

下一篇:Open Cascade 中的 AIS_InteractiveContext、V3d_Viewer 與 V3d_View 之間的關系

標籤雲
其他(157675) Python(38076) JavaScript(25376) Java(17977) C(15215) 區塊鏈(8255) C#(7972) AI(7469) 爪哇(7425) MySQL(7132) html(6777) 基礎類(6313) sql(6102) 熊猫(6058) PHP(5869) 数组(5741) R(5409) Linux(5327) 反应(5209) 腳本語言(PerlPython)(5129) 非技術區(4971) Android(4554) 数据框(4311) css(4259) 节点.js(4032) C語言(3288) json(3245) 列表(3129) 扑(3119) C++語言(3117) 安卓(2998) 打字稿(2995) VBA(2789) Java相關(2746) 疑難問題(2699) 细绳(2522) 單片機工控(2479) iOS(2429) ASP.NET(2402) MongoDB(2323) 麻木的(2285) 正则表达式(2254) 字典(2211) 循环(2198) 迅速(2185) 擅长(2169) 镖(2155) 功能(1967) .NET技术(1958) Web開發(1951) python-3.x(1918) HtmlCss(1915) 弹簧靴(1913) C++(1909) xml(1889) PostgreSQL(1872) .NETCore(1853) 谷歌表格(1846) Unity3D(1843) for循环(1842)

熱門瀏覽
  • 網閘典型架構簡述

    網閘架構一般分為兩種:三主機的三系統架構網閘和雙主機的2+1架構網閘。 三主機架構分別為內端機、外端機和仲裁機。三機無論從軟體和硬體上均各自獨立。首先從硬體上來看,三機都用各自獨立的主板、記憶體及存盤設備。從軟體上來看,三機有各自獨立的作業系統。這樣能達到完全的三機獨立。對于“2+1”系統,“2”分為 ......

    uj5u.com 2020-09-10 02:00:44 more
  • 如何從xshell上傳檔案到centos linux虛擬機里

    如何從xshell上傳檔案到centos linux虛擬機里及:虛擬機CentOs下執行 yum -y install lrzsz命令,出現錯誤:鏡像無法找到軟體包 前言 一、安裝lrzsz步驟 二、上傳檔案 三、遇到的問題及解決方案 總結 前言 提示:其實很簡單,往虛擬機上安裝一個上傳檔案的工具 ......

    uj5u.com 2020-09-10 02:00:47 more
  • 一、SQLMAP入門

    一、SQLMAP入門 1、判斷是否存在注入 sqlmap.py -u 網址/id=1 id=1不可缺少。當注入點后面的引數大于兩個時。需要加雙引號, sqlmap.py -u "網址/id=1&uid=1" 2、判斷文本中的請求是否存在注入 從文本中加載http請求,SQLMAP可以從一個文本檔案中 ......

    uj5u.com 2020-09-10 02:00:50 more
  • Metasploit 簡單使用教程

    metasploit 簡單使用教程 浩先生, 2020-08-28 16:18:25 分類專欄: kail 網路安全 linux 文章標簽: linux資訊安全 編輯 著作權 metasploit 使用教程 前言 一、Metasploit是什么? 二、準備作業 三、具體步驟 前言 Msfconsole ......

    uj5u.com 2020-09-10 02:00:53 more
  • 游戲逆向之驅動層與用戶層通訊

    驅動層代碼: #pragma once #include <ntifs.h> #define add_code CTL_CODE(FILE_DEVICE_UNKNOWN,0x800,METHOD_BUFFERED,FILE_ANY_ACCESS) /* 更多游戲逆向視頻www.yxfzedu.com ......

    uj5u.com 2020-09-10 02:00:56 more
  • 北斗電力時鐘(北斗授時服務器)讓網路資料更精準

    北斗電力時鐘(北斗授時服務器)讓網路資料更精準 北斗電力時鐘(北斗授時服務器)讓網路資料更精準 京準電子科技官微——ahjzsz 近幾年,資訊技術的得了快速發展,互聯網在逐漸普及,其在人們生活和生產中都得到了廣泛應用,并且取得了不錯的應用效果。計算機網路資訊在電力系統中的應用,一方面使電力系統的運行 ......

    uj5u.com 2020-09-10 02:01:03 more
  • 【CTF】CTFHub 技能樹 彩蛋 writeup

    ?碎碎念 CTFHub:https://www.ctfhub.com/ 筆者入門CTF時時剛開始刷的是bugku的舊平臺,后來才有了CTFHub。 感覺不論是網頁UI設計,還是題目質量,賽事跟蹤,工具軟體都做得很不錯。 而且因為獨到的金幣制度的確讓人有一種想去刷題賺金幣的感覺。 個人還是非常喜歡這個 ......

    uj5u.com 2020-09-10 02:04:05 more
  • 02windows基礎操作

    我學到了一下幾點 Windows系統目錄結構與滲透的作用 常見Windows的服務詳解 Windows埠詳解 常用的Windows注冊表詳解 hacker DOS命令詳解(net user / type /md /rd/ dir /cd /net use copy、批處理 等) 利用dos命令制作 ......

    uj5u.com 2020-09-10 02:04:18 more
  • 03.Linux基礎操作

    我學到了以下幾點 01Linux系統介紹02系統安裝,密碼啊破解03Linux常用命令04LAMP 01LINUX windows: win03 8 12 16 19 配置不繁瑣 Linux:redhat,centos(紅帽社區版),Ubuntu server,suse unix:金融機構,證券,銀 ......

    uj5u.com 2020-09-10 02:04:30 more
  • 05HTML

    01HTML介紹 02頭部標簽講解03基礎標簽講解04表單標簽講解 HTML前段語言 js1.了解代碼2.根據代碼 懂得挖掘漏洞 (POST注入/XSS漏洞上傳)3.黑帽seo 白帽seo 客戶網站被黑帽植入劫持代碼如何處理4.熟悉html表單 <html><head><title>TDK標題,描述 ......

    uj5u.com 2020-09-10 02:04:36 more
最新发布
  • 2023年最新微信小程式抓包教程

    01 開門見山 隔一個月發一篇文章,不過分。 首先回顧一下《微信系結手機號資料庫被脫庫事件》,我也是第一時間得知了這個訊息,然后跟蹤了整件事情的經過。下面是這起事件的相關截圖以及近日流出的一萬條資料樣本: 個人認為這件事也沒什么,還不如關注一下之前45億快遞資料查詢渠道疑似在近日復活的訊息。 訊息是 ......

    uj5u.com 2023-04-20 08:48:24 more
  • web3 產品介紹:metamask 錢包 使用最多的瀏覽器插件錢包

    Metamask錢包是一種基于區塊鏈技術的數字貨幣錢包,它允許用戶在安全、便捷的環境下管理自己的加密資產。Metamask錢包是以太坊生態系統中最流行的錢包之一,它具有易于使用、安全性高和功能強大等優點。 本文將詳細介紹Metamask錢包的功能和使用方法。 一、 Metamask錢包的功能 數字資 ......

    uj5u.com 2023-04-20 08:47:46 more
  • vulnhub_Earth

    前言 靶機地址->>>vulnhub_Earth 攻擊機ip:192.168.20.121 靶機ip:192.168.20.122 參考文章 https://www.cnblogs.com/Jing-X/archive/2022/04/03/16097695.html https://www.cnb ......

    uj5u.com 2023-04-20 07:46:20 more
  • 從4k到42k,軟體測驗工程師的漲薪史,給我看哭了

    清明節一過,盲猜大家已經無心上班,在數著日子準備過五一,但一想到銀行卡里的余額……瞬間心情就不美麗了。最近,2023年高校畢業生就業調查顯示,本科畢業月平均起薪為5825元。調查一出,便有很多同學表示自己又被平均了。看著這一資料,不免讓人想到前不久中國青年報的一項調查:近六成大學生認為畢業10年內會 ......

    uj5u.com 2023-04-20 07:44:00 more
  • 最新版本 Stable Diffusion 開源 AI 繪畫工具之中文自動提詞篇

    🎈 標簽生成器 由于輸入正向提示詞 prompt 和反向提示詞 negative prompt 都是使用英文,所以對學習母語的我們非常不友好 使用網址:https://tinygeeker.github.io/p/ai-prompt-generator 這個網址是為了讓大家在使用 AI 繪畫的時候 ......

    uj5u.com 2023-04-20 07:43:36 more
  • 漫談前端自動化測驗演進之路及測驗工具分析

    隨著前端技術的不斷發展和應用程式的日益復雜,前端自動化測驗也在不斷演進。隨著 Web 應用程式變得越來越復雜,自動化測驗的需求也越來越高。如今,自動化測驗已經成為 Web 應用程式開發程序中不可或缺的一部分,它們可以幫助開發人員更快地發現和修復錯誤,提高應用程式的性能和可靠性。 ......

    uj5u.com 2023-04-20 07:43:16 more
  • CANN開發實踐:4個DVPP記憶體問題的典型案例解讀

    摘要:由于DVPP媒體資料處理功能對存放輸入、輸出資料的記憶體有更高的要求(例如,記憶體首地址128位元組對齊),因此需呼叫專用的記憶體申請介面,那么本期就分享幾個關于DVPP記憶體問題的典型案例,并給出原因分析及解決方法。 本文分享自華為云社區《FAQ_DVPP記憶體問題案例》,作者:昇騰CANN。 DVPP ......

    uj5u.com 2023-04-20 07:43:03 more
  • msf學習

    msf學習 以kali自帶的msf為例 一、msf核心模塊與功能 msf模塊都放在/usr/share/metasploit-framework/modules目錄下 1、auxiliary 輔助模塊,輔助滲透(埠掃描、登錄密碼爆破、漏洞驗證等) 2、encoders 編碼器模塊,主要包含各種編碼 ......

    uj5u.com 2023-04-20 07:42:59 more
  • Halcon軟體安裝與界面簡介

    1. 下載Halcon17版本到到本地 2. 雙擊安裝包后 3. 步驟如下 1.2 Halcon軟體安裝 界面分為四大塊 1. Halcon的五個助手 1) 影像采集助手:與相機連接,設定相機引數,采集影像 2) 標定助手:九點標定或是其它的標定,生成標定檔案及內參外參,可以將像素單位轉換為長度單位 ......

    uj5u.com 2023-04-20 07:42:17 more
  • 在MacOS下使用Unity3D開發游戲

    第一次發博客,先發一下我的游戲開發環境吧。 去年2月份買了一臺MacBookPro2021 M1pro(以下簡稱mbp),這一年來一直在用mbp開發游戲。我大致分享一下我的開發工具以及使用體驗。 1、Unity 官網鏈接: https://unity.cn/releases 我一般使用的Apple ......

    uj5u.com 2023-04-20 07:40:19 more