Facebookは深い学習ツールキットPyTorchハブをリリースし、それが簡単に紙を再現するために作ります

最近、PyTorchコミュニティがリリースされ、深い学習ツールキットPyTorchHub、機械学習、ヘルプ労働者が高速に動作し、再現性の重要な論文を達成するために。PyTorchHubは再現性だけでなく、改善するための新たな調査研究のために設計された事前研修モデル倉庫、から構成されています。また、上に構築されたGoogleのコラボのサポート、とのコード付き論文統合。現在PyTorchHubは、画像分類、分割、生成および変換に関連する一連のモデルを含みます。

再現性はもちろん、機械学習技術に基づいてフィールド調査を含んでいる研究の多くの分野での基本的な要件です。しかし、多くのマシンは、関連する論文を学ぶか再現していない、または再現が困難。arXivのプレプリントや数十会議論文に提出した論文の数千人の上の電流を含む論文数、の継続的な成長と、研究作業の再現性はますます重要になってきています。多くの論文が明らかに非常に限られているコードとモデルが、そのような助けを借りて訓練を受けているが、ステップの読者は、再生処理の独自の方法は、大きな需要がまだある見つけます。すぐに作業を完了し、武器のPyTorchハブで再生されたモデルを解放する方法を見てみましょう。

画像

すぐにモデルを解放する方法

このセクションでは、出版社のモデルがPyTorchハブ自身のモデルライブラリに参加する方法を迅速かつ効率的です紹介しています。シンプルhubconf.pyファイル事前研修(ウェイトトレーニングおよび事前定義されたモデル)を追加することにより、PyTorchハブ・サポート・モデルは、GitHubのリポジトリに投稿しました。このモデルは、その依存関係のリストのリストを提供します。いくつかの例には、することができtorchvisionhuggingface-BERTGaN系モデル動物園のリポジトリを見つけること。

Pytochコミュニティはhubconf.py torchvisionファイルの例を示します:

コードをコピーし
 
 
#オプションのリスト で必要な依存パッケージ
 
依存性= [ 'トーチ']
   
 
torchvision.models.alexnetのからインポートalexnet
 
from torchvision.models.densenet import densenet121, densenet169, densenet201, densenet161
 
torchvision.models.inceptionのからインポートinception_v3
 
torchvision.models.resnetから輸入resnet18、resnet34、resnet50、resnet101、resnet152、resnext50_32x4d、resnext101_32x8d
 
torchvision.models.squeezenetから輸入squeezenet1_0、squeezenet1_1
 
torchvision.models.vggのからの輸入vgg11、vgg13、vgg16、vgg19、vgg11_bn、vgg13_bn、vgg16_bn、vgg19_bn
 
torchvision.models.segmentationのからの輸入fcn_resnet101、deeplabv3_resnet101
 
torchvision.models.googlenetから輸入googlenet
 
torchvision.models.shufflenetv2から輸入shufflenet_v2_x0_5、shufflenet_v2_x1_0
 
torchvision.models.mobilenetから輸入mobilenet_v2

torchvisionでは、モデルは、以下の機能があります。

  • 各モデルファイルは、独立して実行されたり、特定の機能を実現することができます
  • 任意の添加なしPyTorchパッケージ(依存関係としてエンコードhubconf.pyに[「トーチ」])
  • モデルは箱の外にシームレスに作成するときので、彼らは、別のエントリ・ポイントを必要としません。

PyTrochコミュニティはパッケージの依存関係を最小限に抑えると考えているユーザーはモデルをロードするときに遭遇する困難を軽減することができます。次のようにここで彼らは、より複雑な例にそのhubconf.pyを--HuggingFaceのBERTモデルを与えました:

コードをコピーし
 
 
依存性= [ 'トーチ'、'tqdm'、'boto3'、'要求'、'正規表現']
   
 
hubconfsから。bert_hubconfのインポート(
 
bertTokenizer、
 
bertModel、
 
bertForNextSentencePrediction,
 
bertForPreTraining,
 
bertForMaskedLM,
 
bertForSequenceClassification,
 
bertForMultipleChoice,
 
bertForQuestionAnswering,
 
bertForTokenClassification
 
)

此外,对于每个模型,PyTorch 官方提到都需要为其创建一个入口点。下面是一个用于指定 bertForMaskedLM 模型的入口点的代码片段,这部分代码完成的功能是返回加载了预训练参数的模型。

复制代码
 
 
def bertForMaskedLM(*args, **kwargs):
 
"""
 
BertForMaskedLM includes the BertModel Transformer followed by the
 
pre-trained masked language modeling head.
 
Example:
 
...
 
"""
 
model = BertForMaskedLM.from_pretrained(*args, **kwargs)
 
