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

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

翻訳 : (株)クラスキャット セールスインフォメーション
日時 : 10/23/2021

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

 

無料セミナー実施中 クラスキャット主催 人工知能 & ビジネス Web セミナー

人工知能とビジネスをテーマにウェビナー (WEB セミナー) を定期的に開催しています。スケジュールは弊社 公式 Web サイト でご確認頂けます。
  • お住まいの地域に関係なく Web ブラウザからご参加頂けます。事前登録 が必要ですのでご注意ください。
  • Windows PC のブラウザからご参加が可能です。スマートデバイスもご利用可能です。
クラスキャットは人工知能・テレワークに関する各種サービスを提供しております :

人工知能研究開発支援 人工知能研修サービス テレワーク & オンライン授業を支援
PoC(概念実証)を失敗させないための支援 (本支援はセミナーに参加しアンケートに回答した方を対象としています。)

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

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

 

CUDA グラフ APIs, フロントエンドとコンパイラ改良を含む、PyTorch 1.10 リリース

We are excited to announce the release of PyTorch 1.10. このリリースは 426 contributors により行なわれた、1.9 からの 3,400 コミット以上から構成されます。We want to sincerely thank our community for continuously improving PyTorch.

PyTorch 1.10 アップデートは PyTorch の訓練とパフォーマンス、そして開発者のユーザビリティにフォーカスされています。ハイライトは以下のようなものです :

  1. CUDA グラフ API が統合されて CUDA ワークロードのための CPU オーバーヘッドを削減します。

  2. FX, torch.special と nn.Module Parametrization のような幾つかのフロントエンド API がベータからステーブルに移行しました。

  3. JIT コンパイラの自動融合のサポートが GPU に加えて CPU に拡大されました。

  4. 今では Android NNAPI サポートがベータで利用可能です。

 

Frontend APIs

(Stable) Python コード変換 with FX

FX は PyTorch プログラムを変換して低位にする Pythonic なプラットフォームを提供します。それは関数と nn.Module インスタンスの Python-to-Python 変換を容易にする pass writer のツールキットです。このツールキットは変換の実装を容易にするために (Python 言語全体ではなく) Python 言語セマンティクスのサブセットをサポートすることが目的です。1.10 で FX は安定版に移行しています。

FX について 公式ドキュメント と torch.fx を使用して実装されたプログラム変換の GitHub examples で更に学習できます。

 

(Stable) torch.special

SciPy の special モジュール に似た、torch.special モジュールが今ではステーブルで利用可能です。モジュールは gamma, Bessel と (Gauss) 誤差関数を含む、30 演算を持ちます。

詳細はこの ドキュメント を参照してください。

 

(Stable) nn.Module Parametrization

nn.Module parametrizaton はステーブルで利用可能です、これは nn.Module 自身を変更することなく、nn.Module の任意のパラメータやバッファをパラメータ化することをユーザに可能にする機能です。このリリースは重み正規化 (weight_norm), 直交パラメータ化 (matrix constraints と part of pruning) そして独自のパラメータ化を作成するとき多くの柔軟性を追加します。

詳細は チュートリアル と一般的な ドキュメント を参照してください。

 

(Beta) CUDA Graphs API 統合

PyTorch は CUDA Graphs API を統合して CUDA ワークロードの CPU オーバーヘッドを削減します。

CUDA Graphs は CPU-bound cuda ワークロードの CPU オーバーヘッドを大幅に削減して GPU 利用を増やすことによりパフォーマンスを改良します。分散ワークロードについては、CUDA Graphs はまた jitter も削減し、並列ワークロードは最も遅いワーカーを待たなければならないので、jitter の削減は並列効率全体を改善します。

統合は、cuda グラフにより捕捉されたネットワークの部分とグラフ制限により捕捉できないネットワークの部分の間のシームレスな interop (相互運用性) を可能にします。

詳細とサンプルについては ノート を読んでください、そして追加情報については一般的な ドキュメント を参照してください。

 

[Beta] Conjugate View

PyTorch の複素テンソルのための共役 ( torch.conj() ) は今では定数時間演算で、torch.is_conj() を呼び出すことにより見られるような、conjugate ビットがセットされた入力テンソルのビューが返されます。これは、CPU と CUDA の両方で大幅なパフォーマンス向上とメモリ節約に繋がるように共役を演算と融合するため、行列乗算、ドット積 etc. のような様々な他の PyTorch 演算で既に利用されています。

 

分散訓練

分散訓練リリース Now in Stable

