经典的预训练模式、新的前沿研究模式很难调用吗? PyTorch团队今天发布了型号调用神器PyTorch Hub。 只需一行代码,就可以玩BERT、GPT、PGAN等最新机型。 项目地址: https://pytorch.org/hub机器学习领域是重复性的重要需求。 但是,许多机器学习出版的成果很难再现,也无法再现。 随着数万篇arXiv文章和大会投稿等逐年增加的出版成果,研究的再现性变得比以前更重要了。 许多研究都附带了代码和培训模式,虽然对用户有帮助,但需要自己研究使用方法。 今天,PyTorch团队发布了PyTorch Hub。 通过简单的API和工作流代码库,为机器学习研究的再现提供基础构建单元。 PyTorch Hub包含训练有素的模型库,专门用于支持研究的再现,支持新研究的开展。 它还支持Colab,整合了Papers With Code网站,拥有分类器、拆分器、生成器、转换器等广泛的预培训模式。
研究人员发布模型PyTorch Hub支持预训练模型在GitHub上的发布(模型结构和预训练权重的定义)。 这需要添加简单的hubconf.py文件。 此文件列出了支持的模型以及模型所需的依存关系。 用户可以从以下代码仓库中找到使用情形:
3359 github.com/py torch/vision/blob/master/hub conf.py https://github.com/hugging face/py torch-pre trained-bed
在torchvision中,模型包括以下部分:
这些模型可以独立于每个模型文件运行,且与非PyTorch软件包无关。 (在hubconf.py中,和相关依赖项) dependencies[‘torch’]已集成。 因为一旦创建了这些模型,就不需要单独的模型(入口 ) (实体点)。一个直观的示例是HuggingFace’s BERT模型。 其hubconf.py文件如下。
每个模型都需要创建一个名为入口的模型。 bertForMaskedLM模型被指定为入口,希望获得预训练模型的权重。
这些入口可以用作复杂模型的包装器,并提供注释文档和其他帮助函数。 最后,如果有hubconf.py,研究人员可以发送pull请求。 PyTorch接受该请求后,研究人员的模型将显示在PyTorch Hub页面上。 用户工作流PyTorch Hub使用户能够通过几个简单的步骤完成许多任务:1)搜索可用模型。 2 )加载预训练模型3 )了解模型的加载方法和运行参数。 通过几个案例感受PyTorch Hub的便利吧。 您可以使用搜索可用模型torch.hub.list ( ) API来查看仓库中所有可用的模型。
请注意,PyTorch还可以使用预培训模型之外的辅助模块,例如使用bertTokenizer完成BERT模型的预处理过程,从而使工作流更流畅。 既然您已经知道加载模型有哪些预培训模型,就可以使用torch.hub.load ( ) ) API加载这些模型。 使用API加载模型时,只需一行命令,不需要安装额外的wheel。 torch.hub.help ( ) API还提供了有助于演示如何使用预训练模型的信息。
实际上,为了修正错误和提高性能,这些预训练模式经常更新。 通过PyTorch Hub,用户可以轻松获得最终的更新版。
PyTorch团队相信这个特性有助于减轻预训练模型所有者的负担。 也就是说,他认为重复发布包的成本降低了,可以集中在研究(预训练模式)本身上。 另外,这个特性对用户也有很大的好处,可以迅速获得最新的预训练模式。 另一方面,稳定性对用户非常重要。 因此,模型提供者可以在特定分支或Tag中支持用户,而不是直接在master分支中提供。 这将确保代码的稳定性。 例如,pytorch_GAN_zoo可以使用集线器分支支持模型的使用。
请注意传递给hub.load ( ) )的args和kwargs。 它们用于实例化模型。 在上面的示例中,pretrained=True和useGPU=False分别具有不同的预训练模型。 搜索加载的模型如果从PyTorch Hub加载模型,则可以从以下工作流中搜索可用的方法,并更好地理解执行它们所需的参数: Dir(model )方法可以查看模型中的所有方法,并查看bertForMaskedLM模型中可用的方法。
help(model.forward )方法提供模型正常行驶所需的参数。 以下是BERT和DeepLabV3的两个示例。 让我们看看这些模型在加载后如何使用。
Bert:3359 py torch.org/hub/hugging face _ py torch-pre trained-Bert _ Bert/deeeplabv3: https://py torch.org/hub/tub/pre 以前,TensorFlow也发布了TensorFlow Hub。 TensorFlow Hub还用于发布、探索和使用机器学习模型的可复用部分。 最近也发表了关注便利性的tensor flow 2.0 beta,但很多读者倾向于使用PyTorch。 既然这两大框架越来越“相似”,我们到底应该用哪一个呢? 接下来的机器之心简要总结了这两个深度学习框架的发展历程,我相信我们可以开发出无论使用哪一个都想要的酷酷APP应用。 TensorFlow :
PyTorch :
TensorFlow和PyTorch都是经典的机器学习代码库。 随着学术界和工业界对机器学习需求的增加,两者的社区也在不断壮大。 TensorFlow虽然是老字号的机器学习代码库,但由于1.x之前版本存在的诸多问题,使得很多用户逐渐转向了对用户友好、学习门槛低、使用方便的PyTorch。 2023年,TensorFlow注意到了这个问题,在2.x版本中改善了用户体验。 同时,基于两个经典机器学习代码库的进一步工具开发也是近年来的趋势。 过去有一些基于TensorFlow的Keras和基于PyTorch的fast.ai,但在最近的一两年中,我们看到了诸如Tensor2Tensor之类的模型库和基于PyTorch的NLP代码库PyText 目前,TensorFlow的生态系统更加多样化和完善,具有多种语言的支持,险恶使用的缺点也逐渐得到改善。 另一方面,由于PyTorch本身的用户友好特性,基于代码的APP应用程序开发的进度似乎也赶上了TensorFlow,但在多语言支持等方面,PyTorch仍然存在很大的差距。 这场机器学习生态之战到底将走向何方,还不清楚。 未来机器学习代码框架的发展趋势是模型的训练和部署工作量越来越低,“积木式”这种应用部署方式越来越普遍。 研究者和开发人员的精力完全转移到模型结构的设计、部署和完善上,而不是框架的选择和其他基础工程问题上。
参考链接: https://py torch.org/blog/towards-reproducible-research-with-py torch-hub /