Ultralytics YOLO27: ウェイトリストに登録する
YOLOのライセンス
Ultralytics用語集に戻る

Scalability

スケーラビリティとは、リソースを追加して、より多くのデータ、ユーザー、計算を処理できるシステムの能力です。スケールアップとスケールアウト、アムダールの法則、マルチGPU AIを解説します。

スケーラビリティとは、リソースを追加し、性能と作業単位あたりのコストを許容範囲に維持しながら、データ、ユーザー、リクエスト、モデルの規模など、増加する作業量を処理するシステムの能力です。ハードウェアを2倍にしたとき、処理できる作業量もほぼ2倍になるシステムはスケーラビリティに優れています。追加したマシン同士が待ち時間に費やすシステムは、スケーラビリティに劣ります。人工知能では、スケーラビリティは3つの段階に関係します。すなわち、ビッグデータを取り込み、前処理するデータパイプライン、多数のアクセラレーターに処理を分散する学習ジョブ、そして推論レイテンシを増やさずに、より多くのリクエストに応答する推論サービスです。

垂直スケーリングと水平スケーリング#

垂直スケーリング(スケールアップ)は、より多くのCPUコア、RAM、または大容量メモリを備えたGPUなど、より大きなマシンにワークロードを移します。コード変更は不要ですが、利用可能な最大マシンで上限に達し、単一障害点も残ります。水平スケーリング(スケールアウト)は、マシンを増やして作業を分散します。固定の上限はありませんが、ソフトウェアに作業の分割、負荷分散、結果の調整が必要です。Webサービスや推論サービスは、ステートレスであれば簡単にスケールアウトできます。セッションとデータを共有ストアに置くことで、どのレプリカでも任意のリクエストに応答できます。データベースでは、キーに基づいてデータをマシン間で分割するシャーディングによってスケールアウトします。

クラウドプラットフォームは水平スケーリングを自動化します。Kubernetesでは、Horizontal Pod Autoscalerが現在のレプリカ数に、観測されたメトリクスと目標値の比率を掛け、切り上げた値をレプリカ数として算出します。たとえば、CPU使用率の平均が90%のレプリカ4つに対し目標値が60%の場合、レプリカ数は6になります。この自動化がクラウドコンピューティングでいう弾力性であり、サーバーレスコンピューティングでは、トラフィックが止まったときにレプリカ数をゼロにするところまで拡張されます。

スケーリングの限界#

次のバッチの読み込み、結果の同期、チェックポイントの書き込みなど、どの並列ジョブにも分割できない処理が含まれます。Gene Amdahl氏は1967年に、この逐次処理の割合によって、プロセッサーを何台追加しても高速化に上限が設けられることを示しました。現在、これはAmdahlの法則と呼ばれています。

# Amdahl's law: speedup on n workers when a fraction p of the work runs in parallel
p = 0.95  # parallel fraction; the other 5% runs on one worker

for n in (1, 8, 64, 512):
    speedup = 1 / ((1 - p) + p / n)
    efficiency = speedup / n  # share of the added hardware doing useful work
    print(f"{n:>4} workers: {speedup:5.1f}x speedup, {efficiency:4.0%} efficiency")

print(f"Limit with unlimited workers: {1 / (1 - p):.0f}x")

処理の95%を並列化できる場合、ワーカー8台では74%の効率で5.9倍、64台では24%の効率で15.4倍、512台では4%の効率で19.3倍高速化します。ワーカー数をいくら増やしても20倍を超えることはできません。John Gustafson氏は1988年に、実際のユーザーはマシンの性能向上に合わせて問題の規模も大きくするため、並列処理部分が増え、逐次処理の割合が減ると指摘しました。固定された問題で高速化を測定する手法を強スケーリングと呼び、ハードウェアに合わせて問題を大きくする手法を弱スケーリングと呼びます。大規模な学習処理は、弱スケーリングの条件で実行されます。通信もさらなる制約となります。データ並列学習では、GPUを1台追加するたびに、各ステップで他のGPUと勾配を交換する必要があるため、ジョブをどこまでスケールできるかはネットワーク帯域幅で決まることがよくあります。

学習と推論のスケーリング#

分散学習では、モデルが1台のデバイスに収まるかどうかに応じて並列化戦略を選択します。データ並列では、各GPUがモデル全体のコピーを保持し、各バッチの一部を処理して、PyTorchのDistributedDataParallelのようにall-reduceで他のGPUと勾配を平均化します。1台のGPUに収まらないモデルは、フルシャードデータ並列、テンソル並列、またはパイプライン並列で分割します。勾配累積を使えば、より少ないデバイスで大きな実効バッチサイズを実現できます。

