UvA 深度学习教程
注意:要以更好看的格式查看笔记本,请访问我们的RTD网站:https://uvadlc-notebooks.readthedocs.io/en/latest/
课程网站:https://uvadlc.github.io/
课程时间:2023年秋季(11月01日 - 12月24日) - 持续更新
录音:YouTube 播放列表
作者:Phillip Lippe
对于今年的课程,我们创建了一系列Jupyter笔记本,旨在通过看到相应的实现来帮助你理解讲座中的“理论”。 我们将涉及各种主题,如优化技术、transformers、图神经网络等(完整列表见下文)。 这些笔记本旨在帮助你理解材料并教你PyTorch框架的细节,包括PyTorch Lightning。 此外,我们还提供了笔记本到JAX+Flax作为替代框架的一对一翻译。
笔记本将在每次组教程课的第一小时内展示。 在教程课期间,我们会展示内容并解释笔记本的实现。 你可以决定是只查看填充好的笔记本,自己尝试,还是在实践课上同步编写代码。 笔记本并不是任何强制性作业的一部分,因此不会影响你的分数或类似情况。 然而,我们鼓励你熟悉笔记本,并且自己进行实验或扩展。 此外,所展示的内容对评分作业和考试是有用的。
这些教程已集成为PyTorch Lightning的官方教程。 因此,你也可以在他们的文档中查看这些教程。
如何运行笔记本
在这个网站上,你会发现笔记本被导出为HTML格式,以便你可以从任何你喜欢的设备上阅读它们。然而,我们建议你也尝试运行它们。有三种主要方式运行笔记本,我们推荐如下:
-
本地CPU上:所有笔记本都存储在构建此网站的GitHub存储库上。你可以在这里找到它们:https://github.com/phlippe/uvadlc_notebooks/tree/master/docs/tutorial_notebooks。笔记本的设计是可以在不需要GPU的情况下在普通笔记本电脑上运行。我们提供预训练模型,这些模型在运行笔记本时会自动下载,或者可以从这个[Google Drive](https://drive.google.com/drive/folders/1SevzqrkhHPAifKEHo-gi7J-dVxifvs4c?usp=sharing)手动下载。预训练模型和数据集所需的磁盘空间少于1GB。为了确保你安装了所有正确的Python包,我们提供了在[相同存储库](https://github.com/phlippe/uvadlc_notebooks/blob/master/)中提供的Conda环境(根据你的系统选择CPU或GPU版本)。
-
Google Colab:如果你更喜欢在不同的平台上运行笔记本,或者希望尝试GPU支持,我们推荐使用Google Colab。本文档网站上的每个笔记本都有一个徽章,带有链接可以在Google Colab上打开它。记得在运行笔记本之前启用GPU支持(
运行时 -> 更改运行时类型
)。每个笔记本可以独立执行,不需要连接你的Google Drive或类似。但在关闭会话时,如果你没有保存到本地计算机或事先将笔记本复制到你的Google Drive,可能会丢失更改。 -
Snellius集群:如果你想基于笔记本训练自己的(更大)神经网络,可以使用Snellius集群。然而,这仅建议在你确实想训练新模型时使用,利用其他两种选项来进行模型的讨论和分析。Snellius可能不允许你直接在gpu_shared分区运行Jupyter笔记本。相反,你可以先使用
jupyter nbconvert --to script ...ipynb
将笔记本转换为脚本,然后在Snellius上启动一个作业来运行脚本。在Snellius上运行的几点建议:- 禁用笔记本中的tqdm语句。否则你的slurm输出文件可能会溢出,变得非常大。在PyTorch Lightning中,你可以通过在trainer中设置
progress_bar_refresh_rate=0
来做到这一点。 - 注释掉matplotlib绘图语句,或将 :code:
plt.show()
更改为plt.savefig(...)
。
- 禁用笔记本中的tqdm语句。否则你的slurm输出文件可能会溢出,变得非常大。在PyTorch Lightning中,你可以通过在trainer中设置
教程和讲座的对齐
我们将在课程中讨论其中7个教程,分散在课程中的多个讲座上以覆盖每个领域的内容。你可以根据其主题将教程与讲座对齐。教程列表如下:
- 指南1:使用Snellius集群
- 教程2:PyTorch介绍
- 教程3:激活函数
- 教程4:优化和初始化
- 教程5:Inception、ResNet和DenseNet
- 教程6:Transformers和多头注意力
- 教程7:图神经网络
- 教程8:深度能量模型
- 教程9:自动编码器
- 教程10:对抗攻击
- 教程11:图像建模中的正规化流
- 教程12:自回归图像建模
- 教程15:视觉Transformers
- 教程16:元学习 - 学习如何学习
- 教程17:使用SimCLR的自监督对比学习
反馈、问题或贡献
这是我们第一次在深度学习课程中展示这些教程。与任何其他项目一样,可能会出现小错误和问题。我们欢迎任何学生的反馈,无论是关于拼写错误、实现错误,还是对笔记本的改进/添加建议。请使用以下链接提交反馈,或者直接通过邮件(p dot lippe at uva dot nl)联系我们,或者在任何TA课期间找我。
如果你发现这些教程有帮助,并希望引用它们,你可以使用以下bibtex:
@misc{lippe2024uvadlc,
title = {{UvA Deep Learning Tutorials}},
author = {Phillip Lippe},
year = 2024,
howpublished = {\url{https://uvadlc-notebooks.readthedocs.io/en/latest/}}
}