国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

【自然語言處理】大模型高效微調(diào):PEFT 使用案例

這篇具有很好參考價值的文章主要介紹了【自然語言處理】大模型高效微調(diào):PEFT 使用案例。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

一、PEFT介紹

PEFT(Parameter-Efficient Fine-Tuning,參數(shù)高效微調(diào)),是一個用于在不微調(diào)所有模型參數(shù)的情況下,高效地將預(yù)訓(xùn)練語言模型(PLM)適應(yīng)到各種下游應(yīng)用的庫。

PEFT方法僅微調(diào)少量(額外的)模型參數(shù),顯著降低了計算和存儲成本,因為對大規(guī)模PLM進(jìn)行完整微調(diào)的代價過高。最近的最先進(jìn)的PEFT技術(shù)實現(xiàn)了與完整微調(diào)相當(dāng)?shù)男阅堋?/strong>

代碼:

https://github.com/huggingface/peft

文檔:

https://huggingface.co/docs/peft/index

二、PEFT 使用

接下來將展示 PEFT 的主要特點,并幫助在消費設(shè)備上通常無法訪問的情況下訓(xùn)練大型預(yù)訓(xùn)練模型。您將了解如何使用LoRA來訓(xùn)練1.2B參數(shù)的bigscience/mt0-large模型,以生成分類標(biāo)簽并進(jìn)行推理。

2.1 PeftConfig

每個 PEFT 方法由一個PeftConfig類來定義,該類存儲了用于構(gòu)建PeftModel的所有重要參數(shù)。

由于您將使用LoRA,您需要加載并創(chuàng)建一個LoraConfig類。在LoraConfig中,指定以下參數(shù):

  • task_type,在本例中為序列到序列語言建模
  • inference_mode,是否將模型用于推理
  • r,低秩矩陣的維度
  • lora_alpha,低秩矩陣的縮放因子
  • lora_dropout,LoRA層的dropout概率
from peft import LoraConfig, TaskType

peft_config = LoraConfig(task_type=TaskType.SEQ_2_SEQ_LM, inference_mode=False, r=8, lora_alpha=32, lora_dropout=0.1)

有關(guān)您可以調(diào)整的其他參數(shù)的更多詳細(xì)信息,請參閱LoraConfig參考。

2.2 PeftModel

使用 get_peft_model() 函數(shù)可以創(chuàng)建PeftModel。它需要一個基礎(chǔ)模型 - 您可以從 Transformers 庫加載 - 以及包含配置特定 PEFT 方法的PeftConfig。

首先加載您要微調(diào)的基礎(chǔ)模型。

from transformers import AutoModelForSeq2SeqLM

model_name_or_path = "bigscience/mt0-large"
tokenizer_name_or_path = "bigscience/mt0-large"
model = AutoModelForSeq2SeqLM.from_pretrained(model_name_or_path)

使用get_peft_model函數(shù)將基礎(chǔ)模型和peft_config包裝起來,以創(chuàng)建PeftModel。要了解您模型中可訓(xùn)練參數(shù)的數(shù)量,可以使用print_trainable_parameters方法。在這種情況下,您只訓(xùn)練了模型參數(shù)的0.19%!

from peft import get_peft_model

model = get_peft_model(model, peft_config)
model.print_trainable_parameters()
# 輸出示例: trainable params: 2359296 || all params: 1231940608 || trainable%: 0.19151053100118282

至此,我們已經(jīng)完成了!現(xiàn)在您可以使用Transformers的Trainer、 Accelerate,或任何自定義的PyTorch訓(xùn)練循環(huán)來訓(xùn)練模型。

2.3 保存和加載模型

在模型訓(xùn)練完成后,您可以使用save_pretrained函數(shù)將模型保存到目錄中。您還可以使用push_to_hub函數(shù)將模型保存到Hub(請確保首先登錄您的Hugging Face帳戶)。

model.save_pretrained("output_dir")

# 如果要推送到Hub
from huggingface_hub import notebook_login

notebook_login()
model.push_to_hub("my_awesome_peft_model")

這只保存了已經(jīng)訓(xùn)練的增量PEFT權(quán)重,這意味著存儲、傳輸和加載都非常高效。例如,這個在RAFT數(shù)據(jù)集的twitter_complaints子集上使用LoRA訓(xùn)練的bigscience/T0_3B模型只包含兩個文件:adapter_config.json和adapter_model.bin,后者僅有19MB!

