3400 コミ​​ットを統合します。バッチサイズの選択に役立つフレームワーク、PyTorch 1.10 がリリースされました

3400 コミ​​ットを統合します。バッチサイズの選択に役立つフレームワーク、PyTorch 1.10 がリリースされました

[[431318]]

10月21日の夜、ついにPyTorch 1.10がリリースされました!

このアップデートには、バージョン 1.9 以降の 426 人の貢献者による 3,400 件を超えるコミットが含まれています。アップデートの主な目的は、PyTorch のトレーニング、パフォーマンス、開発者の使いやすさを向上させることです。

  1. CUDA Graphs API を統合して、CUDA を呼び出す際の CPU オーバーヘッドを削減します。
  2. FX、torch.special、nn.ModuleParametrization などのいくつかのフロントエンド API がベータ版から安定版に移行しました。
  3. JIT コンパイラーの自動融合のサポートでは、GPU に加えて CPU もサポートされるようになりました。
  4. Android NNAPI サポートはベータ版で利用可能です。

フロントエンドAPI

FXの方が安定しています。 FX は、PyTorch プログラムを変換および縮小するために使用できる Python プラットフォームです。関数および nn.Module インスタンスでの Python から Python への変換を容易にします。 FX ツールキットは、Python 言語全体ではなく、Python 言語のサブセットをサポートして簡単に変換できるようにすることを目的としています。 1.10 のリリースにより、FX は安定しています。

SciPy に似た特別なモジュール torch.special が追加され、現在安定して使用可能です。このモジュールには、ガンマ、ベッセル、ガウスの誤差関数を含む 30 個の操作が含まれています。

nn.Module のパラメータ化により、ユーザーは nn.Module 自体を変更することなく、任意のパラメータをパラメータ化できます。このバージョンでは、重みの正規化 (weight_norm)、直交パラメータ化 (行列制約と部分的プルーニング) も追加され、ユーザーはより柔軟に独自のパラメータ化を作成できます。

ベータ版では、PyTorch は CUDA Graphs API を統合して、CUDA を呼び出す際の CPU オーバーヘッドを削減します。CUDA Graphs は、CPU に依存する cuda ワークロードの CPU オーバーヘッドを大幅に削減し、GPU 使用率を高めることでパフォーマンスを向上させます。分散ワークロードの場合、CUDA グラフはジッターを削減することもできます。並列ワークロードは最も遅いワーカーを待機する必要があるため、ジッターを削減すると全体的な並列効率が向上します。

この統合により、CUDA グラフによってキャプチャされたネットワーク コンポーネントと、グラフの制限によりキャプチャできないネットワークの部分との間のシームレスな相互運用が可能になります。

PyTorch の複素テンソルの共役 ( torch.conj() ) は定数時間の O(1) 演算となり、入力 Tensor の共役ビット単位のビューを返します。これは torch.is_conj() を呼び出すことで検証できます。これはすでに、行列乗算、ドット積などのさまざまな他の PyTorch 演算を活用して共役を融合しており、CPU と CUDA の両方でパフォーマンスが大幅に向上し、必要なメモリが少なくなります。

分散トレーニング

バージョン 1.10 では、torch.distributed パッケージの多くの機能がベータ版から安定版に移行しました。

  1. リモート モジュールを使用すると、RPC がユーザーに対して透過的であるローカル モジュールを使用する場合と同じように、ユーザーはリモートで操作できます。
  2. DDP 通信フックを使用すると、ユーザーは DDP がプロセス間で勾配を同期する方法をオーバーライドできます。
  3. ZeroredUndanyOptimizer を DistributedDataParallel と併用すると、プロセスごとのオプティマイザー状態のサイズを縮小できます。この安定したリリースでは、異なるデータ並列ワーカーへの不均一な入力も処理できるようになりました。

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

TorchScript では、正常にコンパイルするために、ソース コードに型注釈が厳密に必要です。長い間、ユーザーは試行錯誤して不足している型注釈や間違った型注釈を追加するしかなく、つまり Torch.Jit.Script によって生成された型チェック エラーを 1 つずつ修正することでバグを解決するしかなく、非常に時間がかかり非効率的でした。現在、PyTorch 1.10 では、MonkeyType などの既存のツールを活用して、torch.jit.script のプロファイル指向入力が可能になり、プロセスがより簡単、高速、効率的になります。

PyTorch 1.10 では、CPU 用の LLVM ベースの JIT コンパイラが追加され、Torch ライブラリ呼び出しのシーケンスを融合してパフォーマンスが向上します。以前のバージョンでは GPU でこの機能がありましたが、1.10 では初めて CPU にコンパイルが導入されました。

