llm-internals:把 Transformer 拆成可手算的數字練習
Learn LLM internals step by step - from tokenization to attention to inference optimization.
秒懂
- 它是什麼?
- 這個倉庫不是函式庫,而是一條從 tokenization 走到 attention、backpropagation 的教學索引,主體內容放在 Outcome School 的部落格與 YouTube。它適合想補數學直覺的人,不適合想找可安裝套件的人。
- 適合誰用?
- 如果你要的是「把 attention 的數字親手算一遍」這種補課,llm-internals 的索引值得先看 BPE 與 √dₖ 兩篇的目錄,確認推導密度符合你的程度再投入時間;如果你要的是能 import 的套件或可重複執行的測試,這個倉庫沒有提供,請直接找有程式碼的教材。決定跟進前先確認兩件事:那些連結是否仍可存取,以及 Apache-2.0 只涵蓋倉庫本身、不涵蓋外部部落格與影片的內容授權。
- 可以商用嗎?
- 可以。Apache-2.0 是寬鬆授權:你可以使用、修改並販售以它為基礎的軟體,只需保留著作權與授權聲明。
- 還在維護嗎?
- 有在維護。儲存庫最近一次提交在 15 天前。
- 用什麼語言寫的?
- GitHub 沒有提供這個儲存庫的主要語言。
以上回答依據專案的 GitHub 資料(最近同步於 2026年9月15日)與我們的分析,不構成法律意見。
開源專案深度解析
這個倉庫賣的不是程式,是一條閱讀路線
打開 llm-internals,你不會看到 requirements.txt,也不會看到可安裝的套件。README 的結構是一連串主題段落,每段先列出這一篇要涵蓋的項目,最後給一個連結,指向 Outcome School 的部落格文章或 YouTube 影片。也就是說,倉庫本身是目錄與導覽,真正的教材在站外。
這件事決定了它的使用方式。你 clone 下來之後,得到的是一份主題清單與外部連結,而不是可以在本機跑起來的東西。對照它的主題標籤(attention-is-all-you-need、attention-mechanism、learn-llm),目標讀者是正在學 LLM 內部原理、想從公式層面理解的人,而不是要找推論框架或微調工具的工程師。
README 開頭寫「Learn LLM internals step by step」,並註明這個系列會隨著作者寫更多文章與影片而持續成長。這句話同時說明了它的性質:這是一份會變動的索引,不是有版本號的成品。
從 tokenization 到 inference optimization 的實際排列
README 目前可見的順序是:先一支總覽影片,涵蓋 LLM、RAG、MCP、Agent、fine-tuning、quantization;接著是 tokenization 影片;再來是 BPE 的部落格文章;然後進入 attention 系列,包括 Q、K、V 的數學、√dₖ 縮放因子、causal masking;最後是 backpropagation、cross-entropy loss、decoding transformer architecture、feed-forward networks。
這個排列有它的道理。BPE 處理的是文字如何變成整數序列,attention 處理的是序列內部如何互相參照,backpropagation 與 cross-entropy 處理的是模型如何從錯誤中調整權重。先 tokenization 再 attention 再訓練,符合資料實際流過模型的方向。
但要注意顆粒度不一致。BPE 那一篇的目錄列了七個小節,從「The Problem: How to Break Text into Tokens?」一路到「Why BPE is Used in Modern LLMs」;√dₖ 那一篇列了九個小節,包含「Proving It Step by Step: Variance of the Dot Product is dₖ」。相對地,總覽影片的說明只列了六個名詞,沒有再細分。同一個倉庫裡,有的主題被拆到推導層級,有的只停在概念層級,閱讀時要自己判斷哪一篇值得逐行推。
Q、K、V 與 √dₖ:這裡的教學選擇是「先算再證」
README 對 attention 系列的描述方式值得注意。Q、K、V 那一篇的目錄是:The Attention Formula、Setting Up: From Words to Vectors、Creating Q, K, and V Matrices、Computing Attention Scores (Q x K^T)、Scaling the Scores、Applying Softmax、Computing the Final Output、Putting It All Together。這是一條從公式到數值的直線,中間不插入抽象討論。
√dₖ 那一篇更進一步,目錄裡直接出現「What Happens Without Scaling?」、「Why Do Dot Products Grow with dₖ?」、「Understanding Variance of the Dot Product」、「Proving It Step by Step: Variance of the Dot Product is dₖ」、「What Large Dot Products Do to Softmax」。這代表作者選擇用變異數推導來解釋縮放因子的必要性,而不是只說「避免 softmax 飽和」。
這個選擇有代價。變異數推導需要讀者對期望值與獨立隨機變數的和有基本掌握,README 沒有說明前置知識門檻。如果你的線性代數與機率已經生疏,這兩篇的後半段會卡住;如果你已經熟悉,前面「From Words to Vectors」那幾節會顯得冗長。這是教材的必然取捨,不是缺陷,但決定了你該從哪一篇切入。
怎麼取得與使用:沒有安裝步驟,只有連結
這個倉庫沒有提供安裝指令、環境變數或設定檔。README 裡可以執行的動作只有兩種:開啟影片連結,或開啟部落格連結。
影片部分,總覽那支的連結是 https://www.youtube.com/watch?v=lnfWvX66FUk,tokenization 那支是 https://www.youtube.com/watch?v=sK2s9I84EVI。部落格部分,BPE 指向 https://outcomeschool.com/blog/bpe-in-llms,Q/K/V 指向 https://outcomeschool.com/blog/math-behind-attention-qkv,√dₖ 指向 https://outcomeschool.com/blog/scaling-dot-product-attention,causal masking 指向 https://outcomeschool.com/blog/causal-masking-in-attention,backpropagation 指向 https://outcomeschool.com/blog/math-behind-backpropagation,cross-entropy 指向 https://outcomeschool.com/blog/math-behind-cross-entropy-loss,Transformer 架構指向 https://outcomeschool.com/blog/decoding-transformer-architecture。
要離線保存,只能 clone 倉庫本身,README 與 assets/banner.png 會留在本機,但文章與影片不會。這是使用這個專案時最實際的限制:內容的可用性取決於外部網域是否持續提供服務,而這一點不在倉庫的控制範圍內。
它不適合誰:想要可執行程式碼的人
README 提到 backpropagation 那一篇包含「Backpropagation in Python」,這是整份材料裡唯一明確提到程式語言的地方。但即使如此,倉庫本身沒有提供 .py 檔、notebook 或測試,你無法在本機驗證那些數字。
如果你要的是能跑、能改、能拿來當作自己專案起點的程式碼,這個倉庫幫不上忙。它也沒有涵蓋推論優化的實作細節,雖然標題寫著 inference optimization,但 README 可見的段落中,與此最接近的只有 quantization 這個詞出現在總覽影片的涵蓋清單裡,沒有對應的專門文章。
另一個要留意的點是內容的更新節奏。README 說系列會持續成長,但沒有版本號、沒有 changelog、沒有 release。倉庫的 last push 時間可以告訴你最後一次更動是什麼時候,卻不能告訴你哪幾篇文章已經過時。如果你需要引用特定公式的推導,最好直接看文章當下的內容,而不是依賴倉庫的索引。
替代路線:Karpathy 的實作導向教材與這份數學導向教材的差別
同一個學習目標下,常見的另一條路是 Andrej Karpathy 的 nanoGPT 與相關教學。兩者的差異不在品質,在切入點。
Karpathy 的路線是從一個可執行的 GPT 實作開始,你在本機跑訓練迴圈,看著 loss 下降,再回頭理解每個模組在做什麼。llm-internals 的路線相反:先用手算的數值把 Q、K、V 與 softmax 的關係走一遍,再談架構全貌。前者讓你對「跑起來長什麼樣」有感覺,後者讓你對「數字為什麼是這樣」有感覺。
選擇的判斷點很具體。如果你在讀 Transformer 論文時卡在「為什麼要除以 √dₖ」,llm-internals 的推導順序比直接讀程式碼更快給你答案。如果你在讀論文時卡在「這個張量的形狀到底怎麼變」,可執行的實作會比純數學推導更快。兩者不互斥,但先後順序會影響你卡關的時間。
還有一點:Karpathy 的教材是程式碼倉庫,可離線、可版本控制、可 diff;llm-internals 是連結索引,內容在站外。如果你的學習環境網路不穩定,或你需要在沒有網路的場合複習,這個差異會直接影響可用性。
授權、維護與升級成本
倉庫標示 Apache-2.0。這表示倉庫內的檔案(目前可見的是 README 與 assets 下的圖片)可以依 Apache-2.0 的條款使用與修改。但要注意,Apache-2.0 授權的是這個倉庫,不是它連出去的部落格文章與 YouTube 影片。那些內容的授權狀態在 README 中沒有說明,如果你打算轉載、翻譯或重製,需要另外確認。
維護成本方面,這個專案沒有依賴、沒有建置流程、沒有測試,所以沒有傳統意義上的升級負擔。你不會遇到 breaking change 導致的編譯失敗。真正的成本是內容層面的:外部連結可能失效,文章可能被改寫或搬移,而倉庫不會自動反映這些變化。
如果你打算把它當作團隊內部的學習清單,這一點值得先處理。你可以把 README 的主題清單複製出來,改成自己維護的版本,並在每一項旁邊註記你實際讀過的時間點。這樣即使原始連結變動,你的清單仍然可用。這不是對專案的批評,而是把外部依賴轉成內部資產的具體做法。
編輯結論
如果你要的是「把 attention 的數字親手算一遍」這種補課,llm-internals 的索引值得先看 BPE 與 √dₖ 兩篇的目錄,確認推導密度符合你的程度再投入時間;如果你要的是能 import 的套件或可重複執行的測試,這個倉庫沒有提供,請直接找有程式碼的教材。決定跟進前先確認兩件事:那些連結是否仍可存取,以及 Apache-2.0 只涵蓋倉庫本身、不涵蓋外部部落格與影片的內容授權。
社群筆記