0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

怎樣使用FHE實現(xiàn)加密大語言模型?

OSC開源社區(qū) ? 來源:Hugging Face ? 2023-10-19 09:13 ? 次閱讀

近來,大語言模型 (LLM) 已被證明是提高編程、內(nèi)容生成、文本分析、網(wǎng)絡(luò)搜索及遠程學習等諸多領(lǐng)域生產(chǎn)力的可靠工具。

大語言模型對用戶隱私的影響

盡管 LLM 很有吸引力,但如何保護好 輸入給這些模型的用戶查詢中的隱私 這一問題仍然存在。一方面,我們想充分利用 LLM 的力量,但另一方面,存在向 LLM 服務(wù)提供商泄露敏感信息的風險。在某些領(lǐng)域,例如醫(yī)療保健、金融或法律,這種隱私風險甚至有一票否決權(quán)。

一種備選解決方案是本地化部署,LLM 所有者將其模型部署在客戶的計算機上。然而,這不是最佳解決方案,因為構(gòu)建 LLM 可能需要花費數(shù)百萬美元 (GPT3 為 460 萬美元),而本地部署有泄露模型知識產(chǎn)權(quán) (intellectual property, IP) 的風險。

Zama 相信有兩全其美之法: 我們的目標是同時保護用戶的隱私和模型的 IP。通過本文,你將了解如何利用 Hugging Face transformers 庫并讓這些模型的某些部分在加密數(shù)據(jù)上運行。完整代碼見 此處。

全同態(tài)加密 (Fully Homomorphic Encryption,F(xiàn)HE) 可以解決 LLM 隱私挑戰(zhàn)

針對 LLM 部署的隱私挑戰(zhàn),Zama 的解決方案是使用全同態(tài)加密 (FHE),在加密數(shù)據(jù)上執(zhí)行函數(shù)。這種做法可以實現(xiàn)兩難自解,既可以保護模型所有者知識產(chǎn)權(quán),同時又能維護用戶的數(shù)據(jù)隱私。我們的演示表明,在 FHE 中實現(xiàn)的 LLM 模型保持了原始模型的預(yù)測質(zhì)量。為此,我們需要調(diào)整 Hugging Face transformers 庫 中的 GPT2 實現(xiàn),使用 Concrete-Python 對推理部分進行改造,這樣就可以將 Python 函數(shù)轉(zhuǎn)換為其 FHE 等效函數(shù)。

4fbc59ec-6daa-11ee-939d-92fbcf53809c.png

圖 1. GPT2 架構(gòu);

圖 1 展示了由多個 transformer block 堆疊而成的 GPT2 架構(gòu): 其中最主要的是多頭注意力 (multi-head attention,MHA) 層。每個 MHA 層使用模型權(quán)重來對輸入進行投影,然后各自計算注意力,并將注意力的輸出重新投影到新的張量中。

TFHE 中,模型權(quán)重和激活均用整數(shù)表示。非線性函數(shù)必須通過可編程自舉 (Programmable Bootstrapping,PBS) 操作來實現(xiàn)。PBS 對加密數(shù)據(jù)實施查表 (table lookup,TLU) 操作,同時刷新密文以支持 任意計算。不好的一面是,此時 PBS 的計算時間在線性運算中占主導(dǎo)地位。利用這兩種類型的運算,你可以在 FHE 中表達任何子模型的計算,甚至完整的 LLM 計算。

使用 FHE 實現(xiàn) LLM 的一層

接下來,你將了解如何加密多頭注意力 (MHA) 中的一個注意力頭。你可以在 此處 找到完整的 MHA 實現(xiàn)代碼。

4fc0e372-6daa-11ee-939d-92fbcf53809c.svg

圖 2. 在 FHE 中運行 LLM 模型的某些部分

圖 2 概述了一個簡化的底層實現(xiàn)。在這個方案中,模型權(quán)重會被分成兩個部分,分別存儲在客戶端和服務(wù)端。首先,客戶端在本地開始推理,直至遇到已第一個不在本地的層。用戶將中間結(jié)果加密并發(fā)送給服務(wù)端。服務(wù)端對其執(zhí)行相應(yīng)的注意力機制計算,然后將結(jié)果返回給客戶端,客戶端對結(jié)果進行解密并繼續(xù)在本地推理。

