基于 TensorFlow 的隱私 AI 框架 Rosetta 正式開源(https://github.com/LatticeX-F...)。借助 Rosetta,AI 開發(fā)者不需要了解密碼學(xué)等隱私保護(hù)技術(shù),只需要改動(dòng)幾行代碼,就能賦予自己的程序以保護(hù)數(shù)據(jù)隱私的能力。本專欄將通過多篇獨(dú)家技術(shù)稿件,深度披露 Rosetta 的整體框架設(shè)計(jì)、TensorFlow 的定制化改造最佳實(shí)踐、將密碼學(xué)理論算法進(jìn)行高效工程化落地等內(nèi)容。通過本系列專題,希望能讓更多開發(fā)者了解隱私 AI 框架的技術(shù)挑戰(zhàn),同時(shí)為密碼協(xié)議算法工程化、AI 框架深度定制等相關(guān)方向的開發(fā)者提供一些經(jīng)驗(yàn)參考。
數(shù)據(jù)是 AI 技術(shù)的“燃料”已經(jīng)成為業(yè)界的共識(shí),更多的數(shù)據(jù)往往意味著可以訓(xùn)練出更準(zhǔn)確的模型。但無論是在公司內(nèi)部還是多個(gè)企業(yè)之間,為了對用戶數(shù)據(jù)負(fù)責(zé)、合法合規(guī),在數(shù)據(jù)的分享使用時(shí),必須注意對于原始明文數(shù)據(jù)的保護(hù)。
傳統(tǒng)的面向靜態(tài)數(shù)據(jù)保護(hù)的安全手段無法解決數(shù)據(jù)的動(dòng)態(tài)使用、分享中的隱私泄露問題,而正是這一實(shí)際需求催生出了隱私計(jì)算(在 AI 場景下,更進(jìn)一步的可以稱之為隱私 AI)這一新的交叉技術(shù)。隱私計(jì)算技術(shù)融合在數(shù)據(jù)的使用過程之中,保障的是計(jì)算過程本身(廣義的講,還包括計(jì)算結(jié)果)不會(huì)泄露原始明文數(shù)據(jù)本身的信息。
目前實(shí)現(xiàn)隱私計(jì)算的途徑可以分為密碼學(xué)、聯(lián)邦學(xué)習(xí)和硬件可信執(zhí)行環(huán)境(TEE)等幾大類。而其中以密碼學(xué)理論為基礎(chǔ)的 MPC(Multi-Party Computation,安全多方計(jì)算)是最有安全保障的技術(shù)路線,其秉持的基本理念是信任計(jì)算復(fù)雜度理論、代碼,而不是信任人、硬件,而聯(lián)邦學(xué)習(xí)和 TEE 目前還很難講清楚安全性,經(jīng)常被發(fā)現(xiàn)新的安全漏洞。并且,聯(lián)邦學(xué)習(xí)中核心部分也往往需要使用同態(tài)加密等密碼學(xué)手段進(jìn)行強(qiáng)安全性的保障。從工程技術(shù)的角度上看,聯(lián)邦學(xué)習(xí)是分布式機(jī)器學(xué)習(xí)技術(shù)的延伸,主要的挑戰(zhàn)是訓(xùn)練過程中如何進(jìn)行多異構(gòu)終端的同步更新等 [1],很多傳統(tǒng)分布式系統(tǒng)開發(fā)經(jīng)驗(yàn)仍然適用。而以 MPC 為代表的密碼學(xué)途徑則帶來了一些全新的挑戰(zhàn)。
其中最核心的困難是,密碼學(xué)屬于計(jì)算機(jī)理論領(lǐng)域,很多概念、算法協(xié)議都需要有長期的專業(yè)知識(shí)積累才能理解,而業(yè)務(wù)落地中的典型 AI 方向,無論是計(jì)算機(jī)視覺、文本挖掘還是用戶行為建模等都更加面向?qū)嶋H場景。如何打通以密碼學(xué)為典型代表的隱私保護(hù)技術(shù)與 AI 技術(shù)之間的壁壘?這是開發(fā)者在實(shí)際構(gòu)建一個(gè)通用的、易用的隱私計(jì)算框架時(shí)需要解決的核心問題。圍繞著這個(gè)核心問題,又有一系列具體的工程技術(shù)挑戰(zhàn):
如何實(shí)現(xiàn)系統(tǒng)的易用性?AI 開發(fā)者不會(huì)愿意,也不應(yīng)該為了在業(yè)務(wù)中引入數(shù)據(jù)隱私保護(hù)能力而費(fèi)時(shí)耗力地學(xué)習(xí)各種復(fù)雜、抽象的密碼算法。一個(gè)好的隱私 AI 框架應(yīng)該是易上手的,便于 AI 開發(fā)者使用自己熟悉的方式快速解決自己的數(shù)據(jù)隱私問題。
如何實(shí)現(xiàn)系統(tǒng)的高效執(zhí)行?這包括單機(jī)和多機(jī)兩個(gè)層面。密碼學(xué)的計(jì)算大部分都是在大隨機(jī)數(shù)的密文上進(jìn)行,為此常常需要使用專用的硬件指令、SIMD(Single Instruction/Multiple Data)等技術(shù)來進(jìn)行單機(jī)并行化的加速,這些優(yōu)化實(shí)現(xiàn)需要對于密碼學(xué)基礎(chǔ)庫有深入的了解,并往往需要根據(jù)協(xié)議算法做進(jìn)一步的并行優(yōu)化。而在多機(jī)層面上,則需要考慮如何和很多 AI 框架自身的并行優(yōu)化技術(shù)兼容。
如何實(shí)現(xiàn) MPC 多方之間的高效通信?在 MPC 中,多方之間需要進(jìn)行大量的同步通信,而且信道上的內(nèi)容大都是無規(guī)律的、不可壓縮的一次性使用的隨機(jī)數(shù),這就需要在保證安全性的同時(shí),根據(jù)具體的計(jì)算邏輯進(jìn)行很多工程優(yōu)化以減少通信量和通信次數(shù)。
如何保障隱私保護(hù)技術(shù)的可擴(kuò)展性?MPC 等隱私計(jì)算技術(shù)還在不斷發(fā)展之中,也是學(xué)術(shù)研究上的熱點(diǎn)問題,所以一個(gè)好的隱私 AI 框架,需要能夠支持研究者簡單快速地將新的算法協(xié)議集成進(jìn)來。
針對這些問題,業(yè)界已經(jīng)有一些探索,下面我們結(jié)合 Rosetta 來具體談一談在隱私 AI 框架的設(shè)計(jì)和實(shí)現(xiàn)中如何克服這些挑戰(zhàn)。篇幅所限,本文主要整體性地先介紹宏觀設(shè)計(jì),后續(xù)系列文章會(huì)進(jìn)一步剖析一些技術(shù)細(xì)節(jié)。
如同其他的隱私 AI 框架一樣,Rosetta 仍然處于發(fā)展的早期,尚有一些不完善之處。我們在此以 Rosetta 為例是希望能具體化地講清楚這一領(lǐng)域中的細(xì)節(jié)挑戰(zhàn),也希望激發(fā)更多開發(fā)者參與到未來的隱私 AI 系統(tǒng)設(shè)計(jì)中來。
隱私 AI 框架整體設(shè)計(jì)思路
目前業(yè)界尚沒有大規(guī)模落地的、成熟完善的隱私 AI 框架,但是已經(jīng)有一些探索性的開源隱私 AI 框架,比如 PySyft、TF Encrypted 和 CrypTen。
從整體上看,這些框架都是在 TensorFlow 或 PyTorch 的前端 Python 層進(jìn)行封裝集成的。這樣做的好處是可以直接使用這些 AI 框架的上層接口來實(shí)現(xiàn)隱私計(jì)算算法,而且天然的可以直接調(diào)用框架自身封裝好的一些高層次 API 高功能。這對于聯(lián)邦學(xué)習(xí)這種本身就源自分布式機(jī)器學(xué)習(xí)的技術(shù)來說是較為適合的,但是對于密碼學(xué)的 MPC 來說會(huì)有一些不足:
首先,單機(jī)性能無法得到充分的提升。用 Python 來實(shí)現(xiàn)各種復(fù)雜的密碼學(xué)計(jì)算、多方之間的通信無法充分利用底層操作系統(tǒng)、硬件層的并行優(yōu)化。而且更現(xiàn)實(shí)的是,大部分高性能的密碼學(xué)庫提供的是 C/C++ 的接口,如果在 AI 框架的前端上層實(shí)現(xiàn) MPC 等密碼技術(shù),則很難復(fù)用這些業(yè)界長時(shí)間積累(同時(shí)也還在不斷發(fā)展中)下來的成果。
其次,密碼協(xié)議等隱私技術(shù)的實(shí)現(xiàn)和 AI 框架本身耦合過深,不利于擴(kuò)展。由于這些 AI 框架本身提供的對外 API 接口本就是面向 AI 需求的,在實(shí)現(xiàn)較為復(fù)雜的 MPC 等密碼協(xié)議時(shí)不僅需要熟練使用這些框架的 API,還往往需要大量直接使用numpy等庫來實(shí)現(xiàn)復(fù)雜的計(jì)算邏輯。這一方面破壞了對 AI 框架自身使用上的自洽,不再能將全部的計(jì)算邏輯完全承載在 AI 框架的邏輯執(zhí)行圖上,另一方面也使得每一次引入新的后端密碼協(xié)議時(shí)都需要重新基于 AI 框架進(jìn)行實(shí)現(xiàn),這對于密碼協(xié)議開發(fā)者來說成本很高。
基于上述認(rèn)識(shí),Rosetta 在現(xiàn)階段首先以 TensorFlow 這一流行 AI 框架為基礎(chǔ),深度改造其前端 Python 入口和后端 kernel 實(shí)現(xiàn),并封裝可插拔的 MPC 算法協(xié)議作為“隱私保護(hù)引擎”來驅(qū)動(dòng)整個(gè)計(jì)算過程中數(shù)據(jù)的安全流動(dòng)。
Why TensorFlow?
TensorFlow 和 PyTorch 是目前工業(yè)界最主流使用的開源 AI 框架。雖然很多公司在內(nèi)部可能也會(huì)根據(jù)自身需求定制化改造一些組件,或者推出各具特色的新框架以在易用性、高效性、完備性等不同的維度上進(jìn)行進(jìn)一步突破,但是整體上看,這些框架基本的設(shè)計(jì)范式是較為相似的。大多是通過豐富的接口 API 讓用戶以有向無環(huán)圖 DAG 的形式表達(dá)上層計(jì)算邏輯,而框架本身則會(huì)在實(shí)際調(diào)度執(zhí)行這些計(jì)算任務(wù)時(shí)進(jìn)行一系列的優(yōu)化。TensorFlow 雖然在用戶友好性上略遜色于 PyTorch,常受開發(fā)者詬病,但是其在可擴(kuò)展性、高效性上、分布式部署等方面確實(shí)是更加均衡、全面(當(dāng)然這也意味著 TensorFlow 更加復(fù)雜,對其改造會(huì)更加的具有挑戰(zhàn)性)。所以綜合考慮下來,Rosetta 在當(dāng)前版本中選擇 TensorFlow 作為基本的底層承載體,在設(shè)計(jì)開發(fā)的過程中,一方面會(huì)充分利用 TensorFlow 內(nèi)在的計(jì)算圖并行執(zhí)行優(yōu)化等功能以提升效率,另一方面也會(huì)盡量克制,主要是利用其作為深度學(xué)習(xí)框架通用性的一些接口特性,而不會(huì)過于依賴其獨(dú)有的一些組件。
Rosetta 框架核心設(shè)計(jì)思想
隱私算子(SecureOp)作為核心抽象接口連接 AI 框架和隱私計(jì)算技術(shù)。TensorFlow 在不同的層次上提供了多樣的擴(kuò)展方式,Rosetta 選擇后端算子(Operation)層作為核心切入點(diǎn),TensorFlow 在執(zhí)行算子時(shí)會(huì)動(dòng)態(tài)的綁定到具體 MPC 協(xié)議中的 SecureOp 實(shí)現(xiàn)中。通過這樣的抽象,密碼協(xié)議開發(fā)者可以不需要了解 AI 框架,只需要用 C++ 實(shí)現(xiàn)滿足接口定義的各個(gè)功能函數(shù)即可,而 AI 開發(fā)者也不需要深入了解 MPC 等技術(shù)的實(shí)現(xiàn)細(xì)節(jié),而只需要在現(xiàn)有算子的基礎(chǔ)上進(jìn)一步封裝自己想要的上層高級(jí)功能即可。
基于優(yōu)化遍(Pass)的分階段轉(zhuǎn)換。為了盡可能給 AI 開發(fā)者提供易用的接口,減少給線上 AI 程序賦予數(shù)據(jù)隱私保護(hù)能力時(shí)的改造成本,Rosetta 在整體的設(shè)計(jì)中借鑒了程序編譯器領(lǐng)域的核心概念:Pass。Pass 是編譯器中常用的技術(shù),主要用作將源碼文件一步步轉(zhuǎn)變?yōu)闄C(jī)器碼過程中的多輪轉(zhuǎn)化和優(yōu)化。在 Rosetta 中,用戶使用原生 TensorFlow 接口編寫的 DAG(有向無環(huán)圖)形式的邏輯計(jì)算圖會(huì)被分階段的轉(zhuǎn)換、替換為多方協(xié)作執(zhí)行的 MPC 程序,這樣可以實(shí)現(xiàn)對于用戶 API 層最少的改動(dòng)。
具體的,在 Rosetta 中,有兩個(gè)階段的 Pass,一個(gè)在前端 Python 層的全局 DAG 構(gòu)建過程中生效的 Static Pass,會(huì)將原生Tensor轉(zhuǎn)換為支持自定義密文類型的RttTensor,將原生Operation轉(zhuǎn)換為支持tf.string格式輸入輸出的RttOp,并最終在圖開始啟動(dòng)時(shí)進(jìn)一步的轉(zhuǎn)換為承載實(shí)際 MPC 操作的SecureOp。
Static Pass
另一個(gè)是在SecurOp的實(shí)際執(zhí)行時(shí)所進(jìn)行的 Dynamic Pass 處理,會(huì)動(dòng)態(tài)的根據(jù)當(dāng)前用戶選擇的協(xié)議選擇對應(yīng)的實(shí)際算子實(shí)現(xiàn)去執(zhí)行,同時(shí)可以在此時(shí)嵌入基于執(zhí)行上下文的優(yōu)化處理。
Dynamic Pass
融合 MPC 技術(shù)的分布式隱私 AI 架構(gòu)
理清楚整體的分布式結(jié)構(gòu)對于了解一個(gè)系統(tǒng)的架構(gòu)大有裨益。整個(gè)隱私 AI 系統(tǒng)對外接口會(huì)涉及三個(gè)方面,如何指定物理部署上的網(wǎng)絡(luò)拓?fù)???shù)據(jù)在整個(gè)計(jì)算的過程中是如何安全輸入、流動(dòng)、輸出的?隱私計(jì)算邏輯要如何表達(dá)?
多方網(wǎng)絡(luò)的建立
MPC 技術(shù)本身就是要求多方(multi-party)參與的,一般稱他們?yōu)?Player,不同的 MPC 算法協(xié)議會(huì)有不同個(gè)數(shù)的參與方。以 Rosetta 中目前實(shí)現(xiàn)的三方協(xié)議 SecureNN[2] 為例,系統(tǒng)中存在三個(gè)邏輯參與方,P0、P1 和 P2。
在 v0.2.1 版本中,在這一方面的用戶接口層次上,為了保障對外的靈活性,目前支持用戶通過配置文件來一次性指定多機(jī)之間的網(wǎng)絡(luò)關(guān)系,也支持調(diào)用接口動(dòng)態(tài)的激活、解除多方之間的網(wǎng)絡(luò)拓?fù)洌?/p>
# 調(diào)用 activate 接口會(huì)根據(jù)配置參數(shù)或配置文件建立起網(wǎng)絡(luò) rtt.activate(protocol_nam, protocol_config_str=None) # 調(diào)用 deactivate 接口會(huì)釋放網(wǎng)絡(luò)鏈接等資源 rtt.deactivate()
在內(nèi)部實(shí)現(xiàn)中,每一個(gè)參與方都會(huì)監(jiān)聽一個(gè)本地的 server 端口,而同時(shí)分別建立到另外兩方之間的 client 網(wǎng)絡(luò)鏈接。這樣的好處是相互之間的網(wǎng)絡(luò)鏈接關(guān)系簡單清晰,當(dāng)然也需要解決隨之而來的SecureOp并發(fā)同步執(zhí)行時(shí)的一致性問題,這一點(diǎn)我們會(huì)在后續(xù)文章中討論。
一些注意點(diǎn)
熟悉 TensorFlow 的讀者可能會(huì)疑惑,這種多方基于不同數(shù)據(jù)跑相同程序的模式,不就是 TensorFlow 分布式執(zhí)行下對數(shù)據(jù)并行進(jìn)行支持的 In-graph replication 和 Between-graph replication 嗎?并不是這樣,實(shí)際上它們是不同層次的結(jié)構(gòu),這里講的是上層邏輯視角的 MPC 各參與方,在實(shí)際中,你甚至可以進(jìn)一步的將各方內(nèi)部執(zhí)行的這一 task 按照 TensorFlow 的分布式規(guī)范進(jìn)行集群部署,而將集群中的 "server“作為統(tǒng)一的對外邏輯代表。
上面一直講的是“邏輯上”的三方,那么在實(shí)際的業(yè)務(wù)場景中,可能是 2 個(gè)、4 個(gè)或以上公司之間的數(shù)據(jù)合作,是不是就不能用這些架構(gòu)了嗎?其實(shí)不然,我們完全可以在上層進(jìn)行一層映射,以 Privacy-as-a-Service 的形式提供對上層的服務(wù),關(guān)于這一點(diǎn),后續(xù)文章也會(huì)進(jìn)一步介紹。
隱私數(shù)據(jù)的流動(dòng)
每一個(gè)邏輯參與方都可以有自己私有的明文輸入數(shù)據(jù),也可以繼續(xù)處理上一次任務(wù)輸出的密文結(jié)果。在整個(gè)程序的運(yùn)行過程中,只有開始和結(jié)束時(shí)數(shù)據(jù)才會(huì)以明文的形式存在:開始時(shí)對于私有數(shù)據(jù)的引入,以及最后可配置是否將結(jié)果以明文的形式恢復(fù)出來加以輸出。而在中間各個(gè)算子的計(jì)算過程中,數(shù)據(jù)總是以密文形式在本地的邏輯上下文、多方之間進(jìn)行交互。
對外接口方面,在實(shí)際的業(yè)務(wù)中多方數(shù)據(jù)之間是需要關(guān)聯(lián)對齊的,目前 Rosetta 提供常見的兩種數(shù)據(jù)集處理方法,一是對應(yīng)于整體上數(shù)據(jù)集是在各方之間“水平劃分”的場景,即各方擁有不同樣本 id 的全部特征屬性值;另一種對應(yīng)于整體數(shù)據(jù)集是在各方之間“垂直劃分”的場景,即各方之間擁有相同樣本 id 的部分特征屬性值。這些都可以調(diào)用PrivateDataset類的load_data等接口方便的處理。而在輸出階段,提供了如下兩個(gè)接口:
# 將一個(gè)密文形式的 cipher_tensor 恢復(fù)為明文, receive_party 參數(shù)指定 3 方中哪幾方可以獲得明文結(jié)果 rtt.SecureReveal(cipher_tensor, receive_party=0b111) # 與原生 TensorFlow 中模型保存接口 SaveV2 具有一樣的函數(shù)原型,可通過配置文件指定哪幾方可以獲得明文模型文件 rtt.SecureSaveV2(prefix, tensor_names, shape_and_slices, tensors, name=None)
隱私集合求交 PSI(Private Set Intersection)技術(shù)
在實(shí)際場景中還存在一個(gè)很現(xiàn)實(shí)的問題,就是多方之間樣本的對齊問題,比如將 A 方的樣本 id 所指向的樣本和 B 方此樣本 id 對應(yīng)的屬性信息給對應(yīng)起來。PSI 技術(shù)可以安全的解決上述問題,目前各個(gè)開源框架中還沒有將這一功能很好的集成進(jìn)來,Rosetta 目前正在集成這一功能,將在近期版本中發(fā)布。
在內(nèi)部實(shí)現(xiàn)中,密碼學(xué)中的很多運(yùn)算是在空間較大的環(huán)(Ring)、域(Field)等抽象代數(shù)結(jié)構(gòu)上的操作,而具體的在代碼中則落地到對于大整數(shù)、多項(xiàng)式等數(shù)據(jù)結(jié)構(gòu)上的處理,所以框架設(shè)計(jì)上要在三個(gè)方面達(dá)成平衡:
1、盡可能的實(shí)現(xiàn)用戶對于內(nèi)部密文數(shù)據(jù)結(jié)構(gòu)的透明無感;
2、TensorFlow 的 DAG 圖構(gòu)建、自動(dòng)求導(dǎo)等核心功能仍需要無縫的支持;
3、支持不同的 MPC 協(xié)議使用自定義的具體數(shù)據(jù)結(jié)構(gòu)對象以便于擴(kuò)展。
為同時(shí)實(shí)現(xiàn)這些目標(biāo),Rosetta 基于tf.string這一 TensorFlow 原生數(shù)據(jù)結(jié)構(gòu)來承載各協(xié)議自定義的密文數(shù)據(jù),然后通過對 TensorFlow 源碼代碼進(jìn)行深度的 hook 改造使得 DAG 圖構(gòu)建、自動(dòng)求導(dǎo)等功能仍然可用。
DAG 的執(zhí)行
如上述網(wǎng)絡(luò)結(jié)構(gòu)圖所展示的那樣,各 Player 運(yùn)行的是同一份基于 TensorFlow 編寫的 AI 二進(jìn)制代碼,比如訓(xùn)練一個(gè)簡單神經(jīng)網(wǎng)絡(luò)模型的程序。用戶直接的使用 TensorFlow 中原生的算子 API 來構(gòu)建邏輯計(jì)算圖 DAG,Rosetta 內(nèi)部會(huì)在圖開始執(zhí)行時(shí)完成到隱私算子SecureOp的轉(zhuǎn)換。與其他隱私計(jì)算框架相比,這樣的切換成本是最低的。
在執(zhí)行過程中,各 Player 自身都是在按照這個(gè) DAG 圖在運(yùn)行,特殊的地方在于在各個(gè)算子的內(nèi)部執(zhí)行過程中,各個(gè) Player 會(huì)根據(jù)自己所屬的角色遵循 MPC 協(xié)議執(zhí)行不同的操作,這些操作即包括本地的在密文上的處理,也包括在多方之間進(jìn)行強(qiáng)同步的通訊交互,傳輸大量隨機(jī)數(shù)形式的密文。
小 結(jié)
在本篇文章里,我們結(jié)合 Rosetta 框架,從整體上介紹了隱私 AI 框架在工程落地時(shí)所需要面對的挑戰(zhàn),以及 Rosetta 等框架的一些設(shè)計(jì)方案。后續(xù)的文章中,我們會(huì)就核心的關(guān)鍵模塊進(jìn)行進(jìn)一步的介紹。
文章來源:AI前線 ,作者 Rosetta 技術(shù)團(tuán)隊(duì)
審核編輯 黃昊宇
-
AI
+關(guān)注
關(guān)注
88文章
34917瀏覽量
278003 -
人工智能
+關(guān)注
關(guān)注
1806文章
48960瀏覽量
248528 -
深度學(xué)習(xí)
+關(guān)注
關(guān)注
73文章
5558瀏覽量
122710
發(fā)布評論請先 登錄
最新人工智能硬件培訓(xùn)AI基礎(chǔ)入門學(xué)習(xí)課程參考2025版(離線AI語音視覺識(shí)別篇)
簡儀科技開源測控技術(shù)走進(jìn)廈門大學(xué)
AI端側(cè)部署開發(fā)(SC171開發(fā)套件V3)
《零基礎(chǔ)開發(fā)AI Agent——手把手教你用扣子做智能體》
《AI Agent 應(yīng)用與項(xiàng)目實(shí)戰(zhàn)》閱讀心得3——RAG架構(gòu)與部署本地知識(shí)庫
【「AI Agent應(yīng)用與項(xiàng)目實(shí)戰(zhàn)」閱讀體驗(yàn)】書籍介紹
鴻利顯示榮獲“廣東省Mini LED新型顯示工程技術(shù)研究中心”認(rèn)定
優(yōu)艾智合獲批廣東省復(fù)合協(xié)作機(jī)器人工程技術(shù)研究中心
珠海泰芯半導(dǎo)體入選2024年度廣東省工程技術(shù)研究中心
曦華科技榮獲2024年度廣東省工程技術(shù)研究中心認(rèn)定
芯驛電子AUMO傲目亮相2024汽車工程技術(shù)與裝備展
《AI for Science:人工智能驅(qū)動(dòng)科學(xué)創(chuàng)新》第二章AI for Science的技術(shù)支撐學(xué)習(xí)心得
鉆井工程技術(shù)研究院選購我司導(dǎo)熱系數(shù)測試儀

賽盛集團(tuán)電磁兼容工程技術(shù)中心落成慶典圓滿舉行

評論