文章来源:量子位
原文地址:https://mp.weixin.qq.com/s/lS3YiXzYyY6-XNTFyH_GHg
如有兴趣可以**点击加入极市CV专业微信群**,获取更多高质量干货

为了调用各种经典机器学习模型,今后你不必重复造轮子了。

刚刚,Facebook宣布推出PyTorch Hub,一个包含计算机视觉、自然语言处理领域的诸多经典模型的聚合中心,让你调用起来更方便。

有多方便?

图灵奖得主Yann LeCun强烈推荐,无论是ResNet、BERT、GPT、VGG、PGAN还是MobileNet等经典模型,只需输入一行代码,就能实现一键调用。

厉不厉害!

Facebook官方博客表示,PyTorch Hub是一个简易API和工作流程,为复现研究提供了基本构建模块,包含预训练模型库。

并且,PyTorch Hub还支持Colab,能与论文代码结合网站Papers With Code集成,用于更广泛的研究。

发布首日已有18个模型“入驻”,获得英伟达官方力挺。而且Facebook还鼓励论文发布者把自己的模型发布到这里来,让PyTorch Hub越来越强大。

这个新工具一下子把不少程序员“圈了粉”。

短短几个小时,LeCun的推文就收获了上千条赞,网友好评如潮,花式称赞“Nice”“Great”“Wow”。

前Google Brain员工@mat kelcey调侃说,“Hub”这个词是机器学习模型项目的共享词么?TensorFlow Hub前脚到,PyTorch Hub就来了~

网友@lgor Brigadir跟评说,可能是从GitHub开始流行的。

所以,这个一问世就引发大批关注的PyTorch Hub,具体有哪些功能,该怎么用?来看看。

一行代码就导入

PyTorch Hub的使用简单到不能再简单,不需要下载模型,只用了一个torch.hub.load()就完成了对图像分类模型AlexNet的调用。

import torch
model = torch.hub.load('pytorch/vision', 'alexnet', pretrained=True)
model.eval()

试看效果如何,可一键进入Google Colab运行。

具体怎么用,Facebook分别给用户和发布者提供了指南。

对于用户

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

1、查询可用的模型;
2、加载模型;
3、查询模型中可用的方法。

下面让我们来看看每个应用的实例。

1、查询可用的模型
用户可以使用torch.hub.list()这个API列出repo中所有可用的入口点。比如你想知道PyTorch Hub中有哪些可用的计算机视觉模型:

>>> torch.hub.list('pytorch/vision')
>>>
['alexnet',
'deeplabv3_resnet101',
'densenet121',
...
'vgg16',
'vgg16_bn',
'vgg19','vgg19_bn']

2、加载模型

在上一步中能看到所有可用的计算机视觉模型,如果想调用其中的一个,也不必安装,只需一句话就能加载模型。

model = torch.hub.load('pytorch/vision', 'deeplabv3_resnet101', pretrained=True)

至于如何获得此模型的详细帮助信息,可以使用下面的API:

print(torch.hub.help('pytorch/vision', 'deeplabv3_resnet101'))

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

model = torch.hub.load(..., force_reload=True)

对于另外一部分用户来说,稳定性更加重要,他们有时候需要调用特定分支的代码。例如pytorch_GAN_zoo的hub分支:

model = torch.hub.load('facebookresearch/pytorch_GAN_zoo:hub', 'DCGAN', pretrained=True, useGPU=False)

3、查看模型可用方法

从PyTorch Hub加载模型后,你可以用dir(model)查看模型的所有可用方法。以bertForMaskedLM模型为例:

>>> dir(model)
>>>
['forward'
...
'to'
'state_dict',
]

如果你对forward方法感兴趣,使用help(model.forward) 了解运行运行该方法所需的参数。

>>> help(model.forward)
>>>
Help on method forward in module pytorch_pretrained_bert.modeling:
forward(input_ids, token_type_ids=None, attention_mask=None, masked_lm_labels=None)
...

PyTorch Hub中提供的模型也支持Colab。

进入每个模型的介绍页面后,你不仅可以看到GitHub代码页的入口,甚至可以一键进入Colab运行模型Demo。

对于模型发布者