使用from_pretrained函數(shù)輕松加載模型進(jìn)行推理:

from transformers import AutoModelForSeq2SeqLM
from peft import PeftModel, PeftConfig

peft_model_id = "smangrul/twitter_complaints_bigscience_T0_3B_LORA_SEQ_2_SEQ_LM"
config = PeftConfig.from_pretrained(peft_model_id)
model = AutoModelForSeq2SeqLM.from_pretrained(config.base_model_name_or_path)
model = PeftModel.from_pretrained(model, peft_model_id)

三、PEFT支持任務(wù)

3.1 Models support matrix

3.1.1 Causal Language Modeling

【自然語言處理】大模型高效微調(diào):PEFT 使用案例,自然語言處理,自然語言處理,人工智能,深度學(xué)習(xí),大模型,PEFT

3.1.2 Conditional Generation

【自然語言處理】大模型高效微調(diào):PEFT 使用案例,自然語言處理,自然語言處理,人工智能,深度學(xué)習(xí),大模型,PEFT

3.1.3 Sequence Classification

【自然語言處理】大模型高效微調(diào):PEFT 使用案例,自然語言處理,自然語言處理,人工智能,深度學(xué)習(xí),大模型,PEFT

3.1.4 Token Classification

【自然語言處理】大模型高效微調(diào):PEFT 使用案例,自然語言處理,自然語言處理,人工智能,深度學(xué)習(xí),大模型,PEFT

3.1.5 Text-to-Image Generation

【自然語言處理】大模型高效微調(diào):PEFT 使用案例,自然語言處理,自然語言處理,人工智能,深度學(xué)習(xí),大模型,PEFT

3.1.6 Image Classification

【自然語言處理】大模型高效微調(diào):PEFT 使用案例,自然語言處理,自然語言處理,人工智能,深度學(xué)習(xí),大模型,PEFT

3.1.7 Image to text (Multi-modal models)

【自然語言處理】大模型高效微調(diào):PEFT 使用案例,自然語言處理,自然語言處理,人工智能,深度學(xué)習(xí),大模型,PEFT

四、PEFT原理

4.1 LoRA

LoRA(Low-Rank Adaptation)是一種技術(shù),通過低秩分解將權(quán)重更新表示為兩個較小的矩陣(稱為更新矩陣),從而加速大型模型的微調(diào),并減少內(nèi)存消耗。

為了使微調(diào)更加高效,LoRA的方法是通過低秩分解,使用兩個較小的矩陣(稱為更新矩陣)來表示權(quán)重更新。這些新矩陣可以通過訓(xùn)練適應(yīng)新數(shù)據(jù),同時保持整體變化的數(shù)量較少。原始的權(quán)重矩陣保持凍結(jié),不再接收任何進(jìn)一步的調(diào)整。為了產(chǎn)生最終結(jié)果,同時使用原始和適應(yīng)后的權(quán)重進(jìn)行合并。

4.2 Prompt tuning

訓(xùn)練大型預(yù)訓(xùn)練語言模型是非常耗時且計算密集的。隨著模型尺寸的增長,越來越多的人對更高效的訓(xùn)練方法產(chǎn)生了興趣,例如提示(Prompting)。提示通過包括描述任務(wù)的文本提示或甚至演示任務(wù)示例的文本提示來為特定的下游任務(wù)準(zhǔn)備一個凍結(jié)的預(yù)訓(xùn)練模型。通過使用提示,您可以避免為每個下游任務(wù)完全訓(xùn)練單獨的模型,而是使用相同的凍結(jié)預(yù)訓(xùn)練模型。這更加方便,因為您可以將同一模型用于多個不同的任務(wù),而訓(xùn)練和存儲一小組提示參數(shù)要比訓(xùn)練所有模型參數(shù)要高效得多。

提示方法可以分為兩類:

  • 硬提示(Hard Prompts):手工制作的具有離散輸入標(biāo)記的文本提示;缺點是需要花費很多精力來創(chuàng)建一個好的提示。
  • 軟提示(Soft Prompts):可與輸入嵌入連接并進(jìn)行優(yōu)化以適應(yīng)數(shù)據(jù)集的可學(xué)習(xí)張量;缺點是它們不太易讀,因為您不是將這些“虛擬標(biāo)記”與實際單詞的嵌入進(jìn)行匹配。

