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

Serverless Computing

サーバーレスコンピューティングでは、プロバイダーがサーバーを管理してスケーリングし、リクエストごとに課金するため、コードを必要なときに実行でき、使用量がゼロになるまで縮小できます。コールドスタートとAIでの利用について解説します。

サーバーレスコンピューティングは、イベントが発生したときだけプロバイダーがコードを実行し、基盤となるサーバーを自動的に起動・スケーリングし、トラフィックがなくなるとゼロまで縮退させ、予約済みマシンではなくリクエスト数と実行時間に応じて課金するクラウド実行モデルです。サーバー自体は存在しますが、開発者がサーバーをプロビジョニング、パッチ適用、またはサイズ設定する必要はありません。このモデルは、2014年11月に発表されたAWS Lambdaによって一般化し、現在ではLambda、Azure Functions、Cloud Run functionsなどの関数プラットフォームに加え、Google Cloud RunやAzure Container Appsなどのサーバーレスコンテナにも広がっています。カリフォルニア大学バークレー校の研究者は、2019年の論文「Cloud Programming Simplified: A Berkeley View on Serverless Computing」で、その長所と限界を説明しました。機械学習では、トラフィックが急増したり予測できなかったりするモデルサービングにサーバーレスが適しています。急増の合間にアイドル状態のGPUサーバーに課金されると、実際の処理コストを上回る可能性があるためです。

サーバーレス実行の仕組み#

コードは関数またはコンテナイメージとしてパッケージ化し、HTTPリクエスト、オブジェクトストレージへのファイル到着、キュー上のメッセージ、スケジュールなどのトリガーに関連付けます。イベントが到着し、利用可能なウォームインスタンスがあれば、プラットフォームはそのインスタンス上でハンドラーをただちに実行します。そうでなければコールドスタートが発生します。たとえば、AWSがLambda向けに開発したFirecracker microVMのような分離されたサンドボックスを作成し、コードを読み込み、言語ランタイムを起動してから、イベントを処理する前にハンドラー外の初期化コードを実行します。インスタンスはステートレスで破棄可能なため、リクエスト後も保持する必要があるものは、外部ストレージまたはデータベースに保存します。

コールドスタートと機械学習モデル#

初期化時にPyTorchなどのフレームワークをインポートし、数百メガバイトに及ぶこともあるモデルの重みを読み込むため、機械学習ではコールドスタートのコストが高くなります。一般的なパターンでは、インスタンスごとにモデルを一度だけ、ハンドラーの外または初回使用時に読み込み、ウォーム状態での呼び出しでは毎回そのモデルを再利用します。このハンドラーは、torchvisionのResNet-50分類器でそのパターンを実装しています。

import time

import torch
import torchvision

model = None  # module state survives between invocations while the instance stays warm


def handler(event, context):
    """Classify one image tensor, building the model only on a cold start."""
    global model
    cold_start = model is None
    if cold_start:
        model = torchvision.models.resnet50().eval()  # built once per instance
    with torch.inference_mode():
        logits = model(event["image"])
    return {"cold_start": cold_start, "class_id": int(logits.argmax())}


for _ in range(3):
    start = time.perf_counter()
    response = handler({"image": torch.rand(1, 3, 224, 224)}, context=None)
    print(response["cold_start"], f"{(time.perf_counter() - start) * 1000:.0f} ms")

Apple M5 Pro CPUでは、最初の呼び出しでネットワークを構築するため約0.2秒かかりますが、モデルを再利用する2回のウォーム呼び出しはそれぞれ約15 msです。チームは、小型のコンテナイメージ、コンパクトまたは量子化されたモデル、ONNX Runtimeなどの軽量ランタイムを使って、残るコールドスタートを短縮します。また、Lambdaのプロビジョニング済み同時実行数やCloud Runの最小インスタンスのように、ウォーム状態のインスタンスを一定数確保してコールドスタートをなくす方法もありますが、その場合は再びアイドル時間に対して課金されます。

AIワークロードにおけるサーバーレス#

サーバーレスは、イベント駆動型のコンピュータービジョンパイプラインに適しています。オブジェクトストレージへのアップロードをトリガーとして関数を実行し、データ前処理で画像を検証・リサイズしてからトレーニングデータセットに追加できます。セキュリティ警報システムでは、モーションセンサーが1枚のフレームを物体検出関数に送信し、人が検出された場合にだけ警告できます。後はプラットフォームの制限で決まります。AWS Lambdaは各呼び出しを最大15分、メモリを最大10,240 MBで実行でき、GPUはありません。コンパクトなモデルによるCPU推論には適していますが、長時間のトレーニングや、多数のGPUを使う分散トレーニングには対応できません。GPUサーバーレスによってこの制約は解消されつつあります。Cloud Runは、ゼロまでスケールできるコンテナにNVIDIA L4 GPUを接続し、ModalなどのプラットフォームはGPU使用時間を秒単位で課金します。

Ultralytics Platformは、YOLOのデプロイにも同じトレードオフを提供します。デフォルトサイズの1 vCPU、2 GiBのエンドポイントは無料で、アイドル時にはゼロまでスケーリングします。アイドル状態からの起動には約1分かかることがありますが、カスタムサイズではインスタンスを1つウォーム状態に保ち、その稼働時間に応じて課金されます。

  • Infrastructure as a Service: リクエストの有無にかかわらず24時間稼働し、課金される仮想マシンです。OSとスケーリングは顧客が管理します。長時間のトレーニングジョブは通常ここで実行します。
  • Kubernetes: チームが運用するクラスター上のコンテナをオーケストレーションします。Knativeはその上にリクエスト駆動型のゼロスケーリングを追加し、KServeはこれを使ってモデルをサービングします。
  • エッジコンピューティング: データを生成するデバイス上またはその近くでコードを実行します。サーバーレスではクラウドリージョンでコードを実行しますが、一部のエッジプラットフォームは両者を組み合わせ、ユーザーの近くにある多数の小規模な拠点で関数を実行します。

ソリューションを見る

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

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

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の未来を一緒に築きましょう!

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