如果你希望把自己的模型发布到PyTorch Hub上供所有用户使用,可以去PyTorch Hub的GitHub页发送拉取请求。若你的模型符合高质量、易重复、最有利的要求,Facebook官方将会与你合作。

一旦拉取请求被接受,你的模型将很快出现在PyTorch Hub官方网页上,供所有用户浏览。

目前该网站上已经有18个提交的模型,英伟达率先提供支持,他们在PyTorch Hub已经发布了Tacotron2和WaveGlow两个TTS模型。

发布模型的方法也是比较简单的,开发者只需在自己的GitHub存储库中添加一个简单的hubconf.py文件,在其中枚举运行模型所需的依赖项列表即可。

比如,torchvision中的hubconf.py文件是这样的:

# Optional list of dependencies required by the package
dependencies = ['torch']from torchvision.models.alexnet import alexnet
from torchvision.models.densenet import densenet121, densenet169, densenet201, densenet161
from torchvision.models.inception import inception_v3
from torchvision.models.resnet import resnet18, resnet34, resnet50, resnet101, resnet152,\
resnext50_32x4d, resnext101_32x8d
from torchvision.models.squeezenet import squeezenet1_0, squeezenet1_1
from torchvision.models.vgg import vgg11, vgg13, vgg16, vgg19, vgg11_bn, vgg13_bn, vgg16_bn, vgg19_bn
from torchvision.models.segmentation import fcn_resnet101, deeplabv3_resnet101
from torchvision.models.googlenet import googlenet
from torchvision.models.shufflenetv2 import shufflenet_v2_x0_5, shufflenet_v2_x1_0
from torchvision.models.mobilenet import mobilenet_v2

Facebook官方向模型发布者提出了以下三点要求:

1、每个模型文件都可以独立运行和执行
2、不需要PyTorch以外的任何包
3、不需要单独的入口点,让模型在创建时可以无缝地开箱即用

Facebook还建议发布者最小化对包的依赖性,减少用户加载模型进行实验的阻力。

支持公开代码,从顶会做起

就在PyTorch Hub上线的同时,学术会议ICML 2019也开始在加州长滩举行。

和Facebook的理念相似,今年的ICML大会,首次鼓励研究人员提交代码以证明论文结果,增加了论文可重复性作为评审考察的因素,

也就是说,开放代码更容易让你的论文通过评审。

此前,挪威科技大学计算机科学家Odd Erik Gundersen调查后发现,过去几年在两个AI顶会上提出的400种算法中,只有6%的研究有公开代码。这就让长江后浪的直接调用非常困难了。

ICML的政策也是顺应了不少研究人员的心声,这个政策施行的效果还不错。

据ICML 2019大会协同主席Kamalika Chaudhuri等人进行的统计显示,今年大约36%的提交论文和67%的已接受论文都共享了代码。

其中,来自学术界的研究人员的贡献热情比产业界高得多,学术界提交的作品中有90%的研究包含代码,而产业界只有27.4%。

与之相比,NeurIPS 2018的已接收论文中,只有不到一半的论文附上了代码。

总之,对于AI领域的长远发展来说,这是个大好现象~

传送门

官方介绍博客:
https://pytorch.org/blog/towards-reproducible-research-with-pytorch-hub/

测试版PyTorch Hub:
https://pytorch.org/hub

PyTorch Hub的GitHub主页:
https://github.com/pytorch/hub

