* 舊版 [[Andrej Karpathy's Intro to Large Language Models]]
# New 3h31m video on YouTube: Deep Dive into LLMs like ChatGPT
https://www.youtube.com/watch?v=dWr1eTeK6p4
https://x.com/karpathy/status/1887211193099825254
## Part 1: Pre-training 得到 Base model "internet document simulator"
* Pretraining 00:01:00
* Step 1: download and preprocess the internet
* FineWeb https://huggingface.co/spaces/HuggingFaceFW/blogpost-fineweb-v1
* CommonCrawl
* 
* Step 2: tokenization 00:07:47
* Convert between raw text into sequences of symbols(tokens)
* 文字 -> utf-8 -> bits -> bytes -> tokens (用 BPE 算法,例如 cl100k_base 有 100,277 種 tokens)
* examples:
* ~5000 unicode characters
* ~= 40000 bits (2 possible tokens)
* ~= 5000 bytes (256 possible tokens)
* 1300 GPT-4 tokens (100,277 possible tokens)
* https://tiktokenizer.vercel.app/
* Step 3: neural network training 00:14:27
* 從 dataset 中一直挑 4k or 8k or 16k 的 context 來訓練 (看你有多少運算資源),不斷訓練去調整 weights
* 調整 weights 就會得到不同的 output 機率預測
* ![[Pasted image 20250305222435.png]]
* ![[Pasted image 20250305222853.png]]
* 視覺化 https://bbycroft.net/llm
* 這種結構叫做 Transformer
* inference 推論階段 00:26:01
* to generate data, just predict one token at a time
* 本質上有隨機性,最後得到的重組版本,和原本訓練資料不會完全一樣
* 推論就是不斷從機率分佈中,預測下一個詞
* ![[Pasted image 20250305224240.png]]
* 和 ChatGPT 對話時,是和已經訓練好參數已經固定的模型做對話,讓模型做推論
* 案例 GPT-2: training and inference 00:31:09
* GPT: generative pre-trained transformer
* 很中意,因為這是首個整合現代 stack 的 LLM
* GPT-2 was published by OpenAI in 2019
* Paper: "Language Models are Unsupervised Multitask Learners"
* Transformer neural network with:
* 1.6 billion parameters
* maxium context length of 1024 tokens
* trained on about 100 billion tokens
* My reproduction with llm.c: https://github.com/karpathy/llm.c/discussions/677
* 為何現在做可以把訓練成本降到 100 美金
* 因為 dataset 的品質提升了
* 主要是硬體變更快了
* 軟體也更有效率了
* demo 訓練過程
* ![[Pasted image 20250305234325.png]]
* 租雲端 8 x H100 在 https://lambdalabs.com/ 跑
* 到此產出 **Base model 是 internet text token simulator**
* 這還不好用,不是 AI 助理
* 目前只會重新拼揍網路上的內容
* Llama 3.1 base model inference 00:45:45
* "Base" models in the wild
* OpenAI GPT-2 (2019): 1.6 billion parameters trained on 100 billion tokens
* Llama 3 (2024): 405 billion parameters trained on 15 trillion tokens
* What is release of a model?
* The code for running the Transformer (e.g. 200 lines of code in Python)
* The paramsters of the Transformer (e.g. 1.6 billion numbers)
* 有釋出了 Base 和 Instruct 版本
* https://hyperbolic.xyz/ 這家公司有提供 llama 3.1 base model
* https://app.hyperbolic.xyz/models/llama31-405b-base-bf-16
* base model 還不是人工助理,只是 token autocomplete
* 但 base model 已經學習到許多世界知識,儲存在參數之中,壓縮在權重裡面,就像是一個 zip 有損檔案
* 透過適當的提示,可以把知識引出來。若是網路上常出現的資料,會比較準確。因為知識不是完整儲存的,而是模糊的,而是透過統計機率來描述的。
* 例如直接複製 wikipedia 的一個段落,會開頭直接引出一模一樣的內容,但輸出一段後才會偏離
* 針對wikipedia 這種優質資料,訓練時會讓他更多次反覆學習,導致會記憶的更好更完整
* 如果是完全沒學過的知識,就是用猜的了,叫做幻覺,只是用機率去做猜測
* base model 透過 prompt design 還是可以有用,例如用 few-shot prompt
* in-context learning
* 需要模擬對話當作 few-shot prompt,就可以做出 AI assistant 對話
* ![[Pasted image 20250306003247.png]]
* The "'psychology" of a base model
- It is a token-level internet document simulator
- It is stochastic / probabilistic - you're going to get something else each time you run
- It "dreams" internet documents
- It can also recite some training documents verbatim from memory ("regurgitation")
- The parameters of the model are kind of like a lossy zip file of the internet
- => a lot of useful world knowledge is stored in the parameters of the network
- You can already use it for applications (e.g. translation) by being clever with your prompts
- e.g. English:Korean translator app by constructing a "few-shot" prompt and leveraging "in-context learning" ability
- e.g. an Assistant that answers questions using a prompt that looks like a conversation
- But we can do better...
- Base 模型的「心理學」
- 它是一個以 Token 為單位的網路文件模擬器
- 它具有隨機性/機率性,每次執行都可能生成不一樣的結果
- 它會「夢想」出網路上的文件內容
- 它也能直接背誦出部份訓練文件的原文(「反芻」)
- 這個模型的參數有點像互聯網的有損壓縮檔
- 也就是說,許多有用的世界知識都存放在網路的參數之中
- 其實,光靠聰明地撰寫 Prompt,你已經可以把它應用在各種情境(例如翻譯)
- 舉例來說,可以用「少量範例教學」(few-shot)以及「上下文學習」(in-context learning)的能力,打造一個英-韓翻譯應用
- 再比如,透過看起來像一段對話的 Prompt,做成一個能回答問題的助理
- 不過,我們還能做得更好……
## Part 2: Post-training: Supervised Finetuning 得到 SFT 模型 (An assistant)
https://www.youtube.com/watch?v=dWr1eTeK6p4
- [ ] Part 2: post-training
* 00:59:23 pretraining to post-training
* 訓練成本會比 pre-training 低得多,因為 dataset 小得多
* 基本上訓練流程跟算法是很類似的
* base model 要訓練好幾個月,微調只需要幾個小時
* 1:01:06 post-training data (conversations)
* 建立對話資料集,數十萬筆,人工標記準備
* ![[Pasted image 20250315135821.png]]
* 格式 ![[Pasted image 20250315173119.png]]
* **重點是所有對話內容都會變成單一的 one-dimensional token 序列**
* Training language models to follow instructions with human feedback https://arxiv.org/abs/2203.02155
* 首次用對話來訓練微調 LLM,全靠人類準備訓練資料
* paper 裡面有寫人類應該如何標記回答: Be helpful, Be truthful, Be harmless 並因此模型有此特質
* OpenAI 沒開發 dataset,這另有人做的開源版本 https://huggingface.co/datasets/OpenAssistant/oasst1
* 現在可以靠現成的 LLM 模型來合成對話資料後,人類再修改調整
* https://github.com/thunlp/UltraChat 對話資料庫,大部分是合成資料的
* ![[Pasted image 20250315173050.png]]
* 跟 AI 對話,是模型根據訓練資料的統計匹配結果,去模仿人類標記資料,這些資料由公司制定規則所指導人類寫出的
* 如果你的問題在 dataset,那麼 AI 的輸出有可能會一模一樣
* 01:20:32 hallucinations, tool use, knowledge/working memory
* 模型心理學,特殊的認知現象
* 幻覺: 憑空編造沒有根據的資訊
* 原因: 人類標注的 dataset 裡面都是肯定的答案,因此模型會模仿這樣的回答行為: 給你最有可能的正確答案,而不會回答不知道
* 每次問,還會給不一樣的答案
* 最新的模型有改善
* ![[Pasted image 20250315192508.png]]
* 解決方式一: Meta 3 的改善方式 https://arxiv.org/abs/2407.21783
* 有個驗證流程,反覆測試模型知道哪些事實和知識範圍
* 然後針對模型不知道的問題,增加 dataset 要回答不知道
* 這招很有效,因為模型本身其實已經有自我認知,只是需要被教可以回答不知道
* 解決方式二: 可以 search
* 模型對接觸過的訓練資料,如果看得不夠多遍,會只是模糊的印象
* 訓練模型產生 <SEARCH_START>search query<SEARCH_END> 來啟動搜尋功能
* 看到此 tokens 時,就會暫停生成,先去搜尋
* 搜尋結果塞回來 context window,然後模型再繼續生成
* context window 就是 working memory,也會一起進到模型的神經網路被看見,喚起模糊的記憶
* 需要數千筆就可以在訓練模型學會這個工具的運作
* ![[Pasted image 20250315192518.png]]
* Vague recollection vs. working memory
* Knowledge in the parameters == Vague recollection (e.g. something you read 1 month ago)
* Knowledge in the tokens of the context window == Working memory
* 「模糊的回憶」與「工作記憶」
- 存在於模型參數中的知識 == 模糊的回憶(例如:你在一個月前讀到的資料)
- 存在於對話上下文視窗中的知識 == 工作記憶
![[Pasted image 20250315194317.png]]
* 01:41:46 knowledge of self 自我認知
* 例如有人問AI說: What model are you? Who build you? Who are you?
* 對模型來說,這是沒有意義的問題
* 例如有些模型會回答 build by OpenAI,但這不表示就是 OpenAI 做的
* 只是因為模型被訓練過回答這種問題,而網路上已經很多這種 OpenAI 對話資料
* 如何修正? 需要人為設計:
* 在開源模型 https://huggingface.co/datasets/allenai/tulu-3-sft-olmo-2-mixture 完全開源
* 在 SFT 資料中,有個 https://huggingface.co/datasets/allenai/olmo-2-hard-coded 有準備自我認知資料 240組
* 或是在 system prompt 中,先寫死自我認知,寫死模型的簡要資訊,可以介紹自己
* 01:46:56 models need tokens to think 模型需要 tokens 來思考解題
* ![[Pasted image 20250315205147.png]]
* 以上兩種訓練資料,左邊會很糟,右邊比較好
* 因為左邊答案 3 太早出來了,變成你在訓練模型一步就猜出答案
* 右邊將計算過程分散在整個輸出,讓模型一步一步推導出來答案,每一步都是簡單的推測
* 也因此模型學會一步一步處理,這些中間步驟是模型需要的,不然就無法算出最後答案
* 無論是訓練或實際運作,模型都是從左到右依序處理一串符號 tokens
* ![[Pasted image 20250315205927.png]]
* 預測每一個 token 的運算量是大致固定的 (只會隨著輸入 tokens 長度增加會微幅增加)
* 不會有為了解決困難問題而讓單一 token 增加運算量
* 因此複雜問題需要的運算量,需要透過分配到多個 tokens
* 如何刁難?
* 難一點的問題,要求不要思考(answer the question in a single token. i.e. immediately just give me the answer and nothing else)
* 這樣就會答錯
* 不過中間步驟也可能出現數學計算,就像用腦子心算
* 推薦 Use Code,使用 Python 來算比較精準
* 這也是一種工具
* 02:01:11 tokenization revisited: models struggle with spelling
* 計數問題,也是模型不太會的事情
* 例如: How many dots are below? .................................................................................................................................................................................
* 因為模型看的是 tokens !!!
* 如果改用 Code Interpreter 就可以
* 還有很多認知層面問題,技術盲點
* 拼字相關 spelling tasks 問題都不會有好表現,因為模型看到的是 tokens
* 例如: Print back the following string, but only print every 3rd character, starting with the first one. "Ubiquitous"
* e.g. 請重複以下文字,但只印出每第三個字母: abcabcabcabc
* 若 Use Code 就可以解答正確是 cccc
* 用 tokens 是為了提升效率。很多人想拋棄 tokens 設計,只用 chacter 或 bytes 層級來做模型。不過這樣會變沒有效率..... 還不知道怎麼辦
* 例如熱門問題: How many 'r' are there in 'strawberry' ?
* 人們覺得 AI 模型連奧數都可以,為啥這會算錯
![[Pasted image 20250315220207.png]]
* 02:04:53 jagged intelligence 一些很簡單卻答錯的問題
* 例如 What is bigger 9.11 or 9.9?
* 讓人搞不懂
* 有 paper 研究認為是因為 "聖經章節"
* 因為 9.11 節的確排在 9.9 之後
* 因此模型混亂了
* 仍無法被完全理解原因
* LLM 是個神奇的機率系統: 這是瑞士起司
![[Pasted image 20250315220930.png]]
## Part 3: Post-Training: Reinforcement Learning 得到 RL 模型
* 02:07:28 supervised finetuning to reinforcement learning
* ![[Pasted image 20250316011152.png]]
* 讓大型語言模型 (LLMs) 去上學 https://ihower.tw/blog/archives/12633
* 練習題,你要自己動手做,自己找出解題方法,只有正確答案可以驗證
* 02:14:42 reinforcement learning 強化學習
* ![[Pasted image 20250316020747.png]]
* 這裡有四種解法,human labeler 到底要用哪一種做訓練?
* 設法得到正確答案,但也希望過程容易理解
* 每一個 token 預測不應該跳太快,例如 解法4,直接從 = 號就接答案 3,太快了
* 但還是很難判斷 1,2,3 到底哪些步驟對 LLM 難度適中? 畢竟人類跟 LLM 思考方式不同
* 假設先不管過程是否人類容易了解,那麼中間步驟應該讓 LLM 自己找出最適合的方式
* https://huggingface.co/playground
* 強化學習原理
* 不斷輸出不同的解法,保留那些正確答案的解法
* ![[Pasted image 20250316021956.png]]
* 用不同 prompt 產生不同過程 15 次,正確答案有 4。拿挑正確的解法過程來訓練
* 注意: 這些解法是模型自己想的,不是人類標注的
* 有目標,模型善用自己的知識自己找解法,不斷測試和驗證
* 另外,SFT 仍是很有幫助,能讓解法一開始就接近正確的,是一種初始設定
* 做 pre-training 跟 SFT 已經很多年了,是業界標準流程
* RL 則還很新還在發展中的階段,很多細節沒公開
* 怎麼挑最佳解答
* 要花多久時間訓練
* prompt 如何分配
* 訓練的流程等等
* 02:27:47 DeepSeek-R1
* 第一家完整公開強化學習細節的公司,可以重現,大幅提升模型的推理能力
* https://arxiv.org/abs/2501.12948
* AIME 準確率隨著迭代次數增加而提升
* 平均回答的長度也增加了,透過不斷重新審視思考過程,例如圖中的 Wait, wait....
* 自己學會解題策略、處理問題的方式、用不同角度去嘗試、舉一反三,試出解法,驗證
* ![[Pasted image 20250316135211.png]]
* 比較 gpt-4o 和 deepseek r1 解題: 前者像模仿專家,後者則像人在思考一直blahblahblah,輸出文字量很大
* 推薦 together.ai 跑 DeepSeek R1
* 需要複雜的推理,推薦用思考模型
* 簡單的一般知識性問題,若用思考模型會 overkill,這種還是推薦用非推理模型
* Google Gemini flash thinking
* 這是最新的研發方向
* 02:42:07 AlphaGo
* 強化學習不是新鮮事了
* DeepMind AlphaGo 還有紀錄片
* AlphaGo 自我對弈
* paper: https://discovery.ucl.ac.uk/id/eprint/10045895/1/agz_unformatted_nature.pdf
* ![[Pasted image 20250316151436.png]]
* 一樣有 RL 超越 Supervised Learning 的時刻
* SFT 有個極限達不到,單純只是模仿人類專家,是無法超越的
* 不會受限於人類的極限
* 展現 RL 的能力
* RL 可能會發展出完全不同於人類的思維,人類都想不到的
* Move 37 https://www.youtube.com/watch?v=HT-UZkiOLv8&t=181s
* 未來 LLM 甚至不需要受限於英語來做思考
* 這裡訓練出來的思維,是否可以知識 transfer 到不可驗證的創作問題,還是未知數
* 02:48:26 reinforcement learning from human feedback (RLHF)
* 上述的 RL 是在可驗證的領域 verifiable domains,有標準答案可以評分
* 有標準答案可以比對
* 或用 LLM judge 可以打分的
* 可以自動化,不用人工介入
* 如何在無法驗證的領域中進行學習,沒有標準答案的
* 例如: 笑話、寫詩、摘要。幽默很難
* 你可以找人類專家來評分,但是每次迭代要看上千個 prompt 產生出來的上千的結果: 沒辦法大規模訓練啊
* RLHF paper: https://arxiv.org/abs/1909.08593
* 很多作者現在去 Anthropic co-founders 惹
* 針對無法驗證的領域,提出強化學習方法
* 採取間接的方式,我們訓練一個完全獨立的獎勵模型,模仿人類評分的方式
* 只需要少數人評分用來訓練出獎勵模型,就可以用這個模型跑強化學習了
* 標記員只需要排序結果,這樣比較簡單,因為人類排序比打分簡單
* 模擬人類喜歡的工具
* ![[Pasted image 20250316153056.png]]
* 優點:
* 任意領域都可以用
* 比起要創造內容,人類做判斷比較簡單
* 有些需要創意的任務,標注者也不知道怎麼寫
* 標注者不需要創作,只需要比較排序就好了
* 缺點:
* 並不是真的人類,會有誤差
* 但真正無法 scale 的問題: RL 很會鑽模型漏洞、操縱模擬結果
* reward model 也是 transformer model 類神經網路
* 可以莫名其妙得到高分: 一開始迭代會逐漸變好,然後突然莫行其妙變很爛,因為獎勵模型給很高分
* 叫做對抗性樣本 Adversarial Examples
* 有數不清的對抗性樣本,就算一直去調獎勵模型,只要 RL 跑夠久,總是會冒出來漏洞,用無意義內容騙到高分
* 因此目前 RL 只能跑幾百次迭代,就要喊停了
* RLHF 不是真正能夠創造神奇的 RL,因為他不能一直跑超越人類
* 真正的 RL 沒辦法作弊,可以一直迭代
* RLHF 這比較像是微調的方式而已,可以小幅度提升性能
* gpt-4o 有用 RLHF
* ![[Pasted image 20250316153112.png]]
## Part 4: 未來展望
* 03:09:39 preview of things to come
* 多模態: 圖片跟聲音都轉成 tokens 來訓練
* Agents: 串連多個任務,長期穩定執行,搭配人類去監督AI行為
* AI 更普遍的背後執行
* Computer Use
* 研究在 test-time 的訓練
* 例如處理影片,單靠 long context-window 不行,需要更多技術突破
* 03:15:15 keeping track of LLMs
* https://lmarena.ai/
* 最近幾個月開始被鑽漏洞操縱了: 例如 Sonnet 比預期偏後面、Gemini 則偏前面
* https://buttondown.com/ainews
* X / Twitter
* 03:18:34 where to find LLMs
* 開源可以去 together.ai 使用
* base model 得去 hyperbolic
* 本機跑 LMStudio
* 03:21:46 grand summary
![[Pasted image 20250316153125.png]]
# New 2h11m YouTube video: How I Use LLMs
https://x.com/karpathy/status/1895242932095209667
https://www.youtube.com/watch?v=IrByFa_E8s8
這是更入門的影片,主要是 demo AI app 功能
* 挺入門的從 ChatGPT 開始介紹
* 你在跟一個 壓縮檔 對話
* 簡介 thinking 模型
* tools use 示範使用
* web search
* deep research
* 大神定義是 thinking + web search
* file upload
* python interpreter
* 可惜的是,目前你必須知道這些模型有具備哪些工具
* 例如 grok3 沒有 code interpreter
* 所以算數會錯
* 例如 claude 沒有 web search
* advanced data analytics
* claude artifact
* app
* mermaid 圖表
* Cursor demo
* fake audio
* 語音辨識、語音合成 demo
* superwhisper, wisprflow, macwhisper
* true audio input/output
* advanced voice mode
* grok 3 也有 voice mode,而且限制較少。openai 很保守。
* notebooklm 產生 podcast
* 上傳 image 解讀
* 例如先要求做 OCR,然後再提問
* 產生圖片
* DALL-E
* 這是用另外獨立的模型
* 解讀 video
* 手機用視訊對話
* AI video 生成
* Google Veo-2
* OpenAI Sora
* ChatGPT memory
* ChatGPT customize
* custom GPT