首頁  >  文章  >  科技週邊  >  ReFT(表徵微調):比PeFT效果更好的新的大語言模型微調技術

ReFT(表徵微調):比PeFT效果更好的新的大語言模型微調技術

WBOY
WBOY轉載
2024-04-15 15:30:021142瀏覽

ReFT(Representation Finetuning)是一種突破性的方法,有望重新定義我們對大型語言模型進行微調的方式。

史丹佛大學的研究人員最近(4月)在arxiv上發布的論文,ReFT與傳統的基於權重的微調方法大有不同,它提供了一種更有效率和有效的方法來適應這些大規模的模型,以適應新的任務和領域!

ReFT(表徵微調):比PeFT效果更好的新的大語言模型微調技術

在介紹這篇論文之前,我們先來看看PeFT。

參數高效能微調PeFT

Parameter Efficient Fine-Tuning(PEFT)是一種微調少量或額外的模型參數的高效微調方法。與傳統的預測網路微調方法相比,使用PEFT進行微調可以大幅降低運算和儲存成本,同時確保了與全量微調相當的效能。此技術的應用範圍非常廣泛,並且能夠實現與全量微調相當的性能。

在PeFT的想法之上就產生了我們非常熟悉的LoRA,還有各種LoRA的變體,除了有名的LoRA之外常用的PeFT方法還有:

Prefix Tuning:透過virtual token建構連續型隱式prompt ,這是21年史丹佛發布的方法。

ReFT(表徵微調):比PeFT效果更好的新的大語言模型微調技術

P-Tuning V1/V2 是由清華大學在2021年提出的技術,旨在將自然語言的離散模型轉換為可訓練的隱式prompt(連續參數最佳化問題)。 V2版本透過在輸入前的每層添加可微調的參數,進一步增強了V1版本的效能。這種方法有效地擴展了模型的應用範圍和靈活性。

ReFT(表徵微調):比PeFT效果更好的新的大語言模型微調技術

然後就是我們熟悉的也是最長用的LoRA,這裡就不多介紹了,我們可以狹義理解為LoRA是目前最好的PeFT方法,這樣可以對我們下面介紹的ReFT更好的比較。

ReFT(表徵微調):比PeFT效果更好的新的大語言模型微調技術

表徵微調ReFT

#ReFT (Representation Finetuning)是一組專注於在推理過程中對語言模型的隱藏表示學習介入的方法,而不是直接修改其權重。

與更新模型整個參數集的傳統微調方法不同,ReFT透過策略性地操縱模型表示的一小部分來操作,指導其行為以更有效地解決下游任務。

ReFT背後的核心思想受到最近語言模型可解釋性研究的啟發:在這些模型學習的表示中編碼了豐富的語義資訊。透過介入這些表示,ReFT旨在解鎖和利用這些編碼知識,實現更有效率和有效的模型適應。

ReFT的一個關鍵優點是它的參數效率:傳統的微調方法需要更新模型參數的很大一部分,這可能是計算昂貴和資源密集的,特別是對於具有數十億參數的大型語言模型。 ReFT方法通常需要訓練數量級較少的參數,從而獲得更快的訓練時間和更少的記憶體需求。

ReFT與PeFT有何不同

#ReFT與傳統PEFT方法在幾個關鍵方面有所不同:

1、幹預目標

PEFT方法,例如,LoRA、DoRA和prefix-tuning,專注於修改模型的權重或引入額外的權重矩陣。而ReFT方法不直接修改模型的權重;它們會幹預模型在向前傳遞期間計算的隱藏表示。

2、適應機制

像LoRA和DoRA這樣的PEFT方法學習權重更新或模型權重矩陣的低秩近似值。然後在推理期間將這些權重更新合併到基本模型的權重中,因此不會產生額外的計算開銷。 ReFT方法學習幹預,在推理過程中在特定層和位置操縱模型的表示。此介入過程會產生一些計算開銷,但可以實現更有效的適應。

3、動機

PEFT方法的主要動機是對參數有效適應的需求,減少了調優大型語言模型的計算成本和記憶體需求。另一方面,ReFT方法受到最近語言模型可解釋性研究的啟發,該研究表明,在這些模型學習的表示中編碼了豐富的語義資訊。 ReFT的目標是利用和利用這些編碼的知識來更有效地適應模型。

