重磅干货,第一时间送达 本文转载自新智元,禁二次转载 为了解决日益增长的论文可复现性需求,Facebook推出了PyTorch Hub,类似TensorFlow Hub的一个模型共享库,加载ResNet、BERT、GPT、VGG、PGAN还是MobileNet等经典模型只需一行代码。用户可以提交、浏览模型,极大的改善了论文的可复现性难题。机器学习论文的可复现性一直是个难题。许多机器学习相关论文要么无法复现,要么难以重现。有时候论文读者经常为了调用各种经典机器学习模型,还要重复造轮子。 随着提交给arXiv以及各种会议上的论文数量开始暴涨,可复现性的重要性也越来越凸显。 很多论文选择随文附上代码和训练模型,在一定程度上对使用者起到了帮助作用,但成效并不明显。复现过程中,仍有大量工作需要论文读者自己摸索。 近日,Facebook新推出了一个深度学习工具包:PyTorch Hub,这是一个简单的API和工作流,提供基本的构建模块从而可以改善机器学习研究的可重现性。 PyTorch Hub包含了一系列与图像分类、图像分割、生成以及转换相关的预训练模型库,例如ResNet、BERT、GPT、VGG、PGAN、MobileNet等经典模型, PyTorch Hub试图以最傻瓜的方式,提高研究工作的复现性。有多简单呢?图灵奖得主Yann LeCun发推表示,只需要一行代码就可以调用所有仓库里的模型,通过一个pull请求来发布你自己的模型。 同时,PyTorch Hub整合了Google Colab,并集成了论文代码结合网站Papers With Code,可以直接找到论文的代码。 复现别人的成果是PyTorch Hub主打功能,那么具体怎么样用呢?PyTorch官方提出三步走策略:浏览可用模型;加载模型;探索已加载的模型。 浏览可用模型 直接用torch.hub.list() API列出所有可用的入口点即可。代码示例: >>> torch.hub.list('pytorch/vision') >>> ['alexnet', 'deeplabv3_resnet101', 'densenet121', ... 'vgg16', 'vgg16_bn', 'vgg19', 'vgg19_bn'] 加载模型 使用PyTorch加载模型很简单,正如LeCun所说,只需要一行代码即可使用。比如从GitHub里加载一个模型:
加载一个PyTorch预训练的模型: model = torch.hub.load('pytorch/vision', 'deeplabv3_resnet101', pretrained=True) 在此之外,我们还需要了解一些其它的相对比较复杂的事情,包括探索已加载的模型、复现别人成果的工作流,以及如何快速发布自己的模型。 探索已加载的模型 从PyTorch Hub加载模型后,可以使用dir(model)查看模型的所有可用方法,示例代码:
还可以用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) ... 只需要在预训练模型(包括模型定义及预训练权重)加入一个hubconf.py文件,就可以通过PyTorch Hub将模型发布到GitHub仓库。以torchvision的hubconf.py文件为例:
torchvision中,模型有3个特性:
最小化包依赖性可减少用户加载模型时遇到的困难。以HuggingFace’s BERT为例: dependencies = ['torch', 'tqdm', 'boto3', 'requests', 'regex'] from hubconfs.bert_hubconf import ( bertTokenizer, bertModel, bertForNextSentencePrediction, bertForPreTraining, bertForMaskedLM, bertForSequenceClassification, bertForMultipleChoice, bertForQuestionAnswering, bertForTokenClassification 前Google Brain员工mat kelcey吐槽“Hub”这个词简直是机器学习模型项目的共享单词,TensorFlow Hub了,PyTorch也Hub了。 那么和PyTorch Hub相比,更早推出的TensorFlow Hub有什么区别呢? TensorFlow Hub是一个共享可重用的机器学习平台,主要面向开发者,谷歌希望TensorFlow Hub能够为研究人员和开发人员提供一种便利的方式,能够更方便的在社区中共享模型。从某种意义上来讲,除了架构本身,共享预训练模型的同时,也共享了开发模型的计算时间和数据集。示例代码:
TensorFlow Hub还有一个非常关键的特性是它的Web端体验。开发人员可以针对开发用例来浏览TF模块,通过TensorFlow Hub推出新的Web体验可以更容易的进行搜索和浏览,同时为multi-publisher平台奠定了基础。 网址: https://v/ 从官方的介绍来看,TF Hub的出发点是开发用例,而PyTorch Hub的出发点是论文复现。目前看来TF Hub的内置模型更多一点;此外,TF Hub提供的web方式浏览模型的体验更好,搜索模型更加方便。 相关资源,方便大家快速上手: PyTorch Hub API手册: https://pytorch.org/docs/stable/hub.html 模型提交地址: https://github.com/pytorch/hub 浏览可用模型: https://pytorch.org/hub 在 Paper with Code 上浏览更多模型: https:/// |
|
来自: 西北望msm66g9f > 《培训》