LoRA微調(diào)

LoRA: Low-Rank Adaptation of Large Language Models

Jun 2021

Edward J. Hu*, Yelong Shen*, Phillip Wallis, Zeyuan Allen-Zhu, Yuanzhi Li, Shean Wang, Lu Wang, Weizhu Chen

[Microsoft Corporation]

https://arxiv.org/abs/2106.09685

摘要:自然語(yǔ)言處理的一個(gè)重要范式包括對(duì)一般領(lǐng)域數(shù)據(jù)的大規(guī)模預(yù)訓(xùn)練和對(duì)特定任務(wù)或領(lǐng)域的適應(yīng)忘嫉。當(dāng)我們預(yù)訓(xùn)練更大的模型時(shí)塔橡,重新訓(xùn)練所有模型參數(shù)的完全微調(diào)變得不太可行笙纤。以GPT-3?175B為例——部署微調(diào)模型的獨(dú)立實(shí)例,每個(gè)實(shí)例都有175B的參數(shù),成本高得令人望而卻步恋拷。我們提出了低秩自適應(yīng),即LoRA,它凍結(jié)預(yù)訓(xùn)練的模型權(quán)重见妒,并將可訓(xùn)練的秩分解矩陣注入Transformer架構(gòu)的每一層,從而大大減少了下游任務(wù)的可訓(xùn)練參數(shù)的數(shù)量。與Adam微調(diào)的GPT-3?175B相比须揣,LoRA可以將可訓(xùn)練參數(shù)的數(shù)量減少10000倍盐股,并將GPU內(nèi)存需求減少3倍。LoRA在RoBERTa耻卡、DeBERTa疯汁、GPT-2和GPT-3上的模型質(zhì)量與微調(diào)不相上下或更好,盡管其具有更少的可訓(xùn)練參數(shù)卵酪、更高的訓(xùn)練吞吐量幌蚊,并且與適配器不同,沒(méi)有額外的推理延遲溃卡。我們還對(duì)語(yǔ)言模式適應(yīng)中的rank-deficiency(缺少秩)進(jìn)行了實(shí)證研究溢豆,這揭示了LoRA的功效。我們發(fā)布了一個(gè)包瘸羡,促進(jìn)了LoRA與PyTorch模型的集成漩仙,并在https://github.com/microsoft/LoRA

1? ? 引言

自然語(yǔ)言處理中的許多應(yīng)用程序依賴于將一個(gè)大規(guī)模的預(yù)訓(xùn)練的語(yǔ)言模型適應(yīng)多個(gè)下游應(yīng)用程序。這種自適應(yīng)通常是通過(guò)微調(diào)來(lái)完成的犹赖,微調(diào)會(huì)更新預(yù)訓(xùn)練模型的所有參數(shù)队他。微調(diào)的主要缺點(diǎn)是新模型包含的參數(shù)與原始模型中的參數(shù)一樣多。隨著每隔幾個(gè)月訓(xùn)練一次更大的模型峻村,這從GPT-2(Radford?et?al.麸折,b)或RoBERTa大型(Liu?et?al.,2019)的“不方便”粘昨,變成了GPT-3(Brown?et?al.磕谅,2020)的部署的重大挑戰(zhàn),GPT-3具有1750億個(gè)可訓(xùn)練參數(shù)(如附錄A所示雾棺,雖然GPT-3 175B通過(guò)few-shot學(xué)習(xí)實(shí)現(xiàn)了非平凡的性能膊夹,但微調(diào)顯著提高了其性能)。

許多人試圖通過(guò)僅調(diào)整一些參數(shù)或?qū)W習(xí)新任務(wù)的外部模塊來(lái)緩解這種情況捌浩。這樣放刨,除了每個(gè)任務(wù)的預(yù)訓(xùn)練模型之外,我們只需要存儲(chǔ)和加載少量特定于任務(wù)的參數(shù)尸饺,極大地提高了部署時(shí)的操作效率进统。然而,現(xiàn)有技術(shù)通常通過(guò)擴(kuò)展模型深度或減少模型的可用序列長(zhǎng)度來(lái)引入推理延遲(Houlsby?et?al.浪听,2019螟碎;Rebuffi?et?al.,2017)(Li&Liang迹栓,2021掉分;Lester?et?al.,2021;Ham\n9)bardzumyan?et?al.酥郭,2020华坦;劉等,2021)(第3節(jié))不从。更重要的是惜姐,這些方法往往無(wú)法匹配微調(diào)基線,從而在效率和模型質(zhì)量之間產(chǎn)生權(quán)衡椿息。

我們從李(2018a)歹袁;Aghajanyan等人(2020)等人那里得到了啟發(fā),其表明寝优,訓(xùn)練的過(guò)參數(shù)化模型實(shí)際上存在于較低的內(nèi)在維度上(reside on a low intrinsic dimension)条舔。我們假設(shè)模型自適應(yīng)過(guò)程中權(quán)重的變化也具有較低的“內(nèi)在秩”(intrinsic rank),這導(dǎo)致了我們提出的低秩自適應(yīng)(LoRA)方法倡勇。LoRA允許我們通過(guò)在自適應(yīng)過(guò)程中優(yōu)化密集層變化的秩分解矩陣來(lái)間接訓(xùn)練神經(jīng)網(wǎng)絡(luò)中的一些密集層(by optimizing rank decomposition matrices of the dense layers’ change during adaptation instead)逞刷,同時(shí)保持預(yù)訓(xùn)練的權(quán)重凍結(jié)嘉涌,如圖1所示妻熊。以GPT-3?175B為例,我們表明仑最,即使全秩(即d)高達(dá)12288扔役,非常低的秩(即圖1中的r,可以是1或2)也足夠了警医,這使得LoRA既有存儲(chǔ)效率亿胸,又有計(jì)算效率。

圖1. 我們的重參數(shù)化预皇。只訓(xùn)練A和B侈玄。

LoRA具有幾個(gè)關(guān)鍵優(yōu)勢(shì)。

?????可以共享預(yù)訓(xùn)練的模型吟温,并將其用于為不同任務(wù)構(gòu)建許多小型LoRA模塊序仙。我們可以通過(guò)替換圖1中的矩陣A和B來(lái)凍結(jié)共享模型并高效地切換任務(wù),從而顯著減少存儲(chǔ)需求和任務(wù)切換鲁豪。

?????使用自適應(yīng)優(yōu)化器時(shí)潘悼,由于我們不需要為大多數(shù)參數(shù)計(jì)算梯度或維護(hù)優(yōu)化器狀態(tài),因此LoRA使訓(xùn)練更加高效爬橡,并將硬件要求降低了3倍治唤。相反,我們只優(yōu)化注入的糙申、小得多的低秩矩陣宾添。

?????我們簡(jiǎn)單的線性設(shè)計(jì)使我們能夠在部署時(shí)將可訓(xùn)練矩陣與凍結(jié)權(quán)重合并,與完全微調(diào)的模型相比,通過(guò)構(gòu)建辞槐,不會(huì)引入推理延遲掷漱。

?????LoRA與許多先前的方法正交,并且可以與其中許多方法相結(jié)合榄檬,例如prefix-tuning卜范。我們?cè)诟戒汦中提供了一個(gè)例子。

術(shù)語(yǔ)和慣例

我們經(jīng)常引用Transformer架構(gòu)鹿榜,并使用傳統(tǒng)的術(shù)語(yǔ)來(lái)描述其尺寸海雪。我們將Transformer層的輸入和輸出尺寸稱為d_{model}。我們使用W_q舱殿、W_k奥裸、W_vW_o來(lái)引用自注意模塊中的查詢/鍵/值/輸出投影矩陣。WW_0是指預(yù)訓(xùn)練的權(quán)重矩陣沪袭,\Delta W是適應(yīng)過(guò)程中的累積梯度更新湾宙。我們使用r來(lái)表示LoRA模塊的秩。我們遵循(Vaswani等人冈绊,2017侠鳄;Brown等人,2020)提出的慣例死宣,并使用Adam(Loshchilov&Hutter伟恶,2019;Kingma&Ba毅该,2017)進(jìn)行模型優(yōu)化博秫,并使用d_{ffn} = 4 \times d_{model}的Transformer?MLP前饋維度。

2????問(wèn)題陳述

雖然我們方法無(wú)關(guān)于訓(xùn)練目標(biāo)眶掌,但我們將語(yǔ)言建模作為我們的動(dòng)機(jī)用例致扯。以下是語(yǔ)言建模問(wèn)題的簡(jiǎn)要描述诗祸,特別是在特定任務(wù)提示下條件概率的最大化。

假設(shè)我們得到了一個(gè)由\Phi參數(shù)化的預(yù)訓(xùn)練的自回歸語(yǔ)言模型P_\Phi(y|x)。例如慷吊,P_\Phi(y|x)可以是基于Transformer架構(gòu)的通用多任務(wù)學(xué)習(xí)器篓像,例如GPT(Radford等人动遭,b善茎;Brown等人,2020)(Vaswani等人蚣常,2017)市咽。考慮將這種預(yù)訓(xùn)練的模型應(yīng)用于下游的條件文本生成任務(wù)抵蚊,如摘要施绎、機(jī)器閱讀理解(MRC)和自然語(yǔ)言到SQL(NL2SQL)溯革。每個(gè)下游任務(wù)由context-target對(duì)的訓(xùn)練數(shù)據(jù)集表示:Z = \{(x_i, y_i)\}_{i=1,..,N},其中x_iy_i都是tokens的序列谷醉。例如致稀,在NL2SQL中,x_i是一個(gè)自然語(yǔ)言查詢俱尼,y_i是其對(duì)應(yīng)的SQL命令抖单;總結(jié)任務(wù)中,x_i是一篇文章的內(nèi)容遇八,y_i是它的總結(jié)矛绘。

