L11|矩陣乘法:從 Python 迴圈到快五百萬倍(Matrix multiplication)

零基礎提示

  • 先讀 數學補充:§7 矩陣乘法
  • Part 2 是大學程度:中三同學先求看懂概念,不用每行程式都會
  • 字幕:離線網站選「中英」(電腦翻譯,大意正確)
  • 看不懂的詞查 白話小辭典

先看學生的擴散實驗並學讀論文(DiffEdit),再從純 Python 實作矩陣乘法,用廣播與 GPU 把速度提升約五百萬倍。 (Student diffusion experiments and how to read a paper (DiffEdit), then matrix multiplication from pure Python, sped up about five million times with broadcasting and the GPU.)

項目內容
所屬Part 2:Deep Learning Foundations to Stable Diffusion
影片YouTube
對應書本章節無對應章節(Part 2 以 notebook 為主)
原始頁面Lessons/lesson11
難度(F3 視角)★★★★★ 大學程度(F3 只求理解概念)

影片

本課重點

  1. 學生實驗:在兩個 prompt 之間插值做出平滑轉場、改進更新步驟、生成過程中逐步降低 guidance scale。
  2. 讀論文:DiffEdit:用文字條件擴散模型做語意編輯:自動找出要改的區域(mask),只改那裡。示範怎樣一步步讀懂論文,並準備數學符號工具(希臘字母表、Detexify)。
  3. 純 Python 矩陣乘法:三層迴圈寫出矩陣乘法,非常慢。對照 APL 與 PyTorch 的陣列寫法,介紹 Frobenius 範數。
  4. 廣播:形狀不同的張量自動擴展對齊,例如 (3,1) 和 (1,4) 相加得到 (3,4)。用廣播去掉內層迴圈,大幅加速。
  5. 五百萬倍加速:從 Python 迴圈 → 逐元素運算 → 廣播 → Numba 編譯 → PyTorch 內建 → GPU,總共快約五百萬倍。

關鍵概念

英文術語中文一句話解釋
Matrix multiplication矩陣乘法第一個矩陣的列與第二個矩陣的行做內積
Broadcasting廣播形狀不同的張量自動擴展後運算
Frobenius normFrobenius 範數所有元素平方和再開根號
APLAPL 語言以陣列運算為核心的程式語言
NumbaNumba把 Python 函數編譯成機器碼加速
Mask遮罩標記圖片中哪些區域要處理

認識關聯圖與重點圖

L11_關聯圖_202611041526

迷你範例

[[1,2],[3,4]] @ [[5,6],[7,8]] = [[19,22],[43,50]]

例如左上角:1×5 + 2×7 = 19。

練習題

  1. 計算 [[1,2],[3,4]] @ [[5,6],[7,8]]。
  2. 形狀 (3,1) 的張量加上形狀 (1,4) 的張量,結果形狀是什麼?為什麼?
  3. 為什麼把 Python 迴圈換成廣播或 GPU 運算會快很多?

資源連結

英文延伸資源(零基礎可以先略過,點開看)

相關筆記

Built with LogoFlowershow