fast.ai 发布新的深度学习课程、四个库和一本 600 页的书籍

我们正在发布 Practical Deep Learning for Coders (2020)、fastai v2、fastcore 和 fastgpu。
课程
技术
作者

Jeremy Howard

发布日期

2020 年 8 月 21 日

fast.ai 是一个自费的研究、软件开发和教学实验室,致力于让深度学习更容易上手。我们免费提供所有的软件、研究论文和课程,没有任何广告。我们所有的费用都自掏腰包,不接受任何赠款或捐赠,因此您可以确信我们是真正独立的。

今天是 fast.ai 四年历史上最重要的一天。我们正在发布:

另外,如果您错过了,本周早些时候我们发布了 Practical Data Ethics 课程,该课程专注于既紧迫又实际的主题。

fastai v2

fastai 是一个深度学习库,它为实践者提供了高级组件,可以在标准的深度学习领域快速轻松地提供最先进的结果,并为研究人员提供了可以混合搭配以构建新方法的低级组件。它的目标是在不严重牺牲易用性、灵活性或性能的情况下实现这两者。这得益于精心分层的架构,该架构以解耦抽象的方式表达了许多深度学习和数据处理技术的常见底层模式。通过利用底层 Python 语言的动态性和 PyTorch 库的灵活性,这些抽象可以简洁明了地表达。 fastai 包括:

  • 一种新的 Python 类型分派系统以及张量的语义类型层次结构。
  • 一个 GPU 优化的计算机视觉库,可以用纯 Python 扩展。
  • 一个优化器,将现代优化器的常见功能重构为两个基本部分,允许优化算法在 45 行代码中实现。
  • 一种新颖的双向回调系统,可以在训练期间的任何时刻访问数据的任何部分、模型或优化器并对其进行更改。
  • 一个新的数据块 API。
  • 还有更多…

fastai 的分层架构。

fastai 的组织围绕着两个主要设计目标:易于上手且能快速产生效率,同时又具有深度可修改性和可配置性。它构建在较低层 API 的层次结构之上,这些 API 提供可组合的构建块。这样,想要重写部分高级 API 或添加特定行为以满足其需求的用户就不必学习如何使用最低层。

要了解 fastai 可以做什么,请查看 快速入门,它展示了如何使用大约 5 行代码构建图像分类器、图像分割模型、文本情感模型、推荐系统和表格模型。对于每个应用程序,代码几乎相同。

使用 fastai 进行图像分割的示例。

通读 教程,学习如何在自己的数据集上训练自己的模型。使用导航侧边栏浏览 fastai 文档。这里的每个类、函数和方法都有文档。要了解该库的设计和动机,请阅读经过 同行评审的论文,或观看 此演示,总结一些关键设计点。

包括 fastai 在内的所有 fast.ai 项目都是使用 nbdev 构建的,nbdev 是一个基于 Jupyter Notebook 的完整 literate programming 环境。这意味着每一份文档都可以作为交互式 Jupyter Notebook 访问,并且每个文档页面都包含一个直接在 Google Colab 上打开它的链接,以便进行实验和定制。

从纯 PyTorch、Ignite 或任何其他基于 PyTorch 的库迁移非常容易,甚至可以将 fastai 与其他库结合使用。通常,您将能够使用所有现有的数据处理代码,但能够减少训练所需的代码量,并更容易利用现代最佳实践。以下是来自一些流行库的迁移指南,可以帮助您入门:纯 PyTorchIgniteLightningCatalyst。而且,由于将 fastai 框架的一部分与现有代码和库结合起来非常容易,您可以只选择您想要的部分。例如,您可以使用 fastai 的 GPU 加速计算机视觉库,以及您自己的训练循环。