在全微調(diào)期間,通過(guò)重復(fù)遵循梯度將模型初始化為預(yù)訓(xùn)練的權(quán)重\Phi_0刃永,并更新為\Phi_0+\Delta \Phi货矮,以最大化條件語(yǔ)言建模目標(biāo):

 \max_{\Phi} \sum_{(x,y)\in Z} \sum_{t=1}^{|y|}  \text{log} \left(  P_{\Phi}(y_{t} | x, y_{<t}) \right)? ? (1)

全微調(diào)的主要缺點(diǎn)之一是,對(duì)于每個(gè)下游任務(wù)斯够,我們學(xué)習(xí)一組不同的參數(shù)\Delta\Phi囚玫,其維度|\Delta\Phi|等于|\Phi_0|。因此读规,如果預(yù)訓(xùn)練的模型很大(例如GPT-3的|Φ0|≈1750億)抓督,如果可行的話,存儲(chǔ)和部署許多獨(dú)立的微調(diào)模型實(shí)例可能是一項(xiàng)挑戰(zhàn)掖桦。

在本文中本昏,我們采用了一種更高效的參數(shù)方法供汛,其中特定任務(wù)的參數(shù)增量\Delta\Phi = \Delta\Phi(\Theta)由一組小得多的參數(shù)\Theta進(jìn)一步編碼枪汪,其中|\Theta| \ll |\Phi_0|。因此怔昨,求\Delta\Phi的任務(wù)變成了對(duì)\Theta的優(yōu)化:

\max_{\Theta} \sum_{(x,y)\in Z}  \sum_{t=1}^{|y|}  \log\left({p_{\Phi_0+\Delta\Phi(\Theta)}(y_{t} | x, y_{<t}})\right)? ? (2)

在接下來(lái)的章節(jié)中雀久,我們建議使用低秩表示來(lái)編碼\Delta\Phi,這既有計(jì)算效率又有內(nèi)存效率趁舀。當(dāng)預(yù)訓(xùn)練的模型是GPT-3?175B時(shí)赖捌,可訓(xùn)練參數(shù)|\Theta|的數(shù)量可以小到|\Phi_0|的0.01%。

3????現(xiàn)有的解決方案還不夠好嗎矮烹?

我們著手解決的問(wèn)題絕非新鮮事越庇。自遷移學(xué)習(xí)開(kāi)始以來(lái),已有數(shù)十項(xiàng)工作試圖使模型自適應(yīng)更具參數(shù)和計(jì)算效率奉狈。有關(guān)一些著名作品的調(diào)查卤唉,請(qǐng)參見(jiàn)第6節(jié)。以語(yǔ)言建模為例仁期,在有效適應(yīng)方面有兩種突出的策略:添加適配器層(Houlsby?et?al.桑驱,2019竭恬;Rebuffi?et?al.,2017熬的;Pfeiffer?et?al.痊硕,2021;Ruckl¨e?et?al.押框,2020)或優(yōu)化輸入層激活的某些形式(Li&Liang岔绸,2021;Lester?et?al.橡伞,2022亭螟;Hambardzumyan?et?al.,2018骑歹;劉等人预烙,2021)。然而道媚,這兩種策略都有其局限性扁掸,尤其是在大規(guī)模和延遲敏感的生產(chǎn)場(chǎng)景中。

適配器層引入推斷延遲????適配器有多種變體最域。我們專注于Houlsby(2019)等人的原始設(shè)計(jì)谴分,每個(gè)Transformer塊有兩個(gè)適配器層,以及Lin等人(2020)的最新設(shè)計(jì)镀脂,每個(gè)塊只有一個(gè)牺蹄,但有一個(gè)額外的LayerNorm(Ba等人,2016)薄翅。雖然可以通過(guò)修剪層或利用多任務(wù)設(shè)置來(lái)減少總體延遲(Ruckl¨e等人沙兰,2020;Pfeiffer等人翘魄,2021)鼎天,但沒(méi)有直接的方法可以繞過(guò)適配器層中的額外計(jì)算。這似乎不是一個(gè)問(wèn)題暑竟,因?yàn)檫m配器層的設(shè)計(jì)參數(shù)很少(有時(shí)小于原始模型的1%)斋射,瓶頸尺寸很小,這限制了它們可以添加的FLOP但荤。然而罗岖,大型神經(jīng)網(wǎng)絡(luò)依靠硬件并行性來(lái)保持低延遲,并且適配器層必須按順序處理腹躁。這在批量大小通常只有一個(gè)的在線推理設(shè)置中產(chǎn)生了差異桑包。在沒(méi)有模型并行性的通用場(chǎng)景中,例如在單個(gè)GPU上的GPT-2(Radford等人潜慎,b)上運(yùn)行推理捡多,我們看到使用適配器時(shí)延遲顯著增加蓖康,即使瓶頸尺寸很小(表1)垒手。

當(dāng)我們需要像Shoeybi等人所做的那樣分割模型時(shí)蒜焊,這個(gè)問(wèn)題會(huì)變得更糟。(2020)科贬;Lep\n9)ikhin等人(2020)泳梆,因?yàn)轭~外的深度需要更多的同步GPU操作,如AllReduce和Broadcast榜掌,除非我們多次冗余存儲(chǔ)適配器參數(shù)优妙。

直接優(yōu)化提示很難????另一個(gè)方向,例如prefix tuning(Li&Liang憎账,2021)套硼,面臨著不同的挑戰(zhàn)。我們觀察到prefix tuning很難優(yōu)化胞皱,并且其性能在可訓(xùn)練參數(shù)中非單調(diào)變化邪意,這證實(shí)了原始論文中的類似觀察結(jié)果。更根本的是反砌,保留一部分序列長(zhǎng)度用于適應(yīng)必然會(huì)減少可用于處理下游任務(wù)的序列長(zhǎng)度雾鬼,我們懷疑這使得與其他方法相比,調(diào)整提示的性能較差宴树。我們將關(guān)于任務(wù)表現(xiàn)的研究推遲到第5節(jié)策菜。

4????我們的方法

我們描述了LoRA的簡(jiǎn)單設(shè)計(jì)及其實(shí)際效益。這里概述的原則適用于深度學(xué)習(xí)模型中的任何密集層酒贬,盡管我們?cè)趯?shí)驗(yàn)中只關(guān)注Transformer語(yǔ)言模型中的某些權(quán)重作為動(dòng)機(jī)用例又憨。

4.1????低秩參數(shù)化更新矩陣

神經(jīng)網(wǎng)絡(luò)包含許多執(zhí)行矩陣乘法的密集層。這些層中的權(quán)重矩陣通常具有全秩同衣。在適應(yīng)特定任務(wù)時(shí)竟块,Aghajanyan等人(2020)表明壶运,預(yù)訓(xùn)練的語(yǔ)言模型具有較低的“instrisic dimension”(內(nèi)在維度)耐齐,盡管隨機(jī)投影到較小的子空間,但仍然可以高效地學(xué)習(xí)蒋情。受此啟發(fā)埠况,我們假設(shè)對(duì)權(quán)重的更新在適應(yīng)過(guò)程中也具有較低的“內(nèi)在秩”。對(duì)于預(yù)訓(xùn)練的權(quán)重矩陣W_0\in \mathbb{R}^{d\times k}棵癣,我們通過(guò)用低秩分解W_0+\Delta W=W_0+BA表示來(lái)約束預(yù)訓(xùn)練權(quán)重更新辕翰,其中B\in \mathbb{R}^{d\times r}, A\in \mathbb{R}^{r\times k},秩r \ll \min(d,k)狈谊。在訓(xùn)練期間喜命,W_0被凍結(jié)并且不接收梯度更新沟沙,而AB包含可訓(xùn)練參數(shù)。注意W_0\Delta W=BA都與相同的輸入相乘壁榕,并且它們各自的輸出矢量按位相加矛紫。對(duì)于h = W_0x,我們修改的正向傳遞產(chǎn)生:

h = W_0 x + \Delta W x = W_0 x + BA x? ? (3)

我們?cè)趫D1中說(shuō)明了我們的重參數(shù)化牌里。我們對(duì)A使用隨機(jī)高斯初始化颊咬,對(duì)B使用零初始化,因此\Delta W=BA在訓(xùn)練開(kāi)始時(shí)為零牡辽。然后喳篇,我們用\frac{\alpha}{r}來(lái)縮放\Delta W x,其中α是關(guān)于r的常數(shù)态辛。當(dāng)使用Adam進(jìn)行優(yōu)化時(shí)麸澜,如果我們適當(dāng)?shù)乜s放初始化,則調(diào)整α與調(diào)整學(xué)習(xí)率大致相同奏黑。因此痰憎,我們只需將α設(shè)置為我們嘗試的第一個(gè)r,而不進(jìn)行調(diào)整攀涵。當(dāng)我們改變r時(shí)铣耘,這種縮放有助于減少重新調(diào)整超參數(shù)的需要(減少調(diào)參)(Yang&Hu,2021)以故。

完全微調(diào)的一般形式蜗细。????更一般形式的微調(diào)允許訓(xùn)練預(yù)訓(xùn)練的參數(shù)的子集。LoRA更進(jìn)一步怒详,不需要對(duì)權(quán)重矩陣進(jìn)行累積梯度更新炉媒,以在適應(yīng)過(guò)程中具有完整的秩。這意味著昆烁,當(dāng)將LoRA應(yīng)用于所有權(quán)重矩陣并訓(xùn)練所有偏置(與權(quán)重相比吊骤,它們的參數(shù)量可忽略不計(jì))時(shí),我們通過(guò)將LoRA秩r設(shè)置為預(yù)訓(xùn)練的權(quán)重矩陣的秩静尼,大致恢復(fù)了完全微調(diào)的表達(dá)能力白粉。換言之,當(dāng)我們?cè)黾涌捎?xùn)練參數(shù)的數(shù)量時(shí)(適應(yīng)艱巨任務(wù)時(shí)的必然性)鼠渺,訓(xùn)練LoRA大致收斂于訓(xùn)練原始模型鸭巴,而基于適配器的方法收斂于MLP,基于前綴方法的模型不能用于長(zhǎng)輸入序列拦盹。

