欢迎使用 fastai

fastai 利用现代最佳实践,简化了快速、准确的神经网络训练

CI PyPI Conda (channel only)

安装

通过使用 Google Colab,您无需安装即可使用 fastai。事实上,本文档的每一页都可以作为交互式 Notebook 使用 - 点击任意页面顶部的“在 Colab 中打开”即可打开(请务必将 Colab 运行时更改为“GPU”,以获得快速运行!)有关更多信息,请参阅 fast.ai 关于 使用 Colab 的文档。

您可以在自己的机器上使用 conda 安装 fastai(强烈推荐),只要您运行的是 Linux 或 Windows(注意:不支持 Mac)。对于 Windows,请参阅“在 Windows 上运行”获取重要注意事项。

我们建议使用 miniconda(或 miniforge)。首先使用此处显示的 conda 命令安装 PyTorch,然后运行

conda install fastai::fastai

要使用 pip 安装,请使用:pip install fastai

如果您打算自行开发 fastai,或者想使用最新版本,可以使用可编辑安装(如果这样做,您还应该使用 fastcore 的可编辑安装来搭配使用)。首先安装 PyTorch,然后

git clone https://github.com/fastai/fastai
pip install -e "fastai[dev]"

学习 fastai

开始使用 fastai(和深度学习)的最佳方式是阅读本书,并完成免费课程

要了解 fastai 的可能性,请查看快速入门,其中展示了如何使用大约 5 行代码构建图像分类器、图像分割模型、文本情感模型、推荐系统和表格模型。对于每种应用,代码都非常相似。

阅读教程,了解如何在自己的数据集上训练自己的模型。使用导航侧边栏浏览 fastai 文档。此处记录了每个类、函数和方法。

要了解该库的设计和动机,请阅读同行评审论文

关于 fastai

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

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

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

Layered API

从其他库迁移

从纯 PyTorch、Ignite 或任何其他基于 PyTorch 的库迁移非常容易,甚至可以将 fastai 与其他库结合使用。通常,您可以使用所有现有的数据处理代码,但可以减少训练所需的代码量,并更容易利用现代最佳实践。以下是一些流行库的迁移指南,可帮助您入门

Windows 支持

由于 Python 在 Jupyter 和 Windows 上的多进程问题,Dataloadernum_workers 会自动重置为 0,以避免 Jupyter 挂起。这使得在 Windows 上的 Jupyter 中进行计算机视觉等任务比在 Linux 上慢很多倍。如果您从脚本中使用 fastai,则不存在此限制。

请参阅此示例,以充分利用 Windows 上的 fastai API。

我们建议使用 Windows Subsystem for Linux (WSL) 来代替——如果您这样做,您可以使用常规的 Linux 安装方法,并且不会遇到 num_workers 的问题。

测试

要并行运行测试,请启动

nbdev_test

要使所有测试通过,您需要安装 settings.ini 中指定为 dev_requirements 的依赖项

pip install -e .[dev]

测试是使用 nbdev 编写的,例如参阅 test_eq 的文档。

贡献

克隆此仓库后,请确保您已在终端中运行 nbdev_install_hooks。这将安装 Jupyter 和 git 钩子,以自动清理、信任和修复 Notebook 中的合并冲突。

在仓库中进行更改后,您应该运行 nbdev_prepare 并进行额外和必要的更改,以便通过所有测试。

Docker 容器

对于对此项目官方 docker 容器感兴趣的人,可以在此处找到它们。