Yolo 深圳
深セン
今すぐ参加
用語集

半精度

半精度(FP16)が、より高速な計算、メモリ使用量の削減、効率的なモデル展開によってAIをどのように加速するかをご覧ください。

半精度とは、コンピュータ・メモリ上で16ビットを占有する2進浮動小数点コンピュータ数値フォーマットで、一般にFP16と呼ばれる。 FP16と呼ばれる。急速に発展している ディープラーニング(深層学習)の分野では、このフォーマットは このフォーマットは、数値計算に伝統的に使用されてきた標準的な32ビット単精度(FP32)フォーマットの強力な代替となります。これにより 各数を表現するのに必要なビット数を減らすことで、半精度はメモリ 帯域幅の圧力と モデルの重みとアクティベーションに必要なメモリ帯域幅の圧力とストレージ要件が大幅に削減されます。この効率性により 研究者やエンジニアは、より大規模な 大幅に損なうことなく、限られたリソースのハードウェアで 予測精度を大幅に損なうことなく 予測精度を大幅に損なうことなく

半精度のメカニズム

IEEE 754規格は、浮動小数点数の構造を定義している。 FP16では符号に1ビット、指数に5ビット、分数(仮数)に10ビットが割り当てられている。 このコンパクトな表現は、指数に8ビット、分数に23ビットを使用するFP32とは対照的です。FP16の主な利点は FP16の主な利点 使用する主な利点は 数学演算の高速化である。最新のハードウェア・アクセラレータ NVIDIA Tensor 、最新のハードウェア・アクセラレータは、単精度よりも大幅に高速な半精度の行列乗算を実行するよう特別に設計されています。 のような最新のハードウェア・アクセラレータは、単精度演算よりも大幅に高速な半精度の行列乗算を実行するように設計されています。

しかし、ビット数が減るということは、ダイナミック・レンジが狭くなり、精度が落ちることを意味する。これは、以下のような数値的不安定性を引き起こす可能性がある。 数値の不安定性 勾配の消失など、数値が不安定になる可能性がある。 数値が小さすぎてコンピュータがゼロから明確に表現できなくなる。これを軽減するために、開発者はしばしば 混合精度戦略 これは、学習中にFP16とFP32を動的に切り替えて、半精度のスピードを生かしながら安定性を維持するものです。

AIの実世界での応用

半精度は、特に高スループットや低レイテンシを必要とするシナリオにおいて、最新のAIワークフローではどこにでもある。 レイテンシーを必要とするシナリオでは特にそうである。

  1. エッジAIの展開:モデルを ドローン、スマートカメラ、携帯電話などのエッジAIデバイスにモデルを展開する場合 にモデルを展開する場合、メモリとバッテリ寿命が重要な制約となります。以下のようなモデルを YOLO11のようなモデルをFP16に変換することで、モデル・サイズが のような組み込みシステムの限られたRAMに収めることができる。 NVIDIA Jetsonような組み込みシステムの限られたRAMに収めることができる。これにより これにより、推論レイテンシーが短縮され、自律航法などのアプリケーションでリアルタイム 自律航法などのアプリケーションでのリアルタイム応答が可能になる。
  2. 大規模モデルのトレーニング:大規模言語モデル(LLM)や 大規模言語モデル(LLM)や のような大規模なアーキテクチャのトレーニングには、テラバイト単位のデータ処理が必要です。FP16を利用することで、データセンターは2倍の バッチ・サイズを GPU メモリに収まるようになり トレーニング・サイクルを劇的に短縮する。この効率性は、次世代アーキテクチャの迅速な実験と反復に不可欠である。 YOLO26のような次世代アーキテクチャの迅速な実験と検証に不可欠である。

Ultralytics半精度の実装

のようなフレームワークがある。 PyTorch などの図書館がある。 ultralytics を使えば、半精度を活用するのは簡単だ。次の例は YOLO11 モデルを TensorRT フォーマットを使用する。 NVIDIA GPUで推論速度を最適化するための一般的な方法である。

from ultralytics import YOLO

# Load a pretrained YOLO11 model
model = YOLO("yolo11n.pt")

# Export the model to TensorRT engine with half-precision enabled
# The 'half=True' argument ensures weights are converted to FP16
model.export(format="engine", half=True)

関連用語の区別

ハーフ精度を理解するには、用語集にある関連する最適化技術と区別する必要がある:

  • 半精度対混合精度:半精度は特に16ビットのデータ形式を指すが、混合精度は次のようなトレーニング技術である。 FP16は重い計算のために、FP32は(ウェイトの更新のような)繊細な累積のために、情報の損失を防ぐために使用されます。 情報の損失を防ぐ。
  • 半精度対モデル量子化 モデル量子化:半精度は浮動小数点表現を維持し、単にビット幅を小さくする。量子化は通常 重みをINT8(8ビット整数)などの整数フォーマットに変換する。 のような慎重なキャリブレーション技術を必要とする。 量子化対応トレーニング(QAT) のような慎重なキャリブレーション技術を必要とします。
  • 半精度対Bfloat16Bfloat16 (Brain Floating Point)は、TPUでよく使われる16ビットフォーマットである。 TPUでよく使われる16ビットフォーマットです。これは ダイナミックレンジを維持するためにFP32の8ビット指数を保持するが、分数の精度を犠牲にする。 一般的に、ロス・スケーリングを必要とせず、標準的なIEEE FP16よりも安定したトレーニングが可能です。

これらのフォーマットを使いこなすことで、開発者は次のことが可能になります。 モデルのデプロイメント戦略を、プロジェクトの特定のハードウェアとパフォーマンス要件 最適化されたモデル展開戦略をとることができます。

Ultralytics コミュニティに参加する

AIの未来を共に切り開きましょう。グローバルなイノベーターと繋がり、協力し、成長を。

今すぐ参加