沒(méi)有額外的推斷延遲鹃祖。????當(dāng)部署在生產(chǎn)中時(shí),我們可以顯式地計(jì)算和存儲(chǔ)W = W_0 + BA普舆,并像往常一樣執(zhí)行推理恬口。注意W_0BA的形狀都是\mathbb{R}^{d\times k}校读。當(dāng)我們需要切換到另一個(gè)下游任務(wù)時(shí),我們可以通過(guò)減去BA來(lái)恢復(fù)W_0祖能,地熄,然后添加不同的B’A’。這是一種快速操作芯杀,只需很少的內(nèi)存開(kāi)銷端考。至關(guān)重要的是,這保證了與通過(guò)構(gòu)造微調(diào)的模型相比揭厚,我們?cè)谕评磉^(guò)程中不會(huì)引入任何額外的延遲却特。

4.2????將LORA應(yīng)用于Transformer

原則上,我們可以將LoRA應(yīng)用于神經(jīng)網(wǎng)絡(luò)中權(quán)重矩陣的任何子集筛圆,以減少可訓(xùn)練參數(shù)的數(shù)量裂明。在Transformer架構(gòu)中,自注意模塊中有四個(gè)權(quán)重矩陣(Wq太援、Wk闽晦、Wv、Wo)提岔,MLP模塊中有兩個(gè)仙蛉。我們將Wq(或Wk,Wv)視為維度d_{model} \times d_{model}的單個(gè)矩陣碱蒙,即使輸出維度通常被劃分為注意力頭荠瘪。為了簡(jiǎn)單和參數(shù)高效,我們將我們的研究限制為僅調(diào)整下游任務(wù)的注意力權(quán)重赛惩,并凍結(jié)MLP模塊(因此它們不在下游任務(wù)中訓(xùn)練)哀墓。我們?cè)诘?.1節(jié)中進(jìn)一步研究了在Transformer中調(diào)整不同類型的注意力權(quán)重矩陣的影響。我們將調(diào)整MLP層喷兼、LayerNorm層和偏差的實(shí)證研究留給未來(lái)的工作篮绰。

實(shí)際好處和限制。

最顯著的好處來(lái)自內(nèi)存和存儲(chǔ)使用量的減少季惯。對(duì)于用Adam訓(xùn)練的大型Transformer吠各,如果r\ll d_{model},我們將減少多達(dá)2/3的VRAM使用星瘾,因?yàn)槲覀儾恍枰鎯?chǔ)凍結(jié)參數(shù)的優(yōu)化器狀態(tài)走孽。在GPT-3?175B上,我們將訓(xùn)練期間的VRAM消耗從1.2TB減少到350GB琳状。在r=4并且僅調(diào)整查詢和值投影矩陣的情況下,檢查點(diǎn)大小減少了大約10000×(從350GB減少到35MB)(注釋4)盒齿。這使我們能夠使用明顯更少的GPU進(jìn)行訓(xùn)練念逞,并避免I/O瓶頸困食。另一個(gè)好處是,我們可以在部署時(shí)以更低的成本在任務(wù)之間切換翎承,只需交換LoRA權(quán)重硕盹,而不是所有參數(shù)。這允許創(chuàng)建許多自定義模型叨咖,這些模型可以在將預(yù)訓(xùn)練的權(quán)重存儲(chǔ)在VRAM中的機(jī)器上實(shí)時(shí)交換瘩例。我們還觀察到,與完全微調(diào)(注釋5)相比甸各,在GPT-3?175B的訓(xùn)練過(guò)程中加速了25%垛贤,因?yàn)槲覀儾恍枰?jì)算絕大多數(shù)參數(shù)的梯度。

LoRA也有其局限性趣倾。例如聘惦,如果選擇將AB吸收到W中以消除額外的推理延遲,那么在單個(gè)前向傳遞中儒恋,批量輸入不同任務(wù)的不同AB的是不簡(jiǎn)單的善绎。盡管在延遲不重要的情況下,可以不合并權(quán)重并動(dòng)態(tài)選擇LoRA模塊用于批量中的樣本诫尽。

注釋4:在部署過(guò)程中禀酱,我們?nèi)匀恍枰?50GB的模型;然而牧嫉,存儲(chǔ)100個(gè)經(jīng)過(guò)調(diào)整的模型只需要350GB+35MB*100≈354GB比勉,而不是100*350GB≈35TB。

注釋5::對(duì)于GPT-3 175B驹止,用于完全微調(diào)的訓(xùn)練吞吐量為每V100 GPU 32.5個(gè)token/s浩聋;在模型并行的權(quán)重切片數(shù)量相同的情況下(with the same number of weight shards for model parallelism),LoRA的吞吐量為每V100 GPU 43.1個(gè)token/s臊恋。

5????實(shí)驗(yàn)

我們?cè)u(píng)估了LoRA在RoBERTa(Liu?et?al.衣洁,2019)、DeBERTa(He?et?al.抖仅,2021)和GPT-2(Radford?et?al.坊夫,b)上的下游任務(wù)性能,然后擴(kuò)展到GPT-3?175B(Brown?et?al.撤卢,2020)环凿。我們的實(shí)驗(yàn)涵蓋了從自然語(yǔ)言理解(NLU)到生成(NLG)的廣泛任務(wù)。具體而言放吩,我們對(duì)RoBERTa和DeBERTa的GLUE(Wang?et?al.智听,2019)基準(zhǔn)進(jìn)行了評(píng)估。我們遵循Li&Liang(2021)在GPT-2上的設(shè)置進(jìn)行直接比較,并添加WikiSQL(Zhong?et?al.到推,2017)(NL到SQL查詢)和SAMSum(Gliwa?et?al.考赛,2019)(對(duì)話摘要)用于GPT-3上的大規(guī)模實(shí)驗(yàn)。有關(guān)我們使用的數(shù)據(jù)集的更多詳細(xì)信息莉测,請(qǐng)參見(jiàn)附錄C颜骤。我們使用NVIDIA特斯拉V100進(jìn)行所有實(shí)驗(yàn)。

5.1????基線

為了與其他基線進(jìn)行廣泛比較捣卤,我們復(fù)制了先前工作中使用的設(shè)置忍抽,并盡可能重復(fù)使用其報(bào)告的數(shù)字。然而董朝,這意味著一些基線可能只出現(xiàn)在某些實(shí)驗(yàn)中鸠项。

微調(diào)(FT)????是一種常見(jiàn)的自適應(yīng)方法。在微調(diào)過(guò)程中益涧,模型被初始化為預(yù)訓(xùn)練的權(quán)重和偏差锈锤,所有模型參數(shù)都會(huì)進(jìn)行梯度更新。一個(gè)簡(jiǎn)單的變體是只更新一些層闲询,而凍結(jié)其他層久免。我們包括先前關(guān)于GPT-2的工作(Li&Liang,2021)中報(bào)告的一個(gè)這樣的基線扭弧,它只適應(yīng)最后兩層(FT Top2)阎姥。

Bias-only or BitFit????是一個(gè)基線,在該基線中鸽捻,只訓(xùn)練偏置向量呼巴,同時(shí)凍結(jié)其他所有內(nèi)容。同時(shí)御蒲,BitFit也對(duì)這一基線進(jìn)行了研究(Zaken等人衣赶,2021)。

Prefix-embedding tuning (PreEmbed)????在輸入tokens中插入特殊tokens厚满。這些特殊tokens具有可訓(xùn)練的詞嵌入府瞄,通常不在模型的詞匯表中。放置此類tokens的位置可能會(huì)對(duì)性能產(chǎn)生影響碘箍。我們關(guān)注的是“prefixing”和“infixing”遵馆,前者在提示前加上這樣的tokens,后者在提示后加上丰榴;李和梁(2021)對(duì)兩者進(jìn)行了討論货邓。我們使用l_{p}(resp.l_{i})表示前綴(resp.中綴infix)tokens的數(shù)量∷谋簦可訓(xùn)練參數(shù)的數(shù)量為|\Theta| = d_{model} \times (l_p + l_i)换况。

Prefix-layer tuning (PreLayer) ????是前綴嵌入調(diào)整的擴(kuò)展职辨。我們不是只學(xué)習(xí)一些特殊tokens的詞嵌入(或者等效地,嵌入層之后的激活)复隆,而是學(xué)習(xí)每個(gè)Transformer層之后的激活拨匆。先前的層計(jì)算的激活被可訓(xùn)練的層簡(jiǎn)單地替換姆涩。由此得到的可訓(xùn)練參數(shù)的數(shù)量為|\Theta| = L \times d_{model} \times (l_p + l_i)挽拂,其中L是Transformer層的數(shù)量。

Adapter tuning????Houlsby(2019)等人自注意模塊(和MLP模塊)和隨后的殘差連接之間插入適配器層骨饿。在適配器層中有兩個(gè)完全連接的層亏栈,它們之間具有非線性。我們稱這種原始設(shè)計(jì)為\textbf{Adapter}^{\textbf{H}}宏赘。最近绒北,Lin等人(2020)提出了一種更高效的設(shè)計(jì),其中適配器層僅在MLP模塊之后和LayerNorm之后應(yīng)用察署。我們稱之為\textbf{Adapter}^{\textbf{L}}闷游。這與Pfeiffer(2021)等人提出的另一種設(shè)計(jì)非常相似,我們稱之為\textbf{Adapter}^{\textbf{P}}贴汪。我們還包括另一個(gè)基線調(diào)用AdapterDrop(Ruckl¨e?et?al.脐往,2020),它刪除了一些適配器層以提高效率(\textbf{Adapter}^{\textbf{D}})扳埂。我們盡可能引用先前工作中的數(shù)字业簿,以最大限度地增加我們比較的基線數(shù)量;它們?cè)诘谝涣兄袔в行翘?hào)(*)的行中阳懂。在所有情況下梅尤,我們都有|\Theta| = \hat{L}_{Adpt} \times (2 \times d_{model} \times r + r + d_{model}) + 2 \times \hat{L}_{LN} \times d_{model},其中\hat{L}_{Adpt}是適配器層的數(shù)量岩调,\hat{L}_{LN}是可訓(xùn)練LayerNorms的數(shù)量(例如巷燥,在AdapterL中)。