PyTorch Hub发布!一行代码调用最潮模型,图灵奖得主强推相关推荐

  1. Facebook 发布 PyTorch Hub:一行代码实现经典模型调用!

    作者 | Team PyTorch 译者 | Monanfei 责编 | 夕颜 出品 | AI科技大本营(ID: rgznai100) 6月11日,Facebook PyTorch 团队推出了全新 A ...

  2. PyTorch Hub发布获Yann LeCun强推!一行代码调用经典模型

    作者 | Team PyTorch 译者 | Monanfei 责编 | 夕颜 出品 | AI科技大本营(ID: rgznai100) 导读:6月11日,Facebook PyTorch 团队推出了全 ...

  3. iOS一行代码调用手机系统震动

    第1步:导入#import "AudioToolbox/AudioToolbox.h" 第2步 : 关键的一行代码: AudioServicesPlaySystemSound(kS ...

  4. R 一行代码出Cox回归模型的表格

    在今天的文章中,将介绍一个函数,实现一行代码出Cox回归模型的表格,作为对前人的缅怀和致敬! 首先,安装和载入相关R包: # 安装 install.packages("gtsummary&q ...

  5. 深度学习准「研究僧」预习资料:图灵奖得主Yann LeCun《深度学习(Pytorch)》春季课程...

    视学算法报道 编辑:蛋酱 转载自公众号:机器之心 开学进入倒计时,深度学习方向的准「研究僧」们,你们准备好了吗? 转眼 2020 年已经过半,又一届深度学习方向的准研究生即将踏上「炼丹」之路.对于这一 ...

  6. 图灵奖得主华人高徒发布首款AI芯片!64位RISC-V、高度可编程,低功耗

    李根 发自 凹非寺  量子位 报道 | 公众号 QbitAI 还记得OURS吗? 没错,就是那家简写自Optical Universal RISC Systems,基于RISC-V指令集设计AI芯片的 ...

  7. 代码传奇 | 中科院院士、图灵奖唯一华裔得主:姚期智

    代码传奇 姚期智 图灵奖得主姚期智:57岁毅然归国 卖掉在美房产 中国科学院院士.清华大学交叉信息研究院院长姚期智,是世界著名计算机学家,是图灵奖创立以来首位获奖的亚裔学者,迄今为止获此殊荣的唯一华裔 ...

  8. 2022全球软件研发技术大会发布,图灵奖得主等世界级大师John Hennessy出席

    科技是第一生产力,软件则是不可或缺的生产力要素,是支撑信息革命时代云原生.数字化.人工智能.物联网等各种新兴科技崛起的重要基础.软件行业作为信息产业的核心,迈入了加速变革的新征程,成为了引领新一轮科技 ...

  9. [网络安全自学篇] 七十七.恶意代码与APT攻击中的武器(强推Seak老师)

    这是作者网络安全自学教程系列,主要是关于安全工具和实践操作的在线笔记,特分享出来与博友们学习,希望您喜欢,一起进步.前文分享了逆向分析之OllyDbg动态调试工具,包括INT3断点.反调试.硬件断点和 ...

最新文章

  1. 谷歌BERT预训练源码解析(二):模型构建
  2. 【Java源码分析】HashTable源码分析
  3. 实验5 OpenGL模型视图变换
  4. msdb 数据库_如何检索有关存储在MSDB数据库中的SSIS包的信息
  5. HTML 与 CSS 总结
  6. jQuery+CSS五类验证码(字母、数字、滑动、点击)
  7. 远驱240控制器调整参数_PID控制中三个参数的作用
  8. 点击空白处隐藏指定dom元素(纯javascript方法)
  9. 用c语言输入年份 月份 显示天数,java输入月份,年份,显示对应月份的天数,...
  10. 财源滚滚的第三方支付牌照
  11. 【Excel绝技】之 快速数据填充
  12. H3C S3610 交换机组播静态路由的配置
  13. 计算机二级程序填空题、程序修改题、程序设计题
  14. Docker-核心篇(1)-CentOS7安装Docker社区版
  15. SQL注入漏洞-SQL注入原理与实践
  16. iOS 语音搜索通讯录算法
  17. AWS Academy 学习平台建立 Learner Lab - 教师
  18. Flutter AnimatedSwitcher 实现的滑动切换数字动画效果
  19. java单例实例对象在springboot中实例化了2次,原因竟然是热部署的锅(记一次神奇的bug)
  20. 【HIVE数据倾斜常见解决办法】

热门文章

  1. 【极光推送】给指定用户发送消息
  2. Java设计模式 之 工厂方法模式
  3. Eclipse代码注释模板
  4. websocket vs keep-live
  5. 为利用 QT 制作的项目设置图标
  6. 流行病学与生物统计学: 临床研究导论 Epidemiology and Biostatistics: An Introduction to Clinical Research
  7. SnapGene 4.3.6 win 中文完美不闪退
  8. 干货,师兄倾力推荐的14个实验心得
  9. Android(六)——Android第一周学习
  10. 软件测试用例_通用测试用例执行软件