10: 深入探索
本课程从底层组件:VAE、unet、调度器和分词器,构建了一个完整的 Diffusers 流水线。手动将它们组合在一起,使您能够完全自定义推理过程的各个方面。
我们还讨论了最近一周发布的三篇重要新论文,这些论文将推理性能提高了 10 倍以上,并允许仅通过描述新图片应显示的内容来“编辑”任何照片。
在课程的后半部分,Jeremy 开始“从零开始”实现 Stable Diffusion。他介绍了将在课程期间由学生创建的“miniai”库,并讨论了代码的组织和简化。课程讨论了 Python 数据模型、张量和随机数生成。Jeremy 介绍了 Wickman-Hill 随机数生成算法,并比较了自定义和 PyTorch 内置随机数生成器的性能。课程最后使用张量创建了一个线性分类器。
讨论的概念
- 论文
- 用于扩散模型快速采样的渐进式蒸馏
- 关于引导扩散模型的蒸馏
- Imagic
- 对输入文本进行分词
- 用于嵌入的 CLIP 编码器
- 用于确定噪声的调度器
- 组织和简化代码
- 负面提示与回调
- Python 中的迭代器与生成器
- 自定义矩阵类
- 特殊方法 (Dunder 方法)
- Python 数据模型
- 张量
- 伪随机数生成
- Wickman-Hill 算法
- 深度学习中的随机状态
- 使用张量的线性分类器
视频
课程资源
- 讨论本课程
- 论文讲解视频由 @johnowhitaker 制作,内容涵盖《用于扩散模型快速采样的渐进式蒸馏》
- diffusion-nbs 仓库(我们将继续讲解上次接触的
stable_diffusion.ipynb
) - 课程 Fashion-MNIST 重新实现,包含笔记,由 @strickvl 制作
课程链接
- 课程 2022p2 仓库
- 用于扩散模型快速采样的渐进式蒸馏
- Imagic 论文。几小时内,Stable Diffusion 版本就出现了。
- APL: 数组编程 - fast.ai 课程论坛