iT邦幫忙

鐵人檔案

2026 iThome 鐵人賽
回列表
AI Engineering

一行 torch.compile 背後發生了什麼?30 天深度拆解 PyTorch 編譯器 系列

torch.compile 一行就能讓模型加速,但沒人告訴你背後發生了什麼。本系列用 30 天拆解 PyTorch 編譯器的三層架構:Dynamo 怎麼捕獲 Python、AOTAutograd 怎麼生成 backpropagation、Inductor 怎麼產出 GPU kernel。這個系列會直接深入原始碼、用簡單易懂的圖來幫助理解,把黑盒子打開給你看。讀完你會知道它什麼時候快、為什麼慢以及怎麼修。

參賽天數 22 天 | 共 22 篇文章 | 1 人訂閱 訂閱系列文 RSS系列文 團隊源來適愛開緣
DAY 1

Day 1 | torch.compile 是怎麼長出來的?

前言 大家好,我是 Guan-Ming。目前是台大電機所 CS 組的研究生,對於 AI Infra 以及 AI Compiler 的開發和研究都很有興趣。平常也...

2026-08-17 ‧ 由 guan404ming 分享
DAY 2

Day 2 | torch.compile 之後,你的 Python 去哪了?

前言 昨天我們簡單的把 PyTorch 的發展史介紹了一下,看到 torch.compile 是 PyTorch 在「保住 Eager 語意」的前提下,第三次嘗...

2026-08-18 ‧ 由 guan404ming 分享
DAY 3

Day 3 | TorchDynamo?它憑什麼攔得住你的 Python?

前言 昨天帶大家走完了 torch.compile 的四大站,現在應該對整個編譯的骨架有了基本的認知。而在這個 pipeline 中第一站就是 Dynamo,我...

2026-08-19 ‧ 由 guan404ming 分享
DAY 4

Day 4 | 走進 TorchDynamo 的心臟:InstructionTranslator

前言 昨天講到 Dynamo 把 eval_frame 指標換掉、接手你的 frame 之後,會「符號式地執行 bytecode」,然後就快轉過去了。今天我們就...

2026-08-20 ‧ 由 guan404ming 分享
DAY 5

Day 5 | TorchDynamo 裡有替身使者? VariableTracker 登場!

前言 昨天 InstructionTranslator 的 stack 上面放的東西,一直被含糊地叫「符號替身」。今天準備來把它講清楚。原始碼位置在 torch...

2026-08-21 ‧ 由 guan404ming 分享
DAY 6

Day 6 | TorchDynamo 的高速驗票員:Guard

前言 Day 4 說 InstructionTranslator 翻譯時會「順手記下這張圖的前提」,Day 5 說 bake 常數的代價「由 Guard 記帳」...

2026-08-22 ‧ 由 guan404ming 分享
DAY 7

Day 7 | 改的值去哪了?TorchDynamo 的隨行記帳員 SideEffects

前言 經過前兩天的介紹,現在 Dynamo 手上已經有兩本帳了。Source 記「出處」,也就是每個值在 runtime 要怎麼拿。Guard 記「前提」,也就...

2026-08-23 ‧ 由 guan404ming 分享
DAY 8

Day 8 | TorchDynamo 的中央倉庫:OutputGraph

前言 前四天我們講了 TorchDynamo 四條重要的生產線,分別是 InstructionTranslator(Day 4)、VariableTracker...

2026-08-24 ‧ 由 guan404ming 分享
DAY 9

Day 9 | 新的 bytecode 誰來寫?TorchDynamo PyCodegen!

前言 Day 3 的時候我們說過,eval hook 最後會還給 CPython 一段改寫過的 bytecode。而之後的五天其實都在講「分析」這一側,依序是翻...

2026-08-25 ‧ 由 guan404ming 分享
DAY 10

Day 10 | TorchDynamo 的破「圖」重接,Graph Break and Resume!

前言 在 Day 4 InstructionTranslator 的結尾有一句話說:Graph Break 不是查表失敗,而是 handler 做到一半主動舉手...

2026-08-26 ‧ 由 guan404ming 分享