精通AI微調:5步升級GPT模型,取得突破性結果【教學】
Table of Contents
- 介紹
- 下載預訓練模型
- Fine-tuning模型
- 比較Fine-tuned模型表現
- 使用示例:文本生成
- 使用示例:自動完成
- Fine-tuning模型的效果
- 下一步是什麼?
- 完細筆記,就像精簡版的機器學習
- 問與答
介紹
歡迎回到我們關於生成式預訓練Transformer的精彩旅程!如果你還記得,在上一集中,我們從頭開始建立了一個基於GPT的模型,並使用了Wikitext 2數據集進行了訓練。在僅使用普通個人電腦和24小時的訓練時間下,這個模型表現出色。
在今天的篇章中,我們將進一步突破界線,探索使用預訓練模型和特定領域數據相結合進行微調的強大組合。我們的目標是展示如何通過微調在特定領域(本例中為生命科學)中顯著提升模型的性能。首先,我們將下載一個現有的預訓練模型和分詞器,然後將應用該模型到自動完成任務中的一些生命科學提示。接下來,我們將使用PubMed文獻庫的數據對模型進行微調,並重新運行同樣的自動完成示例,以凸顯通過微調獲得的性能提升。現在,就讓我們開始吧!
下載預訓練模型
首先,我們需要下載預訓練模型和分詞器的Python代碼。在這個代碼片段中,我們只是導入了必要的庫和模塊,包括PyTorch和hugging face的Transformer庫。然後,我們可以使用from_pretrained
方法來獲取預訓練的distill-gpt2模型及其相應的分詞器。
distill-gpt2是gpt2模型的一個更小、更快的變體,非常適合作為示範使用,因為即使在較低配置的硬件上,它也可以進行微調。hugging face還提供了許多與distill-gpt2相比可媲美的其他模型,我鼓勵你嘗試使用不同的預訓練Transformer模型,比較它們的結果,這是一個很有啟發性的練習。
為了對每個模型的細節和架構進行可視化,我們可以使用像這樣的代碼來打印出關鍵參數。例如,distill-gpt2模型有8200萬個參數,包括分詞、位置編碼和注意力層。
另外,我們也可以將這個文本輸出以區塊圖的形式呈現,這樣更容易理解。
Fine-tuning模型
接下來,我們將開始對模型進行微調。我們需要下載一個專業的生命科學數據集,對其進行分詞並準備進行微調。幸運的是,hugging face提供了一系列的Python類,使這個過程變得簡單易行。
作為Lucid8的一位管理層成員,你將獲得對這個微調過程的詳細代碼演示的訪問權限。加入Lucid8的會員團隊不僅表明對Lucid8視頻的欣賞,還能獲得獨家福利,比如提前訪問視頻、會員專享內容,並為未來高質量AI視頻的製作作出貢獻。點擊下面的加入按鈕,探索更多關於會員等級和福利的信息(請注意,點擊加入只是進入信息頁面,並不會自動註冊成為會員)。
比較Fine-tuned模型表現
一旦我們對模型進行了微調,讓我們重新回顧一下最初的問題。進行微調後的回答比起微調前的回答有所改善,但不是非常明顯。如果你想進一步研究並比較基礎模型和微調模型的回答,你可以暫停視頻或截圖來進行比較。
也許你想知道增量改善是否值得微調的努力。為了回答這個問題,讓我們考慮一個不同的情境。假設我們基於最近的生命科學研究提出一些更加技術性的問題。我們的原始distill-gpt2模型是基於截至2021年的信息進行訓練的,而微調後的模型是使用了2023年的數據進行訓練的。在這種情況下,我們可以清楚地看到微調過的模型在性能上取得了顯著的飛躍。
對於不需要最新信息的通用查詢而言,基礎模型效果非常好,但是當處理最近或更高級的專題時,微調的額外努力真的非常值得。
使用示例:文本生成
在下一個示例中,讓我們看看如何使用微調過的模型來生成文本。我們的生成文本函數將輸入的提示進行分詞,並使用模型生成相應的文本。同時,它還會正確設置注意力遮罩和填充token ID,以防止任何意外行為的發生。
使用示例:自動完成
除了文本生成,我們還可以使用微調過的模型來進行自動完成的任務。我們有一系列與生命科學相關的提示,代碼將遍歷每個提示,使用生成文本函數生成相應的文本,然後顯示結果。
很明顯,這個模型生成的回應比我們在第一個視頻中從頭訓練的Transformer模型要好得多。回顧一下,我們使用了現成的架構和Wikitext數據來訓練那個Transformer模型,雖然這對於學術研究是有價值的,但是從頭訓練一個模型並不是最實際和最有益的方法。相比之下,從hugging face下載一個預訓練模型要更加實用。
Fine-tuning模型的效果
我們從剛才的比較中可以清楚地看出微調所帶來的性能提升。微調後的模型在回答技術性問題時表現得更好,這是因為它使用了更新的數據進行訓練。進一步研究和比較基礎模型和微調模型的回答,您可以暫停、倒帶和截圖。
下一步是什麼?
在下一個視頻中,我們將從生命科學回到資本市場,探索彭博GPT模型,這是一個專門為金融服務設計的GPT模型。我們將更深入地研究彭博團隊如何使用Alphabet的DeepMind團隊的一些結果來設計他們的Transformer的大小和形狀。這種設計稱為"chinchilla scaling”,是根據DeepMind開發的chinchilla Transformer的名字而命名的。所以,請持續關注,點擊訂閱按鈕!如果你覺得這個視頻有幫助,請點個讚,並在評論區留下任何問題或對未來視頻的要求。感謝觀看!
完結筆記:就像縮小版的機器學習!
- 介紹GPT模型和預訓練Transformer的基本概念
- 下載預訓練模型和分詞器的Python代碼
- 使用預訓練模型進行文本生成和自動完成示例
- 微調模型使用生命科學數據集和Python代碼
- 比較微調模型與基礎模型的表現
- 分析微調對模型性能的影響
- 探索彭博GPT模型及其與DeepMind的關聯
問與答
Q: 這個預訓練模型是否能夠應用於其他領域?
A: 是的,你可以選擇不同的預訓練模型,根據你的應用領域進行微調。
Q: 是否可以將自己的數據集用於微調模型?
A: 是的,你可以使用自己的數據集來微調模型,這樣可以更好地適應你的特定任務。
Q: 是否可以在普通的個人電腦上進行模型的微調?
A: 是的,根據你的硬件配置和數據集的大小,你可以在普通的個人電腦上進行模型的微調。
Q: 如何選擇適合自己應用的預訓練模型?
A: 你可以從hugging face提供的多個預訓練模型中進行選擇,並通過比較它們的表現來找到最適合自己應用的模型。
Q: 從頭訓練和微調模型有什麼區別?
A: 從頭訓練模型需要更多的時間和計算資源,而微調模型可以在現有的預訓練模型基礎上進行,節省了時間和計算成本。微調模型還可以更好地適應特定的任務和數據集。
Q: 如何確定微調模型的效果是否有效?
A: 可以通過比較微調前後模型的性能指標(如準確率、F1分數等)來評估微調模型的效果。