[筆記]吳恩達Generative AI with Large Language Models最新大型語言模型線上課程 Week1
課程連結:Generative AI with Large Language Models
費用:Free(旁聽影片)
Introduction
現今主流的幾個foundation Model(或稱Base),依大到小排序
- GPT
- BLOOM
- FLAN-T5(在課程中使用這個open source model)
- LLaMa
- PaLM
- BERT
因為訓練這些Foundation Model需要大量的運算資源和訓練資料,基本上都是直接使用這些model或者進行微調,而不會自己從頭訓練。
重要名詞定義
- Prompt: 對Model提出問題
- Context Window: 輸入Prompt的區域(Space/memory)。每個Model所需要的設定不一樣,但一般都可以輸入上千字。
- Completion: Model根據Prompt提出的指示,產生出來的結果
- Inference:Model產生Completen的行爲
Transformers Architecture
「Attention is all you need」提案Transformer 。這領域最重要的論文。
傳統的RNN擅長處理相鄰的訊息。但語言中常常重要的單字是分散在句子兩端。
Ex:大麥町是個全身有黑色班點的狗()
- Token:把文字轉換成特定的數字符號(要注意一般不是一個文字對應一串數字,而是用更小單位,ex: played 可能會拆解成play 和ed兩部分)。model一定要用當初Tokenize的方式。
- Embedding:把Token投射到更高維的向量空間(embedding space)。建立各個Token間的關係。Model可以透過各Token間的距離和角度理解文字間的關係
Transformers的運作簡介:
主要有Encoder和decoder兩部分
- Encoder: 把Prompt輸入的內容編碼(encode),依據對文本內容的理解,將每一個token都轉換成一組向量
- Decoder: 依據encoder傳來的向量產生一組新的token
Generating text with transformers
Model有三大類型
- Encoder Only Model:現今比較少用,只能對應固定序列的文字。可用來做文本內容的分類
- Encoder Decoder Model: input sequence 和output sequence 可以為不同長度 (Ex: BERT)
- Decoder Only Model:現在也很熱門,可以用在許多泛用的用途上。(Ex: GPT系列, BLOOM, LLaMa)
Transformers 的介紹建議直接看影片。或者這個網站個人覺得寫得很不錯。The Illustrated Transformer
但講師也提到只要有大概的概念,可以讀懂各個Model的說明文件就可,大部分的人不需要了解到太細節。
Prompting and Prompt engineering
In-context learning: 在prompt的內容中直接給Model學習資料和提示。有下面幾種種類
Zero shot inference: 沒有給任何提示的提問
Prompt內容:
Classify this review:
I loved this movie!
Sentiment:
正確的completion內容:
Classify this review:
I loved this movie!
Sentiment: Positive
One Shot inference:給一個範例的prompt
Prompt內容:
Classify this review:
I loved this movie!
Sentiment: Positive
Classify this review:
I don’t like this chair!
Sentiment: Negative
Few shot inference:給多個範例的prompt
大的模型通常很擅長zero shot inference。但小一點的模型就要逐步增加範例數
當在prompt中加入超過5–6個以上的example也還沒辦法有好的表現時,就需要考慮直接fine-tuning model
Generative configuration
LLM Model常見的參數如下
- Max_new_token: 最大的token數。回應如果超過這個設定值,會強制中斷。
LLM Model每一次生成Token時,是透過softmax函數列出所有候補Token的機率。這種方式的回應比較固定,也習慣選用特定的字。
- Greedy方法:選擇有最高機率的Token或Word。
- Random(-weighted) Sampling: 根據每個token的機率,隨機選擇回應的token。這種方式回應會比較多元,比較有創意。但也有風險,導致Model回答完全不同的
- Sample top K:限制Model只從top-k(前k名)的候補中選擇
- Sample top P:限制Model只從機率超過p的候補中選擇
- Temperature: 控制機率分布的參數。數值高,機率分佈會散佈在許多後部,回應的Random程度高。數值低,機率分佈會集中在少數的token候補,Random程度低。大部分default是1。
Generative AI project lifecycle
設計生成AI的Lifecycle有下面的流程
- Scope:決定使用的目的或情境(ex:翻譯、生成短文、摘要、搜尋 )
- Select:選擇使用現成的model,或者自己要pretrain。一般來說都是直接使用現成model
- Adapt and align model:調整model
- Prompt engineering:從指令著手
- Fine-tuning:
- Align with human feedback:用強化學習的方式改善
- Evaluate:之後的課程會介紹如何用指標評估LLM
- Application integration
- Optimize and deploy model for inference: 優化和部署model
- Augment model and build LLM powered application:開始應用
Pre-training large language models
從Training data個觀點來理解各種Model的特性和應用
Encoder Only Model:又稱autoencoding model,使用Masked Language Modeling
- 假設訓練資料的句子是”I like apples”,會把其中一部分字屏蔽掉(ㄇmask),例如”I <mask> apples”要求model 猜出<mask>遮住的字是什麼
- 善於:情感分析、文字分類
- Model:BERT、ROBERTA
Decoder Only Model:又稱Autoregressive model,使用Casual Language Model(CLM),用統計方式逐步產生文字
- 假設訓練資料的句子是”I like apples”,會給model 第一個字“I”然後要機率興去猜下一個是什麼?
- 善於:生成文章
- Model:GPT、BLOOM
Encoder Decoder Model: 又稱Sequence-to-sesquence model。使用Span corruption。
- 假設訓練資料的句子是”I like apples”,會把其中一部分字屏蔽掉(用<x>標示),例如”I <x> apples”。但要猜出<x>的內容和某種叫sentinel token的符號。(沒有聽很懂他的意思)
- 擅長:翻譯
- Model:T5、BART
input sequence 和output sequence 可以為不同長度 (Ex: BERT)
一般來說,越多parameter。Model表現越好
Computational challenges of training LLMs
因為LLM model很大。在訓練時每個parameter需要儲存優化用的參數,像是Adam的momentum之類的,因此訓練時需要大約model的20倍的GPU memory。即使只有4G的model,都需要80G的GPU。這在最新的GPU都算很大的資源了。
Quantization(量子化): 把modol中的32-bit floating (FP32)降到FP16或者更小。犧牲單一parameter數值表現的精度,減少Model大小。
Scaling laws and compute optimal model
Model performance 是由三個要件決定:dataset size, Model size, compute budget
泛用的估算運算量單位「1 petaflops/s-day」: floating point operations performed at rate of 1 petaFLOP per second for one day
1 petaflops/s-day大約等於8顆NVIDIA V100s GPU 全力運用24小時的計算力
越好的晶片,提供算力越強。(ex 2顆NVIDIA A100 GPU就有1 petaFLOP/s-day)
可以搜尋各種model類型(GPT, T5, Bert)和各種對應的大小,需要多少訓練時間。
Compute budget vs model performance: 毫無意外預算越多,model越強。目前還沒看到飽和(因此各公司軍備競賽還在繼續)
在固定預算下,增加DATA SIZE和model size都會提升model performance 。
根據chinchilla paper: 試著建議model size和data set size的平衡點。他認為GPT 3 model應該增加data size,減少model size。來達到更好的效能。像是Llama有比較好的平衡。新的BloombergGPT根據chinchilla的建議,利用比較小的model size(50B)也達到了很好的表現
Domain specific training
像是法律、醫療等領域有非常特殊專有名詞和書寫方式的領域,就比較不適合使用泛用的LLM,而是獨自訓練。