paint-brush
Kubernetes と Docker で AI インフラストラクチャを拡張する方法@dataengonline
新しい歴史

Kubernetes と Docker で AI インフラストラクチャを拡張する方法

Natapong Sornprom6m2025/02/15
Read on Terminal Reader

長すぎる; 読むには

企業は、自律的なワークロードをホストおよび管理するために人工知能 (AI) インフラストラクチャを利用することが増えています。スケーラビリティにより、AI システムはパフォーマンスを低下させることなく、増加するワークロードを処理できます。組織は、このようなニーズを満たすために Docker と Kubernetes を使用します。
featured image - Kubernetes と Docker で AI インフラストラクチャを拡張する方法
Natapong Sornprom HackerNoon profile picture
0-item
1-item

企業は、自律的なワークロードをホストおよび管理するために人工知能(AI)インフラストラクチャを活用することが増えています。その結果、 スケーラブルな異機種混在のアプリケーションやクラウドの要件を満たすことができる回復力のあるインフラストラクチャも必要です。組織は クベネフィットそして ドッカー企業は、どちらもスケーラブルな AI インフラストラクチャを実現する非常に効果的なユースケースであることを認識しているため、このようなニーズを満たすことができます。


AI インフラストラクチャを導入すると、通常、大規模なデータセットを実行および処理するのに十分な計算能力が得られます。これらの要求は、パフォーマンスを損なうことなく AI モデルを大規模なワークロードで実行できるようにするスケーラブルな方法の必要性につながります。

企業がAIインフラを拡張する必要がある理由

AIシステムただし、AI はリソースを大量に消費するため、通常は高いコンピューティング能力と大量のデータを処理する能力の両方が求められます。より高度な AI アプリケーションとより大規模なスケールが求められるようになると、スケーラビリティがさらに重要になります。スケーラビリティにより、AI システムはパフォーマンスを低下させることなく、増加するワークロードを処理できるようになります。

データ量の拡大

増大するデータ量は、AIシステムにとって多くの面で懸念事項です。ほとんどのAIモデル、特にディープラーニングに基づくモデルは、トレーニングや推論の際に大量のデータに大きく依存しています。しかし、十分なスケーラブルなインフラストラクチャがなければ、そのようなデータを処理および解釈することは困難です。 膨大な量のデータが障害となっている

最適化されたパフォーマンス

スケーラブルな AI ハードウェアは、圧倒的な計算負荷にもかかわらず、信頼性が高く安定したパフォーマンスをサポートします。Kubernetes を使用すると、AI ジョブの水平スケーリングが簡単になり、レプリカ数の動的なサイズ変更を必要に応じて実行できます。対照的に、Docker コンテナは、リソースの競合がパフォーマンスのボトルネックにならない AI モデルを実行するための、無駄のない分離された環境をサポートします。

効果的なリソース管理

リソースの効率的な使用は、コスト効率が高く持続可能な AI 導入の鍵となります。Kubernetes のリソース要求と制限により、不足プロビジョニングや過剰プロビジョニングを回避し、CPU とメモリのリソースをきめ細かく管理できます。Docker のリソース管理は、コンテナ リソースを分離することでそのギャップを埋めます。

Kubernetes と Docker による AI インフラストラクチャの拡張

コンテナ化は、スケーラブルな人工知能インフラストラクチャの進化におけるマイルストーンの 1 つです。AI アプリケーションとその依存関係を Docker コンテナにコンテナ化することで、開発、テスト、展開環境全体で一貫性が確保されます。


まず、環境をインストールするには、Dockerfile を定義する必要があります。Dockerfile は、Docker イメージの構築方法に関する一連の指示です。ベース イメージ、必要な依存関係、アプリに適用される初期セットアップ コマンドを宣言します。以下は、Python 機械学習モデルの基本的な Dockerfile です。


 # Use an official Python runtime as a parent image FROM python:3.9-slim # Set the working directory in the container WORKDIR /usr/src/app # Copy the current directory contents into the container COPY . . # Install any needed packages specified in requirements.txt RUN pip install --no-cache-dir -r requirements.txt # Expose the port the app runs on EXPOSE 5000 # Define environment variable ENV NAME World # Run the app CMD ["python", "./app.py"]


Dockerfile が準備できたら、Docker イメージをビルドしてコンテナを実行できます。次のコマンドを実行します。

 # Build the Docker image docker build -t ml-model:latest . # Run the container docker run -p 5000:5000 ml-model:latest


