torch.compile 一行就能讓模型加速,但沒人告訴你背後發生了什麼。本系列用 30 天拆解 PyTorch 編譯器的三層架構:Dynamo 怎麼捕獲 Python、AOTAutograd 怎麼生成 backpropagation、Inductor 怎麼產出 GPU kernel。這個系列會直接深入原始碼、用簡單易懂的圖來幫助理解,把黑盒子打開給你看。讀完你會知道它什麼時候快、為什麼慢以及怎麼修。
前言 在 Day 5 的時候我們說 Python int 被 bake 成常數是一場賭注,這個賭輸的代價則是 recompile,我們在那篇的結尾埋了一個伏筆:...
前言 Dynamo 的故事在昨天正式收尾,今天進入 pipeline 的第二站。先把問題攤開來。Dynamo 交出來的 FX Graph 只有 forward,...
前言 昨天說 AOTAutograd 拿 FakeTensor 重跑 forward、讓 autograd 引擎展開 backward 的路上,還順手做了兩層轉...
前言 昨天 Functionalization 把圖變成了純函數式,但圖還是很大一塊的。一個 LayerNorm 節點背後頂著十幾個基本運算,一個 GELU 藏...
前言 還記得前面留下的小小懸案嗎?那時候我們看到 forward 圖除了 loss 之外,還多輸出了 le 和 permute 這兩個中間值給 backward...
前言 昨天 min-cut partitioner 把 joint graph 一刀切成 forward 和 backward,AOTAutograd 這一站算...
前言 昨天用 FakeTensor 把「不碰真資料也能知道每個 node 的 shape 與 dtype」這件事講完,Part 2 的 AOTAutograd...
前言 昨天總覽了 Inductor 的 pipeline,從接下 ATen 圖到吐出 kernel,中間要經過 lowering、scheduling、code...
前言 昨天 Lowering 把 FX Graph 翻成了 loop-level IR,每個 node 都知道「自己的第 i 格怎麼算」。但 IR 就緒後還缺兩...
前言 昨天看了 Scheduler 怎麼把 buffer 排成一列 node、算好依賴,一輪一輪兩兩配對合併,回答的是「誰跟誰有機會配對」,今天要回答的是「憑什...