用語集

ミックスド・プレシジョン

混合精度トレーニングでディープラーニングの効率を向上!精度を犠牲にすることなく、高速化、メモリ使用量の削減、省エネルギーを実現します。

Ultralytics HUB で
を使ってYOLO モデルをシンプルにトレーニングする。

さらに詳しく

混合精度トレーニングは、深層学習で使用される技法で、モデルの性能を大幅に損なうことなく計算を高速化し、メモリ要件を削減します。これは、主に16ビット浮動小数点(FP16または半精度)と32ビット浮動小数点(FP32または単精度)という異なる数値精度フォーマットを、学習と推論の際にモデルの異なる部分に戦略的に使用することで実現します。このアプローチは、低精度によるスピードとメモリ効率と、高精度による数値的安定性と精度のバランスをとるものです。

数値の精度を理解する

ディープラーニング・モデルは従来、重み、アクティブ度、勾配を格納するために、IEEE 754標準の単精度浮動小数点フォーマット(FP32)に依存していた。FP32はダイナミック・レンジと精度が広いため、複雑な計算に強い。しかし、FP32の演算には大きな計算パワーとメモリ帯域幅が必要です。FP16のような低精度フォーマットは、16ビットしか使用しないため、メモリフットプリントが半分になり、多くの場合、NVIDIA Tensor コアを搭載した最新のGPUなど、互換性のあるハードウェア上ではるかに高速な計算が可能になります。

ミックスド・プレシジョンの仕組み

混合精度トレーニングは、FP16とFP32をインテリジェントに組み合わせます。核となる考え方は、モデルのレイヤー内で畳み込みや行列の乗算のような計算量の多い演算を、より高速なFP16フォーマットで実行することである。しかし、特定の演算はFP16の範囲と精度の低さに影響を受けやすい。モデルの安定性と精度を維持するため、損失計算や 勾配の更新など、学習プロセスの重要な部分は、よりロバストなFP32フォーマットで維持されることが多い。動的損失スケーリングのような技術は、勾配がFP16表現では小さすぎたり大きすぎたりする数値的なアンダーフローやオーバーフローの問題を防ぐために採用されます。PyTorch Mixed Precision - AMP経由)やTensorFlow (tf.keras.mixed_precision API経由)のようなフレームワークは、混合精度学習を実装するための自動サポートを提供しています。

ミックスド・プレシジョンの利点

ミックスド・プレシジョンの導入には、いくつかの重要な利点がある:

  • トレーニングの高速化:サポートされているハードウェアでは、FP16演算が大幅に高速化され、トレーニング時間の短縮につながります。
  • メモリ使用量の削減:モデルの重みとアクティベーションをFP16に格納することで、必要なメモリが半分になり、より大きなモデルやバッチサイズの増大が可能になり、トレーニングダイナミクスが向上します。
  • エネルギー効率:より高速な計算とデータ移動の削減により、トレーニングや推論時の消費電力を低減。
  • 精度の維持:ロス・スケーリングなどのテクニックを用いて正しく実装された場合、混合精度は通常、完全なFP32トレーニングと同等の精度を達成します。トレーニングの最適化の詳細については、モデルトレーニングのヒントを参照してください。

実世界での応用

混合精度は、さまざまなAI領域で広く使われている:

  1. コンピュータビジョン:以下を含む最先端の物体検出モデル Ultralytics YOLOのようなモデル YOLOv8YOLO11のようなYOLOモデルは、学習時に混合精度を活用することが多い。これにより、より高速に学習し、COCOや Objects365のような大規模なデータセットを扱うことができ、最終的にはクラウドサーバーからNVIDIA Jetsonのようなエッジデバイスまで、幅広いプラットフォームへの効率的な展開が可能になる。
  2. 自然言語処理(NLP): GPT-3や BERTのような大規模な大規模言語モデル(LLM)の学習には計算量が必要です。混合精度トレーニングは、メモリと計算要件を管理し、テキスト生成機械翻訳感情分析のようなタスクのためにこれらのモデルをトレーニングすることを可能にするために非常に重要です。

考察と関連概念

非常に有益ではあるが、ミックスド・プレシジョンの導入を成功させるには、それが必要である:

  • ハードウェアのサポート最適な高速化には、FP16計算を加速するために特別に設計されたハードウェア(NVIDIA Volta、Turing、Ampere、または最新のGPUなど)が必要です。
  • 数値的安定性:FP16の限られた範囲に関連する問題を回避するためには、多くの場合、自動フレームワークツールやロス・スケーリングによる慎重な取り扱いが必要である。
  • フレームワークの統合:次のようなディープラーニングフレームワークのビルトインサポートを活用します。 PyTorchまたは TensorFlowは実装を簡素化します。

混合精度トレーニングとモデルの量子化を区別することは重要です。どちらも低精度を使用しますが、量子化は通常、推論速度を最適化し、リソースに制約のあるデバイスへの展開のためにモデルサイズを縮小するために、モデルをさらに低いビットフォーマット(INT8など)に変換します(多くの場合、最初のトレーニングの後)。混合精度は、FP16とFP32を組み合わせることで、学習プロセス自体を高速化することに重点を置いている。

混合精度は、ディープラーニングツールキットの標準的な手法となっており、より大規模で複雑なモデルの開発とトレーニングをより迅速かつ効率的に行うことができる。

すべて読む