PyTorch的生态和模型部署
1. PyTorch生态
前几章,我们学习了PyTorch的基本使用、能够定义和修改自己的模型、常用的训练技巧和PyTorch的可视化。
PyTorch的强大,跟PyTorch的活跃的开源社区离不开关系,开源社区围绕PyTorch所生产的一些列工具包和程序,这些优秀的工具包极大地方便了PyTorch在特定领域的使用。比如:
- TorchVision、TorchVideo:用于图片和视频处理
- torchtext:用于自然语言处理
- PyTorch Geometric:图卷积网络
接下来,会介绍PyTorch针对某个领域(图像、视频、文本等)的其中某一具代表性的工具包进行详细介绍,主要包括工具包的作者、所在机构、数据预处理工具、数据扩增、常用模型结构的预定义、预训练模型权重、常用损失函数、常用评测指标、封装好的训练&测试模块及可视化工具。
1.1.1 torchvision简介
" The torchvision package consists of popular datasets, model architectures, and common image transformations for computer vision. "
其包括如下库:
1.2 PyTorchVideo
随着传播媒介和视频平台的发展,视频逐渐成伪新一代的主流媒体,使得视频相关的深度学习模型越来越受关注,但是针对视频的深度学习模型有许多缺点:
- 计算资源耗费更多,没有高质量的model zoo
- 数据集处理麻烦,没有很好的视频处理工具
- 随着多模态的流行,亟需一个工具处理其他模态
- 模型的部署优化问题
PyTorchVideo因此而生,提供了加速视频理解研究所需的可重用、模块化和高效的组件,它支持不同的深度学习视频组件,如视频模型、视频数据集和视频特定转换。其组件如下图:
对应的官方链接
1.2.1 PyTorch的主要部件和亮点
PyTorchVideo提供了model zoo,使得可以使用各种先进的预训练模型及其评判基准,其亮点如下:
- 基于PyTorch:使用PyTorch构建,使得PyTorch生态系统组件的使用变得简单
- Model Zoo:提供了包含I3D、R(2+1)D、SlowFast、X3D、MViT等SOTA模型的高质量model zoo,并且其model zoo与PyTorch Hub做了整合
- 数据预处理和常见数据:支持Kinetics-400, Something-Something V2, Charades, Ava (v2.2), Epic Kitchen, HMDB51, UCF101, Domsev等主流数据集和相应的数据预处理,同时还支持randaug, augmix等数据增强trick。
- 模块化设计:提供许多模块方便用户调用修改,在PyTorchVideo中具体来说包括data, transforms, layer, model, accelerator等模块,方便用户进行调用和读取。
- 支持多模态:对多模态的支持包括了visual和audio,未来会支持更多模态,为多模态模型的发展提供支持。
- 移动端部署优化:支持针对移动端模型的部署优化(使用前述的PyTorchVideo/accelerator模块),模型经过PyTorchVideo优化了最高达7倍的提速,并实现了第一个能实时跑在手机端的X3D模型(实验中可以实时跑在2018年的三星Galaxy S8上,具体请见