前進を続けましょう: TensorFlow 2.4 の新機能を見てみましょう。

前進を続けましょう: TensorFlow 2.4 の新機能を見てみましょう。

TensorFlow 2.4 が利用可能になりました!このリリースには、新しい機能、パフォーマンスとスケーリングの強化に加えて、分散トレーニングと混合精度のさらなるサポート、新しい Numpy フロントエンド、パフォーマンスのボトルネックを監視および診断するためのツールが含まれています。

tf.distribute の新機能

パラメータサーバー戦略

バージョン 2.4 では、ParameterServerStrategy とカスタム トレーニング ループを使用した Keras モデルの非同期トレーニング用に、tf.distribute モジュールの実験的なサポートが導入されました。 MultiWorkerMirroredStrategy と同様に、ParameterServerStrategy はマルチワーカー データ並列戦略ですが、勾配更新は非同期で実行されます。

  • パラメータサーバ戦略

https://tensorflow.google.cn/api_docs/python/tf/distribute/experimental/ParameterServerStrategy

パラメータ サーバー トレーニング クラスターは、ワーカー ノードとパラメータ サーバーで構成されます。変数はパラメータ サーバー上で作成され、各ステップでワーカー ノードによって読み取られ、更新されます。変数は同期なしで各ワーカーノード上で独立して読み取られ、更新されます。ワーカー ノードは互いに依存しないため、この戦略にはワーカーのフォールト トレランスの利点があり、プリエンプティブ サーバーの使用時に役立ちます。

この戦略の使用を開始するには、パラメータ サーバーのトレーニング チュートリアルを参照してください。このチュートリアルでは、ParameterServerStrategy を設定する方法と、ClusterCoordinator クラスを使用してリソースを作成し、関数をスケジュールし、タスクの失敗を処理する方法について説明します。

  • パラメータサーバートレーニングチュートリアル

https://tensorflow.google.cn/tutorials/distribute/parameter_server_training

  • クラスターコーディネーター

https://tensorflow.google.cn/api_docs/python/tf/distribute/experimental/coordinator/ClusterCoordinator

マルチワーカーノードミラーリング戦略

MultiWorkerMirroredStrategy マルチワーカー ミラーリング戦略は実験段階を通過し、安定した API の一部になりました。単一ワーカー レプリカの MirroredStrategy と同様に、MultiWorkerMirroredStrategy は同期データ並列処理を通じて分散トレーニングを実装します。しかし、MultiWorkerMirroredStrategy を使用すると、それぞれ複数の GPU を備えた複数のマシンでトレーニングできます。

  • マルチワーカーミラー戦略

https://tensorflow.google.cn/api_docs/python/tf/distribute/MultiWorkerMirroredStrategy

  • ミラー戦略

https://tensorflow.google.cn/api_docs/python/tf/distribute/MirroredStrategy

同期トレーニングでは、各ワーカー ノードが入力データの異なるスライスに対して順方向パスと逆方向パスを計算し、各ステップの最後に勾配を集計します。 All Reduce と呼ばれるこの集約では、MultiWorkerMirroredStrategy はセット操作を使用して変数の同期を維持します。集合演算は TensorFlow グラフ内の単一の演算子であり、ハードウェア、ネットワーク トポロジ、テンソル サイズに基づいて TensorFlow ランタイムで All Reduce アルゴリズムが自動的に選択されます。集合操作では、ブロードキャストや All Gather などの他の集合操作も実装されます。

  • 集合演算

python の ops/collective_ops.py を参照してください。

MultiWorkerMirroredStrategy を使い始めるには、データセットのシャーディング、分散戦略でトレーニングされたモデルの保存/読み込み、BackupAndRestore コールバックを使用した障害回復に関する詳細が更新された、Keras を使用したマルチワーカーのトレーニングのチュートリアルを参照してください。

  • Keras を使用したマルチワーカートレーニング

マルチワーカー

  • バックアップと復元

https://tensorflow.google.cn/api_docs/python/tf/keras/callbacks/experimental/BackupAndRestore