fastai 包含许多通过回调添加功能的模块。由于灵活的基础设施,它们都可以协同工作,因此您可以选择您需要的内容(并添加您自己的),包括:mixupcutout 增强,一个独特的灵活 GAN 训练框架,一系列调度器(其中许多在其他任何框架中都不可用),包括支持遵循 ULMFiT 中描述的方法进行微调,混合精度,梯度累积,支持 Tensorboard 等一系列日志记录框架(对 Weights and Biases 的支持尤其强大,如此处演示),医学影像等等。其他功能通过 fastai 生态系统添加,例如支持 HuggingFace Transformers(也可以手动完成,如此教程所示)、音频加速推理等。

fastai 中的医学影像。

社区已经为 fastai v2 提供了一些很棒的学习材料,例如 Zach Mueller 的“Zero to Hero”系列:第一部分第二部分

Practical Deep Learning for Coders,课程

之前的 fast.ai 课程已被数十万来自各行各业、世界各地的学生学习。许多学生告诉我们他们如何成为国际机器学习竞赛多项金牌得主收到了顶尖公司的 offer,并且发表了研究论文例如,Isaac Dimitrovsky告诉我们,他“玩机器学习玩了几年,但一直没有真正领悟…[然后]去年年底学了 fast.ai 第一部分课程,我就开窍了”。他接着在享有盛誉的国际 RA2-DREAM Challenge 竞赛中获得了第一名!他开发了一种多阶段深度学习方法,用于评估类风湿关节炎引起的放射学手脚关节损伤评分,并利用了 fastai 库。

今年的课程更进一步。它将机器学习和深度学习结合在一门课程中,涵盖了随机森林、梯度提升、测试集和验证集以及 p 值等主题,这些主题以前是在单独的机器学习课程中。此外,还涵盖了生产和部署,包括关于为我们自己的深度学习驱动的应用程序开发基于 Web 的 GUI 的材料。唯一的先决条件是高中数学和一年的编程经验(最好是 Python)。该课程与旧金山大学的 数据研究所合作,进行现场录制。

完成本课程后,您将知道:

  • 如何训练在以下领域达到最先进水平的模型:
    • 计算机视觉,包括图像分类(例如,按品种分类宠物照片)和图像定位与检测(例如,找到图像中的动物在哪里)。
    • 自然语言处理 (NLP),包括文档分类(例如,电影评论情感分析)和语言建模。
    • 包含分类数据、连续数据和混合数据的表格数据(例如,销售预测),包括时间序列。
    • 协同过滤(例如,电影推荐)。
  • 如何将您的模型转化为 Web 应用程序,并进行部署。
  • 深度学习模型为何以及如何工作,以及如何利用这些知识来提高模型的准确性、速度和可靠性。
  • 实践中真正重要的最新深度学习技术。
  • 如何从头开始实现随机梯度下降和一个完整的训练循环。
  • 如何思考工作的伦理影响,以帮助确保您正在让世界变得更美好,并且您的工作不会被滥用以造成伤害。

我们非常重视教学,采用整体游戏方法。在本课程中,我们首先展示如何使用完整、可用、非常实用且最先进的深度学习网络来解决现实世界问题,使用简单、富有表现力的工具。然后,我们逐渐深入了解这些工具是如何制造的,以及制造这些工具的工具又是如何制造的,等等。我们总是通过例子进行教学。我们确保有一个您可以直观理解的背景和目的,而不是从代数符号操作开始。我们还直接深入细节,向您展示如何从头开始构建深度学习模型的各个组件,包括讨论性能和优化细节。

利用 Colab 和 Gradient 平台的指南,您可以免费完成整个课程,无需进行任何安装,这些平台提供免费的 GPU 驱动的 Notebook。

Deep Learning for Coders with fastai and PyTorch,书籍

要了解这本新书是关于什么的,以及它适合谁,让我们看看其他人对此的评价…… PyTorch 的共同创建者 Soumith Chintala 在 Deep Learning for Coders with fastai and PyTorch前言中说:

但与我不同的是,Jeremy 和 Sylvain 无私地投入了巨大的精力,确保其他人不必走他们走过的痛苦之路。他们创建了一个出色的课程 fast.ai,让了解基础编程的人们能够接触到尖端的深度学习技术。它已经培养了数十万渴望学习的学生,他们已成为优秀的实践者。

