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 科技评论 雷锋网

目录
相关文章
|
1月前
|
存储 物联网 PyTorch
基于PyTorch的大语言模型微调指南:Torchtune完整教程与代码示例
**Torchtune**是由PyTorch团队开发的一个专门用于LLM微调的库。它旨在简化LLM的微调流程,提供了一系列高级API和预置的最佳实践
161 59
基于PyTorch的大语言模型微调指南:Torchtune完整教程与代码示例
|
2月前
|
算法 PyTorch 算法框架/工具
Pytorch学习笔记(九):Pytorch模型的FLOPs、模型参数量等信息输出(torchstat、thop、ptflops、torchsummary)
本文介绍了如何使用torchstat、thop、ptflops和torchsummary等工具来计算Pytorch模型的FLOPs、模型参数量等信息。
357 2
|
3月前
|
机器学习/深度学习 PyTorch 算法框架/工具
CNN中的注意力机制综合指南:从理论到Pytorch代码实现
注意力机制已成为深度学习模型的关键组件,尤其在卷积神经网络(CNN)中发挥了重要作用。通过使模型关注输入数据中最相关的部分,注意力机制显著提升了CNN在图像分类、目标检测和语义分割等任务中的表现。本文将详细介绍CNN中的注意力机制,包括其基本概念、不同类型(如通道注意力、空间注意力和混合注意力)以及实际实现方法。此外,还将探讨注意力机制在多个计算机视觉任务中的应用效果及其面临的挑战。无论是图像分类还是医学图像分析,注意力机制都能显著提升模型性能,并在不断发展的深度学习领域中扮演重要角色。
121 10
|
18天前
|
机器学习/深度学习 人工智能 PyTorch
Transformer模型变长序列优化:解析PyTorch上的FlashAttention2与xFormers
本文探讨了Transformer模型中变长输入序列的优化策略,旨在解决深度学习中常见的计算效率问题。文章首先介绍了批处理变长输入的技术挑战,特别是填充方法导致的资源浪费。随后,提出了多种优化技术,包括动态填充、PyTorch NestedTensors、FlashAttention2和XFormers的memory_efficient_attention。这些技术通过减少冗余计算、优化内存管理和改进计算模式,显著提升了模型的性能。实验结果显示,使用FlashAttention2和无填充策略的组合可以将步骤时间减少至323毫秒,相比未优化版本提升了约2.5倍。
35 3
Transformer模型变长序列优化:解析PyTorch上的FlashAttention2与xFormers
|
2月前
|
机器学习/深度学习 自然语言处理 监控
利用 PyTorch Lightning 搭建一个文本分类模型
利用 PyTorch Lightning 搭建一个文本分类模型
68 8
利用 PyTorch Lightning 搭建一个文本分类模型
|
2月前
|
机器学习/深度学习 自然语言处理 数据建模
三种Transformer模型中的注意力机制介绍及Pytorch实现:从自注意力到因果自注意力
本文深入探讨了Transformer模型中的三种关键注意力机制:自注意力、交叉注意力和因果自注意力,这些机制是GPT-4、Llama等大型语言模型的核心。文章不仅讲解了理论概念,还通过Python和PyTorch从零开始实现这些机制,帮助读者深入理解其内部工作原理。自注意力机制通过整合上下文信息增强了输入嵌入,多头注意力则通过多个并行的注意力头捕捉不同类型的依赖关系。交叉注意力则允许模型在两个不同输入序列间传递信息,适用于机器翻译和图像描述等任务。因果自注意力确保模型在生成文本时仅考虑先前的上下文,适用于解码器风格的模型。通过本文的详细解析和代码实现,读者可以全面掌握这些机制的应用潜力。
116 3
三种Transformer模型中的注意力机制介绍及Pytorch实现:从自注意力到因果自注意力
|
3月前
|
机器学习/深度学习 PyTorch 调度
在Pytorch中为不同层设置不同学习率来提升性能,优化深度学习模型
在深度学习中,学习率作为关键超参数对模型收敛速度和性能至关重要。传统方法采用统一学习率,但研究表明为不同层设置差异化学习率能显著提升性能。本文探讨了这一策略的理论基础及PyTorch实现方法,包括模型定义、参数分组、优化器配置及训练流程。通过示例展示了如何为ResNet18设置不同层的学习率,并介绍了渐进式解冻和层适应学习率等高级技巧,帮助研究者更好地优化模型训练。
201 4
在Pytorch中为不同层设置不同学习率来提升性能,优化深度学习模型
|
3月前
|
机器学习/深度学习 监控 PyTorch
PyTorch 模型调试与故障排除指南
在深度学习领域,PyTorch 成为开发和训练神经网络的主要框架之一。本文为 PyTorch 开发者提供全面的调试指南,涵盖从基础概念到高级技术的内容。目标读者包括初学者、中级开发者和高级工程师。本文探讨常见问题及解决方案,帮助读者理解 PyTorch 的核心概念、掌握调试策略、识别性能瓶颈,并通过实际案例获得实践经验。无论是在构建简单神经网络还是复杂模型,本文都将提供宝贵的洞察和实用技巧,帮助开发者更高效地开发和优化 PyTorch 模型。
54 3
PyTorch 模型调试与故障排除指南
|
2月前
|
机器学习/深度学习 PyTorch 算法框架/工具
聊一聊计算机视觉中常用的注意力机制以及Pytorch代码实现
本文介绍了几种常用的计算机视觉注意力机制及其PyTorch实现,包括SENet、CBAM、BAM、ECA-Net、SA-Net、Polarized Self-Attention、Spatial Group-wise Enhance和Coordinate Attention等,每种方法都附有详细的网络结构说明和实验结果分析。通过这些注意力机制的应用,可以有效提升模型在目标检测任务上的性能。此外,作者还提供了实验数据集的基本情况及baseline模型的选择与实验结果,方便读者理解和复现。
64 0
聊一聊计算机视觉中常用的注意力机制以及Pytorch代码实现
|
2月前
|
存储 并行计算 PyTorch
探索PyTorch:模型的定义和保存方法
探索PyTorch:模型的定义和保存方法
下一篇
DataWorks