分散トレーニングを初めて利用し、開始方法を知りたい場合、または Google Cloud Platform (GCP) での分散トレーニングに興味がある場合は、このブログ投稿で主要な概念と手順の概要を確認してください。

Keras アップデート

混合精度

TensorFlow 2.4 では、Keras 混合精度 API が実験段階を通過し、安定した API になりました。ほとんどの TensorFlow モデルは float32 dtype を使用しますが、メモリ使用量が少ない低精度の型 (float16 など) もあります。混合精度とは、トレーニングを高速化するために、同じモデルで 16 ビットと 32 ビットの浮動小数点型を使用することを指します。 API により、GPU ではモデルのパフォーマンスが 3 倍、TPU では 60% 向上します。

  • Keras 混合精度 API

混合精度

混合精度 API を使用するには、Keras レイヤーとオプティマイザーを使用する必要がありますが、モデルや損失などの他の Keras クラスを使用する必要はありません。この API を活用してパフォーマンスを最適化する方法に興味がある場合は、混合精度チュートリアルをご覧ください。

  • 混合精度チュートリアル

https://tensorflow.google.cn/guide/mixed_precision

最適化ツール

このリリースでは、tf.keras.optimizers.Optimizer クラスのリファクタリングがサポートされており、model.fit またはカスタム トレーニング ループのユーザーは、オプティマイザーでの使用に適した任意のトレーニング コードを記述できます。すべての組み込み tf.keras.optimizer.Optimizer サブクラスで gradient_transformers および gradient_aggregator パラメータの使用がサポートされるようになり、カスタム勾配変換を簡単に定義できるようになりました。

  • tf.keras.optimizers.オプティマイザー

https://tensorflow.google.cn/api_docs/python/tf/keras/optimizers/オプティマイザー

リファクタリングにより、カスタム トレーニング ループを記述するときに、損失テンソルを Optimizer.minimize に直接渡すことができるようになりました。

  1. テープ= tf .GradientTape()  
  2. テープ付き:  
  3. y_pred =モデル(x,トレーニング= True )  
  4. 損失= loss_fn (y_pred, y_true)  
  5. # 以下に示すように、損失「Tensor」を使用する場合は、「tf.GradientTape」で渡すことができます。  
  6. optimizer.minimize(損失、model.trainable_variables、テープテープ= テープ)

これらの変更の目的は、Model.fit とカスタム トレーニング ループの両方をオプティマイザーの詳細から解放し、変更なしでオプティマイザーに適したトレーニング コードを作成できるようにすることです。

機能APIモデル構築の内部改善

最後に、Keras では、TensorFlow 2.4 は Keras Functional API の主要な内部構造のリファクタリングをサポートしており、これにより機能モデル構築のメモリ消費を削減し、トリガー ロジックを簡素化できます。このリファクタリングを行うことで、TensorFlowOpLayers が予測どおりに動作し、CompositeTensor 型のシグネチャで動作することも保証されます。

tf.experimental.numpy の紹介