4.參數效率

PEFT和ReFT方法都是為了參數效率而設計的,但ReFT方法在實踐中證明了更高的參數效率。例如LoReFT(低秩線性子空間ReFT)方法通常需要訓練的參數比最先進的PEFT方法(LoRA)少10-50倍,同時在各種NLP基準測試中獲得具有競爭力或更好的性能。

5、可解釋性

雖然PEFT方法主要專注於有效的適應,但ReFT方法在可解釋性方面提供了額外的優勢。透過介入已知編碼特定語義資訊的表示,ReFT方法可以深入了解語言模型如何處理和理解語言,從而可能導致更透明和值得信賴的人工智慧系統。

ReFT架構

ReFT模型體系結構定義了乾預的一般概念,這基本上意味著在模型向前傳遞期間對隱藏表示的修改。我們首先考慮一個基於transformer的語言模型,該模型產生標記序列的上下文化表示。

給定一個n個輸入令牌序列x = (x₁,…,xn),模型首先將其嵌入到一個表示列表中,就h₁,…,hn。然後m層連續計算第j個隱藏表示,每一個隱藏的表示都是一個向量h∈λ,其中d是表示的維數。

ReFT(表徵微調):比PeFT效果更好的新的大語言模型微調技術

ReFT定義了一個介入的概念,它在模型向前傳遞期間修改隱藏的表示。

幹預I是一個元組⟨Φ, P, L⟩,它封裝了由基於transformer的LM計算的表示的單一推理時間的干預動作,這個函數包含了三個參數:

幹預函數Φ:用學習到的參數Φ (Φ)來表示。

幹預所應用的一組輸入位置P≤{1,…,n}。

對層L∈{1,…,m}進行幹預。

然後,介入的動作如下:

h⁽ˡ⁾ ← (Φ(h_p⁽ˡ⁾) if p ∈ P else h_p⁽ˡ⁾)_{p∈1,…,n}

該介入在前向傳播計算完後立即進行,所以會影響後續層中計算的表示。

為了提高計算的效率,也可以將介入的權重進行低秩分解,也就是就得到了低秩線性子空間ReFT (LoReFT)。

ReFT(表徵微調):比PeFT效果更好的新的大語言模型微調技術

在上面的公式中使用學習到的投影來源Rs = Wh b。 LoReFT編輯R列的R維子空間中的表示,來或取從我們的線性投影Wh b中獲得的值。

對於生成任務,ReFT論文使用語言建模的訓練目標,重點是在所有輸出位置上使用最小化交叉熵損失。

pyreft庫程式碼範例

史丹佛大學的研究人員在發布論文的同時也發布了pyreft庫,這是一個建立在pyvene之上用於在任意PyTorch模型上執行和訓練激活幹預的庫。

pyreft可以相容於HuggingFace上可用的任何預訓練語言模型,並且可以使用ReFT方法進行微調。以下是如何將lama- 27b模型的第19層輸出進行單一干預的程式碼範例:

import torch import transformers from pyreft import ( get_reft_model, ReftConfig, LoreftIntervention, ReftTrainerForCausalLM ) # Loading HuggingFace model model_name_or_path = "yahma/llama-7b-hf" model = transformers.AutoModelForCausalLM.from_pretrained( model_name_or_path, torch_dtype=torch.bfloat16, device_map="cuda" ) # Wrap the model with rank-1 constant reFT reft_config = ReftConfig( representations={ "layer": 19, "component": "block_output", "intervention": LoreftIntervention( embed_dim=model.config.hidden_size, low_rank_dimension=1),} ) reft_model = get_reft_model(model, reft_config) reft_model.print_trainable_parameters()

剩下的程式碼就和HuggingFace訓練模型沒有任何的區別了,我們來做一個完整的演示:

from pyreft import ( ReftTrainerForCausalLM, make_last_position_supervised_data_module ) tokenizer = transformers.AutoTokenizer.from_pretrained( model_name_or_path, model_max_length=2048, padding_side="right", use_fast=False) tokenizer.pad_token = tokenizer.unk_token  # get training data to train our intervention to remember the following sequence memo_sequence = """ Welcome to the Natural Language Processing Group at Stanford University! We are a passionate, inclusive group of students and faculty, postdocs and research engineers, who work together on algorithms that allow computers to process, generate, and understand human languages. Our interests are very broad, including basic scientific research on computational linguistics, machine learning, practical applications of human language technology, and interdisciplinary work in computational social science and cognitive science. We also develop a wide variety of educational materials on NLP and many tools for the community to use, including the Stanza toolkit which processes text in over 60 human languages. """ data_module = make_last_position_supervised_data_module( tokenizer=tokenizer, model=model, inputs=["GO->"], outputs=[memo_sequence])  # train training_args = transformers.TrainingArguments( num_train_epochs=1000.0, output_dir="./tmp", learning_rate=2e-3, logging_steps=50) trainer = ReftTrainerForCausalLM( model=reft_model, tokenizer=tokenizer, args=training_args, **data_module) _ = trainer.train()

#一旦完成訓練,就可以檢查模型資訊:

prompt = tokenizer("GO->", return_tensors="pt").to("cuda") base_unit_location = prompt["input_ids"].shape[-1] - 1# last position _, reft_response = reft_model.generate( prompt, unit_locations={"sources->base": (None, [[[base_unit_location]]])}, intervene_on_prompt=True, max_new_tokens=512, do_sample=False,  eos_token_id=tokenizer.eos_token_id, early_stopping=True ) print(tokenizer.decode(reft_response[0], skip_special_tokens=True))

LoReFT的性能测试

最后我们来看看它在各种NLP基准测试中的卓越表现,以下是斯坦福大学的研究人员展示的数据。

ReFT(表徵微調):比PeFT效果更好的新的大語言模型微調技術

LoReFT在8个具有挑战性的数据集上获得了最先进的性能,包括BoolQ、PIQA、SIQA、HellaSwag、WinoGrande、ARC-e、ARC-c和OBQA。尽管使用的参数比现有的PEFT方法少得多(少10-50倍),但LoReFT的性能还是大大超过了所有其他方法,展示了它有效捕获和利用大型语言模型中编码的常识性知识的能力。

ReFT(表徵微調):比PeFT效果更好的新的大語言模型微調技術

虽然LoReFT在数学推理任务上没有超过现有的PEFT方法,但它在AQuA、GSM8K、MAWPS和SVAMP等数据集上展示了具有竞争力的性能。研究人员指出LoReFT的性能随着模型尺寸的增大而提高,这表明它的能力随着语言模型的不断增长而扩大。

ReFT(表徵微調):比PeFT效果更好的新的大語言模型微調技術

在指令遵循领域,LoReFT取得了显著的结果,在Alpaca-Eval v1.0基准测试上优于所有的微调方法,包括完全微调(这个要注重说明)。当在llama - 27b模型上训练时,LoReFT的比GPT-3.5 Turbo模型的还要好1%,同时使用的参数比其他PEFT方法少得多。

ReFT(表徵微調):比PeFT效果更好的新的大語言模型微調技術

LoReFT还展示了其在自然语言理解任务中的能力,当应用于RoBERTa-base和RoBERTa-large模型时,在GLUE基准测试中实现了与现有PEFT方法相当的性能。

当在参数数量上与之前最有效的PEFT方法相匹配时,LoReFT在各种任务中获得了相似的分数,包括情感分析和自然语言推理。

ReFT(表徵微調):比PeFT效果更好的新的大語言模型微調技術

总结

ReFT特别是LoReFT的成功,对自然语言处理的未来和大型语言模型的实际应用具有重要意义。ReFT的参数效率使其成为一种使大型语言模型适应特定的任务或领域,同时最大限度地减少计算资源和训练时间的有效的解决方案。

并且ReFT还提供了一个独特的视角来增强大型语言模型的可解释性。在常识推理、算术推理和指令遵循等任务中的成功表明该方法的有效性。目前来看ReFT有望开启新的可能性,克服传统调优方法的局限性。

以上是ReFT(表徵微調):比PeFT效果更好的新的大語言模型微調技術的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文轉載於:51cto.com。如有侵權,請聯絡admin@php.cn刪除