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

目录
相关文章
|
5月前
|
机器学习/深度学习 存储 PyTorch
Neural ODE原理与PyTorch实现:深度学习模型的自适应深度调节
Neural ODE将神经网络与微分方程结合,用连续思维建模数据演化,突破传统离散层的限制,实现自适应深度与高效连续学习。
429 3
Neural ODE原理与PyTorch实现:深度学习模型的自适应深度调节
|
4月前
|
边缘计算 人工智能 PyTorch
130_知识蒸馏技术:温度参数与损失函数设计 - 教师-学生模型的优化策略与PyTorch实现
随着大型语言模型(LLM)的规模不断增长,部署这些模型面临着巨大的计算和资源挑战。以DeepSeek-R1为例,其671B参数的规模即使经过INT4量化后,仍需要至少6张高端GPU才能运行,这对于大多数中小型企业和研究机构来说成本过高。知识蒸馏作为一种有效的模型压缩技术,通过将大型教师模型的知识迁移到小型学生模型中,在显著降低模型复杂度的同时保留核心性能,成为解决这一问题的关键技术之一。
|
6月前
|
PyTorch 算法框架/工具 异构计算
PyTorch 2.0性能优化实战:4种常见代码错误严重拖慢模型
我们将深入探讨图中断(graph breaks)和多图问题对性能的负面影响,并分析PyTorch模型开发中应当避免的常见错误模式。
403 9
|
8月前
|
机器学习/深度学习 存储 PyTorch
PyTorch + MLFlow 实战:从零构建可追踪的深度学习模型训练系统
本文通过使用 Kaggle 数据集训练情感分析模型的实例,详细演示了如何将 PyTorch 与 MLFlow 进行深度集成,实现完整的实验跟踪、模型记录和结果可复现性管理。文章将系统性地介绍训练代码的核心组件,展示指标和工件的记录方法,并提供 MLFlow UI 的详细界面截图。
365 2
PyTorch + MLFlow 实战:从零构建可追踪的深度学习模型训练系统
|
8月前
|
机器学习/深度学习 PyTorch 算法框架/工具
提升模型泛化能力:PyTorch的L1、L2、ElasticNet正则化技术深度解析与代码实现
本文将深入探讨L1、L2和ElasticNet正则化技术,重点关注其在PyTorch框架中的具体实现。关于这些技术的理论基础,建议读者参考相关理论文献以获得更深入的理解。
263 4
提升模型泛化能力:PyTorch的L1、L2、ElasticNet正则化技术深度解析与代码实现
|
9月前
|
机器学习/深度学习 PyTorch 编译器
深入解析torch.compile:提升PyTorch模型性能、高效解决常见问题
PyTorch 2.0推出的`torch.compile`功能为深度学习模型带来了显著的性能优化能力。本文从实用角度出发,详细介绍了`torch.compile`的核心技巧与应用场景,涵盖模型复杂度评估、可编译组件分析、系统化调试策略及性能优化高级技巧等内容。通过解决图断裂、重编译频繁等问题,并结合分布式训练和NCCL通信优化,开发者可以有效提升日常开发效率与模型性能。文章为PyTorch用户提供了全面的指导,助力充分挖掘`torch.compile`的潜力。
1061 17
|
9月前
|
机器学习/深度学习 搜索推荐 PyTorch
基于昇腾用PyTorch实现CTR模型DIN(Deep interest Netwok)网络
本文详细讲解了如何在昇腾平台上使用PyTorch训练推荐系统中的经典模型DIN(Deep Interest Network)。主要内容包括:DIN网络的创新点与架构剖析、Activation Unit和Attention模块的实现、Amazon-book数据集的介绍与预处理、模型训练过程定义及性能评估。通过实战演示,利用Amazon-book数据集训练DIN模型,最终评估其点击率预测性能。文中还提供了代码示例,帮助读者更好地理解每个步骤的实现细节。
|
11月前
|
机器学习/深度学习 JavaScript PyTorch
9个主流GAN损失函数的数学原理和Pytorch代码实现:从经典模型到现代变体
生成对抗网络(GAN)的训练效果高度依赖于损失函数的选择。本文介绍了经典GAN损失函数理论,并用PyTorch实现多种变体,包括原始GAN、LS-GAN、WGAN及WGAN-GP等。通过分析其原理与优劣,如LS-GAN提升训练稳定性、WGAN-GP改善图像质量,展示了不同场景下损失函数的设计思路。代码实现覆盖生成器与判别器的核心逻辑,为实际应用提供了重要参考。未来可探索组合优化与自适应设计以提升性能。
997 7
9个主流GAN损失函数的数学原理和Pytorch代码实现:从经典模型到现代变体

热门文章

最新文章

推荐镜像

更多