Ultralytics YOLOはマルチGPUトレーニングにデータ並列処理を使います。device=[0, 1]を渡すと、torch.distributed.run経由でDistributedDataParallelワーカープロセスを起動し、バッチを均等に分割します。そのため、2つのGPUでbatch=64を実行すると、各GPUにステップごとに32枚の画像が割り当てられます。

推論のスケーリング方法は異なります。各リクエストが小さく、独立しているためです。リクエストをバッチにまとめると、レイテンシがわずかに増える代わりに、GPUの利用率とスループットが向上します。連続バッチ処理は、トークンごとに生成するLLMにも同じ効果をもたらします。モデルサービングシステムでは、トラフィックの増加に応じてロードバランサーの背後にレプリカを追加します。モデル量子化とプルーニングによって各レプリカのコストを下げると、同じハードウェアでより多くのリクエストを処理できます。また、エッジAIでは、1つのデータセンターではなく、数千台のデバイスに推論を分散してスケーリングします。

  • パフォーマンス: 特定の負荷におけるシステムの速度や精度を指し、レイテンシ、スループット、精度で測定します。スケーラビリティは、負荷とリソースが増えたときに、これらの指標を維持できるかを表します。
  • 弾力性: 一日の需要の変化に応じてリソースを自動的に追加・削除することです。多くの場合、水平スケーリングされたサービスのレプリカを増減します。
  • スケーリング則: モデルの損失とパラメーター、学習データ、計算量の間に見られる経験的な関係です。モデル品質を予測し、システムのスケーラビリティによって、必要な計算資源を効率的に活用できるかが決まります。

ソリューションを見る

スポーツにおけるコンピュータービジョン

スポーツにおけるコンピュータービジョン

Ultralytics YOLOが、選手やボールの追跡、パフォーマンス分析、コーチングへの知見、アスリートのリハビリを通じて、スポーツビジョンをどのように支えるかをご紹介します。
詳しく見る
航空画像向けコンピュータービジョン

航空画像向けコンピュータービジョン

Ultralytics YOLOを使用して、ドローンや航空画像をリアルタイムの知見に変換し、農業、水産養殖、自然保護、地理空間分析に活用できます。
詳しく見る
航空宇宙分野のコンピュータービジョン

航空宇宙分野のコンピュータービジョン

Ultralytics YOLOを活用して航空宇宙分野でコンピュータビジョンを導入し、航空機検査、滑走路上のFOD検出、空港の地上業務、複合材の欠陥検出に活用できます。
詳しく見る
セキュリティ分野のコンピュータービジョン

セキュリティ分野のコンピュータービジョン

Ultralytics YOLOモデルであらゆる施設を保護しましょう。ビジョンAIは、周辺監視、脅威検知、ナンバープレート認識、職場の安全管理を支援します。
詳しく見る
ロボティクス分野のコンピュータービジョン

ロボティクス分野のコンピュータービジョン

Ultralytics YOLOモデルで、よりスマートなマシンを実現しましょう。ロボティクスにおけるビジョンAIは、自律ナビゲーション、認識、物体追跡、リアルタイム制御を支援します。
詳しく見る
物流におけるコンピュータービジョン

物流におけるコンピュータービジョン

Ultralytics YOLOモデルで物流を効率化しましょう。ビジョンAIにより、荷物検査、仕分け、車両追跡、倉庫のリアルタイム安全監視を実現します。
詳しく見る
小売業におけるコンピュータービジョン

小売業におけるコンピュータービジョン

Ultralytics YOLOモデルで小売のあり方を変革しましょう。ビジョンAIにより、在庫追跡、棚の監視、行列管理、より高度な顧客インサイトを実現します。
詳しく見る
医療分野におけるコンピュータービジョン

医療分野におけるコンピュータービジョン

Ultralytics YOLOモデルで医療ソリューションを構築しましょう。医療分野のビジョンAIは、医用画像処理の高速化、より高度な診断、患者モニタリングを実現します。
詳しく見る
製造業におけるコンピュータービジョン

製造業におけるコンピュータービジョン

Ultralytics YOLOモデルで製造を最適化しましょう。ビジョンAIは、品質管理、欠陥検出、PPE準拠、組立ラインの自動化を推進します。
詳しく見る
自動車分野におけるコンピュータービジョン

自動車分野におけるコンピュータービジョン

Ultralytics YOLOモデルで自動車分野にコンピュータービジョンを導入しましょう。ビジョンAIは、道路の安全性、運転支援、車両の自動化を向上させ、よりスマートな道路を実現します。
詳しく見る
農業におけるコンピュータービジョン

農業におけるコンピュータービジョン

Ultralytics YOLOモデルでスマート農業にビジョンAIを導入しましょう。作物のモニタリング、家畜の追跡、精密農業を支援し、より高く効率的な収量を実現します。
詳しく見る

AIの未来を一緒に築きましょう!

機械学習の未来に向けた歩みを始めましょう