PyTorch 1.11.0 リリースノート : ハイライト

PyTorch 1.11.0 リリースノート (翻訳)

翻訳 : (株)クラスキャット セールスインフォメーション
日時 : 03/14/2022 (PyTorch 1.11.0 – released on Mar 11th, 2022)

* 本ページは PyTorch 1.11.0 リリースノートの Highlights と関連ブログ記事を翻訳したものです:

 

クラスキャット 人工知能 研究開発支援サービス

クラスキャット は人工知能・テレワークに関する各種サービスを提供しています。お気軽にご相談ください :

◆ 人工知能とビジネスをテーマに WEB セミナーを定期的に開催しています。スケジュール
  • お住まいの地域に関係なく Web ブラウザからご参加頂けます。事前登録 が必要ですのでご注意ください。

お問合せ : 本件に関するお問い合わせ先は下記までお願いいたします。

  • 株式会社クラスキャット セールス・マーケティング本部 セールス・インフォメーション
  • sales-info@classcat.com  ;  Web: www.classcat.com  ;   ClassCatJP

 

PyTorch 1.11, TorchData と functorch が利用可能です

We are excited to announce the release of PyTorch 1.11 ( リリースノート ). このリリースは、434 人の貢献者により行なわれた、1.10 からの 3,300 以上のコミットから構成されています。1.11 と共に、TorchData と functorch のベータ版をリリースしています。

 
概要 :

  • TorchData は柔軟で高性能なデータパイプラインを容易に構築するための一般的なモジュール化されたデータロード・プリミティブのための新しいライブラリです。GitHub でそれを見てください

  • 構成可能な関数変換を PyTorch に追加する、functorch が beta として利用可能になりました。GitHub でそれを見てください

  • 分散データ並列処理 (DDP) の静的グラフの最適化が安定版として利用可能です。

 

TorchData の紹介

TorchData の Beta リリースが発表できることを嬉しく思います。これは柔軟で高性能なデータパイプラインを容易に構築するための一般的なモジュール化されたデータロード・プリミティブのライブラリです。コミュニティのフィードバックに基づいて、既存の DataLoader は多過ぎる機能を一緒にバンドルしていて拡張することが困難である可能性があることを見出しています。更に、異なるユースケースでは同じデータローディング・ユティリティを何度も何度も書き直さなければならない場合も多いです。この目標は、“DataPipe” と呼ばれる Iterable-スタイルと Map-スタイルのビルディングブロックを通して構成可能なデータローディングを可能にすることです、これは PyTorch の DataLoader と共に out of the box に上手く動作します。

DataPipe は Python データ構造に渡るあるアクセス関数、IterDataPipe のために __iter__ そして MapDataPipe のためには __getitem__ を取り、そして僅かな変換が適用された新しいアクセス関数を返します。必要な総てのデータ変換を実行するデータパイプラインを形成するために複数の DataPipe を一緒に連鎖することができます。

ファイルのオープン, テキストのパース, サンプルの変換, キャッシング, シャッフリング, そしてバッチ処理のような、様々なコア機能を提供する 50 以上の DataPipe を実装しました。(Google Drive or AWS S3 のような) クラウドプロバイダーへの接続に関心があるユーザのためには、fsspec と iopath DataPipe がそれを行なうことを可能にします。ドキュメントは IterDataPipeMapDataPipe 各々の詳細な説明と使用サンプルを提供しています。

このリリースでは、幾つかの PyTorch ドメインライブラリはデータセットを DataPipe を使用するように移行しました。TorchText では、ライブラリにより提供されるポピュラーなデータセット は DataPipe を使用して実装され、SST-2 二値テキスト分類チュートリアルのセクション はモデルのためにデータを前処理するために DataPipe を利用する方法を実演しています。TorchVision (nightly リリースで利用可能)TorchRec には DataPipe による別のデータセットのプロトタイプ実装もあります。より具体的なサンプルはここで 見つけられます。

TorchData のためのドキュメント が利用可能になりました。それは DataPipe の使用方法DataLoader と共に使用する方法、そして カスタム DataPipe を実装する方法 をカバーするチュートリアルを含みます。DataLoader に関連する FAQ と将来の計画は プロジェクトの README ファイル に記述されています。

 

functorch の紹介

functorch の最初の beta リリースの発表に興奮しています。Google JAX に強くインスパイアされた、functorch は PyTorch への構成可能な関数変換なライブラリです。それは PyTorch modules と PyTorch autograd と共に動作する、良い eager-mode 性能を持つ、構成可能な vmap (vectorization) と autodiff 変換を提供することが目的です。

構成可能な関数変換は現在 PyTorch で行なう技巧的なユースケースの多くで役立つことができます :

  • サンプル毎の勾配 (or 他のサンプル毎の量) を計算する
  • 単一マシン上でモデルのアンサンブルを実行する
  • MAML の inner ループでタスクをまとめて効率的にバッチ処理する
  • バッチ化されたものに加えてヤコビ行列とヘッセ行列を効率的に計算する

vmap (ベクトル化), vjp (reverse-モード AD) と jvp (forward-モード AD) 変換の構成は上記を各々のための個別のライブラリを設計することなく楽々と表現することを可能にします。

詳細は、ドキュメント, チュートリアル, インストール手順 を見てください。

 

分散訓練

(安定版) DDP 静的グラフ

DDP 静的グラフはモデルが総てのイテレーションで同じセットの used/unused パラメータを使用することを仮定しています、その結果、それは最初のイテレーション後、どのフックがトリガーされるか、フックが何回トリガーされるか、そして勾配計算が準備された順序のような状態を決定論的に知ることができます。静的グラフは最初のイテレーション内のこれらの状態をキャッシュしますので、DDP は以前のリリースではサポートできなかった機能をサポートできるでしょう、例えば、unused パラメータの有無にかかわらず同じパラメータ上での複数の activation チェックポイントのサポートです。静的グラフ機能はまた unused パラメータがあるときパフォーマンス最適化を適用します、例えば、それは総てのイテレーションで unused パラメータを探索するためにグラフを辿ることを回避し、動的 bucketing 順序を可能にします。DDP 静的グラフのこれらの最適化は幾つかの推奨モデルで 10% QPS ゲインをもたらしました。

静的グラフを有効にするには、単にこのように DDP API で static_graph=True を設定します :

ddp_model = DistributedDataParallel(model, static_graph=True)

詳細については、ドキュメントチュートリアル を見てください。

 

以上