LoRA????將可訓(xùn)練的秩分解矩陣對(duì)并行添加到現(xiàn)有的權(quán)重矩陣号枕。如第4.2節(jié)所述缰揪,為了簡(jiǎn)單起見(jiàn),我們?cè)诖蠖鄶?shù)實(shí)驗(yàn)中僅將LoRA應(yīng)用于W_{q}W_{v}堕澄⊙荆可訓(xùn)練參數(shù)的數(shù)量由秩r和原始權(quán)重的形狀決定:||\Theta| = 2 \times \hat{L}_{LoRA} \times d_{model} \times r,其中\hat{L}_{LoRA}是我們應(yīng)用LoRA的權(quán)重矩陣的數(shù)量蛙紫。

5.2????RoBERTa base/large

RoBERTa(Liu?et?al.拍屑,2019)優(yōu)化了最初在BERT中提出的預(yù)訓(xùn)練配方(Devlin?et?al.,2019a)坑傅,并在不引入更多可訓(xùn)練參數(shù)的情況下提高了后者的任務(wù)性能僵驰。盡管近年來(lái),RoBERTa在NLP排行榜上被GLUE基準(zhǔn)等更大的模型所取代(Wang?et?al.,2019)蒜茴,但就其規(guī)模而言星爪,它在從業(yè)者中仍然是一個(gè)有競(jìng)爭(zhēng)力且受歡迎的預(yù)訓(xùn)練模型。我們從HuggingFace?Transformers庫(kù)(Wolf?et?al.粉私,2020)中獲得了預(yù)訓(xùn)練的RoBERTa基礎(chǔ)型號(hào)(125M)和RoBERTa大型(355M)顽腾,并從GLUE基準(zhǔn)評(píng)估了不同有效適應(yīng)方法在任務(wù)上的性能。我們還復(fù)制了Houlsby等人(2019)和Pfeiffer等人(2021)根據(jù)他們的設(shè)置诺核。為了確保公平的比較抄肖,我們?cè)谂c適配器進(jìn)行比較時(shí),對(duì)評(píng)估LoRA的方式進(jìn)行了兩個(gè)關(guān)鍵更改窖杀。首先漓摩,我們對(duì)所有任務(wù)使用相同的批處理大小,并使用128的序列長(zhǎng)度來(lái)匹配適配器基線入客。其次管毙,我們將模型初始化為MRPC、RTE和STS-B的預(yù)訓(xùn)練模型桌硫,而不是像微調(diào)基線那樣已經(jīng)適應(yīng)MNLI的模型夭咬。Houlsby等人(2019)的這種更受限制的設(shè)置之后的運(yùn)行標(biāo)記為?。結(jié)果如表2(前三節(jié))所示鞍泉。有關(guān)使用的超參數(shù)的詳細(xì)信息皱埠,請(qǐng)參見(jiàn)第D.1節(jié)。

5.3????DeBERTa XXL

DeBERTa(He?et?al.咖驮,2021)是BERT的一種更新變體边器,它在更大范圍內(nèi)進(jìn)行訓(xùn)練,并在GLUE(Wang?et?al.托修,2019)和Su\n9)perGLUE(Wang?et?al.忘巧,2020)等基準(zhǔn)上表現(xiàn)非常有競(jìng)爭(zhēng)力。我們?cè)u(píng)估了LoRA是否仍能在GLUE上與完全微調(diào)的DeBERTa?XXL(1.5B)的性能相匹配睦刃。結(jié)果如表2(底部)所示砚嘴。有關(guān)使用的超參數(shù)的詳細(xì)信息,請(qǐng)參見(jiàn)第D.2節(jié)涩拙。

5.4????GPT-2 MEDIUM/LARGE

已經(jīng)表明际长,對(duì)于NLU的完全微調(diào),LoRA可以是一種有競(jìng)爭(zhēng)力的替代方案兴泥,我們希望回答LoRA是否仍然在NLG模型上占主導(dǎo)地位工育,例如GPT-2中型和大型(Radford等人,b)搓彻。我們將我們的設(shè)置盡可能接近李和梁(2021)如绸,以便進(jìn)行直接比較嘱朽。由于空間限制,我們?cè)诒竟?jié)中僅介紹了關(guān)于E2E?NLG挑戰(zhàn)的結(jié)果(表3)怔接。有關(guān)WebNLG(Gardent等人搪泳,2017)和DART(Nan等人,2020)的結(jié)果扼脐,請(qǐng)參見(jiàn)第F.1節(jié)岸军。我們包括D.3節(jié)中使用的超參數(shù)列表。

5.5????擴(kuò)展到GPT-3?175B

作為L(zhǎng)oRA的最后一次壓力測(cè)試谎势,我們用1750億個(gè)參數(shù)擴(kuò)展到GPT-3凛膏。由于訓(xùn)練成本高杨名,我們只報(bào)告給定任務(wù)在隨機(jī)種子上的典型標(biāo)準(zhǔn)差,而不是為每個(gè)條目提供一個(gè)標(biāo)準(zhǔn)差。有關(guān)使用的超參數(shù)的詳細(xì)信息吃度,請(qǐng)參見(jiàn)第D.4節(jié)匹涮。

如表4所示,LoRA在所有三個(gè)數(shù)據(jù)集上都匹配或超過(guò)了微調(diào)基線趁蕊。請(qǐng)注意坞生,并非所有方法都能從具有更多可訓(xùn)練參數(shù)中單調(diào)受益,如圖2所示掷伙。當(dāng)我們使用超過(guò)256個(gè)特殊tokens進(jìn)行前綴嵌入調(diào)整或超過(guò)32個(gè)特殊tokens用于前綴層調(diào)整時(shí)是己,我們觀察到性能顯著下降。這證實(shí)了李和梁(2021)的類似觀察任柜。雖然對(duì)這一現(xiàn)象的徹底調(diào)查超出了這項(xiàng)工作的范圍卒废,但我們懷疑,擁有更多的特殊tokens會(huì)導(dǎo)致輸入分布進(jìn)一步偏離預(yù)訓(xùn)練數(shù)據(jù)分布宙地。另外摔认,我們?cè)诘贔.3節(jié)中研究了低數(shù)據(jù)制度下不同適應(yīng)方法的性能。

6????相關(guān)工作

Transformer語(yǔ)言模型宅粥。????Transformer(Vaswani?et?al.参袱,2017)是一種大量利用自注意力的序列到序列架構(gòu)。Radford等人(a)通過(guò)使用一堆Transformer解碼器將其應(yīng)用于自回歸語(yǔ)言建模秽梅。從那時(shí)起抹蚀,基于Transformer的語(yǔ)言模型就主導(dǎo)了NLP,在許多任務(wù)中達(dá)到了最先進(jìn)的水平企垦。BERT(Devlin?et?al.环壤,2019b)和GPT-2(Radford?et?al.,b)出現(xiàn)了一種新的范式——這兩種模型都是在大量文本上訓(xùn)練的大型Transformer語(yǔ)言模型——與直接在特定任務(wù)數(shù)據(jù)上訓(xùn)練相比竹观,在對(duì)一般域數(shù)據(jù)進(jìn)行預(yù)訓(xùn)練后對(duì)特定任務(wù)數(shù)據(jù)進(jìn)行微調(diào)可以顯著提高性能镐捧。訓(xùn)練更大的Transformer通常會(huì)帶來(lái)更好的性能潜索,并且仍然是一個(gè)積極的研究方向。GPT-3(Brown等人懂酱,2020)是迄今為止用175B個(gè)參數(shù)訓(xùn)練的最大的單一Transformer語(yǔ)言模型竹习。

提示工程和微調(diào)。????雖然GPT-3?175B只需幾個(gè)額外的訓(xùn)練示例就可以調(diào)整其行為列牺,但結(jié)果在很大程度上取決于輸入提示(Brown等人整陌,2020)。這就需要一種編寫(xiě)和格式化提示的經(jīng)驗(yàn)藝術(shù)瞎领,以最大限度地提高模型在所需任務(wù)上的性能泌辫,這被稱為提示工程或提示hacking。微調(diào)將在一般域上預(yù)訓(xùn)練的模型重新訓(xùn)練到特定任務(wù)Devlin等人(2019b)九默;Radford等人(a)震放。其變體包括僅學(xué)習(xí)參數(shù)的子集Devlin等人(2019b);Collobert和Weston(2008)驼修,然而從業(yè)者經(jīng)常對(duì)他們進(jìn)行再訓(xùn)練殿遂,以最大限度地提高下游績(jī)效。然而乙各,GPT-3?175B的巨大使得以通常的方式進(jìn)行微調(diào)具有挑戰(zhàn)性墨礁,因?yàn)樗a(chǎn)生了大的檢查點(diǎn),并且由于它具有與預(yù)訓(xùn)練相同的內(nèi)存占用耳峦,因此進(jìn)入的硬件要求很高恩静。

