混合精度とは、深層学習モデルの学習効率を向上させるために、16ビットと32ビットの両方の浮動小数点型を計算に使用する機械学習のテクニックです。各精度の長所を活用することで、混合精度はモデルの精度を大幅に犠牲にすることなく、より高速な計算とメモリ使用量の削減を可能にします。
混合精度を使用する主な動機は、より高速な学習と推論処理を実現することである。ディープラーニングモデル、特に大規模なニューラルネットワークは、膨大な計算資源を必要とする。混合精度を使用することで
メモリ使用量の削減:データを16ビット浮動小数点数として格納する場合、32ビット浮動小数点数と比較して半分のスペースで済みます。これにより、メモリ・フットプリントが大幅に削減され、より大きなバッチサイズやより複雑なモデルを同じハードウェアで学習できるようになります。
計算のスピードアップ:NVIDIA 「Tensor Cores」のような最新のGPUの多くは、16ビット演算に最適化されている。混合精度は、このハードウェア最適化を利用することで、より高速な計算を実現することができます。
エネルギー効率:ミックスド・プレシジョンを使用することで、消費電力を削減することもできます。
実際には、混合精度は、モデルの精度を維持するためにモデルの重みを32ビット精度で維持する一方で、活性度や勾配のような特定の計算面を16ビット精度に変換することを意味します。ロス・スケーリングは、精度の低下によって起こりうるアンダーフローを防ぐために一般的に使用されます。
混合精度は、自然言語処理やコンピュータ・ビジョンなど、大規模なモデルやデータセットを扱う様々な分野で非常に重要である。例えば
自然言語処理(NLP):GPT-3や Transformerアーキテクチャのような大規模な言語モデルは、混合精度から大きな恩恵を受けることができ、言語理解と生成に必要な高精度を損なうことなく、より効率的な学習を可能にします。
コンピュータビジョン:を使った物体検出のようなアプリケーションでは、混合精度は推論段階を高速化する。 Ultralytics YOLOこれは、自律走行車や監視システムなどのリアルタイム処理シナリオにおいて極めて重要である。
ミックスドプレシジョンは、モデルの量子化やモデルの刈り込みといった用語と並んでよく登場する。3つともモデルの最適化を目的としているが、アプローチは異なる:
モデルの量子化:モデルの重みと計算をより低いビット幅の表現(例えば8ビット)に変換し、メモリと計算をさらに削減する。
モデルの刈り込み:ニューラルネットワークの冗長な部分を削除してサイズを縮小し、速度を向上させる。
自動運転車:自律走行車では、混合精度がビジョンベースのアプリケーションでより迅速な計算を可能にする。例えば、自動運転におけるAIは、複雑な環境認識を効率的に処理するために混合精度を活用し、安全性と意思決定プロセスの両方を向上させる。
ヘルスケアにおける画像セグメンテーション:混合精度は、CTスキャンやMRIなどの医療用画像処理タスクのヘルスケアにおけるAIアプリケーションでも使用されている。これにより、大規模なデータセットを迅速に処理し、リアルタイムの診断や治療計画に役立てることができる。
混合精度を実装するには、モデルトレーニングのワークフローを変更する必要があり、多くの場合、そのために設計されたライブラリやツールを使用する。フレームワーク TensorFlowや PyTorchのようなフレームワークは,混合精度をビルトインでサポートしており,既存のプロジェクトへの統合を容易にしている。
混合精度のような最適化されたモデルを展開するための実践的なガイドについては、シームレスなモデル開発のために調整されたツールやリソースのための私たちのUltralytics HUBを参照してください。