PyTorch Hub:图灵奖得主 Yann LeCun 强推!一行代码轻松复现主流模型

简介: 无论 ResNet、BERT、GPT、VGG、PGAN,还是 MobileNet,只需一行代码轻松复现!

雷锋网 AI 科技评论按:6 月 11 日,Facebook 宣布推出 PyTorch Hub。这是一个简单的 API 和工作流程,包含计算机视觉、自然语言处理领域的诸多经典模型的聚合中心,为机器学习研究的复现提供了基础的构建模块。无论是 ResNet、BERT、GPT、VGG、PGAN,还是 MobileNet 等经典模型,只需输入一行代码,就能实现一键调用。

TB1mFqkcBiE3KVjSZFMXXbQhVXa.png

图灵奖得主 Yann LeCun 强烈推荐

关于 PyTorch Hub

可复现性是许多研究领域的基本要求,包括基于机器学习技术的研究领域。然而,许多机器学习出版物要么不可复现,要么难以复现。随着研究出版物数量的持续增长,包括目前在 arXiv 上的数万份论文以及历史大会投稿,研究的可复现性比以往重要得多。虽然其中很多出版物都附上了有用的代码以及训练有素的模型,但仍为用户留下了一些需要自行解决的步骤。

所以 PyTorch 团队推出了 PyTorch Hub:一个简单的 API 和工作流程,为机器学习研究的复现提供了基础的构建模块。它由一个经过预先训练的模型存储库组成,专门设计用于协助研究的可复现性并实现新的研究。它还内置了支持 Colab,集成 Papers With Code 网站,目前已有一组预训练模型,包括 Classification、Segmentation、Generative 和 Transformer 等等。

TB1Qs5qcBGw3KVjSZFDXXXWEpXa.png

[所有者] 发布模型

PyTorch Hub 可通过添加一个简单的 hubconf.py 文件,实现将预训练模型 (模型定义和预训练权重) 发布到 GitHub 存储库。这提供了所支持模型的枚举以及运行模型所需的依赖项列表。用户可以在 torchvision,huggingface-bert 和 gan-model-zoo 存储库中找到示例。

最简单的案例:torchvision's hubconf.py:

TB1esKjcEGF3KVjSZFmXXbqPXXa.png

在 torchvision,模型具有以下属性:

每个模型文件都可以独立正常执行

无需要除 PyTorch 以外的任何包(在 hubconf.py 中:dependencies['torch'])

无需单独模型入口,因为模型一旦创建,即可无缝提取使用

将包依赖最小化,可减少用户导入模型后需要立即进行实验时出现的各类问题。一个更直观的案例是 HuggingFace's BERT 模型,其 hubconf.py 文件如下:

TB1TBuicwaH3KVjSZFjXXcFWpXa.png

每个模型都需要创建一个模型入口,下面是一个代码段,指定了 bertForMaskedLM 模型入口,并返回预先训练的模型权重。

TB1ITyscrus3KVjSZKbXXXqkFXa.png

这些模型入口可以作为复杂模型的包装器,它们可以提供注释文档或其他帮助函数,具有支持下载预训练权重的功能 (例如通过 pretrained=True),或者具有其他特定功能,如可视化。

有了 hubconf.py,研究者就可以去 PyTorch Hub 的 GitHub 页发送拉取请求。若该模型符合高质量、易复现、最有益的要求,Facebook 官方将会与你合作;若模型质量较低,也有被拒绝发布的可能。但拉取请求一旦被接受,该模型将很快出现在 PyTorch Hub 官方网页上,供所有用户浏览。

[用户] 流程

PyTorch Hub 允许用户对已发布的模型执行以下操作:

1、查看可用的模型

用户可以使用 torch.hub.list() API 查看存储库内所有可用的模型入口。

TB1gJOicv1H3KVjSZFHXXbKppXa.png

PyTorch Hub 还允许使用除预训练模型的其它辅助模型,例如在 BERT 模型中进行预处理时加入 bertTokenizer,这会使工作流更顺畅。

2、加载模型

已知了其中提供的模型,用户可以使用 torch.hub.load()API 加载模型入口。这只需要一个命令,而不需要安装其它的 wheel。此外,torch.hub.help()API 可以提供有关如何使用预训练模型演示的有用信息。

TB1MqSjcwmH3KVjSZKzXXb2OXXa.png

模型发布者通常后续也会不断添加错误修复和性能改进,用户通过调用也可以非常简单地获取更新,确保自己用到的是最新版本:

TB1SDOlcBGE3KVjSZFhXXckaFXa.png

这将有助于减轻模型发布者重复发布包的负担,从而使他们更加专注于研究。同时它还可确保,作为用户获得的是最新的可用模型。

而另一方面如果用户更在意稳定性,模型发布者则会提供一些特定的分支或标记 (而不是主分支),以确保代码的稳定性。例如 pytorch_GAN_zoo 的 hub 分支:

