iT邦幫忙

鐵人檔案

2023 iThome 鐵人賽
回列表
AI & Data

用單張顯卡探索大型語言模型的奧秘 系列

今天是特殊的一年,大型語言模型如雨後春筍般冒出,其回答問題、邏輯推理、舉一反三的能力也令人嘆為觀止,曾經被人工智能視為障礙的圖靈測試對如今的語言模型來說就像一塊小蛋糕;原本因為進入門檻極高,該技術始終掌握在少數人的手中,然而現在,在LLama系列的大型語言模型開源後,先前許多專門被用來finetune大模型的技術,也開始被使用在了LLama系列的語言模型上,本系列文章將使用單張顯卡,藉由研究baby llama2專案來嘗試從頭訓練自己的語言模型並一步一步把模型參數量加大;並且使用QLORA等等的技術來對現有的大型語言模型做針對性的微調,探索大語言模型的奧秘。

DAY 11

Day 11 - Baby LLama2 Chinese (5) Pretrain階段任務詳解

Pretrain 階段內容詳解 1. 資料前處理 訓練資料原始字串內容 在medical dataset中的pretrain資料夾中挑幾個樣本出來 json檔...

2023-09-12 ‧ 由 jjchen1 分享
DAY 12

Day 12 - Baby LLama2 Chinese (6) 重新整理Pretrain的資料前處理

今天把下載到的pretrain資料重新整理了一遍,並且加入了百度的資料,百度的檔案很大,我的電腦只有64GB的記憶體,使用原本的data_process.py中...

2023-09-13 ‧ 由 jjchen1 分享
DAY 13

Day 13 - Baby LLama2 Chinese (7) 重新完成Pretrain階段訓練

在重新開始執行pretrain.py前,針對先前的亂碼問題,本來我以為問題是出在tokenizer,不過仔細看了一下印出來的亂碼後,我回去比對了medical_...

2023-09-14 ‧ 由 jjchen1 分享
DAY 14

Day 14 - Baby LLama2 Chinese (8) SFT階段

SFT 1. 資料前處理 兩種類型的原始資料 Instruction + Output { "instruction": &quo...

2023-09-15 ‧ 由 jjchen1 分享
DAY 15

Day 15 - Baby LLama2 Chinese (9) SFT階段

2. 讀取SFT Dataset 除了eostoken以外SFT額外需要一個bostoken來將prompt與answer切分開;並且在讀取訓練資料時,必須要檢...

2023-09-16 ‧ 由 jjchen1 分享
DAY 16

Day 16 - Baby LLama2 Chinese (10) SFT階段

3. SFT訓練與Loss計算 sft訓練的程式碼sft.py 以下為簡化過的程式碼,X, Y, loss_mask的內容如何產生已經在前面介紹SFT da...

2023-09-17 ‧ 由 jjchen1 分享
DAY 17

Day 17 - Baby LLama2 Chinese (11)

由於模型訓練進展很慢,沒有什麼能更新的,今天唯一做的事情就是修改了一下訓練時的程式,每經過一定的iteration就儲存一次最後的checkpoint,否則模型...

2023-09-18 ‧ 由 jjchen1 分享
DAY 18

Day 18 - Baby LLama2 Chinese (12)

目前剛把pretrain.py改成可以從最近的中斷點繼續訓練,因為一個epoch實在太久,我的電腦沒有辦法長時間用來訓練這個網路;目前先試試看改完的code是否...

2023-09-19 ‧ 由 jjchen1 分享
DAY 19

Day 19 - Baby LLama2 Chinese (13)

今天把sft.py也改成了可以resume training,其實看到現在,對於整個訓練的細節了解後,可以歸納出pretrain與sft在訓練的程式上的不同點:...

2023-09-20 ‧ 由 jjchen1 分享
DAY 20

Day 20 - Baby Llama2 Chinese (13)

目前除了BLEU以外找不到好的衡量GPT模型訓練結果好壞的方法,不過以之前的經驗,其實跟直接算loss也差不多,所以在pretrain與sft的階段都直接使用v...

2023-09-21 ‧ 由 jjchen1 分享