在这本同样是他们不懈努力的产物中,Jeremy 和 Sylvain 构建了一个通过深度学习的奇妙旅程。他们使用简单的词语,介绍每一个概念。他们将最先进的深度学习和最前沿的研究带给您,同时又使其非常易于理解。

您将经历计算机视觉的最新进展,深入自然语言处理,并在 500 页的愉快旅程中学习一些基础数学。而且旅程不止于乐趣,他们还会带您将您的想法付诸实践。您可以将 fast.ai 社区(数千名在线实践者)视为您的大家庭,在那里像您一样的人们可以交流和构思大大小小的解决方案,无论问题是什么。

Google 研究总监(以及 AI 权威教科书的作者)Peter Norvig 说:

“深度学习适合所有人”,我们在本书第一章第一节中看到了这句话,虽然其他书籍可能也有类似的说法,但这本书兑现了这一承诺。作者拥有广泛的该领域知识,但能够以一种非常适合有编程经验但无机器学习经验的读者的方式进行描述。本书先展示示例,然后仅在具体示例的背景下讲解理论。对于大多数人来说,这是最好的学习方式。本书在涵盖计算机视觉、自然语言处理和表格数据处理等深度学习的关键应用方面做得非常出色,同时也涵盖了其他一些书籍可能忽略的关键主题,例如数据伦理。总而言之,对于程序员来说,这是掌握深度学习的最佳资源之一。

斯坦福大学医学和影像人工智能中心主任 Curtis Langlotz 说:

Gugger 和 Howard 为所有有过哪怕一点点编程经验的人提供了一个理想的资源。这本书以及与之配套的 fast.ai 课程,通过实践方法,使用预先编写的代码,您可以探索和重用,简单实用地揭开了深度学习的神秘面纱。不再需要苦读关于抽象概念的定理和证明。在第一章中,您将构建您的第一个深度学习模型,到本书末尾,您将知道如何阅读和理解任何深度学习论文的“方法”部分。

fastcore 和 fastgpu

fastcore

Python 是一种强大的动态语言。它没有将所有内容都内置到语言中,而是允许程序员根据自己的需求进行定制。fastcore 利用了这种灵活性,为 Python 添加了受我们喜欢的其他语言启发的特性,例如来自 Julia 的多重分派、来自 Ruby 的 Mixin,以及来自 Haskell 的柯里化、绑定等等。它还添加了一些“缺失的功能”,并清理了 Python 标准库中的一些不足之处,例如简化并行处理,并将 NumPy 中的思想引入到 Python 的列表类型中。

fastcore 包含许多功能。请参阅 文档 获取所有详细信息,其中涵盖了提供的模块:

  • test:简单的测试函数。
  • foundation:Mixins、委托、组合等。
  • utils:有助于函数式编程、并行处理等的实用函数。
  • dispatch:多重分派方法。
  • transform:由部分可逆变换组成的管道。

fastgpu

fastgpu 提供了一个简单的命令 fastgpu_poll,它轮询一个目录以检查要运行的脚本,然后在第一个可用的 GPU 上运行它们。如果没有 GPU 可用,它会等待直到有一个可用。如果有一个以上的 GPU 可用,则会并行运行多个脚本,每个 GPU 运行一个。这是我们发现的运行消融研究的最简单方法,它可以利用您的所有 GPU,不会产生并行处理开销,并且无需手动干预。

致谢

非常感谢所有帮助这些项目取得成果的人,特别要感谢 Sylvain Gugger,他在过去两年里与我在 fast.ai 密切合作。还要感谢旧金山大学 数据研究所 的所有支持,以及 fast.ai 的联合创始人 Rachel Thomas,她(除了其他事情之外)讲授了数据伦理课程,并开发了书中许多数据伦理材料。感谢 fast.ai 社区 的每一个人,感谢你们所有的精彩贡献。