ホームページ > 記事 > テクノロジー周辺機器 > PyTorch 2.0正式版がリリースされました! 1 行のコードで 2 倍高速化、100% 下位互換性あり
PyTorch 2.0 の正式バージョンがついに登場しました。
昨年 12 月、PyTorch Foundation は PyTorch Conference 2022 で PyTorch 2.0 の最初のプレビュー バージョンをリリースしました。
# 以前のバージョン 1.0 と比較して、2.0 には破壊的な変更が加えられています。 PyTorch 2.0 における最大の改善点は torch.compile です。
新しいコンパイラは、PyTorch 1.0 のデフォルトの「eager モード」よりもはるかに高速にコードをオンザフライで生成できるため、PyTorch のパフォーマンスがさらに向上します。
2.0 に加えて、PyTorch ドメイン ライブラリの一連のベータ更新がリリースされました。ツリー ライブラリのほか、TorchAudio、TorchVision、TorchText などのスタンドアロン ライブラリも含まれます。コミュニティ サポート モードを提供するために、TorchX のアップデートも同時にリリースされます。
ハイライトの概要-torch.compile は PyTorch 2.0 のメイン API であり、これをラップし、コンパイルされたモデルの場合、torch.compile は完全なアドオン (およびオプション) 機能であるため、バージョン 2.0 は 100% 下位互換性があります。
- torch.compile の基礎となるテクノロジーとして、Nvidia および AMD GPU を搭載した TorchInductor は、OpenAI Triton 深層学習コンパイラーに依存して、高性能コードと低レベルのハードウェアの詳細を非表示にします。 OpenAI Triton によって生成されたカーネル実装のパフォーマンスは、手書きカーネルや cublas などの特殊な CUDA ライブラリに匹敵します。
- Accelerated Transformers は、カスタム カーネル アーキテクチャを使用して Scaled Dot Product Attendance (SPDA) を実装することにより、トレーニングと推論のための高パフォーマンスのサポートを導入します。 API は torch.compile() と統合されており、モデル開発者は新しいscaled_dot_product_attention() オペレーターを呼び出すことで、スケーリングされたドット積アテンション カーネルを直接使用することもできます。
- Metal Performance Shaders (MPS) バックエンドは、Mac プラットフォーム上で GPU 高速化された PyTorch トレーニングを提供し、最も一般的に使用される上位 60 の操作のサポートを追加し、さらに多くの操作をカバーします。オペレーター数は 300 名を超えています。
- Amazon AWS は、AWS Graviton3 に基づいて C7g インスタンス上の PyTorch CPU 推論を最適化します。 PyTorch 2.0 では、Resnet50 と Bert の改善を含め、以前のバージョンと比較して Graviton の推論パフォーマンスが向上しています。
- TensorParallel、DTensor、2D 並列、TorchDynamo、AOTAutograd、PrimTorch、TorchInductor にわたる新しいプロトタイピング機能と手法。
#コンパイルしてもコンパイルします!
また、ダイナミック シェイプもサポートしており、再コンパイルせずにさまざまなサイズのベクトルを送信できます。
TorchDynamoTorchInductor は、複数のアクセラレータとバックエンド用の高速コードを生成できるディープ ラーニング コンパイラーです。 NVIDIA GPU の場合、OpenAI Triton を主要な構成要素として使用します。
PyTorch Foundation は、2.0 のリリースにより「C から Python への回帰」が促進されると述べ、これが PyTorch の実質的な新しい方向性であると付け加えました。
# 「私たちは「熱心な実行」のパフォーマンスの限界を初日から知っていました。 2017 年 7 月に、私たちは最初の研究プロジェクトを開始し、PyTorch 用のコンパイラーを開発しました。コンパイラーは、研究者が探索のさまざまな段階で動的モデルとプログラムを使用できるように、柔軟性と使いやすさを維持しながら、PyTorch エクスペリエンスを犠牲にすることなく、PyTorch プログラムを迅速に実行できるようにする必要があります。 "
# もちろん、コンパイルされていない「eager モード」は動的リアルタイム コード ジェネレーターを使用しており、2.0 でも引き続き使用できます。開発者は、porch.compile コマンドを使用して、コードを 1 行追加するだけでコンパイル済みモードにすばやくアップグレードできます。
# ユーザーは、2.0 のコンパイル時間が 1.0 と比較して 43% 増加していることがわかります。
このデータは、Nvidia A100 GPU 上の PyTorch 2.0 を使用した 163 のオープン ソース モデルに対する PyTorch Foundation のベンチマーク テストから取得したものです。これには、画像分類、ターゲット検出、画像生成、および他のタスクやさまざまな NLP タスク。
これらのベンチマークは、HuggingFace Transformers、TIMM、TorchBench の 3 つのカテゴリに分類されます。
##NVIDIA A100 GPU イーガー モード torch.compile のさまざまなモデルのパフォーマンスの高速化
PyTorch Foundation によると、新しいコンパイラは、Float32 精度モードを使用すると 21% 高速に実行され、自動混合精度 (AMP) モードを使用すると 51% 高速に実行されます。
これら 163 モデルのうち、93% のモデルで torch.compile が正常に実行できます。
「PyTorch 2.x ロードマップでは、パフォーマンスとスケーラビリティの点でコンパイル モデルをさらに進化させたいと考えています。まだ作業が必要です。開始されませんでした。帯域幅が不十分なため、一部の作業を完了できませんでした。」
#LLM をトレーニングして 2 倍高速化します
さらに、パフォーマンスも PyTorch 2.0 のもう 1 つの主要な焦点であり、開発者が惜しみなく推進してきた焦点でもあります。#実際、新機能のハイライトの 1 つは、以前は Better Transformers として知られていた Accelerated Transformers です。
さらに、PyTorch 2.0 の正式バージョンには、新しい高パフォーマンスの PyTorch TransformAPI 実装が含まれています。
PyTorch プロジェクトの目標の 1 つは、最先端のトランスフォーマー モデルのトレーニングとデプロイをより簡単かつ迅速に行うことです。
トランスフォーマーは、GPT-3 や GPT-4 などの OpenAI モデルを含む、現代の生成人工知能の実現に役立つ基本テクノロジーです。
PyTorch 2.0 Accelerated Transformers では、カスタム カーネル アーキテクチャ アプローチ (スケーリングされたドット積アテンション SDPA とも呼ばれます) により、高いパフォーマンスを提供します。 - トレーニングと推論のパフォーマンス サポート。
Transformer をサポートできるハードウェアの種類は数多くあるため、PyTorch 2.0 は複数の SDPA カスタム カーネルをサポートできます。さらに一歩進んで、PyTorch は、特定のモデルとハードウェア タイプに対して最もパフォーマンスの高いカーネルを選択するカスタム カーネル選択ロジックを統合します。 #アクセラレーションの影響は、開発者が PyTorch の以前のイテレーションよりも速くモデルをトレーニングできるようになるため、重大です。 新バージョンでは、カスタマイズされたカーネル アーキテクチャを使用してスケーリング ドット プロダクト アテンション (SPDA) を処理し、推論の高速パスを拡張することで、トレーニングと推論の高パフォーマンスのサポートが可能になります。建築。 ファストパス アーキテクチャと同様に、カスタム カーネルは PyTorch Transformer API に完全に統合されています。そのため、ネイティブ Transformer と MultiHeadtention API を使用すると、ユーザーは次のことが可能になります。 - 大幅な速度の向上を確認します; # - の使用を含む、より多くのユースケースをサポートします。クロスアテンション モデル、トランスフォーマー デコーダー、およびトレーニング モデル; # - 固定および可変シーケンス長のトランスフォーマー エンコーダーとセルフ アテンションの高速パス推論を引き続き使用します。力のメカニズムの場合。 さまざまなハードウェア モデルと Transformer のユースケースを最大限に活用するために、複数の SDPA カスタム コアがサポートされており、特定のモデルとハードウェアに合わせてカスタム コア選択ロジックが選択されます。タイプ 最高性能のコア。 #既存の Transformer API に加えて、開発者は新しいscaled_dot_product_attention() オペレーターを呼び出すことで、スケーリングされたドット積アテンション アテンション カーネルを直接使用して PyTorch を高速化することもできます。 2 トランスフォーマーは torch.compile() と統合されています。 モデルの使用中に PT2 コンパイル (推論またはトレーニング用) をさらに高速化するには、model = torch.compile(model ) を使用できます。モデルを前処理します。 現在、カスタム カーネルと torch.compile() の組み合わせは、高速化された PyTorch 2 Transformer を使用して Transformer モデル、特に大規模な言語をトレーニングするために使用されています。大幅な加速を実現したモデルです。 カスタム カーネルと torch.compile を使用して、大規模な言語モデルのトレーニングを大幅に高速化します HuggingFace Transformers のメインメンテナである Sylvain Gugger は、PyTorch プロジェクトが発表した声明の中で、「わずか 1 行のコードで、PyTorch 2.0 はトレーニング時に 1.5 倍優れたパフォーマンスを提供できます」と述べています。 Transformers モデル。2.0 倍のスピードアップ。これは、混合精度トレーニングの導入以来、最もエキサイティングなことです!」 PyTorch と Google の TensorFlow が最も人気のある 2 つです深層学習フレームワーク。世界中の何千もの教育機関が PyTorch を使用して深層学習アプリケーションを開発しており、その使用量は増加しています。 PyTorch 2.0 のリリースは、ディープラーニングと人工知能アプリケーションの開発を加速するのに役立つと、Lightning AI の最高技術責任者であり、 PyTorch Lightning Luca Antiga 氏は次のように述べています: ## 「PyTorch 2.0 は深層学習フレームワークの未来を体現しています。PyTorch プログラムをキャプチャするためにユーザーの介入は必要なく、外部から使用できます。このボックスの生成と、デバイスの巨大な高速化により、この可能性は AI 開発者にとってまったく新しい次元を開きます。」 参考資料: https://www.php.cn/link/d6f84c02e2a54908d96f410083beb6e0 https://www.php.cn/link/89b9e0a6f6d1505fe13dea0f18a2dcfa https:// www.php.cn/link/3b2acfe2e38102074656ed938abf4ac3
以上がPyTorch 2.0正式版がリリースされました! 1 行のコードで 2 倍高速化、100% 下位互換性ありの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。