Diffusion thực chiến: sampler, đánh giá, tối ưu và hướng phát triển mới
Khoảng cách lớn nhất giữa người học lý thuyết diffusion và kỹ sư triển khai thực tế nằm ở cách nhìn nhận hệ thống. Người mới thường coi mô hình diffusion như một “hộp đen” duy nhất, để rồi khi chất lượng ảnh kém hoặc máy bị tràn bộ nhớ thì bắt đầu đổi tham số hú họa, so sánh vài bức ảnh bằng mắt và vội vã kết luận.
Trong thực tế, một hệ thống diffusion là sự kết hợp của nhiều khối độc lập: mạng neural (backbone), bộ giải vi phân (sampler), lịch trình nhiễu (scheduler), định dạng dữ liệu và kỹ thuật tối ưu phần cứng. Hiểu rõ ranh giới của từng khối sẽ giúp bạn tăng tốc độ sinh ảnh gấp 50 lần, tiết kiệm một nửa VRAM và đánh giá kết quả một cách khoa học.
Bài viết này đúc kết toàn bộ kinh nghiệm thực chiến: từ các bộ giải nhanh (DDIM, DPM-Solver++), quy trình đo đạc định lượng (FID, CLIP Score), checklist gỡ lỗi, cho đến những bước chuyển mình mang tính thời đại như Diffusion Transformer (DiT) và Flow Matching.
Nếu chỉ giữ lại một câu, có thể dùng câu sau:
Một hệ sinh ảnh thực chiến được định đoạt bởi sự phối hợp giữa mạng khử nhiễu, thuật toán giải phương trình vi phân (sampler), lịch trình nhiễu và một quy trình đánh giá định lượng không cảm tính.
Tách bạch mô hình đã học khỏi thuật toán lấy mẫu (Sampler)
Khi tải về một checkpoint diffusion (như Stable Diffusion hay FLUX), bạn đang sở hữu trọng số của một mạng neural đã học. Nhưng cách đi từ nhiễu về dữ liệu thật phụ thuộc hoàn toàn vào thuật toán lấy mẫu (Sampler / Solver).
Bốn thành phần này hoàn toàn tách rời nhau:
- Mạng khử nhiễu (Denoising Backbone): Mạng U-Net hoặc DiT chịu trách nhiệm tính toán dự đoán tại từng thời điểm.
- Loại dự đoán (Prediction Type): Checkpoint được dạy để đoán vector nhiễu (), đoán ảnh sạch (), hay đoán vector vận tốc ().
- Lịch trình nhiễu (Noise Schedule): Mức độ phân bổ của hoặc từ bước đến .
- Bộ giải lấy mẫu (Sampler / Solver): Cách rời rạc hóa thời gian và công thức cập nhật trạng thái từ về .
Quy tắc bất biến: Code chạy không báo lỗi không có nghĩa là bạn đang chạy đúng. Nếu dùng một Sampler có giả định toán học không tương thích với checkpoint (ví dụ mô hình train theo -prediction nhưng sampler lại giải theo -prediction), ảnh sinh ra có thể bị sai lệch phân phối nghiêm trọng dù chương trình không hề crash.
DDPM, DDIM và các bộ giải ODE nhanh: rút ngắn từ 1000 bước xuống 20 bước
DDPM: Lấy mẫu ngẫu nhiên nguyên bản (1000 bước)
DDPM kinh điển gieo thêm nhiễu Gauss mới ở từng bước lặp ngược. Quá trình này tuân thủ chuỗi Markov nghiêm ngặt, đòi hỏi từ 250 đến 1000 bước forward để chất lượng ảnh đạt độ nét cao. Điều này khiến DDPM quá chậm để ứng dụng thực tế.
DDIM: Khử nhiễu tất định không cần Markov (50 bước)
Jiaming Song và cộng sự (ICLR 2021) giới thiệu DDIM (Denoising Diffusion Implicit Models). Bằng cách xây dựng một quá trình ngược không còn ràng buộc bởi tính chất Markov nhưng vẫn giữ nguyên hàm mục tiêu huấn luyện của DDPM, DDIM cho phép:
- Bỏ hoàn toàn việc bơm nhiễu ngẫu nhiên ở mỗi bước (trở thành một quá trình tất định — deterministic).
- Nhảy cóc các bước thời gian (ví dụ chỉ lấy mẫu ở các timestep ).
- Giảm số bước xuống còn 20–50 bước mà chất lượng hình ảnh hầu như không suy giảm.
- Cùng một seed và cùng một prompt sẽ luôn cho ra đúng một bức ảnh giống nhau 100%.
DPM-Solver / DPM-Solver++: Bộ giải ODE bậc cao chuyên dụng (15–20 bước)
Cheng Lu và cộng sự (NeurIPS 2022) nhận ra rằng quá trình lấy mẫu của diffusion bản chất là giải một phương trình vi phân thường (ODE). Thay vì dùng phương pháp Euler bậc 1 thông thường, DPM-Solver++ khai thác cấu trúc giải tích bán tuyến tính của diffusion ODE để thiết kế các bước nhảy bậc 2 và bậc 3.
Kết quả là: DPM-Solver++ có thể tạo ra hình ảnh chất lượng cao chỉ trong 15 đến 20 bước, trở thành bộ giải tiêu chuẩn được tin dùng rộng rãi nhất trong hệ sinh thái Stable Diffusion.
Scheduler: nguyên tắc chọn lịch trình nhiễu trước khi thử mẹo
Trong thư viện diffusers, “Scheduler” quản lý cả việc chia bước thời gian lẫn thuật toán cập nhật.
Nguyên tắc vàng: Hãy luôn bắt đầu với Scheduler mặc định đi kèm với checkpoint. Chỉ thay đổi khi bạn có mục tiêu rõ ràng về tốc độ hoặc chất lượng, và đã kiểm chứng tính tương thích.
| Tình huống sử dụng | Scheduler khuyến nghị | Lý do kỹ thuật |
|---|---|---|
| Checkpoint SD 1.5 / SD 2.1 tổng quát | DPMSolverMultistepScheduler | 20–25 bước là đủ nét, hỗ trợ CFG mượt mà. |
| Cần độ ổn định cao và chi tiết sắc nét | EulerAncestralDiscreteScheduler (Euler a) | Bổ sung một lượng nhiễu nhỏ ở mỗi bước, tạo chi tiết ngẫu nhiên phong phú. |
| Mô hình Flow Matching (SD3, FLUX) | FlowMatchEulerDiscreteScheduler | Phải dùng đúng bộ giải vận tốc thẳng của Flow Matching. |
| Mô hình sinh siêu tốc (LCM, SDXL-Turbo) | LCMScheduler hoặc EulerDiscreteScheduler | Được thiết kế riêng cho các checkpoint đã chưng cất 1–4 bước. |
Sai lầm phổ biến của người mới là thấy một sampler “đang hot” trên mạng xã hội liền áp dụng vô tội vạ vào mọi checkpoint. Mỗi sampler đều có giả định riêng về thang đo sigma, kiểu dự đoán và cách chia bước thời gian. Vi phạm những giả định này sẽ làm hỏng kết quả.
Tái lập kết quả: vì sao cố định seed vẫn chưa đủ?
Nhiều người nghĩ rằng chỉ cần ghi lại seed = 42 là sẽ luôn tái lập được bức ảnh đó ở bất kỳ máy tính nào. Thực tế không đơn giản như vậy!
Cùng một giá trị seed nhưng kết quả vẫn có thể khác biệt nếu:
- Chạy trên hai dòng GPU khác nhau (ví dụ NVIDIA RTX 3090 vs A100);
- Kiểu số khác nhau (
float16vsfloat32vsbfloat16); - Thư viện CUDA hoặc PyTorch khác phiên bản;
- Các phép toán attention dùng nhân phần cứng không tất định (non-deterministic kernels như cuDNN benchmark).
import torch
from diffusers import DiffusionPipeline
# Để tái lập tốt nhất giữa các thiết bị, khởi tạo Generator trên CPU
generator = torch.Generator(device="cpu").manual_seed(2026)
pipe = DiffusionPipeline.from_pretrained(
"stabilityai/stable-diffusion-2-1",
torch_dtype=torch.float16,
).to("cuda")
image = pipe(
prompt="a cybernetic owl reading a book in a cozy library",
generator=generator,
num_inference_steps=25,
guidance_scale=7.5,
).images[0]
Một nhật ký thí nghiệm chuẩn mực bắt buộc phải lưu: checkpoint_id, prompt, negative_prompt, seed, scheduler_config, num_inference_steps, guidance_scale, width x height, dtype, và các adapter phụ (LoRA, ControlNet).
Quy trình tinh chỉnh tham số khi sinh ảnh
Khi muốn tối ưu hóa kết quả cho một dự án, hãy tuân thủ quy trình kiểm soát biến số khoa học:
- Bước 1 — Thiết lập mốc cơ sở (Baseline): Chạy pipeline với toàn bộ thông số mặc định của checkpoint.
- Bước 2 — Cố định tập prompt kiểm thử: Chuẩn bị sẵn 10-20 câu prompt bao quát nhiều khía cạnh (vật thể đơn, phong cảnh, khuôn mặt người, ảnh góc rộng, ánh sáng phức tạp). Mỗi prompt gắn với một danh sách seed cố định.
- Bước 3 — Chỉ thay đổi một biến số duy nhất tại một thời điểm:
- Nếu khảo sát số bước: Thử lần lượt , giữ nguyên CFG scale .
- Nếu khảo sát CFG scale: Thử lần lượt , giữ nguyên số bước. Tuyệt đối không đổi cả sampler, số bước và CFG cùng lúc rồi ngồi đoán nguyên nhân.
- Bước 4 — Đo lường cả chất lượng lẫn tài nguyên: Ghi lại thời gian trễ trên mỗi ảnh (latency), lượng VRAM đỉnh (peak VRAM) và chất lượng thị giác.
Lưu ý khi huấn luyện diffusion từ đầu
Tự huấn luyện một mạng diffusion từ đầu là bài toán tốn kém tài nguyên. Với các bài tập nghiên cứu hoặc dự án nhỏ, bạn nên bắt đầu từ dữ liệu 2D hoặc tập ảnh nhỏ (như MNIST, CIFAR-10) để nắm vững cơ chế trước khi mở rộng.
Các kỹ thuật sinh tồn khi huấn luyện diffusion:
- Kiểm tra Overfit trên batch siêu nhỏ: Trước khi train trên toàn bộ dữ liệu, hãy ép mô hình học thuộc lòng một batch gồm 16-32 ảnh. Nếu loss không giảm về gần 0 và mô hình không sinh lại được đúng các ảnh đó, code của bạn chắc chắn có lỗi (chuẩn hóa sai miền giá trị, lỗi timestep embedding, hoặc nhầm chiều tensor).
- Sử dụng Mixed Precision (bf16/fp16): Bắt buộc để tiết kiệm bộ nhớ GPU. Trên các GPU kiến trúc Ampere trở lên (RTX 3090, A100), hãy ưu tiên
bfloat16vì nó có dải động số mũ rộng như float32, giúp tránh hiện tượng tràn số (NaN/underflow). - Exponential Moving Average (EMA): Luôn duy trì một bản sao trọng số theo trung bình trượt thời gian (với ). Khi sinh ảnh đánh giá, bắt buộc phải dùng trọng số EMA vì nó khử bớt dao động gradient và giúp ảnh mịn màng hơn nhiều so với checkpoint thô.
- Min-SNR Weighting: Áp dụng chiến lược gán trọng số hàm loss bị chặn theo tỉ số để ổn định gradient ở các bước thời gian cực đoan (Hang et al., ICCV 2023).
Đánh giá mô hình sinh: vượt qua cái bẫy “so ảnh bằng mắt”
Lỗi lớn nhất của người mới làm nghiên cứu mô hình sinh là chỉ chọn ra 3-4 bức ảnh đẹp nhất do mô hình của mình sinh ra rồi kết luận “phương pháp của tôi tốt hơn baseline”. Đó là lối đánh giá thiên lệch cảm tính.
Một hệ thống sinh dữ liệu chuẩn mực cần được đo đạc qua ba lăng kính độc lập:
FID (Fréchet Inception Distance)
FID là thước đo tiêu chuẩn vàng so sánh khoảng cách giữa phân phối của tập ảnh thật và phân phối của tập ảnh sinh trong không gian đặc trưng của mạng Inception-v3:
- FID càng thấp: Ảnh sinh càng tự nhiên và phân phối càng gần với ảnh thật.
- Lưu ý: Chỉ có thể so sánh FID khi hai mô hình dùng chung quy trình đo đạc: cùng số lượng ảnh sinh (thường là 50,000 ảnh), cùng độ phân giải, cùng cách crop và cùng tập ảnh thật làm mốc.
Precision và Recall cho Generative Models
FID thấp chưa chắc đã phản ánh toàn diện:
- Precision: Tỉ lệ ảnh sinh nằm trong vùng phân phối của dữ liệu thật (đo độ trung thực).
- Recall: Tỉ lệ dữ liệu thật được bao phủ bởi phân phối ảnh sinh (đo độ đa dạng, phát hiện mode collapse). Một mô hình GAN có thể đạt Precision rất cao nhưng Recall rất thấp vì nó bỏ quên nhiều nhóm đối tượng hiếm.
CLIP Score
Đo độ tương đồng cosin giữa vector embedding của ảnh sinh và vector embedding của câu prompt bằng mô hình CLIP. Dùng để định lượng xem mô hình có “nghe lời” prompt hay không.
Chẩn đoán lỗi thường gặp theo triệu chứng
Khi ảnh đầu ra gặp sự cố, hãy tra cứu theo lưu đồ xử lý lỗi sau:
Tối ưu bộ nhớ và tốc độ suy luận
Khi triển khai mô hình lên môi trường sản xuất (production) với hàng triệu lượt gọi API, tối ưu tài nguyên là bài toán sống còn:
- Sử dụng Kiểu số Nửa chính xác (FP16 / BF16): Giảm ngay 50% dung lượng VRAM và tăng gấp đôi tốc độ tính toán trên Tensor Cores mà chất lượng thị giác không hề suy giảm.
- Kích hoạt SDPA (Scaled Dot-Product Attention): Kể từ PyTorch 2.0, hàm
F.scaled_dot_product_attentionđã tích hợp sẵn FlashAttention ở tầng C++, tự động tối ưu hóa bộ nhớ I/O mà không cần cài đặt thêm thư viện ngoài. - VAE Tiling (Lát gạch VAE): Khi giải nén ảnh độ phân giải cực lớn ( hoặc 4K), bộ giải mã VAE Decoder có thể gây tràn VRAM đột ngột. Kỹ thuật VAE Tiling chia nhỏ latent map thành các ô vuông chồng lấn để giải nén từng phần, giúp sinh ảnh 4K ngay trên card đồ họa 8GB VRAM.
- Biên dịch mô hình với
torch.compile: Tối ưu hóa đồ thị tính toán và dung hợp các toán tử (kernel fusion), giúp tăng tốc độ suy luận thêm 20–30% sau lượt chạy khởi động đầu tiên.
Score-SDE: nhìn quá trình khuếch tán dưới dạng thời gian liên tục
Nếu như DDPM nhìn quá trình thêm và bớt nhiễu như một chuỗi các bước rời rạc , thì bài báo nền tảng của Yang Song và cộng sự (ICLR 2021) đã nâng tầm diffusion lên một bình diện toán học tổng quát: Phương trình vi phân ngẫu nhiên (Stochastic Differential Equation — SDE) trong miền thời gian liên tục .
Quá trình thêm nhiễu xuôi được mô tả bằng một SDE:
Trong đó là hệ số trôi (drift), là hệ số khuếch tán (diffusion), và là chuyển động Brown chuẩn (Wiener process).
Điều kỳ diệu nằm ở chỗ: quá trình đảo ngược thời gian cũng là một SDE, và nó phụ thuộc hoàn toàn vào hàm score :
Hơn thế nữa, tồn tại một Phương trình vi phân thường dòng xác suất (Probability Flow ODE) có cùng phân phối biên tại mọi thời điểm nhưng không hề chứa thành phần ngẫu nhiên. Nhờ công thức này, toàn bộ việc sinh ảnh diffusion có thể được giải quyết bằng các thuật toán giải số tích phân ODE kinh điển (như Runge-Kutta hay Adams-Bashforth), mở đường cho các bộ giải siêu tốc như DPM-Solver.
DiT: khi Transformer thay thế hoàn toàn U-Net
Trong nhiều năm, U-Net được xem là kiến trúc mặc định không thể thay thế của diffusion. Tuy nhiên, William Peebles và Saining Xie (ICCV 2023) đã thách thức quan niệm này với công trình DiT (Diffusion Transformer).
DiT loại bỏ hoàn toàn các tầng tích chập của U-Net và thay thế bằng kiến trúc Transformer thuần túy:
Quy trình của DiT:
- Tensor latent được cắt thành các mảnh nhỏ (ví dụ ), tương tự như Vision Transformer (ViT), rồi làm phẳng thành một chuỗi token.
- Chuỗi token đi qua các khối Transformer chuẩn với cơ chế self-attention đa đầu.
- Thông tin về bước thời gian và điều kiện được đưa vào thông qua cơ chế adaLN-Zero (Adaptive Layer Normalization Zero) để điều chế tỉ lệ và độ dịch chuyển của từng tầng.
Khám phá quan trọng nhất của DiT là khả năng mở rộng quy mô (Scaling Laws): khi tăng kích thước mô hình (từ DiT-S đến DiT-XL) và tăng năng lực tính toán, điểm số FID giảm đều đặn theo đường thẳng logarit. DiT đã chứng minh rằng: Diffusion là một thuật toán sinh; còn backbone mạng bên dưới hoàn toàn có thể tiến hóa độc lập. Kiến trúc DiT chính là trái tim vận hành của các mô hình hàng đầu hiện nay như OpenAI Sora hay FLUX.
Flow Matching và Rectified Flow: đường thẳng ngắn hơn đường cong
Mặc dù diffusion rất thành công, quỹ đạo cong ngẫu nhiên của các hạt nhiễu Gauss trong quá trình lấy mẫu khiến các bộ giải số tốn nhiều bước tính tích phân.
Flow Matching (Lipman et al., 2023; Albergo & Vanden-Eijnden, 2023) mở ra một góc nhìn mới: Thay vì ép bài toán theo các công thức khuếch tán nhiệt vật lý của phân phối Gauss, ta có thể xây dựng một trường vector vận tốc nối thẳng phân phối nhiễu với phân phối dữ liệu :
Mạng neural chỉ cần học trường vận tốc tiếp tuyến của quỹ đạo:
Trong đó, Rectified Flow (Liu et al., 2023) áp dụng kỹ thuật “reflow” để nắn thẳng các quỹ đạo chuyển động. Khi quỹ đạo giữa nhiễu và ảnh là những đường thẳng tắp, bộ giải ODE có thể bước những bước cực lớn mà không sợ bị sai số tích phân, cho phép sinh ra những bức ảnh tuyệt đẹp chỉ trong vài bước tính toán.
Các mô hình thế hệ mới nhất như Stable Diffusion 3 và FLUX.1 đều đã chính thức chuyển trục từ công thức DDPM sang Rectified Flow Transformers (RF-DiT).
Sinh ảnh 1–4 bước bằng Distillation và Consistency Models
Bên cạnh việc dùng bộ giải thông minh hay Flow Matching, một hướng đi thực dụng khác để đạt tốc độ thời gian thực là chưng cất tri thức (Distillation):
- Consistency Models (Song et al., ICML 2023): Dạy mạng neural ánh xạ bất kỳ điểm nào trên quỹ đạo khử nhiễu trực tiếp về điểm xuất phát , cho phép sinh ảnh chỉ trong 1 bước duy nhất.
- Latent Consistency Models (LCM): Ứng dụng kỹ thuật trên vào không gian ẩn của Stable Diffusion, cho phép tạo ảnh chất lượng cao sau 2–4 bước suy luận.
- Adversarial Diffusion Distillation (ADD / SDXL-Turbo): Kết hợp hàm mất mát chưng cất với một mạng Discriminator của GAN để ép mô hình tạo ra ảnh cực nét ngay trong một bước forward duy nhất.
Nhờ những bước tiến này, công nghệ diffusion đã vượt qua rào cản tốc độ chậm chạp để bước vào các ứng dụng thời gian thực như livestream, bộ lọc camera và game tương tác.
Checklist thực chiến trước khi đưa ra kết luận
Trước khi công bố một báo cáo thực nghiệm hoặc chốt một phiên bản mô hình sản phẩm, hãy tự kiểm tra qua danh sách sau:
- Mốc so sánh công bằng: Có so sánh với baseline mặc định của checkpoint trên cùng tập dữ liệu chưa?
- Khóa phương pháp đánh giá: Tập ảnh thật làm mốc, độ phân giải và số lượng ảnh sinh khi tính FID có đồng nhất giữa các bên không?
- Quy ước Seed: Các prompt thử nghiệm có được kiểm tra qua nhiều seed ngẫu nhiên khác nhau không (tránh thiên lệch chọn lọc ảnh đẹp)?
- Tách biệt chất lượng và độ đa dạng: Đã đo cả FID (chất lượng) và Recall / CLIP Score (đa dạng và khớp prompt) chưa?
- Đo lường chi phí thực tế: Đã ghi nhận độ trễ (latency per image), lượng VRAM đỉnh và chi phí phần cứng chưa?
- Tính toàn vẹn bản quyền: Checkpoint và các adapter đi kèm có tuân thủ đúng giấy phép mã nguồn mở thương mại không?
Nếu chỉ nhớ 10 ý
- Checkpoint chứa mạng neural đã học; Sampler quyết định cách giải bài toán ngược; Scheduler điều khiển lịch trình nhiễu. Ba khái niệm này hoàn toàn độc lập.
- DDIM bỏ tính chất Markov ngẫu nhiên để biến quá trình lấy mẫu thành tất định, cho phép nhảy cóc và rút ngắn số bước xuống còn 50.
- DPM-Solver++ giải diffusion dưới dạng phương trình vi phân ODE bán tuyến tính bậc cao, tạo ảnh chất lượng xuất sắc chỉ sau 15–20 bước.
- Cố định seed chưa đảm bảo 100% tái lập nếu khác biệt về dòng card đồ họa, kiểu số (fp16/bf16) hoặc thư viện phần cứng.
- Không bao giờ thay đổi nhiều siêu tham số cùng lúc (CFG, sampler, steps) khi tinh chỉnh chất lượng ảnh.
- FID đo khoảng cách phân phối giữa tập ảnh thật và tập ảnh sinh; chỉ có ý nghĩa so sánh khi quy trình đo đạc hoàn toàn nhất quán.
- SDPA và FlashAttention là kỹ thuật bắt buộc để tối ưu bộ nhớ và tăng tốc độ attention trên PyTorch hiện đại.
- Score-SDE quy nạp toàn bộ lý thuyết diffusion về việc giải các phương trình vi phân ngẫu nhiên trong thời gian liên tục.
- DiT chứng minh Transformer hoàn toàn có thể thay thế U-Net làm backbone cho diffusion với khả năng mở rộng quy mô (scaling laws) vượt trội.
- Flow Matching và Rectified Flow nắn thẳng quỹ đạo từ nhiễu sang dữ liệu, định hình nên tiêu chuẩn kiến trúc của thế hệ mô hình sinh tiếp theo.
Câu hỏi tự kiểm tra
- Tại sao nói DDIM biến quá trình lấy mẫu thành tất định? Điểm khác biệt mấu chốt so với DDPM là gì?
- DPM-Solver++ dựa trên nguyên lý toán học nào để giảm số bước lấy mẫu xuống còn 15-20 bước?
- Nếu bạn giữ nguyên seed nhưng chạy code trên một GPU khác kiến trúc, bức ảnh sinh ra có đảm bảo giống từng pixel không? Vì sao?
- Nêu sự đánh đổi khi bật tính năng VAE Tiling trong quá trình giải nén ảnh kích thước lớn.
- Điểm số FID thấp có đồng nghĩa với việc mô hình không bị mode collapse không? Cần chỉ số nào bổ trợ?
- Kỹ thuật Min-SNR Weighting giải quyết vấn đề mất cân bằng gradient như thế nào trong lúc huấn luyện?
- Nêu sự khác nhau cơ bản giữa U-Net và DiT về mặt biểu diễn dữ liệu đầu vào.
- adaLN-Zero trong kiến trúc DiT đưa thông tin timestep và class condition vào mạng qua cơ chế nào?
- Flow Matching và Rectified Flow khác với diffusion truyền thống ở điểm mấu chốt nào về quỹ đạo sinh dữ liệu?
- Phân biệt sự khác nhau giữa việc dùng một Sampler nhanh (như DPM-Solver++) và việc dùng một mô hình chưng cất (như Consistency Models).
Kết thúc Chương 11
Trải qua ba bài học của Chương 11, chúng ta đã đi trọn vẹn hành trình của một trong những họ mô hình sinh vĩ đại nhất: từ nguyên lý toán học khử nhiễu của DDPM, bước nhảy vọt sang không gian ẩn của Latent Diffusion, cho đến nghệ thuật điều khiển bằng Cross-Attention/ControlNet và các công nghệ đỉnh cao như DiT, Flow Matching.
Tuy nhiên, trong toàn bộ bức tranh đó, có một tiền đề ngầm định cực kỳ quan trọng: mô hình luôn cần một lượng tri thức nền tảng khổng lồ đã được học từ trước. Không một ai tự huấn luyện một bộ mã hóa CLIP từ đầu để làm điều kiện cho diffusion, và cũng không ai khởi tạo trọng số ngẫu nhiên cho một mạng thị giác lớn nếu chỉ có vài trăm bức ảnh trong tay.
Làm thế nào để các mạng neural hấp thụ tri thức tổng quát từ hàng tỷ dữ liệu không nhãn (Pretraining), rồi chuyển giao tri thức đó sang giải quyết một bài toán nghiệp vụ chuyên biệt với chi phí thấp nhất (Transfer Learning và Fine-tuning)?
Chào mừng bạn bước sang Chương 12 — Pretraining, transfer learning và fine-tuning: học một lần, thích nghi nhiều lần.
Tài liệu tham khảo và đọc thêm
- Song, Meng & Ermon (2020), Denoising Diffusion Implicit Models (DDIM), ICLR 2021: https://arxiv.org/abs/2010.02502
- Lu, Zhou, Bao, Chen, Li & Zhu (2022), DPM-Solver++: Fast Solver for Guided Sampling of Diffusion Probabilistic Models, NeurIPS 2022: https://arxiv.org/abs/2211.01095
- Song, Sohl-Dickstein, Kingma, Kumar, Ermon & Poole (2021), Score-Based Generative Modeling through Stochastic Differential Equations, ICLR 2021: https://arxiv.org/abs/2011.13456
- Peebles & Xie (2023), Scalable Diffusion Models with Transformers (DiT), ICCV 2023: https://arxiv.org/abs/2212.09748
- Lipman, Chen, Ben-Hamu, Nicklas & Le (2023), Flow Matching for Generative Modeling, ICLR 2023: https://arxiv.org/abs/2210.02747
- Liu, Gong & Liu (2023), Flow Straight and Fast: Learning to Generate and Transfer Data with Rectified Flow, ICLR 2023: https://arxiv.org/abs/2209.03003
- Song, Dhariwal, Chen & Sutskever (2023), Consistency Models, ICML 2023: https://arxiv.org/abs/2303.01469
- Hang, Gu, Li, Bao, Chen, Han & Guo (2023), Efficient Diffusion Training via Min-SNR Weighting Strategy, ICCV 2023: https://arxiv.org/abs/2303.09556
- Hugging Face Diffusers Documentation, Schedulers, Reproducibility and Memory Optimization: https://huggingface.co/docs/diffusers/