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

半精度

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

半精度(FP16)は、標準的な単精度(FP32)形式が32ビットを使用するのに対し、コンピュータメモリの16ビットを占有する浮動小数点データ形式である。人工知能および機械学習の文脈において、半精度はメモリ消費を大幅に削減しながらモデルトレーニングと推論を高速化するために用いられる重要な最適化技術である。ニューラルネットワークモデルの重みや勾配などの数値を少ないビット数で保存することで、開発者はより大規模なモデルGPU に収めたり、既存モデルを大幅に高速に実行したりできます。この効率性の向上は、YOLO26のような現代的で複雑なアーキテクチャを、大幅な精度を犠牲にすることなくリソース制約のあるデバイスに展開するために不可欠です。

浮動小数点形式の仕組み

半精度を理解するには、全精度との対比が有効である。標準的な32ビット浮動小数点数(FP32)は指数部と仮数部に多くのビットを割り当て、非常に広いダイナミックレンジと高い数値精度を提供する。しかし深層学習モデルは、わずかな数値誤差に対して驚くほど頑健であることが知られている。 ニューラルネットワークは、16ビット形式が提供する 動的範囲と粒度の低下があっても、効果的に学習できる場合が多い。

半精度への移行により、メモリ帯域幅の要件が半分に削減されます。これにより、トレーニング時のバッチサイズを大きくでき、勾配更新を安定化させ、トレーニングプロセス全体の高速化が可能となります。 NVIDIA Tensor 現代的なハードウェアアクセラレータは、FP32よりも大幅に高速な速度でFP16による行列乗算を実行するよう特別に最適化されています。

AIワークフローにおける主な利点

半精度浮動小数点の採用は、AI実践者にとっていくつかの具体的な利点をもたらします:

  • メモリ使用量の削減:モデルはVRAM(ビデオRAM)を半減させるため、開発者は同じハードウェア上でより大規模なネットワークを学習させたり、高解像度の学習データを使用したりできます。
  • 高速推論: 自律走行車や映像解析などのリアルタイムアプリケーションにおいて、FP16はスループット(フレーム毎秒)を倍増させ、推論のレイテンシを低減します。
  • エネルギー効率:処理するビット数が少ないほど必要なエネルギーは少なくなり、これはバッテリー寿命が制約となるエッジAIデバイスや携帯電話にとって極めて重要です。
  • 混合精度トレーニング:多くの現代的なフレームワークは混合精度を利用している。モデルは安定性のために重みのマスターコピーをFP32で保持するが、重い計算はFP16で行う。これにより「両方の長所」——速度と収束安定性——が得られる。

実際のアプリケーション

半精度演算は実運用レベルのAIシステムで広く普及している。具体的な例を二つ挙げる:

  1. エッジデバイスにおけるリアルタイム物体検出: detect セキュリティカメラシステムを想定する Ultralytics を実行する。 モデルを FP16 で展開することで、NVIDIA Jetson や Raspberry Pi AI Kit などの組み込みチップ上でスムーズに動作可能となる。 計算負荷の低減により、システムは遅延なくリアルタイム推論モードで映像フィードを処理でき、 タイムリーな警報発出に不可欠である。

  2. 大規模言語モデル(LLM)の展開: GPT-4やLlamaなどの生成AIモデルは数十億のパラメータを有する。 これらのモデルを完全精度(FP32)で読み込むには膨大なサーバーメモリが必要となり、 コスト面で現実的でない場合が多い。モデルをFP16(あるいはそれ以下の形式)に変換することで、 クラウドプロバイダーは基盤モデルを数千人のユーザーに同時に提供でき、 チャットボットや自動コンテンツ生成といったサービスを経済的に実現可能にする。

半精度 vs. 量子化

両方の手法はモデルサイズの削減を目的としているが、「ハーフプレシジョン」とモデル量子化を区別することが重要である。

  • 半精度(FP16):ビット幅を32から16に削減するが、データを浮動小数点数として保持する。 十分なダイナミックレンジを維持し、GPU 推論GPU デフォルトの選択肢となることが多い。
  • 量子化(INT8):浮動小数点数を整数(通常8ビット)に変換します。これにより さらに高速化とメモリ節約が図れますが、注意深く行わない場合(例: 量子化対応トレーニングによる場合)、精度が顕著に低下する可能性があります。 モデル性能を維持するにはFP16が一般的に安全であり、INT8は極端な最適化に用いられます。

Ultralytics半精度の実装

について ultralytics ライブラリは半精度を利用することを容易にします。予測時、モデルはハードウェアがサポートする場合自動的に半精度に切り替わるか、明示的に要求することも可能です。

Python 、読み込む方法を示しています。 YOLO26 モデルを実行し、半精度を用いて推論を実行する。 なお、実行時は half=True 通常、CUDA GPUが必要です。

import torch
from ultralytics import YOLO

# Check if CUDA (GPU) is available, as FP16 is primarily for GPU acceleration
device = "cuda" if torch.cuda.is_available() else "cpu"

# Load the latest YOLO26n model
model = YOLO("yolo26n.pt")

# Run inference on an image with half-precision enabled
# The 'half=True' argument tells the engine to use FP16
results = model.predict("https://ultralytics.com/images/bus.jpg", device=device, half=True)

# Print the device and precision status
print(f"Inference device: {results[0].orig_img.shape}, Speed: {results[0].speed}")

データセットとトレーニングパイプラインを管理するユーザーにとって、 Ultralytics クラウド上でこれらの最適化の多くを自動的に処理し、 アノテーションから最適化されたモデルデプロイメントへの移行を効率化します。

その他の資料

数値形式とAIへの影響についてさらに詳しく知りたい場合は、 Tensor に関する NVIDIA Learning PerformanceDocumentation を参照してください。 これらの最適化が開発ライフサイクルにどのように組み込まれるかをより広く理解するには、 機械学習運用(MLOps)について お読みください。

さらに、異なる最適化戦略間のトレードオフに関心のある方は、ビット精度を低下させる代わりに接続を除去する プルーニングを検討したり、デジタル演算の技術仕様についてはIEEE浮動小数点演算規格(IEEE 754)を 参照するとよいでしょう。これらの基礎を理解することで、モデルをONNXなどの形式にエクスポートする際の 情報に基づいた意思決定が可能になります。 ONNXTensorRT などの形式にモデルをエクスポートする際、情報に基づいた意思決定を行うのに役立ちます。

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

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

今すぐ参加