4.3 IA3

為了使微調(diào)更加高效,IA3(通過抑制和放大內(nèi)部激活來注入適配器)使用學(xué)習(xí)向量對內(nèi)部激活進(jìn)行重新縮放。這些學(xué)習(xí)向量被注入到典型的基于Transformer架構(gòu)中的注意力和前饋模塊中。這些學(xué)習(xí)向量是微調(diào)過程中唯一可訓(xùn)練的參數(shù),因此原始權(quán)重保持凍結(jié)。處理學(xué)習(xí)向量(而不是像LoRA一樣對權(quán)重矩陣進(jìn)行學(xué)習(xí)的低秩更新)可以大大減少可訓(xùn)練參數(shù)的數(shù)量。

與LoRA類似,IA3具有許多相同的優(yōu)點:文章來源地址http://www.zghlxwxcb.cn/news/detail-636621.html

  • IA3通過大大減少可訓(xùn)練參數(shù)的數(shù)量使微調(diào)更加高效(對于T0模型,IA3模型僅具有約0.01%的可訓(xùn)練參數(shù),而即使是LoRA也有超過0.1%)。
  • 原始的預(yù)訓(xùn)練權(quán)重保持凍結(jié),這意味著您可以在其之上構(gòu)建多個輕量級和便攜的IA3模型,用于各種下游任務(wù)。
  • 使用IA3進(jìn)行微調(diào)的模型性能與完全微調(diào)的模型性能相當(dāng)。
  • IA3不會增加任何推理延遲,因為適配器權(quán)重可以與基礎(chǔ)模型合并。

