0Pricing
Learn AI with Python · レッスン

モデルエンドポイントのスケーリングとオートスケーリング

モデルPod向けのKubernetes HPA、トラフィックベースのスケーリング、A/Bデプロイメント、カナリアリリースについて学習します。

「モデルエンドポイントのスケーリングとオートスケーリング」はCoddyKit上の無料Learn AI with Pythonレッスンです。 これはレッスン4/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはLearn AI with Python学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 Learn AI with Pythonコースには全4レッスンが含まれています。

オートスケーリングを使う理由

推論トラフィックが一定であることは、ほとんどありません。ピーク負荷に合わせてリソースを用意すると夜間に無駄が生じ、平均負荷に合わせるとピーク時に対応できません。オートスケーリングは需要に応じてレプリカ数を自動的に調整するため、使用した分だけ支払いながら、応答性を維持できます。

Podとレプリカ

Kubernetesでは、モデルサーバーは同一構成のPod(レプリカ)からなるDeploymentとして実行されます。スケーリングとは、レプリカ数を変更することです。Serviceは、存在するレプリカにリクエストをロードバランシングします。

apiVersion: apps/v1
kind: Deployment
metadata:
  name: model-server
spec:
  replicas: 2
  template:
    spec:
      containers:
        - name: server
          image: my-model:latest

Horizontal Pod Autoscaler

Horizontal Pod Autoscaler(HPA)はメトリクスを監視し、目標値付近に保つためにPodを追加または削除します。代表的なメトリクスはCPU使用率です。

CPU使用率に基づくHPA

targetCPUUtilizationPercentageは、平均CPU使用率を目標値付近に保つようHPAに指示します。Podの平均CPU使用率が80%で、目標値が50%の場合、HPAは使用率が50%付近に戻るまでスケールアップします。

apiVersion: autoscaling/v1
kind: HorizontalPodAutoscaler
metadata:
  name: model-hpa
spec:
  scaleTargetRef:
    apiVersion: apps/v1
    kind: Deployment
    name: model-server
  minReplicas: 2
  maxReplicas: 10
  targetCPUUtilizationPercentage: 50

CPUベースのスケーリングの限界

CPUは、一部のワークロードにとって適切な指標ではありません。GPUモデルではCPU使用率が低いままGPUがボトルネックになることがあり、非同期ワーカーではCPUがアイドル状態でもキューが増え続けることがあります。このような場合は、ワークロード固有のシグナルに基づいてスケーリングしてください。

イベント駆動スケーリング向けのKEDA

KEDA(Kubernetes Event-Driven Autoscaling)は、キューの長さ、Kafkaの遅延、Prometheusクエリなどの外部メトリクスに基づいてスケーリングします。処理すべき作業がない場合はゼロまでスケールすることもできます。HPA単体ではこれを実行できません。

キューベースのKEDA ScaledObject

このKEDA ScaledObjectは、メッセージキューが増加するとワーカーを追加します。queueLengthのバックログが1単位増えるごとに別のレプリカが起動するため、コンシューマーはバーストにも対応できます。

apiVersion: keda.sh/v1alpha1
kind: ScaledObject
metadata:
  name: inference-worker
spec:
  scaleTargetRef:
    name: inference-worker
  minReplicaCount: 0
  maxReplicaCount: 20
  triggers:
    - type: rabbitmq
      metadata:
        queueName: inference
        queueLength: "10"

Ingressによるロードバランシング

外部トラフィックはIngressを経由してPodに到達します。nginx ingressコントローラーはTLSを終端し、レプリカを支えるServiceにリクエストを分散するため、スケールアップするとすぐに負荷が分散されます。

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: model-ingress
spec:
  ingressClassName: nginx
  rules:
    - host: api.example.com
      http:
        paths:
          - path: /predict
            pathType: Prefix
            backend:
              service:
                name: model-server
                port:
                  number: 8000

安全なロールアウト:カナリア

新しいモデルバージョンを一度にすべてのトラフィックへデプロイするのは危険です。カナリアリリースでは、少量のトラフィックを新バージョンに送り、そのメトリクスを監視してから、段階的に割り当てを増やします。

トラフィックウェイトによるカナリア

nginx ingressのカナリアアノテーションを使うと、リクエストの一定割合を2つ目のDeploymentにルーティングできます。まず10%から開始し、エラー率とレイテンシを確認してから、ウェイトを100%まで引き上げます。

metadata:
  annotations:
    nginx.ingress.kubernetes.io/canary: "true"
    nginx.ingress.kubernetes.io/canary-weight: "10"

スケーリングを組み合わせる

堅牢な構成では、これらすべてを組み合わせます。

  • HPAまたはKEDAで、需要に応じたレプリカ数を設定します
  • Ingressでレプリカ間のロードバランシングを行います
  • カナリアウェイトで新バージョンを安全にロールアウトします

これらを組み合わせることで、柔軟で回復力があり、リスクの低いモデルサービングを実現できます。

理解度チェック

スケーリングについての理解度を確認しましょう。

まとめ

モデルエンドポイントをスケーリングする方法を学びました。

  • HPAとtargetCPUUtilizationPercentageでCPU使用率に基づいてスケーリングします
  • KEDAでキューの長さに基づいてスケーリングし、ゼロまでのスケールにも対応します
  • nginx ingressでレプリカ間のロードバランシングを行います
  • カナリアウェイトでトラフィックを段階的に移行し、安全にリリースします

よくある質問

「モデルエンドポイントのスケーリングとオートスケーリング」レッスンは無料ですか?

はい。「モデルエンドポイントのスケーリングとオートスケーリング」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、Learn AI with Pythonコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 Learn AI with Pythonコースには全4レッスンが含まれています。

「モデルエンドポイントのスケーリングとオートスケーリング」で何を学びますか?

モデルPod向けのKubernetes HPA、トラフィックベースのスケーリング、A/Bデプロイメント、カナリアリリースについて学習します。 ブラウザで直接実行するハンズオンコードでLearn AI with Pythonを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。

Learn AI with Pythonを始めるのに経験は必要ですか?

事前経験は必要ありません。CoddyKitのLearn AI with Pythonは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン4/4です。

「モデルエンドポイントのスケーリングとオートスケーリング」レッスンにはどのくらい時間がかかりますか?

ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。

このLearn AI with Pythonレッスンでコードを書いて実行できますか?

はい。すべてのLearn AI with Pythonレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。

このコースのすべてのレッスン

  1. DockerによるMLモデルのコンテナ化
  2. クラウドデプロイメント:AWS SageMaker
  3. Triton Inference Serverによる高性能サービング
  4. モデルエンドポイントのスケーリングとオートスケーリング
← Learn AI with Pythonに戻る