torch.compile 一行就能讓模型加速,但沒人告訴你背後發生了什麼。本系列用 30 天拆解 PyTorch 編譯器的三層架構:Dynamo 怎麼捕獲 Python、AOTAutograd 怎麼生成 backpropagation、Inductor 怎麼產出 GPU kernel。這個系列會直接深入原始碼、用簡單易懂的圖來幫助理解,把黑盒子打開給你看。讀完你會知道它什麼時候快、為什麼慢以及怎麼修。
前言 大家好,我是 Guan-Ming。目前是台大電機所 CS 組的研究生,對於 AI Infra 以及 AI Compiler 的開發和研究都很有興趣。平常也...
前言 昨天我們簡單的把 PyTorch 的發展史介紹了一下,看到 torch.compile 是 PyTorch 在「保住 Eager 語意」的前提下,第三次嘗...
前言 昨天帶大家走完了 torch.compile 的四大站,現在應該對整個編譯的骨架有了基本的認知。而在這個 pipeline 中第一站就是 Dynamo,我...
前言 昨天講到 Dynamo 把 eval_frame 指標換掉、接手你的 frame 之後,會「符號式地執行 bytecode」,然後就快轉過去了。今天我們就...
前言 昨天 InstructionTranslator 的 stack 上面放的東西,一直被含糊地叫「符號替身」。今天準備來把它講清楚。原始碼位置在 torch...
前言 Day 4 說 InstructionTranslator 翻譯時會「順手記下這張圖的前提」,Day 5 說 bake 常數的代價「由 Guard 記帳」...
前言 經過前兩天的介紹,現在 Dynamo 手上已經有兩本帳了。Source 記「出處」,也就是每個值在 runtime 要怎麼拿。Guard 記「前提」,也就...
前言 前四天我們講了 TorchDynamo 四條重要的生產線,分別是 InstructionTranslator(Day 4)、VariableTracker...
前言 Day 3 的時候我們說過,eval hook 最後會還給 CPython 一段改寫過的 bytecode。而之後的五天其實都在講「分析」這一側,依序是翻...
前言 在 Day 4 InstructionTranslator 的結尾有一句話說:Graph Break 不是查表失敗,而是 handler 做到一半主動舉手...