1.10 では、分散パッケージでベータからステーブルに移行している幾つかの機能があります :

  • (Stable) Remote モジュール : この機能はローカルモジュールを使用しているようにユーザが遠隔ワーカーでモジュールを操作することを可能にします、そこでは RPC がユーザに透過です。詳細はこの ドキュメント を参照してください。

  • (Stable) DDP 通信フック : この機能は DDP がプロセス間で勾配を同期する方法をユーザが override することを可能にします。詳細はこの ドキュメント を参照してください。

  • (Stable) ZeroRedundancyOptimizer : この機能はプロセス毎の optimizer 状態のサイズを削減するために DistributedDataParallel と連携して使用できます。このステーブル・リリースでは、異なるデータ並列ワーカーへの不均衡な入力を処理できるようになりました。この チュートリアル を確認してください。プロセス間のメモリと計算オーバーヘッドのより良いバランスのためにパラメータ分割アルゴリズムも改良しました。更に学習するにはこの ドキュメント とこの チュートリアル を参照してください。

 

パフォーマンス最適化とツール

[Beta] TorchScript の Profile 指向型付け

TorchScript はコンパイルが成功するためにソースコードが型アノテーションを持つ厳しい要件を持ちます。長い間、試行錯誤を通して (つまり、torch.jit.script により生成された型チェックエラーを修正することにより) 欠落や不正な型アノテーションを追加することだけが可能でした、これは不十分で時間の無駄でした。

今では、MonkeyType のような既存のツールの利用で torch.jit.script のための profile 指向型付けを可能にしました、これはプロセスを遥かに容易に、高速に、そして効率的にします。詳細は、ドキュメント を参照してください。

 

(Beta) CPU フュージョン

PyTorch 1.10 で、CPU のための LLVM ベースの JIT コンパイラを追加しました、これはパフォーマンスを改善するために torch ライブラリ呼び出しのシークエンスを一緒に融合することができます。GPU 上ではこの機能をしばらくの間持っていた一方で、CPU へのコンパイルを持ち込んだのはこのリリースが最初です。Colab ノートブック で幾つかのパフォーマンス結果を貴方自身で確認することができます。

 

(Beta) PyTorch Profiler

PyTorch プロファイラの目的は、時間 and/or メモリの最もコストの高い実行ステップをターゲットにして GPU と CPU の間のワークロード分布を視覚化することです。PyTorch 1.10 は以下の主要な特徴を含みます :

  • Enhanced メモリ・ビュー : これはメモリ使用をより良く理解する助けになります。このツールはプログラム実行の様々なポイントでのアクティブなメモリ割当てを表示することで Out of Memory エラーを回避するのに役立ちます。

  • Enhanced 自動推奨 (= Recommendations) : これはモデルを最適化するのに役立つ自動パフォーマンス推奨を提供するのに役立ちます。このツールはバッチサイズ, TensorCore, メモリ削減テクノロジー等の変更を推奨します。

  • Enhanced カーネル・ビュー : 追加カラムがグリッドとブロックサイズに加えて、共有メモリ使用量やスレッド毎レジスタを表示します。

  • 分散訓練 : 分散訓練ジョブのために Gloo はサポートされました。

  • Forward & Backward パスの演算子を関連付ける : これは trace ビューで、forward パスで見つかった演算子を backward パスにマップするのに役立ちます (そして vice versa)。

  • TensorCore : このツールは Tensor Core (TC) の使用量を示し、データサイエンティストやフレームワーク開発者に推奨を提供します。

  • NVTX : NTVX マーカーのサポートが legacy autograd プロファイラーから移植されました。

  • モバイルデバイス上のプロファイリングのサポート : PyTorch プロファイラーは TorchScript とモバイル・バックエンドとのより良い統合を持つようになり、モバイルワークロードのための trace コレクションを可能にします。

詳細はこの ドキュメント を参照してください。この機能でどのように始めるかを学習するにはこの チュートリアル を確認してください。

 

PyTorch モバイル

(Beta) Android NNAPI サポート in Beta

昨年 Android の Neural Networks API (NNAPI) のための プロトタイプ・サポートをリリース しました。NNAPI は Android apps が、GPU (グラフィクス処理ユニット) と NPU (specialized Neural 処理ユニット) を含む、モバイルフォンを強化するチップの最もパワフルで効率的な部分上で計算集約的なニューラルネットワークを実行することを可能にします。

プロトタイプから、より多くの op カバレッジを追加し、ロード時 flexible shape のサポート、そしてテストのためにホスト上のモデルを実行する機能を追加しました。チュートリアル を使用してこの機能を試してください。

更に、物体検出サンプルに転移学習ステップが追加されました。更に学習するにはこの GitHub ページ を確認してください。フォーラム でフィードバックを提供したり質問をしてください。概要を取得するためにこの プレゼンテーション も確認できます。

Thanks for reading. これらのアップデートに関心があり PyTorch コミュニティに参加したい場合には、ディスカッション・フォーラム に参加して GitHub issues をオープン することをお奨めします。PyTorch の最新情報を取得するには、Twitter, Medium, YouTubeLinkedIn で私達をフォローしてください。

Cheers! Team PyTorch

 

以上