量化

首先,為了對加密值進行模型推理,模型的權(quán)重和激活必須被量化并轉(zhuǎn)換為整數(shù)。理想情況是使用 訓練后量化,這樣就不需要重新訓練模型了。這里,我們使用整數(shù)和 PBS 來實現(xiàn) FHE 兼容的注意力機制,并檢查其對 LLM 準確率的影響。

要評估量化的影響,我們運行完整的 GPT2 模型,并讓其中的一個 LLM 頭進行密態(tài)計算。然后我們基于此評估權(quán)重和激活的量化比特數(shù)對準確率的影響。

4fd07206-6daa-11ee-939d-92fbcf53809c.png

單注意力頭量化的平均 top-k 準確率

上圖表明 4 比特量化保持了原始精度的 96%。該實驗基于含有約 80 個句子的數(shù)據(jù)集,并通過將原始模型的 logits 預(yù)測與帶有量化注意力頭的模型的 logits 預(yù)測進行比較來計算最終指標。

在 Hugging Face GPT2 模型中使用 FHE

我們需要在 Hugging Face 的 transformers 庫的基礎(chǔ)上重寫加密模塊的前向傳播,以使其包含量化算子。首先通過加載 GPT2LMHeadModel 構(gòu)建一個 SingleHeadQGPT2Model 實例,然后手動使用 QGPT2SingleHeadAttention 替換第一個多頭注意力模塊,代碼如下。你可以在 這里 找到模型的完整實現(xiàn)。

self.transformer.h[0].attn=QGPT2SingleHeadAttention(config,n_bits=n_bits)

至此,前向傳播已被重載成用 FHE 算子去執(zhí)行多頭注意力的第一個頭,包括構(gòu)建查詢、鍵和值矩陣的投影。以下代碼中的 QGPT2 模塊的代碼見 此處。

classSingleHeadAttention(QGPT2):
"""Classrepresentingasingleattentionheadimplementedwithquantizationmethods."""


defrun_numpy(self,q_hidden_states:np.ndarray):

#ConverttheinputtoaDualArrayinstance
q_x=DualArray(
float_array=self.x_calib,
int_array=q_hidden_states,
quantizer=self.quantizer
)

#Extracttheattentionbasemodulename
mha_weights_name=f"transformer.h.{self.layer}.attn."

#Extractthequery,keyandvalueweightandbiasvaluesusingtheproperindices
head_0_indices=[
list(range(i*self.n_embd,i*self.n_embd+self.head_dim))
foriinrange(3)
]
q_qkv_weights=...
q_qkv_bias=...

#ApplythefirstprojectioninordertoextractQ,KandVasasinglearray
q_qkv=q_x.linear(
weight=q_qkv_weights,
bias=q_qkv_bias,
key=f"attention_qkv_proj_layer_{self.layer}",
)

#Extractthequeries,keysandvales
q_qkv=q_qkv.expand_dims(axis=1,key=f"unsqueeze_{self.layer}")
q_q,q_k,q_v=q_qkv.enc_split(
3,
axis=-1,
key=f"qkv_split_layer_{self.layer}"
)

#Computeattentionmechanism
q_y=self.attention(q_q,q_k,q_v)

returnself.finalize(q_y)

模型中的其他計算仍以浮點形式進行,未加密,并由客戶端在本地執(zhí)行。

將預(yù)訓練的權(quán)重加載到修改后的 GPT2 模型中,然后調(diào)用 generate 方法:

qgpt2_model=SingleHeadQGPT2Model.from_pretrained(
"gpt2_model",n_bits=4,use_cache=False
)

output_ids=qgpt2_model.generate(input_ids)

舉個例子,你可以要求量化模型補全短語 “Cryptography is a” 。在 FHE 中運行模型時,如果量化精度足夠,生成的輸出為:

“Cryptography is a very important part of the security of your computer”

當量化精度太低時,您會得到:

“Cryptography is a great way to learn about the world around you”

編譯為 FHE

現(xiàn)在,你可以使用以下 Concrete-ML 代碼編譯注意力頭:

circuit_head=qgpt2_model.compile(input_ids)

運行此代碼,你將看到以下打印輸出: “Circuit compiled with 8 bit-width”。該配置與 FHE 兼容,顯示了在 FHE 中執(zhí)行的操作所需的最大位寬。

復(fù)雜度

在 transformer 模型中,計算量最大的操作是注意力機制,它將查詢、鍵和值相乘。在 FHE 中,加密域中乘法的特殊性加劇了成本。此外,隨著序列長度的增加,這些乘法的數(shù)量還會呈二次方增長。

而就加密注意力頭而言,長度為 6 的序列需要 11622 次 PBS 操作。我們目前的實驗還很初步,尚未對性能進行優(yōu)化。雖然可以在幾秒鐘內(nèi)運行,但不可否認它需要相當多的計算能力。幸運的是,我們預(yù)期,幾年后,硬件會將延遲提高 1000 倍到 10000 倍,使原來在 CPU 上需要幾分鐘的操作縮短到 ASIC 上的低于 100 毫秒。有關(guān)這些估算的更多信息,請參閱 此博文。

總結(jié)

大語言模型有望使能大量應(yīng)用場景,但其實現(xiàn)引發(fā)了用戶隱私的重大關(guān)切。在本文中,我們朝著密態(tài) LLM 邁出了第一步,我們的最終愿景是讓整個模型完全在云上運行,同時用戶的隱私還能得到充分尊重。

當前的做法包括將 GPT2 等模型中的特定部分轉(zhuǎn)換至 FHE 域。我們的實現(xiàn)利用了 transformers 庫,用戶還能評估模型的一部分在加密數(shù)據(jù)上運行時對準確率的影響。除了保護用戶隱私之外,這種方法還允許模型所有者對其模型的主要部分保密。你可在 此處 找到完整代碼。

Zama 庫 Concrete 和 Concrete-ML (別忘了給我們的 github 代碼庫點個星星 ) 允許直接構(gòu)建 ML 模型并將其轉(zhuǎn)換至等價的 FHE 域,從而使之能夠?qū)用軘?shù)據(jù)進行計算和預(yù)測。






審核編輯:劉清

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學習之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 計算機
    +關(guān)注

    關(guān)注

    19

    文章

    7168

    瀏覽量

    87149
  • python
    +關(guān)注

    關(guān)注

    53

    文章

    4753

    瀏覽量

    84075
  • GPT
    GPT
    +關(guān)注

    關(guān)注

    0

    文章

    347

    瀏覽量

    15179
  • pbs
    pbs
    +關(guān)注

    關(guān)注

    0

    文章

    10

    瀏覽量

    14898

原文標題:使用FHE實現(xiàn)加密大語言模型