TensorFlow 2.4 では、tf.experimental.numpy の形式で NumPy API のサブセットの実験的なサポートが導入されています。このモジュールを使用すると、TensorFlow によって高速化された NumPy コードを実行できます。この API は TensorFlow 上に構築されているため、すべての TensorFlow API へのアクセスを提供し、TensorFlow とシームレスに相互運用し、コンパイルと自動ベクトル化によって最適化されます。たとえば、TensorFlow ND 配列は NumPy 関数と対話でき、同様に、TensorFlow NumPy 関数は tf.Tensor や np.ndarray などのさまざまな種類の入力を受け入れることができます。

  1. tensorflow.experimental.numpy を tnp としてインポートします ```  
  2. # 入力パイプラインでNumPyコードを使用する 
  3. データセット= tf .data.Dataset.from_tensor_slices(  
  4. tnp.random.randn(1000, 1024)).map(  
  5. ラムダz: z.clip(-1,1)).batch(100)  
  6. # NumPyコードで勾配を計算する 
  7. 定義grad(x, wt):  
  8. tf.GradientTape() をテープとして使用:  
  9. テープ.watch(wt)  
  10. 出力= tnp .dot(x, wt)  
  11. 出力= tf .sigmoid(出力)  
  12. 戻り値:tape.gradient(tnp.sum(output), wt)
  • tf.実験的.numpy

テンソルフロー

  • NumPy API の実験的サポート

https://github.com/tensorflow/community/blob/master/governance/api-reviews.md#experimental-apis

この API の使用に関する詳細については、TensorFlow ガイドの NumPy API を参照してください。

  • TensorFlow の NumPy API ガイド

参考文献

新しいパフォーマンス分析ツール

TensorFlow Profiler でのマルチワーカーのサポート

TensorFlow Profiler は、TensorFlow モデルのトレーニング パフォーマンスとリソース消費を評価するためのツール セットです。 TensorFlow Profiler は、モデル内の演算子のハードウェア リソース消費を理解し、ボトルネックを診断し、最終的にトレーニングを高速化するのに役立ちます。

  • TensorFlow プロファイラー

https://tensorflow.google.cn/guide/profiler

以前のバージョンの TensorFlow Profiler では、マルチ GPU、単一ホストのトレーニング ジョブの監視がサポートされていました。バージョン 2.4 では、MultiWorkerMirroredStrategy トレーニング ジョブのパフォーマンスを分析できるようになりました。たとえば、サンプリング モデル API を使用してオンデマンド分析を実行し、MultiWorkerMirroredStrategy ワーカー ノードで使用されているのと同じサーバー ポートに接続できます。

  1. # モデルを実行する前にプロファイラー サーバーを起動します。  
  2. tf.profiler.experimental.server.start(6009)  
  3. # ここにモデルコードを挿入します...  
  4. # たとえば、ワーカーのIPアドレスが10.0.0.2、10.0.0.3、10.0.0.4で、  
  5. # 2 秒間のパフォーマンス分析を実行します。パフォーマンス分析データは 
  6. # Google Cloud Storage パス「your_tb_logdir」に保存します。  
  7. tf.profiler.experimental.client.trace() は、  
  8. 'grpc://10.0.0.2:6009、grpc://10.0.0.3:6009、grpc://10.0.0.4:6009'、  
  9. 'gs://your_tb_logdir',  
  10. 2000年
  • サンプリングモデル

https://tensorflow.google.cn/guide/profiler#サンプリングモード

あるいは、ワーカー ノード アドレスを Capture Profile ツールに提供して、TensorBoard プロファイル プラグインを使用することもできます。

分析が完了したら、新しい Pod Viewer ツールを使用してトレーニング ステップを選択し、すべてのワーカーにわたるステップの時間カテゴリの内訳を確認できます。

  • ポッドビューアツール

https://tensorflow.google.cn/guide/profiler#pod_viewer

TensorFlow Profiler の使用方法の詳細については、新しくリリースされた GPU パフォーマンス ガイドを参照してください。このガイドでは、モデル トレーニング ジョブのプロファイリング時に発生する可能性のある一般的なシナリオについて説明し、単一の GPU、複数の GPU、または複数のマシンでトレーニングする場合でも、パフォーマンスを最適化するのに役立つデバッグ ワークフローを提供します。

  • GPU パフォーマンス ガイド

https://tensorflow.google.cn/guide/gpu_performance_analysis

TFLite プロファイラー

バージョン 2.4 以降では、Android でも TFLite 内部のトレースを有効にすることができます。 Android 用の TFLite Profiler を使用して、パフォーマンスのボトルネックを特定できるようになりました。 TFLite プロファイリング ガイドでは、Android Studio CPU Profiler と System Trace アプリを使用してトレース イベントを追加し、TFLite トレースを有効にして、トレースをキャプチャする方法を説明します。

Android システム追跡アプリを使用した追跡の例

  • TFLite パフォーマンス評価ガイド

https://tensorflow.google.cn/lite/performance/measurement#trace_tensorflow_lite_internals_in_android

GPUをサポートする新機能

TensorFlow 2.4 は CUDA 11 および cuDNN 8 で実行され、最新の NVIDIA Ampere GPU アーキテクチャをサポートします。 CUDA 11 の機能の詳細については、この NVIDIA 開発者ブログをご覧ください。

  • NVIDIA 開発者ブログ

https://developer.nvidia.com/blog/cuda-11-features-revealed/

さらに、Ampere 搭載 GPU では TensorFloat-32 のサポートがデフォルトで有効になります。 TensorFloat-32 (略して「TF32」) は、NVIDIA Ampere GPU の数学モードであり、特定の float32 演算 (行列乗算や畳み込みなど) を Ampere GPU でより高速に実行できるようになりますが、精度は低下します。詳細については、tf.config.experimental.enable_tensor_float_32_execution のドキュメントを参照してください。

  • tf.config.experimental.enable_tensor_float_32_execution

https://tensorflow.google.cn/api_docs/python/tf/config/experimental/enable_tensor_float_32_execution

<<:  2021年の人工知能業界の予測

>>:  AI を活用して経費管理におけるバイアス問題を解決する方法

ブログ    

推薦する

次世代の AI 人材をどう育成するか?

AI 人材とプロジェクト パイプラインを構築するには、教育的価値だけでなく技術的価値も必要です。そ...

産業インテリジェンスは「新しいインフラ」の下で非常に人気がありますが、まだ多くの問題があります

「新しいインフラ」が流行っています。これらは5G、人工知能、モノのインターネットなどの情報デジタルイ...

モデル、データ、フレームワークの観点から、効率的な大規模言語モデルに関する54ページのレビューを紹介します。

大規模言語モデル (LLM) は、自然言語理解、言語生成、複雑な推論など、多くの重要なタスクにおいて...

AIに置き換えられる最後のグループも失業するだろう

[[262639]]これまで、データラベラーは常に「AI に置き換えられる最初のグループ」と呼ばれて...

メイン検索と店内検索の共同最適化の予備調査と試み

背景と概要Taobao プラットフォームには、検索、推奨、広告など、多くのサブシナリオがあります。各...

AIチャットボット市場は2028年までに150億ドルに達する

AI チャットボットは、自然言語処理と機械学習を使用してユーザーとの人間の会話をシミュレートするソフ...

...

大規模AIモデルに対するいくつかの攻撃方法

人工知能やビッグデータなどの新技術の応用と推進に伴い、ビッグモデルも人気の技術となっています。もちろ...

人工知能企業が大規模なデータ漏洩事件に見舞われ、250万人以上のデータが流出

[[258473]]最近、セキュリティ分野に注力する国内の人工知能企業で大規模なデータ漏洩事件が発生...

自律飛行ロボットが浙江大学から集団で飛び立ち、サイエンス誌の表紙に登場

最近、浙江省安吉市の竹林で、一群の超小型知能ドローンが集団で派遣され、ジャングルの中を楽々と移動した...

AIが研究者に歴史の匂いを再現する手助けをする方法

欧州連合は、AIを使って歴史的な香りや嗅覚要素を再現することを計画している研究チームに280万ユーロ...

マスク氏:大胆なアイデアがあるんです!信号機にAIビジョンプラグインを追加する

オフィスワーカーにとって、大都市では 2 種類の交通手段があります。 彼らは日中は仕事に行くことも、...

3DES 暗号化アルゴリズムは S/MIME プロトコルに最適な選択肢でしょうか?

Q: S/MIME プロトコルでは 3DES 対称暗号化はどのように実装されていますか? A:実際...

2021 年に注目すべき 3 つのデータ分析と AI のトレンド

組織が新型コロナウイルス感染症のパンデミックを乗り越えていく中で、データ分析と AI の ROI を...

マシンビジョン: 2D ビジョンと 3D ビジョンのどちらを選択するか?

マシンビジョンは、人工知能の重要な分野として、今日最も注目されているテクノロジーの 1 つとなってい...