PyTorch Profiler は、コード内で最も時間またはメモリコストが高い実行ステップを見つけ、GPU と CPU 間のワークロード分散を視覚化することを目的としています。現在のバージョン 1.10 には、主に次の機能が含まれています。

  1. 拡張メモリ ビュー: これにより、ユーザーはメモリの使用状況をよりよく理解できるようになり、プログラム実行中のさまざまな時点でアクティブなメモリ割り当てを表示することで、開発者がメモリ エラーを回避できるようになります。
  2. 強化されたカーネル ビュー: 追加の列には、グリッドとブロック サイズ、共有メモリの使用量、スレッドごとのレジスタが表示されます。これらのツールは、バッチ サイズの変更、TensorCore、メモリ削減手法などを開発者に推奨できます。
  3. 分散トレーニング: Gloo は分散トレーニング ジョブをサポートするようになりました。
  4. TensorCore: このツールは、Tensor Core (TC) の使用状況を表示し、データ サイエンティストやフレームワーク開発者に推奨事項を提供します。
  5. NVTX: NVTX マーカーのサポートは、古い autograd プロファイラーから移植されています。
  6. モバイル デバイスのプロファイリングのサポート: PyTorch プロファイラーは TorchScript およびモバイル バックエンドとより適切に統合され、モバイル ワークロードのトレースの収集をサポートするようになりました。

モバイル上の PyTorch

昨年、PyTorch は Android Neural Network API (NNAPI) のプロトタイプ サポートをリリースしました。NNAPI の主な機能は、Android アプリケーションが携帯電話チップの最も効率的な部分を使用してニューラル ネットワークを実行できるようにすることです。サポートされているデバイスには、主に GPU (グラフィックス プロセッシング ユニット) と NPU (専用ニューラル プロセッシング ユニット) が含まれます。

新しいバージョンでは、PyTorch は、ロード時のより柔軟な形状のサポートや、テストのためにホスト上でモデルを実行する機能など、演算子 (op) の範囲をさらに広げています。

さらに、オブジェクト検出の例に転移学習が追加されました。

<<:  レポート:中国の人工知能都市ランキングで北京が1位に

>>:  中国の人工知能産業における4つの大きなトレンド

ブログ    
ブログ    

推薦する

信頼性の高い人工知能システムのルールをどのように定義し構築するのでしょうか?

この記事は公開アカウント「Reading Core Technique」(ID: AI_Discov...

眼球認識技術が魔法を発揮し、一目であなたを認識します

サイバーセキュリティは「人民の戦い」を必要とするだけでなく、科学技術の問題でもある。オンライン詐欺で...

マイクロソフト、言語モデルの推論機能を向上させるXOT方式を発表

マイクロソフトは11月15日、Google DeepMindのAlphaZeroにヒントを得て、コン...

人工知能は業界の生態系を変え、銀行支店を減らし、スマートカードを活用する

多くの注意深い国民は、気づかないうちに銀行支店の数が減少していることに気づいています。予備統計による...

数人のアメリカ人作家が共同で書簡を書き、AIが著作権のあるコンテンツを使って作品を生み出す場合、著者に補償を与えるよう求めた。

アクションネットワークによると、7月19日、約8,000人の作家がニューヨーク作家組合宛ての公開書簡...

...

Facebook の MusicGen を使用してテキストを音楽に変換する方法

翻訳者 |ブガッティレビュー | Chonglou MusicGen を使用すると、誰でもテキスト ...

ディープラーニングを理解するための鍵 - パラメータ

これは、これまで見た中で最もわかりやすいニューラル ネットワーク パラメータの説明です。数式も最小限...

時系列予測のための 5 つのディープラーニング モデルの比較

マクリダキス M-コンペティション シリーズ (M4 および M5 と呼ばれます) は、それぞれ 2...

Go-OpenAI を使用して ChatGPT を簡単に呼び出し、無限の創造性を解き放ちましょう。

今日は、go-openai を使用して chatGPT を呼び出すという興味深いトピックを皆さんと共...

Facebook のインタラクティブ ニューラル ネットワーク可視化システム ActiVis がニューラル ネットワークの「ブラック ボックス」を公開

これまで、多くのメディアがニューラルネットワークの「ブラックボックス」問題について熱く議論してきまし...

百度技術研究所は、繁栄するテクノロジーエコシステムを促進するために一般に門戸を開放します

百度は4月28日、「世界に知恵を、未来に人材を育成」をテーマに百度技術研究所の開所式を開催し、もとも...

IoT、AI、ビッグデータが地球を救う方法

私たちは皆、モノのインターネット (IoT)、人工知能 (AI)、ビッグデータが業界の再編とビジネス...

...

99行のコードでアナと雪の女王の特殊効果の太極拳の進化を実現

コンピュータシミュレーション技術の継続的な発展のおかげで、ますますリアルな現実世界をコンピュータで再...