文章出處:【微信號:OSC開源社區(qū),微信公眾號:OSC開源社區(qū)】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦

    【大語言模型:原理與工程實踐】探索《大語言模型原理與工程實踐》

    《大語言模型》是一本深入探討人工智能領(lǐng)域中語言模型的著作。作者通過對語言模型的基本概念、基礎(chǔ)技術(shù)
    發(fā)表于 04-30 15:35

    【大語言模型:原理與工程實踐】揭開大語言模型的面紗

    。這一過程的不斷迭代使大語言模型語言理解和生成能力逐步提升。大語言模型在自然語言處理領(lǐng)域應(yīng)用廣
    發(fā)表于 05-04 23:55

    【大語言模型:原理與工程實踐】大語言模型的基礎(chǔ)技術(shù)

    全面剖析大語言模型的核心技術(shù)與基礎(chǔ)知識。首先,概述自然語言的基本表示,這是理解大語言模型技術(shù)的前提。接著,詳細介紹自然
    發(fā)表于 05-05 12:17

    【大語言模型:原理與工程實踐】大語言模型的評測

    的不同語言種類以及在每種語言上的表現(xiàn)。 代碼類評測任務(wù):是衡量大語言模型性能的核心指標之一,其不僅具有廣泛的技術(shù)應(yīng)用潛力,還是區(qū)分不同大語言
    發(fā)表于 05-07 17:12

    【大語言模型:原理與工程實踐】大語言模型的應(yīng)用

    ,它通過抽象思考和邏輯推理,協(xié)助我們應(yīng)對復(fù)雜的決策。 相應(yīng)地,我們設(shè)計了兩類任務(wù)來檢驗大語言模型的能力。一類是感性的、無需理性能力的任務(wù),類似于人類的系統(tǒng)1,如情感分析和抽取式問答等。大語言
    發(fā)表于 05-07 17:21

    【《大語言模型應(yīng)用指南》閱讀體驗】+ 基礎(chǔ)知識學習

    今天來學習大語言模型在自然語言理解方面的原理以及問答回復(fù)實現(xiàn)。 主要是基于深度學習和自然語言處理技術(shù)。 大
    發(fā)表于 08-02 11:03

    基于CycloneII和MSP430的網(wǎng)絡(luò)數(shù)據(jù)加密怎樣實現(xiàn)

    加密解密原理及算法是什么?基于CycloneII和MSP430的網(wǎng)絡(luò)數(shù)據(jù)加密怎樣實現(xiàn)?
    發(fā)表于 05-08 07:36

    C語言如何實現(xiàn)Hmacsha1的加密?

    C語言如何實現(xiàn)Hmacsha1的加密?
    發(fā)表于 12-02 06:18

    Saber中的模型加密工具

    關(guān)于模型加密,Saber軟件一直都有這個功能,只不過以前需要用戶自己手動修改模型代碼,并利用軟件提供的加密命令實現(xiàn)
    發(fā)表于 06-21 09:56 ?32次下載

    c語言實現(xiàn)des加密算法詳細過程

     摘要:DES算法為密碼體制中的對稱密碼體制,又被稱為美國數(shù)據(jù)加密標準,是1972年美國IBM公司研制的對稱密碼體制加密算法。明文按64位進行分組,密鑰長64位,密鑰事實上是56位參與DES運算。它將64位輸入經(jīng)過一系列變換得到64位的輸出。下面我們來看看c
    發(fā)表于 12-10 11:28 ?3.5w次閱讀
    c<b class='flag-5'>語言實現(xiàn)</b>des<b class='flag-5'>加密</b>算法詳細過程

    IBM正在為企業(yè)推出完全同態(tài)加密測試服務(wù)

    計算巨頭IBM正在為企業(yè)推出完全同態(tài)加密FHE)測試服務(wù)。
    的頭像 發(fā)表于 12-18 10:44 ?1772次閱讀

    IBM正幫助企業(yè)提升數(shù)據(jù)加密能力

    IBM Security 正在啟動一項新服務(wù),以將該公司的完全同態(tài)加密FHE)技術(shù)推廣到云端或第三方環(huán)境中。FHE 支持在處理或分析時保持加密狀態(tài),且 IBM 將為客戶提供相應(yīng)的培訓
    的頭像 發(fā)表于 12-18 11:46 ?1491次閱讀

    IBM打造完全同態(tài)加密服務(wù),彌合當前加密解決方案這一關(guān)鍵差距

    2020年 12月,IBM(NYSE:IBM)Security 宣布推出了一項新服務(wù):可為企業(yè)提供完全同態(tài)加密FHE) 服務(wù),這一新興技術(shù)能夠讓數(shù)據(jù)始終保持加密狀態(tài),即使在云端或第三方環(huán)境中進
    的頭像 發(fā)表于 12-28 15:59 ?1394次閱讀

    英特爾與DARPA簽署了一項以完全同態(tài)加密為核心的項目

    英特爾公司(Intel)已作為美國國防高級研究計劃局(DARPA)的研究合作伙伴,簽署了一項以完全同態(tài)加密(fully homomorphic encryption,簡稱FHE)為核心的項目
    的頭像 發(fā)表于 03-30 18:13 ?2341次閱讀

    Transformer語言模型簡介與實現(xiàn)過程

    任務(wù),隨后迅速擴展到其他NLP任務(wù)中,如文本生成、語言理解、問答系統(tǒng)等。本文將詳細介紹Transformer語言模型的原理、特點、優(yōu)勢以及實現(xiàn)過程。
    的頭像 發(fā)表于 07-10 11:48 ?646次閱讀