ホームページ  >  記事  >  テクノロジー周辺機器  >  PyTorch 1.12 がリリースされ、Apple M1 チップの GPU アクセラレーションを正式にサポートし、多くのバグが修正されました

PyTorch 1.12 がリリースされ、Apple M1 チップの GPU アクセラレーションを正式にサポートし、多くのバグが修正されました

WBOY
WBOY転載
2023-04-12 21:31:031002ブラウズ

PyTorch 1.12 がリリースされ、Apple M1 チップの GPU アクセラレーションを正式にサポートし、多くのバグが修正されました

PyTorch 1.12 が正式にリリースされました。アップデートしていない友達はアップデートできます。

PyTorch 1.11 がリリースされてからわずか数か月後に、PyTorch 1.12 が登場しました。このバージョンは、バージョン 1.11 以降の 3124 を超えるコミットで構成され、433 人の寄稿者によって完了されました。バージョン 1.12 には、大幅な改善と多くのバグ修正が含まれています。

新しいバージョンのリリースで最も話題になっているのは、PyTorch 1.12 が Apple M1 チップをサポートしているということかもしれません。

PyTorch 1.12 がリリースされ、Apple M1 チップの GPU アクセラレーションを正式にサポートし、多くのバグが修正されました

実際、PyTorch は今年 5 月の初めに、Mac の M1 バージョンで GPU アクセラレーションによる PyTorch 機械学習モデルのトレーニングを正式にサポートすると正式に発表しました。以前は、Mac での PyTorch トレーニングでは CPU しか利用できませんでしたが、PyTorch バージョン 1.12 のリリースにより、開発者や研究者は Apple GPU を利用してモデル トレーニングを大幅に高速化できるようになりました。

Mac での高速化された PyTorch トレーニングの紹介

PyTorch GPU トレーニングの高速化は、Apple Metal Performance Shaders (MPS) をバックエンドとして使用して実装されます。 MPS バックエンドは PyTorch フレームワークを拡張して、Mac 上で操作をセットアップおよび実行するためのスクリプトと機能を提供します。 MPS は、各 Metal GPU ファミリの固有の特性に合わせて微調整されたコア電力を使用して、コンピューティング パフォーマンスを最適化します。新しいデバイスは、機械学習の計算グラフとプリミティブを MPS Graph フレームワークと MPS が提供するチューニング カーネルにマッピングします。

Apple の自社開発チップを搭載したすべての Mac はユニファイド メモリ アーキテクチャを備えており、GPU が完全なメモリ ストレージに直接アクセスできます。 PyTorch関係者は、これによりMacは機械学習にとって優れたプラットフォームとなり、ユーザーはより大規模なネットワークやバッチサイズをローカルでトレーニングできるようになると述べている。これにより、クラウドベースの開発に関連するコストや追加のローカル GPU コンピューティング能力の必要性が削減されます。また、ユニファイド メモリ アーキテクチャにより、データ取得の待ち時間が短縮され、エンドツーエンドのパフォーマンスが向上します。

CPU ベースラインと比較して、GPU アクセラレーションによりトレーニング パフォーマンスが飛躍的に向上していることがわかります:

PyTorch 1.12 がリリースされ、Apple M1 チップの GPU アクセラレーションを正式にサポートし、多くのバグが修正されましたPyTorch 1.12 がリリースされ、Apple M1 チップの GPU アクセラレーションを正式にサポートし、多くのバグが修正されました

GPU の恩恵により、トレーニングと評価の速度が CPU の速度を上回りました

上の写真は、Apple M1 Ultra (20 コア CPU、64 コア GPU)、128 GB のメモリ、2 TB SSD を搭載した Mac Studio システムを使用して、2022 年 4 月に Apple が実施したテストの結果です。テスト モデルは、ResNet50 (バッチ サイズ = 128)、HuggingFace BERT (バッチ サイズ = 64)、および VGG16 (バッチ サイズ = 64) です。パフォーマンス テストは特定のコンピュータ システムを使用して実施され、Mac Studio のおおよそのパフォーマンスを反映します。

PyTorch 1.12 のその他の新機能

フロントエンド API:TorchArrow

PyTorch 関係者は、ユーザーが試せる新しいベータ版、TorchArrow をリリースしました。バッチデータ処理用の機械学習前処理ライブラリです。これは高性能の Pandas スタイルで、ユーザーの前処理ワークフローと開発を高速化する使いやすい API を備えています。

(ベータ) PyTorch の Complex32 と複素畳み込み

現在、PyTorch は、複素数、複素数 autograd、複素数モジュール、および多数の複素演算 (線形代数と高速フーリエ変換) をネイティブにサポートしています。複素数は、torchaudio や ESPNet などの多くのライブラリですでに使用されており、PyTorch 1.12 では、複素畳み込みと、半精度 FFT 演算をサポートする実験的な complex32 データ型により、複素数機能がさらに拡張されています。 CUDA 11.3 パッケージのバグのため、複数の番号を使用したい場合は、CUDA 11.6 パッケージを使用することが公式に推奨されています。

(ベータ)順方向モード自動微分

順方向モード AD を使用すると、順方向パスで方向導関数 (または同等のヤコビアン ベクトル積) を計算できます。 PyTorch 1.12 では、フォワード モード AD カバレッジが大幅に向上しました。

BetterTransformer

PyTorch は、複数の CPU および GPU の高速パス実装 (BetterTransformer) をサポートするようになりました。これは、TransformerEncoder、TransformerEncoderLayer、および MultiHeadAttender (MHA) の実装を含む、Transformer エンコーダ モジュールです。新しいバージョンでは、モデルと入力機能に応じて、多くの一般的なシナリオで BetterTransformer が 2 倍高速になります。新しいバージョンの API は、以前の PyTorch Transformer API との互換性をサポートしています。これにより、ファストパスの実行要件を満たしている場合は既存のモデルが高速化され、また、以前のバージョンの PyTorch でトレーニングされたモデルが読み取られます。 PyTorch 1.12 がリリースされ、Apple M1 チップの GPU アクセラレーションを正式にサポートし、多くのバグが修正されましたまた、新しいバージョンにはいくつかの更新があります:

  • モジュール: モジュール計算のための新しいベータ機能は関数 API です。この新しい function_call() API により、ユーザーはモジュールの計算で使用されるパラメーターを完全に制御できます。
  • TorchData: DataPipe は DataLoader との互換性を向上させました。 PyTorch は AWSSDK ベースの DataPipes をサポートするようになりました。 DataLoader2 は、DataPipes と他の API およびバックエンドの間の対話を管理する方法として導入されました。
  • nvFuser: nvFuser は、CUDA デバイスにコンパイルするための新しい、より高速なデフォルトの Fuser です。
  • 行列乗算の精度: デフォルトでは、float32 データ型の行列乗算が完全精度モードで動作するようになりました。これは低速ですが、より一貫した結果を生成します。
  • Bfloat16: 1.12 の Bfloat16 データ型に新たな改良が加えられ、精度の低いデータ型の計算時間が短縮されました。
  • FSDP API: バージョン 1.11 でプロトタイプとしてリリースされた FSDP API は、バージョン 1.12 のリリースでベータ版になり、いくつかの改良が追加されました。

詳細については、https://pytorch.org/blog/pytorch-1.12-release/ を参照してください。

以上がPyTorch 1.12 がリリースされ、Apple M1 チップの GPU アクセラレーションを正式にサポートし、多くのバグが修正されましたの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事は51cto.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。