參數(shù)高效適應(yīng)。????許多人提出在神經(jīng)網(wǎng)絡(luò)中的現(xiàn)有層之間插入適配器層(Houlsby等人蹲坷,2019驶乾;Rebuffi等人,2017冠句;Lin等人轻掩,2020)。我們的方法使用類似的瓶頸結(jié)構(gòu)來(lái)對(duì)權(quán)重更新施加低秩約束懦底。關(guān)鍵的功能差異在于唇牧,我們學(xué)習(xí)的權(quán)重可以在推理過(guò)程中與主權(quán)重合并,從而不會(huì)引入任何延遲聚唐,而適配器層的情況并非如此(第3節(jié))丐重。適配器的一個(gè)共同擴(kuò)展是COMPACTER(Mahabadi等人,2021)杆查,它基本上使用具有一些預(yù)定權(quán)重共享機(jī)制的Kronecker乘積來(lái)參數(shù)化適配器層扮惦。類似地,將LoRA與其他基于張量積的方法相結(jié)合可能會(huì)提高其參數(shù)效率亲桦,我們將其留給未來(lái)的工作崖蜜。最近浊仆,許多人提出優(yōu)化輸入詞嵌入來(lái)代替微調(diào),類似于提示工程的連續(xù)可微推廣(Li&Liang豫领,2021抡柿;Lester等人,2021等恐;Hambardzumyan等人洲劣,2020;劉等人课蔬,2021)囱稽。我們?cè)趯?shí)驗(yàn)部分包括了與李和梁(2021)的比較。然而二跋,這一系列工作只能通過(guò)在提示中使用更特殊的令牌來(lái)擴(kuò)大規(guī)模战惊,當(dāng)學(xué)習(xí)位置嵌入時(shí),這些tokens會(huì)占用任務(wù)tokens的可用序列長(zhǎng)度同欠。

深度學(xué)習(xí)中的低秩結(jié)構(gòu)样傍。????低秩結(jié)構(gòu)在機(jī)器學(xué)習(xí)中非常常見(jiàn)。許多機(jī)器學(xué)習(xí)問(wèn)題具有一定的內(nèi)在低秩結(jié)構(gòu)(Li?et?al.铺遂,2016;蔡等人茎刚,2010襟锐;李等人,2018b膛锭;Grasedyck等人粮坞,2013)。此外初狰,眾所周知莫杈,對(duì)于許多深度學(xué)習(xí)任務(wù),特別是那些具有嚴(yán)重過(guò)參數(shù)化神經(jīng)網(wǎng)絡(luò)的任務(wù)奢入,學(xué)習(xí)的神經(jīng)網(wǎng)絡(luò)在訓(xùn)練后將具有低秩特性(Oymak?et?al.筝闹,2019)。以前的一些工作甚至在訓(xùn)練原始神經(jīng)網(wǎng)絡(luò)時(shí)明確施加了低秩約束(Sainath等人腥光,2013关顷;Povey等人,2018武福;Zhang等人议双,2014;Jaderberg等人捉片,14平痰;趙等人汞舱,2016;Kho\n9)dak等人宗雇,2021兵拢;Denil等人,2014)逾礁;然而说铃,據(jù)我們所知,這些工作都沒(méi)有考慮對(duì)凍結(jié)模型的低秩更新嘹履,以適應(yīng)下游任務(wù)腻扇。在理論上,眾所周知砾嫉,當(dāng)?shù)讓痈拍铑悾╱nderlying concept class)具有一定的低秩結(jié)構(gòu)時(shí)幼苛,神經(jīng)網(wǎng)絡(luò)優(yōu)于其他經(jīng)典學(xué)習(xí)方法,包括相應(yīng)的(有限寬度)神經(jīng)切核(Allen?Zhu?et?al.焕刮,2019舶沿;李和梁,2018)(Ghorbani?et?al.配并,2020括荡;Allen?Zhu&Li,2019溉旋;Allen朱和李畸冲,2020a)。Allen?Zhu&Li(2020b)的另一個(gè)理論結(jié)果表明观腊,低秩適應(yīng)可能對(duì)對(duì)抗性訓(xùn)練有用邑闲。總之梧油,我們相信我們提出的低秩適應(yīng)更新是受文獻(xiàn)的良好激勵(lì)的苫耸。

7????了解低秩更新

鑒于LoRA的經(jīng)驗(yàn)優(yōu)勢(shì),我們希望進(jìn)一步解釋從下游任務(wù)中學(xué)到的低秩自適應(yīng)的性質(zhì)儡陨。請(qǐng)注意褪子,低秩結(jié)構(gòu)不僅降低了硬件障礙,這允許我們并行運(yùn)行多個(gè)實(shí)驗(yàn)迄委,而且還提供了更新權(quán)重如何與預(yù)訓(xùn)練的權(quán)重相關(guān)的更好的可解釋性褐筛。我們將研究重點(diǎn)放在GPT-3?175B上,在不影響任務(wù)性能的情況下叙身,我們實(shí)現(xiàn)了可訓(xùn)練參數(shù)的最大減少(高達(dá)10000倍)渔扎。

我們進(jìn)行了一系列實(shí)證研究,以回答以下問(wèn)題:1)在給定參數(shù)預(yù)算約束的情況下信轿,我們應(yīng)該適應(yīng)預(yù)訓(xùn)練的Transformer中的權(quán)重矩陣的哪個(gè)子集晃痴,以最大限度地提高下游性能残吩?2)?“最優(yōu)”適應(yīng)矩陣?W真的有秩缺陷(rank-deficient)嗎?如果是這樣的話倘核,在實(shí)踐中使用什么是好的秩泣侮?3)??WW之間的聯(lián)系是什么??W是否與W高度相關(guān)紧唱??WW相比有多大活尊?

我們相信,我們對(duì)問(wèn)題(2)和(3)的回答闡明了將預(yù)訓(xùn)練的語(yǔ)言模型用于下游任務(wù)的基本原則漏益,這是NLP中的一個(gè)關(guān)鍵主題蛹锰。

7.1????我們應(yīng)該將LORA應(yīng)用于Transformer中的哪些權(quán)重矩陣?

在參數(shù)預(yù)算有限的情況下绰疤,我們應(yīng)該使用LoRA調(diào)整哪些類型的權(quán)重铜犬,以在下游任務(wù)中獲得最佳性能?如第4.2節(jié)所述轻庆,我們只考慮自注意模塊中的權(quán)重矩陣癣猾。我們?cè)贕PT-3?175B上設(shè)置了18M的參數(shù)預(yù)算(如果存儲(chǔ)在FP16中,則大約為35MB)余爆,對(duì)于所有96層纷宇,如果我們適應(yīng)一種類型的注意力權(quán)重,則對(duì)應(yīng)于r=8龙屉,或者如果我們適應(yīng)兩種類型呐粘,則對(duì)應(yīng)為r=4。結(jié)果如表5所示转捕。

請(qǐng)注意,將所有參數(shù)都放入\Delta W_q\Delta W_k會(huì)導(dǎo)致性能顯著降低唆垃,同時(shí)調(diào)整W_qW_v會(huì)產(chǎn)生最佳結(jié)果五芝。這表明,即使秩為4辕万,也能在?W中捕捉到足夠的信息枢步,因此,與采用秩較大的單一類型權(quán)重相比渐尿,采用更多的權(quán)重矩陣更可取醉途。

7.2????LORA的最佳秩是多少?

我們將注意力轉(zhuǎn)向秩r對(duì)模型性能的影響砖茸。我們將\{W_q, W_v\}隘擎、\{W_q, W_k, W_v, W_c\}和僅W_q進(jìn)行比較。

表6顯示凉夯,令人驚訝的是货葬,LoRA已經(jīng)以非常小的r表現(xiàn)出競(jìng)爭(zhēng)力(相比W_q采幌,\{W_q, W_v\}更能表現(xiàn)出這一點(diǎn))。這表明更新矩陣?W可能具有非常小的“內(nèi)在秩”(注釋6)震桶。為了進(jìn)一步支持這一發(fā)現(xiàn)休傍,我們檢查了通過(guò)不同的r選擇和不同的隨機(jī)種子學(xué)習(xí)的子空間的重疊。我們認(rèn)為蹲姐,增加r不覆蓋更有意義的子空間磨取,這表明低秩自適應(yīng)矩陣就足夠了。

注釋6:然而柴墩,我們并不期望小r適用于每個(gè)任務(wù)或數(shù)據(jù)集忙厌。考慮以下思維實(shí)驗(yàn):如果下游任務(wù)使用的語(yǔ)言與用于預(yù)訓(xùn)練的語(yǔ)言不同拐邪,那么重新訓(xùn)練整個(gè)模型(類似于r=dmodel的LoRA)肯定會(huì)優(yōu)于r較小的LoRA

不同r之間的子空間相似性慰毅。????給定A_{r=8}A_{r=64},它們是使用相同的預(yù)訓(xùn)練模型學(xué)習(xí)的秩為r=8和64的適應(yīng)矩陣扎阶,我們執(zhí)行奇異值分解汹胃,并獲得right-singular的奇異酉矩陣U_{A_{r=8}}U_{A_{r=64}}。(類似的分析也可以對(duì)B和左奇異酉矩陣進(jìn)行东臀。)我們希望回答:在U_{A_{r=8}}(對(duì)于1≤i≤8)中着饥,由前i個(gè)奇異向量所跨越的子空間中有多少包含在由U_{A_{r=64}}(對(duì)于 1 ≤ j ≤ 64)中的前j個(gè)奇異向量橫跨的子空間內(nèi)?我們用基于Grassmann距離的歸一化子空間相似性來(lái)確定這個(gè)量(更正式的討論參見(jiàn)附錄G)

 \phi(A_{r=8}, A_{r=64}, i, j) = \frac{||U_{A_{r=8}}^{i\top} U_{A_{r=64}}^j||_{F}^2}{\min(i, j)} \in [0,1]