return model

这些入口点可以看成是复杂的模型结构的一种封装形式。它们可以在提供简洁高效的帮助文档的同时完成下载预训练权重的功能(例如,通过 pretrained = True),也可以集成其他特定功能,例如可视化。

通过 hubconf.py,模型发布者可以在 Github 上基于template提交他们的合并请求。PyTorch 社区希望通过 PyTorch Hub 创建一系列高质量、易复现且效果好的模型以提高研究工作的复现性。因此,PyTorch 会通过与模型发布者合作的方式以完善请求,并有可能会在某些情况下拒绝发布一些低质量的模型。一旦 PyTorch 社区接受了模型发布者的请求,这些新的模型将会很快出现在 PyTorch Hub 的网页上以供用户浏览。

用户工作流

对于想使用 PyTorch Hub 对别人的工作进行复现的用户,PyTorch Hub 提供了以下几个步骤:1)浏览可用的模型;2)加载模型;3)探索已加载的模型。下面让我们来浏览几个例子。

浏览可用的入口点

用户可以使用 torch.hub.list() API 列出仓库中的所有可用入口点。

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

注意,PyTorch Hub 还允许辅助入口点(除了预训练模型),例如,用于 BERT 模型预处理的 bertTokenizer,它可以使用户工作流程更加顺畅。

加载模型

对于 PyTroch Hub 中可用的模型,用户可以使用 torch.hub.load() API 加载模型入口点。此外,torch.hub.help() API 可以提供有关如何实例化模型的有用信息。

复制代码
 
 
print(torch.hub.help('pytorch/vision', 'deeplabv3_resnet101'))
 
model = torch .hub.load('pytorch/vision', 'deeplabv3_resnet101', pretrained=True)

由于仓库的持有者会不断添加错误修复以及性能改进,PyTorch Hub 允许用户通过调用以下内容简单地获取最新更新:

复制代码
 
 
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)

这里,传递给 hub.load() 的 * args,** kwargs 用于实例化模型。在上面的示例中,pretrained = True 和 useGPU = False 被传递给模型的入口点。

探索已加载的模型

从 PyTorch Hub 加载模型后,用户可以使用以下工作流查看已加载模型的可用方法,并更好地了解运行它所需的参数。

其中,dir(model) 可以查看模型中可用的方法。下面是 bertForMaskedLM 的一些方法:

复制代码
 
 
>>> dir(model)
 
>>>
 
[ 'forward'
 
...
 
'to'
 
'state_dict',
 
]

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)
 
...

更多细节可以查看BERTDeepLabV3页面:

其他探索方式与相关资源

PyTorch Hub 中提供的模型也支持 Colab,并且会直接链接在 Papers With Code 上,用户只需单击链接即可开始使用:

画像

PyTorch 提供了一些相关资源帮助用户快速上手 PyTorch Hub:

FAQ

Q:私たちがモデルとなっているハブに貢献したいのですが、多分私のモデルは、より高い精度を持っている場合、私はそれを貢献すべき?
A:はい、あなたのモデルを提出してください、ハブ次のステップは、投票システムを実証するための最良のモデルを開発することです。

Q:モデル右PyTorchハブ体重を維持する責任がありますか?
A:貢献者として、あなたはモデルの重みを維持する責任があります。あなたのお気に入りのクラウドストレージでモデルをホストすることができ、またはそれは制限を遵守している場合、あなたはGitHubの上であなたのモデルをホストすることができます。あなたは体重を維持することはできません場合は、ハブ倉庫を経由して質問を提出するために私達に連絡してください。

Q:私のモデルは、列車民営化データを使用する場合はどのように何をすべきか?私はまた、このモデル、それに貢献する必要がありますか?
A:あなたのモデルを提出しないでください!PyTorchハブオープンソース研究センターとこれらのモデルを訓練するために公開データセットの使用を拡大します。あなたはプライベートモデルをマージする要求を提出した場合、我々は公共データモデルのトレーニングを使用して再送信するように要求されます。

Q:私は、モデルが保存され、ダウンロード?
A:私たちは、XDGベースディレクトリ仕様に従うと、一般的な標準キャッシュファイルやディレクトリに従ってください。次の順序で使用されるこれらの位置:

  • コールhub.set_dir(<PATH_TO_HUB_DIR>)
  • 環境変数$ TORCH_HOME /ハブと比較TORCH_HOME、もし。
  • あなたは$ XDG_CACHE_HOME /トーチ/ハブに比べて環境変数XDG_CACHE_HOMEを、設定した場合。
  • 〜/ .cache /トーチ/ハブ

関連勧告:

おすすめ

転載: www.cnblogs.com/jfdwd/p/11262511.html