截止2022年11月8日,统计了下github中获星较多的pytorch生态库,有
- • fastai
- • Ray
- • Horovod
- • Flair
- • AllenNLP
- • Albumentations
1. fastai
fastai是一个深度学习库,它为从业者提供了high-level的组件,可以在深度学习领域快速而轻松地提供最先进的结果,并为研究人员提供了low-level的组件,这些low-level的组件可以用来建立新的方法。它的目标是在不对易用性、灵活性或性能做出实质性妥协的情况下完成这两件事。这要归功于一个精心分层的架构,它以解耦抽象的方式表达了许多深度学习和数据处理技术的共同基础模式。通过利用底层Python语言的动态性和PyTorch库的灵活性,这些抽象可以被简洁明了地表达出来。
fastai包括:
- • 一个新的Python类型调度系统,以及一个用于张量的语义类型层次结构
- • 一个经过GPU优化的计算机视觉库,可以在纯Python中进行扩展
- • 一个优化器,它将现代优化器的常见功能重构为两个基本部分,使优化算法可以在4-5行代码中实现。
- • 一个新颖的双向回调系统,可以访问数据、模型或优化器的任何部分,并在训练期间的任何时候改变它
- • 一个新的数据块API
- • 还有更多...
fastai主要有两个设计目标:容易理解和快速生产,同时也是可深入配置的。它建立在低级别的API层次之上,提供了可组合的构建块。这样一来,想要重写部分高级API或添加特定行为以满足其需求的用户就不必学习如何使用最低级别的API。
2.Ray
Ray是一个统一的框架,用于扩展人工智能和Python应用程序。Ray由一个核心的分布式运行时和一个用于简化ML计算的工具包(Ray AIR)组成。
核心主要包括:
- • 任务:在集群中执行的无状态功能。
- • 行为者:在集群中创建的有状态的工作者进程。
- • 对象:可在集群中访问的不可变的值。
Ray AIR主要包括:
- • 数据集:分布式数据预处理
- • 训练:分布式训练
- • 调试:可扩展的超参数调控
- • RLlib: 可扩展的强化学习
- • 服务:可扩展和可编程的服务
Ray可以在任何机器、集群、云提供商和Kubernetes上运行,并具有一个不断增长的生态系统。
3.Horovod
Horovod是一个用于TensorFlow、Keras、PyTorch和Apache MXNet的分布式深度学习训练框架。Horovod最初是由Uber开发的,目的是使分布式深度学习快速和易于使用,将模型训练时间从几天和几周降到几小时和几分钟。有了Horovod,一个现有的训练脚本只需几行Python代码就可以扩展到数百个GPU上运行。
Horovod可以安装在企业内部,也可以在云平台上开箱即用,包括AWS、Azure和Databricks。Horovod还可以运行在Apache Spark之上,使其有可能将数据处理和模型训练统一到一个管道中。一旦Horovod被配置好,同样的基础设施可以用来训练任何框架的模型,从而可以在TensorFlow、PyTorch、MXNet和未来的框架之间轻松切换。
为何选择Horovod
Horovod的主要动机是使一个单GPU训练脚本能够很容易地在许多GPU上成功地进行扩展,并进行并行训练。这有两个方面。
- • 一个人要对一个程序做多少修改才能使其成为分布式程序,以及运行它有多容易?
- • 它在分布式模式下的运行速度会有多快?
在Uber内部,MPI模型要简单得多,需要修改的代码比以前的解决方案(如带有参数服务器的分布式TensorFlow)少得多。一旦用Horovod编写了一个训练脚本的规模,它可以在单GPU,多GPU,甚至多个主机上运行,而不需要进一步修改代码。
除了易于使用之外,Horovod还很快速。下面的图表代表了在128台服务器上进行的基准测试,每台服务器有4个Pascal GPU,由具有RoCE功能的25Gbit/s网络连接。
Horovod对Inception V3和ResNet-101的扩展效率达到90%,对VGG-16的扩展效率达到68%。
虽然安装MPI和NCCL本身似乎是一个额外的麻烦,但它只需要由处理基础设施的团队做一次,而公司里其他建立模型的人都可以享受大规模训练模型的简单性。
4.Flair
Flair是一个非常简单的框架,用于最先进的NLP。
Flair主要特点如下:
- • 一个强大的NLP库。Flair允许你将我们最先进的自然语言处理(NLP)模型应用于你的文本,如命名实体识别(NER)、部分语音标记(PoS)、对生物医学数据的特别支持、意义消歧和分类,并支持快速增长的语言数量。
- • 一个文本嵌入库。Flair有简单的界面,允许你使用和组合不同的单词和文档嵌入,包括我们提出的Flair嵌入、BERT嵌入和ELMo嵌入。
- • 一个PyTorch NLP框架。我们的框架直接建立在PyTorch上,使你可以很容易地训练自己的模型,并使用Flair嵌入和类来实验新方法。
5. AllenNLP
AllenNLP团队设想了以语言为中心的人工智能,公平地服务于人类并致力于改善NLP系统的性能和可解释性,并推进评估和理解这些系统的科学方法。提供高影响力的研究和精心设计的开源工具,以加速世界各地的NLP研究。
6.Albumentations
Albumentations是一个用于图像增强的Python库。图像增强被用于深度学习和计算机视觉任务中,以提高训练模型的质量。图像增强的目的是为了从现有的数据中创建新的训练样本。
为什么选择Albumentations
- • Albumentations支持所有常见的计算机视觉任务,如分类、语义分割、实例分割、物体检测和姿势估计。
- • 该库提供了一个简单的统一的API来处理所有的数据类型:图像(RBG图像、灰度图像、多光谱图像)、分割掩码、边界框和关键点。
- • 该库包含70多种不同的增强方法,以从现有数据中生成新的训练样本。
- • Albumentations是快速的。我们对每一个新版本进行基准测试,以确保增强功能提供最大的速度。
- • 它与流行的深度学习框架,如PyTorch和TensorFlow一起工作。顺便说一下,Albumentations是PyTorch生态系统的一部分。
- • 由专家编写。作者在生产计算机视觉系统和参与竞争性机器学习方面都有经验。许多核心团队成员是Kaggle大师。
- • 该库被广泛用于工业、深度学习研究、机器学习竞赛和开源项目中。
我前面也写过关于albumentation的一点东西,有兴趣可以看看:
- 1. 深度学习常用图像数据增强库albumentations系列教程(一)
- 2. 深度学习常用图像数据增强库albumentations系列教程(二)
- 3. 一种目标检测任务中图像-标注对增强方法