其中U?i?Ar=8表示對(duì)應(yīng)于前i個(gè)奇異向量的UAr=8的列惰赋。φ(·)的范圍為[0宰掉,1],其中1表示子空間的完全重疊赁濒,0表示完全分離轨奄。如圖3所示,φ如何隨著i和j的變化而變化拒炎。由于空間限制挪拟,我們只關(guān)注第48層(96層中的第48層),但結(jié)論也適用于其他層击你,如第H.1節(jié)所示玉组。

我們從圖3中得出了一個(gè)重要的觀察結(jié)果。對(duì)應(yīng)于頂部奇異向量的方向在Ar=8和Ar=64之間顯著重疊丁侄,而其他方向則不重疊惯雳。具體而言,Ar=8的?Wv(分別為?Wq)和Ar=64的?Wv(分別是?Wq)共享一個(gè)歸一化相似性>0.5的維度為1的子空間鸿摇,這就解釋了為什么r=1在GPT-3的下游任務(wù)中表現(xiàn)得很好石景。由于Ar=8和Ar=64都是使用相同的預(yù)訓(xùn)練模型學(xué)習(xí)的,圖3表明Ar=8的頂部奇異向量方向和Ar=6的頂部奇向量方向是最有用的,而其他方向可能包含訓(xùn)練期間積累的大部分隨機(jī)噪聲鸵钝。因此糙臼,自適應(yīng)矩陣確實(shí)可以具有非常低的秩。

不同隨機(jī)種子之間的子空間相似性恩商。

我們通過(guò)繪制r=64的兩個(gè)隨機(jī)種子運(yùn)行之間的歸一化子空間相似性來(lái)進(jìn)一步證實(shí)這一點(diǎn)变逃,如圖4所示。?Wq似乎比?Wv具有更高的“內(nèi)在秩”怠堪,因?yàn)?Wq的兩次運(yùn)行都學(xué)習(xí)到了更常見(jiàn)的奇異值方向揽乱,這與我們?cè)诒?中的經(jīng)驗(yàn)觀察結(jié)果一致。作為比較粟矿,我們還繪制了兩個(gè)隨機(jī)高斯矩陣凰棉,它們彼此不共享任何共同的奇異值方向。

7.3自適應(yīng)矩陣?W與W相比如何陌粹?

我們進(jìn)一步研究了?W與W之間的關(guān)系撒犀。特別是,?W是否與W高度相關(guān)掏秩?(或者從數(shù)學(xué)上講或舞,?W主要包含在W的頂部奇異方向中嗎?)此外蒙幻,?W與其在W中的對(duì)應(yīng)方向相比有多“大”映凳?這可以揭示調(diào)整預(yù)訓(xùn)練的語(yǔ)言模型的潛在機(jī)制。

為了回答這些問(wèn)題邮破,我們通過(guò)計(jì)算U>WV>將W投影到?W的r維子空間上诈豌,其中U/V是?W左/右奇異向量矩陣。然后抒和,我們比較了kU>WV>kF和kWkF之間的Frobenius范數(shù)矫渔。作為比較,我們還通過(guò)將U摧莽,V替換為W或隨機(jī)矩陣的前r個(gè)奇異向量來(lái)計(jì)算kU>WV>kF蚌斩。

我們從表7中得出幾個(gè)結(jié)論。首先范嘱,與隨機(jī)矩陣相比,?W與W的相關(guān)性更強(qiáng)员魏,這表明?W放大了W中已經(jīng)存在的一些特征丑蛤。其次,?W沒(méi)有重復(fù)W的頂部奇異方向撕阎,而是只放大W中沒(méi)有強(qiáng)調(diào)的方向受裹。第三,放大因子相當(dāng)大:當(dāng)r=4時(shí),放大因子為21.5≈6.91/0.32棉饶。關(guān)于為什么r=64具有較小的放大因子厦章,請(qǐng)參見(jiàn)第H.4節(jié)。我們還在第H.3節(jié)中提供了相關(guān)性如何變化的可視化照藻,因?yàn)槲覀儼藖?lái)自Wq的更多頂部奇異方向袜啃。這表明,低秩自適應(yīng)矩陣可能放大了特定下游任務(wù)的重要特征幸缕,這些特征在一般預(yù)訓(xùn)練模型中已經(jīng)學(xué)習(xí)但沒(méi)有得到強(qiáng)調(diào)群发。

8????結(jié)論和未來(lái)工作

就托管不同任務(wù)的獨(dú)立實(shí)例所需的硬件和存儲(chǔ)/切換成本而言,微調(diào)龐大的語(yǔ)言模型的成本高得令人望而卻步发乔。我們提出了LoRA熟妓,這是一種有效的自適應(yīng)策略,既不引入推理延遲栏尚,也不減少輸入序列長(zhǎng)度起愈,同時(shí)保持高模型質(zhì)量。重要的是译仗,當(dāng)作為服務(wù)部署時(shí)抬虽,它可以通過(guò)共享絕大多數(shù)模型參數(shù)來(lái)快速切換任務(wù)。雖然我們專注于Transformer語(yǔ)言模型古劲,但所提出的原理通常適用于任何具有密集層的神經(jīng)網(wǎng)絡(luò)斥赋。

未來(lái)的工作有很多方向。1)?LoRA可以與其他有效的適應(yīng)方法相結(jié)合产艾,有可能提供正交改進(jìn)疤剑。2)?微調(diào)或LoRA背后的機(jī)制還遠(yuǎn)不清楚——在預(yù)訓(xùn)練過(guò)程中學(xué)習(xí)的特征是如何轉(zhuǎn)化為在下游任務(wù)中表現(xiàn)良好的?我們相信闷堡,LoRA比完全微調(diào)更容易回答這個(gè)問(wèn)題隘膘。3)?我們主要依靠啟發(fā)式方法來(lái)選擇要應(yīng)用LoRA的權(quán)重矩陣。有更原則的方法嗎杠览?4)?最后弯菊,?W的秩虧表明W也可能是秩虧,這也可能是未來(lái)作品的靈感來(lái)源踱阿。

附錄

大型語(yǔ)言模型仍然需要參數(shù)更新

當(dāng)我們只有少數(shù)訓(xùn)練樣本時(shí)管钳,few-shot學(xué)習(xí)或提升工程是非常有利的。然而软舌,在實(shí)踐中才漆,我們通常可以為性能敏感的應(yīng)用程序策劃幾千個(gè)或更多的訓(xùn)練示例佛点。如表8所示醇滥,在大大小小的數(shù)據(jù)集上黎比,與few-shot學(xué)習(xí)相比,微調(diào)大大提高了模型性能鸳玩。我們從GPT-3論文中獲得了RTE上的GPT-3few-shot結(jié)果(Brown等人阅虫,2020)。對(duì)于MNLI匹配不跟,我們每個(gè)類使用兩個(gè)演示颓帝,總共使用六個(gè)上下文示例。

B適配器層引入的推斷延遲

適配器層是以順序方式添加到預(yù)訓(xùn)練模型中的外部模塊躬拢,而我們的提議LoRA可以被視為以并行方式添加的外部模塊躲履。因此,除了基本模型之外聊闯,還必須計(jì)算適配器層工猜,這不可避免地會(huì)引入額外的延遲。正如Ruckl¨e等人(2020)所指出的菱蔬,當(dāng)模型批量大小和/或序列長(zhǎng)度足夠大以充分利用硬件并行性時(shí)篷帅,適配器層引入的延遲可以得到緩解。我們?cè)贕PT-2介質(zhì)上進(jìn)行了類似的延遲研究拴泌,證實(shí)了他們的觀察結(jié)果魏身,并指出存在一些場(chǎng)景,特別是在線推理蚪腐,其中批量大小很小箭昵,增加的延遲可能很顯著。

我們通過(guò)平均100多次試驗(yàn)來(lái)測(cè)量NVIDIA Quadro RTX8000上單次正向傳播的延遲回季。我們改變了輸入批量大小家制、序列長(zhǎng)度和適配器瓶頸尺寸r。我們測(cè)試了兩種適配器設(shè)計(jì):Houlsby等人的原始設(shè)計(jì)泡一。(2019)颤殴,我們稱之為AdapterH,以及Lin等人最近的更有效的變體鼻忠。(2020)涵但,我們將其稱為AdapterL。有關(guān)設(shè)計(jì)的更多詳細(xì)信息帖蔓,請(qǐng)參見(jiàn)第5.1節(jié)矮瘟。在圖5中,我們繪制了與無(wú)適配器基線相比的減速百分比塑娇。

C數(shù)據(jù)集詳細(xì)信息