Docker化されたAIモデルをKubernetesにデプロイする

クベネフィットコンテナ化されたインフラストラクチャで効率的なアプリケーション管理を可能にする幅広いオーケストレーション機能を提供します。KubernetesにDockerイメージをデプロイすると、指定された数のアプリケーションレプリカが常に実行されるようになります。以下は、 Docker化された機械学習モデルをデプロイする:


 apiVersion: apps/v1 kind: Deployment metadata: name: ml-model-deployment spec: replicas: 3 selector: matchLabels: app: ml-model template: metadata: labels: app: ml-model spec: containers: - name: ml-model-container image: ml-model:latest ports: - containerPort: 5000


上記のコード スニペットは AI モデルをデプロイする方法を示していますが、モデルを外部からアクセス可能にする必要もあります。Kubernetes サービスを定義してモデルを公開する必要があります。以下の service.yaml に例を示します。


 apiVersion: v1 kind: Service metadata: name: ml-model-service spec: selector: app: ml-model ports: - protocol: TCP port: 80 targetPort: 5000 type: LoadBalancer


kubectl コマンドライン ツールを使用して、デプロイメントとサービス構成を適用します。


 # Deploy the application kubectl apply -f deployment.yaml # Expose the service kubectl apply -f service.yaml


Kubernetes によるスケーリング

Kubernetes は AI 環境に優れたスケーリング機能を提供し、リソースの使用率とパフォーマンスを最大化します。水平スケーリングはコンテナを追加することで実行され、垂直スケーリングはコンテナに CPU やメモリなどのリソースを追加することで実行されます。

水平スケーリング

水平スケーリングは、AI システムのレプリカ (ポッド) の数を増やして、より高いワークロードを処理するために使用されます。このプロセスでは、レプリカの数に応じて動的スケーリングを有効にする必要があります。このようなプロセスを有効にするために使用されるコマンドは、`kubectl scale` です。特定のコマンドは、最大 5 つのレプリカまで機能するようにデプロイメントを設定するために使用されます。


`kubectl scale --replicas=5 デプロイメント/ml-model-deployment`


このコマンドは、機械学習モデル コンテナのレプリカを 5 つ使用するように ml-model-deployment をスケールアップします。その後、システムは必要な数を満たすためにさらに多くのポッドを動的にプロビジョニングします。

水平ポッドオートスケーラー (HPA) を使用した自動スケーリング

Kubernetes は、Horizontal Pod Autoscaler (HPA) を使用して自動スケーリングを容易にします。HPA は、設定された制限に関連して、リソースの使用状況 (CPU またはメモリ) に基づいてレプリカの数を動的に調整します。以下に示す YAML 構成は、CPU の使用状況に応じて ml-model-deployment を動的にスケーリングする HPA の適切な例です。


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


このセットアップでは、scaleTargetRef を使用して、スケーリングするデプロイメント (ml-model-deployment) を定義します。最小レプリカ数は MinReplicas を使用して設定され、最大レプリカ数は maxReplicas を使用して制御されます。さらに、CPU 使用率は targetCPUUtilizationPercentage を使用して 50% に設定されます。


すべてのポッドの CPU 使用率が 50% を超えると、レプリカ数が自動的に最大 10 にスケールアップされます。CPU 使用率が設定されたパーセンテージを下回ると、Kubernetes はリソースを解放するためにレプリカ数を自動的に減らします。

垂直スケーリング

水平スケーリングは主にトラフィックの増加に対応するためのものですが、垂直スケーリングは既存のコンテナにより多くのリソース (CPU やメモリなど) を提供します。このプロセスは、Kubernetes デプロイメントのリソース要求と制限を拡大または縮小することです。ml-model-deployment の CPU とメモリの制限を拡大するには、deployment.yaml ファイルを開く必要があります。


 apiVersion: apps/v1 kind: Deployment metadata: name: ml-model-deployment spec: replicas: 3 selector: matchLabels: app: ml-model template: metadata: labels: app: ml-model spec: containers: - name: ml-model-container image: ml-model:latest ports: - containerPort: 5000 resources: requests: cpu: "1" memory: "2Gi" limits: cpu: "2" memory: "4Gi"


この更新された構成では、次のようになります。

  • リクエストは、コンテナに必要な最小限のリソースを指定します。
  • 制限は、コンテナが使用できる最大リソースを定義します。