TB1Na5jcv5G3KVjSZPxXXbI3XXa.png

3、了解模型可用方法

加载了模型后,可以使用 dir(model) 找出该模型所支持的可用方法,以 bertForMaskedLM 模型为例:

TB1YdyscqSs3KVjSZPiXXcsiVXa.png

help(model.forward) 则可提供运行该方法所需的参数,帮助用户进行更深入的了解。

TB1qiajcEWF3KVjSZPhXXXclXXa.png

其他

PyTorch Hub 中提供的模型也支持 Colab,并直接链接在 Papers With Code 中,用户可以一键进入 Colab 运行模型 Demo。

原文链接:

https://pytorch.org/blog/towards-reproducible-research-with-pytorch-hub/

雷锋网(公众号:雷锋网) AI 科技评论 雷锋网

目录
相关文章
|
29天前
|
机器学习/深度学习 算法 PyTorch
RPN(Region Proposal Networks)候选区域网络算法解析(附PyTorch代码)
RPN(Region Proposal Networks)候选区域网络算法解析(附PyTorch代码)
213 1
|
29天前
|
机器学习/深度学习 自然语言处理 PyTorch
【PyTorch实战演练】基于AlexNet的预训练模型介绍
【PyTorch实战演练】基于AlexNet的预训练模型介绍
44 0
|
2月前
|
机器学习/深度学习 并行计算 PyTorch
TensorRT部署系列 | 如何将模型从 PyTorch 转换为 TensorRT 并加速推理?
TensorRT部署系列 | 如何将模型从 PyTorch 转换为 TensorRT 并加速推理?
134 0
|
20天前
|
机器学习/深度学习 关系型数据库 MySQL
大模型中常用的注意力机制GQA详解以及Pytorch代码实现
GQA是一种结合MQA和MHA优点的注意力机制,旨在保持MQA的速度并提供MHA的精度。它将查询头分成组,每组共享键和值。通过Pytorch和einops库,可以简洁实现这一概念。GQA在保持高效性的同时接近MHA的性能,是高负载系统优化的有力工具。相关论文和非官方Pytorch实现可进一步探究。
50 4
|
2月前
|
自然语言处理 PyTorch 算法框架/工具
自然语言生成任务中的5种采样方法介绍和Pytorch代码实现
在自然语言生成任务(NLG)中,采样方法是指从生成模型中获取文本输出的一种技术。本文将介绍常用的5中方法并用Pytorch进行实现。
117 0
|
3月前
|
机器学习/深度学习 PyTorch 算法框架/工具
Pytorch使用VGG16模型进行预测猫狗二分类
深度学习已经在计算机视觉领域取得了巨大的成功,特别是在图像分类任务中。VGG16是深度学习中经典的卷积神经网络(Convolutional Neural Network,CNN)之一,由牛津大学的Karen Simonyan和Andrew Zisserman在2014年提出。VGG16网络以其深度和简洁性而闻名,是图像分类中的重要里程碑。
|
1月前
|
机器学习/深度学习 数据采集 PyTorch
使用PyTorch解决多分类问题:构建、训练和评估深度学习模型
使用PyTorch解决多分类问题:构建、训练和评估深度学习模型
使用PyTorch解决多分类问题:构建、训练和评估深度学习模型
|
5天前
|
机器学习/深度学习 算法 PyTorch
PyTorch模型优化与调优:正则化、批归一化等技巧
【4月更文挑战第18天】本文探讨了PyTorch中提升模型性能的优化技巧,包括正则化(L1/L2正则化、Dropout)、批归一化、学习率调整策略和模型架构优化。正则化防止过拟合,Dropout提高泛化能力;批归一化加速训练并提升性能;学习率调整策略动态优化训练效果;模型架构优化涉及网络结构和参数的调整。这些方法有助于实现更高效的深度学习模型。
|
5天前
|
机器学习/深度学习 PyTorch 算法框架/工具
PyTorch与迁移学习:利用预训练模型提升性能
【4月更文挑战第18天】PyTorch支持迁移学习,助力提升深度学习性能。预训练模型(如ResNet、VGG)在大规模数据集(如ImageNet)训练后,可在新任务中加速训练,提高准确率。通过选择模型、加载预训练权重、修改结构和微调,可适应不同任务需求。迁移学习节省资源,但也需考虑源任务与目标任务的相似度及超参数选择。实践案例显示,预训练模型能有效提升小数据集上的图像分类任务性能。未来,迁移学习将继续在深度学习领域发挥重要作用。
|
18天前
|
PyTorch 算法框架/工具
使用Pytorch Geometric 进行链接预测代码示例
该代码示例使用PyTorch和`torch_geometric`库实现了一个简单的图卷积网络(GCN)模型,处理Cora数据集。模型包含两层GCNConv,每层后跟ReLU激活和dropout。模型在训练集上进行200轮训练,使用Adam优化器和交叉熵损失函数。最后,计算并打印测试集的准确性。
15 6