GLUE Benchmark是一個(gè)廣泛的自然語(yǔ)言理解任務(wù)集合芥永。它包括MNLI(推理,Williams et al.(2018))钝吮、SST-2(情感分析,Socher et al.(2013))、MRPC(轉(zhuǎn)述檢測(cè)奇瘦,Dolan&Brockett(2005))棘催、CoLA(語(yǔ)言可接受性,Warstadt et al耳标。廣泛的覆蓋范圍使GLUE基準(zhǔn)成為評(píng)估RoBERTa和DeBERTa等NLU模型的標(biāo)準(zhǔn)指標(biāo)醇坝。各個(gè)數(shù)據(jù)集在不同的許可證下發(fā)布。

WikiSQL在Zhong等人(2017)中引入次坡,包含了56355/8441個(gè)訓(xùn)練/驗(yàn)證示例呼猪。任務(wù)是根據(jù)自然語(yǔ)言問(wèn)題和表模式生成SQL查詢。我們將上下文編碼為x={tableschema砸琅,query}宋距,將目標(biāo)編碼為y={SQL}。該數(shù)據(jù)集是根據(jù)BSD 3條款許可證發(fā)布的症脂。

SAMSum在Gliwa等人(2019)中介紹谚赎,包含14732/819個(gè)訓(xùn)練/測(cè)試示例。它由兩個(gè)人之間的階段性聊天對(duì)話和語(yǔ)言學(xué)家撰寫(xiě)的相應(yīng)摘要組成诱篷。我們將上下文編碼為“\n”連接的話語(yǔ)壶唤,后跟“\n”,并將目標(biāo)編碼為y={summary}棕所。該數(shù)據(jù)集是在非商業(yè)許可下發(fā)布的:知識(shí)共享BY-NC-ND 4.0闸盔。

Novikova等人首次提出了E2E NLG挑戰(zhàn)。(2017)作為一個(gè)用于訓(xùn)練端到端琳省、數(shù)據(jù)驅(qū)動(dòng)的自然語(yǔ)言生成系統(tǒng)的數(shù)據(jù)集迎吵,通常用于數(shù)據(jù)到文本的評(píng)估。E2E數(shù)據(jù)集由大約42000個(gè)訓(xùn)練岛啸、4600個(gè)驗(yàn)證和4600個(gè)來(lái)自餐廳領(lǐng)域的測(cè)試樣本組成钓觉。用作輸入的每個(gè)源表可以有多個(gè)引用。每個(gè)樣本輸入(x坚踩,y)由一系列槽值對(duì)以及相應(yīng)的自然語(yǔ)言參考文本組成荡灾。該數(shù)據(jù)集在知識(shí)共享BY-NC-SA 4.0下發(fā)布。

DART是Nan等人(2020)中描述的一個(gè)開(kāi)放域數(shù)據(jù)到文本數(shù)據(jù)集瞬铸。DART輸入被構(gòu)造為ENTITY-關(guān)系-ENTITY三元組的序列批幌。DART總共有82K個(gè)示例,與E2E相比嗓节,它是一個(gè)更大荧缘、更復(fù)雜的數(shù)據(jù)到文本任務(wù)。該數(shù)據(jù)集是根據(jù)麻省理工學(xué)院的許可證發(fā)布的拦宣。

WebNLG是另一個(gè)常用的數(shù)據(jù)到文本評(píng)估數(shù)據(jù)集(Gardent et al.截粗,2017)信姓。WebNLG總共有22K個(gè)例子,包括14個(gè)不同的類別绸罗,其中9個(gè)是在訓(xùn)練中看到的意推。由于14個(gè)類別中有5個(gè)在訓(xùn)練過(guò)程中沒(méi)有出現(xiàn),而是在測(cè)試集中出現(xiàn)珊蟀,因此評(píng)估通常按“可見(jiàn)”類別(S)菊值、“看不見(jiàn)”類別(U)和“全部”類別(A)進(jìn)行。每個(gè)輸入示例都由一系列SUBJECT——PROPERTY——OBJECT三元組表示育灸。該數(shù)據(jù)集在知識(shí)共享BY-NC-SA 4.0下發(fā)布腻窒。

D實(shí)驗(yàn)中使用的超參數(shù)

D.1 ROBERTA

我們使用具有線性學(xué)習(xí)率衰減時(shí)間表的AdamW進(jìn)行訓(xùn)練。我們對(duì)LoRA的學(xué)習(xí)率磅崭、訓(xùn)練時(shí)期的數(shù)量和批量大小進(jìn)行了掃描儿子。繼劉等人(2019)之后,我們?cè)谶m應(yīng)MRPC绽诚、RTE和STS-B時(shí)典徊,將LoRA模塊初始化為我們的最佳MNLI檢查點(diǎn),而不是通常的初始化恩够;預(yù)訓(xùn)練的模型對(duì)于所有任務(wù)都保持凍結(jié)卒落。我們報(bào)告了5個(gè)隨機(jī)種子的中位數(shù);每次運(yùn)行的結(jié)果取自最佳時(shí)期蜂桶。為了與Houlsby等人的設(shè)置進(jìn)行公平比較儡毕。(2019)和Pfeiffer等人(2021),我們將模型序列長(zhǎng)度限制為128扑媚,并對(duì)所有任務(wù)使用固定的批量大小腰湾。重要的是,在適應(yīng)MRPC疆股、RTE和STS-B時(shí)费坊,我們從預(yù)先訓(xùn)練的RoBERTa大模型開(kāi)始,而不是已經(jīng)適應(yīng)MNLI的模型旬痹。此限制設(shè)置的運(yùn)行標(biāo)記為?附井。請(qǐng)參閱表9中我們運(yùn)行中使用的超參數(shù)。

D.2 DEBERTA

我們?cè)俅问褂镁哂芯€性學(xué)習(xí)率衰減時(shí)間表的AdamW進(jìn)行訓(xùn)練两残。繼何等人(2021)之后永毅,我們調(diào)整了學(xué)習(xí)率、dropout概率人弓、熱身步驟和批量大小沼死。我們使用(He et al.,2021)使用的相同模型序列長(zhǎng)度來(lái)保持我們的比較公平崔赌。繼He等人(2021)之后意蛀,我們?cè)谶m應(yīng)MRPC耸别、RTE和STS-B時(shí),將LoRA模塊初始化為我們的最佳MNLI檢查點(diǎn)浸间,而不是通常的初始化太雨;預(yù)訓(xùn)練的模型對(duì)于所有任務(wù)都保持凍結(jié)。我們報(bào)告了5個(gè)隨機(jī)種子的中位數(shù)魁蒜;每次運(yùn)行的結(jié)果取自最佳時(shí)期。請(qǐng)參閱表10中我們運(yùn)行中使用的超參數(shù)吩翻。

D.3 GPT-2

我們使用AdamW(Loshchilov&Hutter兜看,2017)對(duì)所有GPT-2模型進(jìn)行了5個(gè)時(shí)期的線性學(xué)習(xí)率調(diào)度訓(xùn)練。我們使用Li&Liang(2021)中描述的批量大小狭瞎、學(xué)習(xí)率和波束搜索波束大小细移。因此,我們還調(diào)整了LoRA的上述超參數(shù)熊锭。我們報(bào)告了3個(gè)隨機(jī)種子的平均值弧轧;每次運(yùn)行的結(jié)果取自最佳時(shí)期。表11中列出了GPT-2中用于LoRA的超參數(shù)碗殷。關(guān)于用于其他基線的基線精绎,請(qǐng)參見(jiàn)李和梁(2021)。

D.4 GPT-3

對(duì)于所有GPT-3實(shí)驗(yàn)锌妻,我們使用AdamW(Loshchilov&Hutter代乃,2017)進(jìn)行了2個(gè)時(shí)期的訓(xùn)練,批次大小為128個(gè)樣本仿粹,重量衰減因子為0.1婶恼。我們對(duì)WikiSQL使用384(Zhong et al.呼伸,2017),對(duì)MNLI使用768(Williams et al.,2018)虐杯,對(duì)SAMSum使用2048(Gliwa et al.,2019)忌傻。我們調(diào)整所有方法數(shù)據(jù)集組合的學(xué)習(xí)率屁置。有關(guān)使用的超參數(shù)的更多詳細(xì)信息,請(qǐng)參見(jiàn)第D.4節(jié)契讲。對(duì)于前綴嵌入調(diào)整仿吞,我們發(fā)現(xiàn)最優(yōu)lp和li分別為256和8,總計(jì)3.2M個(gè)可訓(xùn)練參數(shù)捡偏。我們使用lp=8和li=8進(jìn)行前綴層調(diào)整唤冈,具有20.2M個(gè)可訓(xùn)練參數(shù),以獲得總體最佳性能银伟。我們提出了LoRA的兩個(gè)參數(shù)預(yù)算:4.7M(rq=rv=1或rv=2)和37.7M(rq=rv=8或rq=rk=rv=ro=2)你虹。我們報(bào)告每次運(yùn)行的最佳驗(yàn)證性能绘搞。表12中列出了我們的GPT-3實(shí)驗(yàn)中使用的訓(xùn)練超參數(shù)。

E將LORA與前綴調(diào)整相結(jié)合

LoRA可以自然地與現(xiàn)有的基于前綴的方法相結(jié)合傅物。在本節(jié)中夯辖,我們?cè)u(píng)估了LoRA和WikiSQL和MNLI上前綴調(diào)優(yōu)變體的兩種組合。

LoRA+PrefixEmbed(LoRA+PE)將LoRA與前綴嵌入調(diào)優(yōu)相結(jié)合董饰,其中我們插入lp+li特殊令牌蒿褂,其嵌入被視為可訓(xùn)練參數(shù)。有關(guān)前綴嵌入調(diào)優(yōu)的更多信息卒暂,請(qǐng)參閱第5.1節(jié)啄栓。

LoRA+PrefixLayer(LoRA+PL)將LoRA與前綴層調(diào)整相結(jié)合。我們還插入lp+li特殊令牌也祠;然而昙楚,我們不是讓這些令牌的隱藏表示natu集會(huì)地進(jìn)化,而是在每個(gè)Transformer塊之后用輸入不可知向量替換它們诈嘿。因此堪旧,嵌入和隨后的變壓器塊激活都被視為可訓(xùn)練的參數(shù)。有關(guān)前綴層調(diào)整的更多信息奖亚,請(qǐng)參閱第5.1節(jié)淳梦。

在表15中,我們展示了LoRA+PE和LoRA+PL在WikiSQL和MultiNLI上的評(píng)估結(jié)果遂蛀。首先谭跨,在WikiSQL上,LoRA+PE顯著優(yōu)于LoRA和前綴嵌入調(diào)優(yōu)李滴,這表明LoRA在一定程度上與前綴嵌入調(diào)優(yōu)正交螃宙。在MultiNLI上,LoRA+PE的組合表現(xiàn)并不比LoRA好所坯,可能是因?yàn)長(zhǎng)oRA本身已經(jīng)達(dá)到了與人類基線相當(dāng)?shù)男阅茏辉F浯危覀冏⒁獾角壑词褂懈嗟目捎?xùn)練參數(shù)堂湖,LoRA+PL的表現(xiàn)也比LoRA略差。我們對(duì)此表示敬意状土,因?yàn)榍熬Y層調(diào)整對(duì)學(xué)習(xí)速率的選擇非常敏感无蜂,因此在LoRA+PL中使LoRA權(quán)重的優(yōu)化更加困難。

