L10|深入管線:自組 Diffusers 與 miniai 起步
用 VAE、U-Net、scheduler、tokenizer 手動組出完整管線;接著開始從零打造,談 Python 資料模型、張量與亂數產生器。
L10|深入管線:自組 Diffusers 與 miniai 起步(Diving Deeper)
零基礎提示
- 這一課不用額外數學
- Part 2 是大學程度:中三同學先求看懂概念,不用每行程式都會
- 字幕:離線網站選「中英」(電腦翻譯,大意正確)
- 看不懂的詞查 白話小辭典
用 VAE、U-Net、scheduler、tokenizer 手動組出完整管線;接著開始從零打造,談 Python 資料模型、張量與亂數產生器。 (Assemble a full Diffusers pipeline by hand from the VAE, U-Net, scheduler and tokenizer, then start building from scratch: the Python data model, tensors and random number generation.)
| 項目 | 內容 |
|---|---|
| 所屬 | Part 2:Deep Learning Foundations to Stable Diffusion |
| 影片 | YouTube |
| 對應書本章節 | 無對應章節(Part 2 以 notebook 為主) |
| 原始頁面 | Lessons/lesson10 |
| 難度(F3 視角) | ★★★★★ 大學程度(F3 只求理解概念) |
影片
本課重點
- 手動組管線:自己串起 tokenizer、CLIP 編碼器、U-Net、scheduler、VAE,就能完全控制推論的每一步,例如加入 callback 或改負面提示詞的處理。
- 三篇新論文:Progressive Distillation 與 Distillation of Guided Diffusion 讓推論快 10 倍以上;Imagic 只要用文字描述,就能編輯任何照片。
- miniai 與整理程式:學生會在課程中一起打造 miniai 函式庫。強調把程式整理得簡單、可重用。
- Python 資料模型:迭代器、產生器、dunder 方法(如 getitem、len),讓自訂類別像內建型別一樣好用;自己寫一個矩陣類別。
- 虛擬亂數:電腦的亂數是用公式算出來的。介紹 Wichmann-Hill 演算法,並說明多行程時的亂數狀態問題;比較自製與 PyTorch 亂數產生器的速度。
關鍵概念
| 英文術語 | 中文 | 一句話解釋 |
|---|---|---|
| Pipeline | 管線 | 把多個模型元件串成一個流程 |
| Distillation | 蒸餾 | 用大模型教小模型,用更少步數得到相近結果 |
| Iterator / Generator | 迭代器/產生器 | 一次給一個元素、需要時才計算的物件 |
| Dunder method | 雙底線方法 | 如 len,讓類別支援內建語法 |
| Pseudo-random | 虛擬亂數 | 用確定的公式算出看似隨機的數字 |
| Random seed | 亂數種子 | 設定起點,讓亂數可以重現 |
認識關聯圖與重點圖
練習題
- 電腦的「隨機數」為什麼叫「虛擬亂數」?設定 seed 有什麼好處?
- 在 Python 類別裡定義 len 和 getitem 之後,可以對它的物件用哪些寫法?
- 為什麼要自己手動組管線,而不直接用現成的 pipeline?
- 中文學生作答:L10_中文F3學生_202611041526
- English student answers: L10_EN_F3_Student_202611041526