到了這里,關(guān)于【自然語言處理】大模型高效微調(diào):PEFT 使用案例的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進(jìn)行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • 《自然語言處理》chapter7-預(yù)訓(xùn)練語言模型

    《自然語言處理》chapter7-預(yù)訓(xùn)練語言模型

    這是閱讀《自然語言處理-基于預(yù)訓(xùn)練模型的方法》的學(xué)習(xí)筆記,記錄學(xué)習(xí)過程,詳細(xì)的內(nèi)容請大家購買書籍查閱。 同時參考沐神的兩個視頻: GPT,GPT-2,GPT-3 論文精讀【論文精讀】 BERT 論文逐段精讀【論文精讀】 自然語言處理的核心在于如何更好地建模語言。廣義上的預(yù)訓(xùn)

    2024年02月10日
    瀏覽(24)
  • 30個最新的自然語言處理模型

    T5:基于Transformer,結(jié)合了多任務(wù)學(xué)習(xí)和無監(jiān)督預(yù)訓(xùn)練,并使用大規(guī)模的英文維基百科語料庫進(jìn)行訓(xùn)練。 GPT-3:同樣基于Transformer,使用了極其龐大的語料庫,并使用Zero-shot學(xué)習(xí)實現(xiàn)了自然語言推理功能。 Chinchilla:一種新型自然語言生成模型,使用了自適應(yīng)正則化和動態(tài)使用

    2023年04月27日
    瀏覽(26)
  • 【自然語言處理】:實驗4答案,預(yù)訓(xùn)練語言模型實現(xiàn)與應(yīng)用

    【自然語言處理】:實驗4答案,預(yù)訓(xùn)練語言模型實現(xiàn)與應(yīng)用

    代碼和報告均為本人自己實現(xiàn)(實驗滿分),只展示主要任務(wù)實驗結(jié)果,如果需要詳細(xì)的實驗報告或者代碼可以私聊博主,接實驗技術(shù)指導(dǎo)1對1 運行模型,測試模型在有 100% / 50% / 10% training data(通過隨機 sample 原 training set 一部分的數(shù)據(jù),10%代表低資源的設(shè)定)的情況下模型

    2024年02月22日
    瀏覽(90)
  • 【自然語言處理】:實驗4布置,預(yù)訓(xùn)練語言模型實現(xiàn)與應(yīng)用

    【自然語言處理】:實驗4布置,預(yù)訓(xùn)練語言模型實現(xiàn)與應(yīng)用

    清華大學(xué)馭風(fēng)計劃 因為篇幅原因?qū)嶒灤鸢阜珠_上傳,自然語言處理專欄持續(xù)更新中,期待的小伙伴敬請關(guān)注 有任何疑問或者問題,也歡迎私信博主,大家可以相互討論交流喲~~ 案例簡介 ?2018年,Google提出了預(yù)訓(xùn)練語言模型BERT,該模型在各種NLP任務(wù)上都取得了很好的效果。與

    2024年02月19日
    瀏覽(102)
  • 自然語言處理 Paddle NLP - 預(yù)訓(xùn)練語言模型及應(yīng)用

    自然語言處理 Paddle NLP - 預(yù)訓(xùn)練語言模型及應(yīng)用

    基礎(chǔ) 自然語言處理(NLP) 自然語言處理PaddleNLP-詞向量應(yīng)用展示 自然語言處理(NLP)-前預(yù)訓(xùn)練時代的自監(jiān)督學(xué)習(xí) 自然語言處理PaddleNLP-預(yù)訓(xùn)練語言模型及應(yīng)用 自然語言處理PaddleNLP-文本語義相似度計算(ERNIE-Gram) 自然語言處理PaddleNLP-詞法分析技術(shù)及其應(yīng)用 自然語言處理Pa

    2024年02月08日
    瀏覽(30)
  • 【大模型的前世今生】從自然語言處理說起

    【大模型的前世今生】從自然語言處理說起

    自然語言處理(Natural Language Processing,簡稱NLP)被譽為人工智能皇冠上的明珠,是計算機科學(xué)和人工智能領(lǐng)域的一個重要方向。它主要研究人與計算機之間,使用自然語言進(jìn)行有效通信的各種理論和方法。簡單來說,計算機以用戶的自然語言數(shù)據(jù)作為輸入,在其內(nèi)部通過定義

    2024年02月03日
    瀏覽(20)
  • 自然語言處理(五):子詞嵌入(fastText模型)

    自然語言處理(五):子詞嵌入(fastText模型)

    在英語中,“helps”“helped”和“helping”等單詞都是同一個詞“help”的變形形式?!癲og”和“dogs”之間的關(guān)系與“cat”和“cats”之間的關(guān)系相同,“boy”和“boyfriend”之間的關(guān)系與“girl”和“girlfriend”之間的關(guān)系相同。在法語和西班牙語等其他語言中,許多動詞有40多種變

    2024年02月10日
    瀏覽(29)
  • ChatGPT和其他自然語言處理模型的比較

    自然語言處理(Natural Language Processing,簡稱NLP)是人工智能領(lǐng)域的重要分支之一。在NLP中,ChatGPT是一種備受關(guān)注的自然語言生成模型。然而,除了ChatGPT之外,還有許多其他的自然語言處理模型。本篇文章將介紹ChatGPT和其他自然語言處理模型之間的比較。 1.1 GPT是什么? GPT全

    2024年02月04日
    瀏覽(20)
  • 自然語言處理 | 大模型|類似chatGPT的開源大模型整理

    最近正在學(xué)習(xí)chatGPT相關(guān)大模型,整理相關(guān)資料如下,本文仍在修改中,如有侵權(quán),請聯(lián)系刪除 chatGPT-1: Improving Language Understanding by Generative Pre-Training chatGPB-2: Language Models are Unsupervised Multitask Learners chatGPT-3: Language Models are Few-Shot Learners 模型名稱 開發(fā)者 模型介紹 介紹資料

    2024年02月02日
    瀏覽(28)
  • 自然語言處理實戰(zhàn)9-大語言模型的訓(xùn)練與文本生成過程

    大家好,我是微學(xué)AI,今天給大家介紹一下自然語言處理實戰(zhàn)項目9-大語言模型的訓(xùn)練與文本生成過程,詳細(xì)步驟介紹。大語言模型的訓(xùn)練是通過深度學(xué)習(xí)技術(shù)實現(xiàn)的。首先,需要準(zhǔn)備一個龐大的文本數(shù)據(jù)集作為訓(xùn)練樣本,這些文本可以是網(wǎng)頁、書籍、新聞等大量的非結(jié)構(gòu)化文

    2024年02月07日
    瀏覽(29)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包