F額外的經(jīng)驗(yàn)實(shí)驗(yàn)

F.1 GPT-2的附加實(shí)驗(yàn)

在李和梁(2021)的設(shè)置之后蒙谓,我們還重復(fù)了我們?cè)贒ART(Nan et al.斥季,2020)和WebNLG(Gardent et al.,2017)上的實(shí)驗(yàn)。結(jié)果如表13所示酣倾。與我們?cè)诘?節(jié)中報(bào)道的E2E NLG挑戰(zhàn)的結(jié)果類似舵揭,在給定相同數(shù)量的可訓(xùn)練參數(shù)的情況下,LoRA的表現(xiàn)優(yōu)于或至少與基于前綴的方法相當(dāng)躁锡。

F.2 GPT-3的附加實(shí)驗(yàn)

我們?cè)诒?5中介紹了GPT-3上使用不同適應(yīng)方法的額外運(yùn)行午绳。重點(diǎn)是確定性能和可訓(xùn)練參數(shù)數(shù)量之間的權(quán)衡。

F.3低數(shù)據(jù)制度

評(píng)估不同適應(yīng)方法在低數(shù)據(jù)制度下的表現(xiàn)映之。我們從MNLI的完整訓(xùn)練集中隨機(jī)抽取100個(gè)拦焚、1k個(gè)和10k個(gè)訓(xùn)練示例來(lái)形成低數(shù)據(jù)MNLI-n任務(wù)。在表16中杠输,我們展示了不同適應(yīng)方法對(duì)MNLI n的性能耕漱。令我們驚訝的是,PrefixEmbed和PrefixLayer在MNLI-100數(shù)據(jù)集上的表現(xiàn)非常差抬伺,PrefixEmbed的表現(xiàn)僅略好于隨機(jī)機(jī)會(huì)(37.6%對(duì)33.3%)。PrefixLayer的表現(xiàn)好于PrefixEmbedd灾梦,但在MNLI100上仍然明顯差于Fine Tune或LoRA峡钓。隨著訓(xùn)練示例數(shù)量的增加,基于前綴的方法和LoRA/微調(diào)之間的差距變得更小若河,這可能表明基于前綴的方式不適合GPT-3中的低數(shù)據(jù)任務(wù)能岩。LoRA在MNLI-100和MNLI-Full上都獲得了比微調(diào)更好的性能,并且在考慮到隨機(jī)種子引起的(±0.3)方差的情況下萧福,在MNLI-1k和MNLI-10K上獲得了可比較的結(jié)果拉鹃。

表17中報(bào)告了MNLI-n上不同適應(yīng)方法的訓(xùn)練超參數(shù)。我們對(duì)MNLI-100集合上的PrefixLayer使用較小的學(xué)習(xí)率鲫忍,因?yàn)橛?xùn)練損失不會(huì)隨著較大的學(xué)習(xí)率而減少膏燕。

G測(cè)量子空間之間的相似性

具體地說(shuō),設(shè)U i>A U j B的奇異值為σ1悟民,σ2坝辫,··,σp射亏,其中p=min{i近忙,j}。我們知道投影度量Ham&Lee(2008)定義為:

其中我們的相似性定義為:

這種相似性滿足如果U i A和U j B共享相同的柱跨度智润,則φ(A及舍,B,i窟绷,j)=1锯玛。如果它們是完全正交的,那么φ(A钾麸,B更振,i炕桨,j)=0。否則肯腕,φ(A献宫,B,i实撒,j)∈(0姊途,1)。

低秩矩陣的H附加實(shí)驗(yàn)

我們提出了我們對(duì)低秩更新矩陣的調(diào)查的額外結(jié)果知态。

H.1 LORA模之間的相關(guān)性

請(qǐng)參見(jiàn)圖6和圖7捷兰,了解圖3和圖4中的結(jié)果如何推廣到其他層。

H.2 r對(duì)GPT-2的影響

我們?cè)贕PT-2中重復(fù)我們關(guān)于r的影響的實(shí)驗(yàn)(第7.2節(jié))负敏。以E2E NLG Challenge數(shù)據(jù)集為例贡茅,我們報(bào)告了在訓(xùn)練26000步后,通過(guò)不同的r選擇實(shí)現(xiàn)的驗(yàn)證損失和測(cè)試指標(biāo)其做。我們?cè)诒?8中給出了我們的結(jié)果顶考。GPT-2 Medium的最佳秩在4到16之間,具體取決于所使用的度量妖泄,這與GPT-3 175B的度量類似驹沿。請(qǐng)注意,模型大小和適應(yīng)的最佳秩之間的關(guān)系仍然是一個(gè)懸而未決的問(wèn)題蹈胡。

H.3 W和?W之間的相關(guān)性

W和?W之間隨r變化的歸一化子空間相似性見(jiàn)圖8渊季。再次注意,?W不包含W的頂部奇異方向罚渐,因?yàn)?W中的頂部4個(gè)方向與W中的前10%方向之間的相似性幾乎不超過(guò)0.2却汉。這提供了證據(jù),證明?W包含那些在W中沒(méi)有強(qiáng)調(diào)的“特定任務(wù)”方向搅轿。接下來(lái)要回答的一個(gè)有趣的問(wèn)題是病涨,為了使模型自適應(yīng)良好工作,我們需要放大這些特定任務(wù)的方向的“強(qiáng)度”有多大璧坟?

H.4放大系數(shù)

可以自然地將特征放大因子視為比率k?WkF kU>W V>kF既穆,其中U和V是?W的SVD分解的左奇異矩陣和右奇異矩陣。(回想一下雀鹃,UU>W V>V給出了W在?W跨越的子空間上的“投影”幻工。)直觀地說(shuō),當(dāng)?W主要包含特定任務(wù)的方向時(shí)黎茎,這個(gè)量測(cè)量了其中有多少被?W放大囊颅。如第7.3節(jié)所示,對(duì)于r=4,該放大因子大至20踢代。換言之盲憎,在每一層中(通常來(lái)說(shuō))有四個(gè)特征方向(在來(lái)自預(yù)訓(xùn)練模型W的整個(gè)特征空間中),需要放大非常大的因子20胳挎,以便實(shí)現(xiàn)我們報(bào)告的下游特定任務(wù)的準(zhǔn)確性饼疙。而且,對(duì)于每個(gè)不同的下游任務(wù)慕爬,應(yīng)該期望放大一組非常不同的特征方向窑眯。然而,人們可能會(huì)注意到医窿,對(duì)于r=64磅甩,該放大因子僅為2左右,這意味著在?W中學(xué)習(xí)到的大多數(shù)方向(r=64)不會(huì)被放大太多姥卢。這并不奇怪卷要,事實(shí)上(再次)證明了表示“任務(wù)特定方向”(因此用于模型自適應(yīng))所需的內(nèi)在秩較低。相反独榴,?W的第4級(jí)版本中的那些方向(對(duì)應(yīng)于r=4)被放大了更大的因子20却妨。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市括眠,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌倍权,老刑警劉巖掷豺,帶你破解...
    沈念sama閱讀 206,013評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異薄声,居然都是意外死亡当船,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,205評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門默辨,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)德频,“玉大人,你說(shuō)我怎么就攤上這事缩幸∫贾茫” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 152,370評(píng)論 0 342
  • 文/不壞的土叔 我叫張陵表谊,是天一觀的道長(zhǎng)钞护。 經(jīng)常有香客問(wèn)我,道長(zhǎng)爆办,這世上最難降的妖魔是什么难咕? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 55,168評(píng)論 1 278
  • 正文 為了忘掉前任,我火速辦了婚禮,結(jié)果婚禮上余佃,老公的妹妹穿的比我還像新娘暮刃。我一直安慰自己,他們只是感情好爆土,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,153評(píng)論 5 371
  • 文/花漫 我一把揭開(kāi)白布椭懊。 她就那樣靜靜地躺著,像睡著了一般雾消。 火紅的嫁衣襯著肌膚如雪灾搏。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 48,954評(píng)論 1 283
  • 那天立润,我揣著相機(jī)與錄音狂窑,去河邊找鬼。 笑死桑腮,一個(gè)胖子當(dāng)著我的面吹牛泉哈,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播破讨,決...
    沈念sama閱讀 38,271評(píng)論 3 399
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼丛晦,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了提陶?” 一聲冷哼從身側(cè)響起烫沙,我...
    開(kāi)封第一講書(shū)人閱讀 36,916評(píng)論 0 259
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎隙笆,沒(méi)想到半個(gè)月后锌蓄,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,382評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡撑柔,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,877評(píng)論 2 323
  • 正文 我和宋清朗相戀三年瘸爽,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片铅忿。...
    茶點(diǎn)故事閱讀 37,989評(píng)論 1 333
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡剪决,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出檀训,到底是詐尸還是另有隱情柑潦,我是刑警寧澤,帶...
    沈念sama閱讀 33,624評(píng)論 4 322
  • 正文 年R本政府宣布峻凫,位于F島的核電站妒茬,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏蔚晨。R本人自食惡果不足惜乍钻,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,209評(píng)論 3 307
  • 文/蒙蒙 一肛循、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧银择,春花似錦多糠、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,199評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至析孽,卻和暖如春搭伤,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背袜瞬。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 31,418評(píng)論 1 260
  • 我被黑心中介騙來(lái)泰國(guó)打工怜俐, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人邓尤。 一個(gè)月前我還...
    沈念sama閱讀 45,401評(píng)論 2 352
  • 正文 我出身青樓拍鲤,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親汞扎。 傳聞我的和親對(duì)象是個(gè)殘疾皇子季稳,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,700評(píng)論 2 345

推薦閱讀更多精彩內(nèi)容