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

バッチサイズ

バッチサイズが機械学習のトレーニング速度と精度に与える影響を学びます。ハードウェアの制約を探り、AutoBatchを使用してUltralytics 最適化します。

機械学習、特に深層学習の分野において、 バッチサイズとはモデル訓練の1反復で利用される学習例の数である。 メモリ制約により計算上不可能な場合が多い全学習データを ニューラルネットワークに一括投入する代わりに、 データセットはバッチと呼ばれる小さな部分集合に分割される。 モデルは1バッチを処理し、誤差を計算した後、 バックプロパゲーションを通じて内部のモデル重みを更新し、 次のバッチへ移ります。 このハイパーパラメータは、学習速度と学習プロセスの安定性の 両方を決定する上で極めて重要な役割を果たします。

バッチを用いたトレーニングの力学

バッチサイズの選択は、最適化アルゴリズム(通常は 確率的勾配降下の変種)が 損失関数の領域をどのように探索するかを根本的に変える。

  • 小規模バッチサイズ:少ない数(例:8または16)を使用すると「ノイズの多い」更新が生じる。 データセット全体に対する勾配推定の精度は低下するが、このノイズが局所最適解からの脱出を助ける場合があり、 汎化性能の向上が期待できる。ただし、バッチサイズが小さいほどエポックあたりの更新回数が増加し、 オーバーヘッドにより実時間での学習速度が低下する可能性がある。
  • 大きなバッチサイズ:より大きなバッチ(例:128または256)は勾配のより正確な推定値を提供し、損失関数の収束をより滑らかにします。現代のハードウェア上で大規模な並列処理を可能にし、計算を大幅に高速化します。 ただし、バッチサイズが大きすぎると、 モデルが鋭く非最適最小値に収束する可能性があり、 過学習を引き起こし、新規データへの汎化能力が低下します。

ハードウェアとメモリへの影響

実践者は、純粋に理論的な好みではなく、ハードウェアの制約に基づいてバッチサイズを選択せざるを得ない場合が多い。 ディープラーニングモデル、特にトランスフォーマーや高度な畳み込みネットワークのような大規模アーキテクチャは、 GPUに格納される。

利用する際 NVIDIA CUDA による高速化を利用する場合、VRAMには モデルパラメータ、入力データのバッチ、および勾配計算に必要な中間活性化出力を保持する必要があります。 バッチサイズが利用可能なメモリ容量を超えると、トレーニングは「メモリ不足」(OOM)エラーでクラッシュします。 混合精度トレーニングなどの手法は、メモリ使用量を削減し、同じハードウェア上でより大きなバッチサイズを可能にするため、 頻繁に採用されます。

関連概念の区別

効果的なトレーニングを設定するには、バッチサイズをトレーニングループ内の他の時間的用語と区別することが不可欠である。

  • バッチサイズとエポック:エポックとは トレーニングデータセット全体を1回完全に処理することを指します。バッチサイズは、そのエポック内でデータを いくつのチャンクに分割するかを決定します。例えば、1,000枚の画像がありバッチサイズが100の場合、1つのエポックを 完了するには10回の反復処理が必要です。
  • バッチサイズと反復回数: 反復(またはステップ)とは、1バッチを処理し重みを更新する行為である。 学習における総反復回数は、エポックあたりのバッチ数にエポック総数を乗じた値である。
  • バッチサイズ対バッチ正規化: 名称は共通しているが、バッチ正規化は特定の層タイプであり、現在のバッチの平均と分散に基づいて層入力を正規化する。 この手法はバッチサイズに大きく依存する。バッチサイズが小さすぎる場合(例:2)、統計的推定が信頼性を失い、性能が低下する可能性がある。

実際のアプリケーション

バッチサイズの調整は、様々な産業分野でコンピュータビジョンソリューションを展開する際の日常的な必要事項である。

  1. 高精細医療画像: 医療分野におけるAIでは、 専門家はMRIやCTスキャンなどの3D体積データを扱うことが多い。 これらのファイルは極めて高密度でメモリを大量に消費する。医療画像解析複雑な画像セグメンテーションといったタスクをシステムクラッシュなく実行するため、エンジニアはバッチサイズを非常に小さな数値(場合によってはバッチサイズ1)に縮小することが多い。ここでは、純粋なトレーニング速度よりも高解像度の詳細処理を優先する。
  2. 産業品質管理:一方、製造分野におけるAIでは速度が最優先される。 コンベアベルト上の製品を検査する自動化システムは、1時間あたり数千枚の画像を処理する必要がある。 推論処理中、エンジニアは入力されるカメラ映像を より大きなバッチに集約することで、 エッジAIデバイスの利用率を最大化し、 リアルタイム欠陥検出のための高スループットを確保する。

Pythonでのバッチサイズの設定

を使用する場合 Ultralytics Python パッケージバッチサイズの設定は簡単です。固定の整数を指定するか、動的な batch=-1 設定、これは の オートバッチ機能 ハードウェアが安全に処理できる最大バッチサイズを 自動的に計算します。

以下の例は、特定のバッチ設定を使用して YOLO26モデル(速度と精度の最新標準)を トレーニングする方法を示しています。

from ultralytics import YOLO

# Load the YOLO26n model (nano version for speed)
model = YOLO("yolo26n.pt")

# Train on the COCO8 dataset
# batch=16 is manually set.
# Alternatively, use batch=-1 for auto-tuning based on available GPU memory.
results = model.train(data="coco8.yaml", epochs=5, batch=16)

大規模な実験を管理し、異なるバッチサイズがトレーニング指標に与える影響を可視化するには、Ultralytics 、実行のログ記録と比較のための包括的な環境を提供します。バッチサイズの適切なハイパーパラメータ調整は、モデルから最高の性能を引き出す最終段階となることがよくあります。

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

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

今すぐ参加