# 【生成式AI導論 2024】第7講:大型語言模型修練史 — 第二階段: 名師指點,發揮潛力 (兼談對 ChatGPT 做逆向工程與 LLaMA 時代的開始) ## 人類老師 * 人類老師給語言模型的教材是QA。一個問題一個答案。這個步驟叫做Instruction Fine-tuning。屬於Supervised Learning。 * 語言模型看到的訓練資料長這樣![image](https://hackmd.io/_uploads/HJDuU4Ts1l.png) * 要特別標出哪個部分是User講的哪個部分是AI講的,不然如果只有問答而沒有這些標註,模型沒辦法分辨是使用者自問自答還是這些是AI該給的回答。![image](https://hackmd.io/_uploads/rJ_ePEasJg.png) * 我們在用ChatGPT時也有可能加入AI跟USER的prompt![image](https://hackmd.io/_uploads/BJWBPNaikg.png) * 如果一開始就用Supervised Learning,人力能提供的資料太少了,會產生各種問題。 ## Pre-train 與 Fine-tune * 因此現今大型語言模型的關鍵是使用第一階段的初始參數(Pre-train)作為二階段的訓練參數(Fine-tune)。 * Adapter: 如果擔心Fine-tune的參數會與Pre-train參數差太多可以採用Adapter(eg. LoRA) * 完全不要動初始參數 * 在原本的func後面加入少量參數,去找這些少量參數就好。![image](https://hackmd.io/_uploads/H1q3ONTikx.png) * 模型在Pre-Train時學到了很複雜的問題,因此透過Fine-tune就可以舉一反三 ## Fine-tune的路線 ![image](https://hackmd.io/_uploads/ryT4nVTikl.png) ### 打造一堆專才模型 * BERT ### 直接打造一個通才 * 打造專才有點麻煩,世界上的任務太多了 * 於是蒐集一堆資料,把所有任務交給一個模型![image](https://hackmd.io/_uploads/BJtZaVpiJg.png) * 並且期待能夠在學習任務的過程中,舉一反三學會其他任務 * 可以不用一次教它所有任務,可以慢慢學習。但是模型會忘記較舊的知識,因此要[複習](https://arxiv.org/abs/1909.03329v2)。![image](https://hackmd.io/_uploads/BJhtT4ajke.png) * Google以GPT3為Pre-train model,用多種任務打造了[FLAN(2021.09)](https://arxiv.org/abs/2109.01652)、[T0(2021.10)](https://arxiv.org/abs/2110.08207)、以及[終極的Scaling版本(2022.10)](https://arxiv.org/abs/2210.11416) * OpenAI則做了[Instruct GPT(2022.03)](https://arxiv.org/abs/2203.02155),做的比FLAN好。他們認為在原本FLAN中他們使用的資料是找自然語言的資料集,想辦法改成一問一答的資料。缺點是這些問題非常的死板,跟正常的使用情境相差很多。OpenAI則是透過Chat-GPT3的上線,蒐集真實使用者的問題,然後去找問題標記員把正確答案標出來。 * Instruction Fine-tuning其實只要上萬比資料,比大家想的還要少。[LLaMA2](https://arxiv.org/abs/2307.09288)也贊同,他們選擇用上萬筆的資料就好,認為"Quality Is All You Need"。 * 但是一般人沒有ChatGPT的真實使用者資料,很難去做Instruction Fine-tuning。因此有人直接用ChatGPT去產生使用者可能的輸入跟輸出。但也[有人覺得](https://arxiv.org/abs/2305.15717)這樣取得的資料沒有這麼優質。![image](https://hackmd.io/_uploads/SknmZHaj1e.png) * OpenAI有GPT-3,Google有PaLM作為Pre-train weight,但一般使用者沒有。因此META釋出了[LLaMA1](https://arxiv.org/abs/2302.13971)、[LLaMA2](https://arxiv.org/abs/2307.09288),讓大家可以使用