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

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

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

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

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

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

大語(yǔ)言模型對(duì)用戶隱私的影響

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

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

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

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

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

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

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

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

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

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

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

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

圖 2. 在 FHE 中運(yùn)行 LLM 模型的某些部分

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

量化

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

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

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

單注意力頭量化的平均 top-k 準(zhǔn)確率

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

在 Hugging Face GPT2 模型中使用 FHE

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

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

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

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)

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

將預(yù)訓(xùn)練的權(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)

舉個(gè)例子,你可以要求量化模型補(bǔ)全短語(yǔ) “Cryptography is a” 。在 FHE 中運(yùn)行模型時(shí),如果量化精度足夠,生成的輸出為:

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

當(dāng)量化精度太低時(shí),您會(huì)得到:

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

編譯為 FHE

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

circuit_head=qgpt2_model.compile(input_ids)

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

復(fù)雜度

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

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

總結(jié)

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

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

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






審核編輯:劉清

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

    關(guān)注

    19

    文章

    7525

    瀏覽量

    88318
  • python
    +關(guān)注

    關(guān)注

    56

    文章

    4801

    瀏覽量

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

    關(guān)注

    0

    文章

    354

    瀏覽量

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

    關(guān)注

    0

    文章

    10

    瀏覽量

    14920

原文標(biāo)題:使用FHE實(shí)現(xiàn)加密大語(yǔ)言模型

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

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    【大語(yǔ)言模型:原理與工程實(shí)踐】揭開(kāi)大語(yǔ)言模型的面紗

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

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

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

    【大語(yǔ)言模型:原理與工程實(shí)踐】大語(yǔ)言模型的評(píng)測(cè)

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

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

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

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

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

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

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

    C語(yǔ)言如何實(shí)現(xiàn)Hmacsha1的加密

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

    Saber中的模型加密工具

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

    c語(yǔ)言實(shí)現(xiàn)des加密算法詳細(xì)過(guò)程

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

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

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

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

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

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

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

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

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

    Transformer語(yǔ)言模型簡(jiǎn)介與實(shí)現(xiàn)過(guò)程

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

    語(yǔ)言模型開(kāi)發(fā)語(yǔ)言是什么

    在人工智能領(lǐng)域,大語(yǔ)言模型(Large Language Models, LLMs)背后,離不開(kāi)高效的開(kāi)發(fā)語(yǔ)言和工具的支持。下面,AI部落小編為您介紹大語(yǔ)言
    的頭像 發(fā)表于 12-04 11:44 ?173次閱讀