すべてのプロダクト
Search
ドキュメントセンター

Container Service for Kubernetes:ACK での DeepSeek フルバージョンのマルチノードデプロイに関するベストプラクティス

最終更新日:Sep 21, 2026

本トピックでは、Alibaba Cloud Container Service for Kubernetes (ACK) で DeepSeek フルバージョンモデルをマルチノードにデプロイし、最適なパフォーマンス、スケーラビリティ、信頼性を実現するためのベストプラクティスを説明します。

背景情報

DeepSeek の概要

DeepSeek は、DeepSeek 社が開発した大規模言語モデル (LLM) シリーズです。DeepSeek フルバージョンモデルは、ハイブリッド思考モードと思考専用モードの両方をサポートし、複雑なタスクに対する高度な推論機能を提供します。これらのモデルは、深い分析的思考と問題解決を必要とするシナリオに特に適しています。

サポートされている DeepSeek モデルは次のとおりです:

  • ハイブリッド思考モデル (デフォルトで無効):deepseek-v3.2、deepseek-v3.2-exp、deepseek-v3.1

  • 思考専用モデル:deepseek-r1、deepseek-r1-0528、deepseek-r1 蒸留モデル

注:DeepSeek モデルは現在、北京リージョンでのみ利用可能です。

ACK 分散デプロイの利点

ACK で DeepSeek モデルをマルチノードにデプロイすると、次のような利点があります:

  • スケーラビリティ:ワークロードの需要に応じたコンピューティングリソースの動的なスケーリング

  • 高可用性:複数のノードへのワークロード分散による単一障害点の排除

  • リソースの最適化:クラスター全体での GPU リソースの効率的な利用

  • パフォーマンス:インテリジェントなロードバランシングと近接スケジューリングによるレイテンシの削減

前提条件

  • GPU ノードを持つACK マネージドクラスター (Pro 版) を作成してください。クラスターの Kubernetes バージョンは 1.22 以降である必要があります。

    クラスターに、互換性のある NVIDIA GPU (推奨:A10、V100、または A100) を搭載したノードが含まれていることを確認してください。最適なパフォーマンスを得るには、NVIDIA ドライバーバージョン 525 を使用してください。

  • Deployment、Service、永続ボリュームなど、Kubernetes リソースを作成および管理するための十分な権限があることを確認してください。

  • モデルのストレージとキャッシングのために Object Storage Service (OSS) を構成してください。モデルの重みと構成ファイルを格納するバケットを作成してください。

  • ノード間通信と推論サービスへの外部アクセスを許可するように、適切な NetworkPolicy とセキュリティグループを設定してください。

アーキテクチャ設計の原則

マルチノードデプロイ戦略

DeepSeek モデルをマルチノードにデプロイする場合、次のアーキテクチャアプローチを検討してください:

Horizontal Pod Autoscaler (HPA) アプローチ

DeepSeek 推論サービスの複数のレプリカを異なるノードにデプロイし、Kubernetes に CPU、メモリ、またはカスタムメトリクスに基づいて自動的にスケーリングさせます。

ノードアフィニティとアンチアフィニティ

ノードアフィニティルールを使用して、DeepSeek Pod が異なるノードとアベイラビリティゾーンに最適に分散されるようにします。

affinity:
  nodeAffinity:
    requiredDuringSchedulingIgnoredDuringExecution:
      nodeSelectorTerms:
      - matchExpressions:
        - key: kubernetes.io/hostname
          operator: NotIn
          values:
          - node-1
          - node-2
  podAntiAffinity:
    preferredDuringSchedulingIgnoredDuringExecution:
    - weight: 100
      podAffinityTerm:
        labelSelector:
          matchLabels:
            app: deepseek-inference
        topologyKey: kubernetes.io/hostname

リソース管理

DeepSeek Pod に適切なリソースリクエストとリミットを構成します。

resources:
  requests:
    cpu: "4"
    memory: "16 Gi"
    nvidia.com/gpu: "1"
  limits:
    cpu: "8"
    memory: "32 Gi"
    nvidia.com/gpu: "1"

デプロイ手順

ステップ 1:DeepSeek モデルの準備

  1. DeepSeek モデルファイルを OSS バケットにダウンロードします。

    #!/bin/bash
    # ModelScopeからDeepSeekモデルをダウンロードします
    git lfs install
    git clone https://www.modelscope.cn/deepseek-ai/DeepSeek-V3.2.git /tmp/deepseek-v3.2
    # OSSにアップロードします
    ossutil cp -r /tmp/deepseek-v3.2 oss://your-bucket/models/deepseek-v3.2/
  2. TensorRT-LLM を使用してモデルを推論用に最適化します (オプションですが、パフォーマンス向上のため推奨)。

    cd /workspace/tensorrt_llm/examples/deepseek
    python convert_checkpoint.py \
      --model_dir /models/deepseek-v3.2 \
      --output_dir /models/deepseek-v3.2-trtllm \
      --dtype float16

ステップ 2:ストレージとキャッシングの構成

  1. 効率的なモデルロードのために Fluid Dataset を作成します。

    apiVersion: data.fluid.io/v1alpha1
    kind: Dataset
    metadata:
      name: deepseek-models
    spec:
      mounts:
      - mountPoint: oss://your-bucket/models/
        name: models
        path: /
        options:
          fs.oss.endpoint: oss-cn-beijing.aliyuncs.com
        encryptOptions:
          - name: fs.oss.accessKeyId
            valueFrom:
              secretKeyRef:
                name: oss-secret
                key: accessKeyId
          - name: fs.oss.accessKeySecret
            valueFrom:
              secretKeyRef:
                name: oss-secret
                key: accessKeySecret
  2. キャッシング用に JindoRuntime を構成します。

    apiVersion: data.fluid.io/v1alpha1
    kind: JindoRuntime
    metadata:
      name: deepseek-models
    spec:
      replicas: 3
      tieredstore:
        levels:
          - mediumtype: MEM
            volumeType: emptyDir
            path: /dev/shm
            quota: 50 Gi
            high: "0.95"
            low: "0.7"

ステップ 3:推論サービスのデプロイ

  1. 複数のレプリカを持つ Kubernetes Deployment を作成します。

    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: deepseek-inference
    spec:
      replicas: 3
      selector:
        matchLabels:
          app: deepseek-inference
      template:
        metadata:
          labels:
            app: deepseek-inference
        spec:
          containers:
          - name: deepseek-server
            image: registry.cn-beijing.aliyuncs.com/your-registry/deepseek-inference:latest
            ports:
            - containerPort: 8000
            env:
            - name: MODEL_PATH
              value: "/models/deepseek-v3.2"
            - name: ENABLE_THINKING
              value: "true"
            resources:
              requests:
                cpu: "4"
                memory: "16 Gi"
                nvidia.com/gpu: "1"
              limits:
                cpu: "8"
                memory: "32 Gi"
                nvidia.com/gpu: "1"
            volumeMounts:
            - name: model-storage
              mountPath: /models
          volumes:
          - name: model-storage
            persistentVolumeClaim:
              claimName: deepseek-models
          affinity:
            podAntiAffinity:
              preferredDuringSchedulingIgnoredDuringExecution:
              - weight: 100
                podAffinityTerm:
                  labelSelector:
                    matchLabels:
                      app: deepseek-inference
                  topologyKey: kubernetes.io/hostname
  2. ロードバランサー Service を作成します。

    apiVersion: v1
    kind: Service
    metadata:
      name: deepseek-inference-service
    spec:
      selector:
        app: deepseek-inference
      ports:
        - protocol: TCP
          port: 80
          targetPort: 8000
      type: LoadBalancer

ステップ 4:オートスケーリングの構成

  1. Horizontal Pod Autoscaler を構成します。

    apiVersion: autoscaling/v2
    kind: HorizontalPodAutoscaler
    metadata:
      name: deepseek-hpa
    spec:
      scaleTargetRef:
        apiVersion: apps/v1
        kind: Deployment
        name: deepseek-inference
      minReplicas: 2
      maxReplicas: 10
      metrics:
      - type: Resource
        resource:
          name: cpu
          target:
            type: Utilization
            averageUtilization: 70
      - type: Resource
        resource:
          name: memory
          target:
            type: Utilization
            averageUtilization: 80
  2. GPU 使用率のカスタムメトリクスを設定します (オプション)。

    # GPU使用率のカスタムメトリクス
    - type: Pods
      pods:
        metric:
          name: gpu_utilization
        target:
          type: AverageValue
          averageValue: "75"

モニタリングと最適化

モニタリングのセットアップ

DeepSeek デプロイメントの包括的なモニタリングを実装します。

  • CPU、メモリ、GPU 使用率に関する Prometheus メトリクス

  • リアルタイム可視化のための Grafana ダッシュボード

  • Fluentd または Logstash による集中ログ管理

  • リクエストフロー分析のための Jaeger による分散トレーシング

パフォーマンス最適化テクニック

パフォーマンスを向上させるために、次の最適化戦略を適用してください:

リクエストバッチ処理

スループットを向上させるためにバッチ処理を構成してください。

env:
- name: MAX_BATCH_SIZE
  value: "8"
- name: BATCH_TIMEOUT_MS
  value: "100"

モデルキャッシング戦略

マルチティアキャッシングを使用して、モデルのロード時間を短縮します。

  1. 頻繁にアクセスされるモデル部分に対する RAM ベースのキャッシング

  2. より大きなモデルコンポーネントに対する NVMe SSD キャッシング

  3. ノード間共有のための Redis または Memcached

コネクションプーリング

オーバーヘッドを削減するためにコネクションプーリングを実装してください。

env:
- name: CONNECTION_POOL_SIZE
  value: "50"
- name: KEEP_ALIVE_TIMEOUT
  value: "300"

ベストプラクティス

リソースプランニング

  • GPU の割り当て:リソースの競合を回避するために、DeepSeek インスタンスごとに専用 GPU を割り当ててください。

  • メモリサイジング:最適なパフォーマンスを得るために、RAM にモデルサイズの少なくとも 2 倍を確保してください。

  • CPU コア:前処理タスクのために GPU インスタンスごとに 4〜8 個の CPU コアを割り当ててください。

スケーリング戦略

  • 段階的スケーリング:ピーク推定値ではなく、実際の負荷パターンに基づいて段階的にスケーリングしてください。

  • ゾーン分散:フォールトトレランスのために、複数のアベイラビリティゾーンにレプリカを分散させてください。

  • ウォームアップ期間:スケーリングイベント中に段階的なトラフィック増加を実装してください。

コスト最適化

  • スポットインスタンス:重要度の低い推論ワークロードにはスポットインスタンスを使用してください。

  • オートスケーリング境界:パフォーマンスとコストのバランスを取るために、適切な最小/最大制限を設定してください。

  • アイドルシャットダウン:使用率の低い期間に自動シャットダウンを実装してください。

セキュリティに関する考慮事項

  • NetworkPolicy:Kubernetes NetworkPolicy を使用して Pod 間通信を制限してください。

  • TLS 暗号化:すべての外部通信に対して TLS を有効にしてください。

  • RBAC:クラスターリソースに対してロールベースのアクセス制御を実装してください。

  • Secret の管理:認証情報の管理には Secret または外部ボールトを使用してください。

トラブルシューティング

一般的な問題と解決策

GPU メモリ不足エラー

症状:推論中に CUDA out of memory エラーが発生する

解決策:

  • バッチサイズを削減する

  • GPU メモリ割り当てを増やす

  • モデル量子化を有効にする

  • 複数の GPU でモデル並列化を使用する

推論パフォーマンスの低下

症状:高いレイテンシと遅い応答時間

解決策:

  • GPU 使用率メトリクスを確認する

  • TensorRT-LLM でモデルを最適化する

  • リクエストバッチ処理を実装する

  • ノード間のネットワーク接続を確認する

オートスケーリングの問題

症状:Pod の起動またはスケーリングが正常に行われない

解決策:

  • リソースクォータとリミットを確認する

  • ノードリソースの可用性を確認する

  • アフィニティルールとアンチアフィニティルールを確認する

  • Cluster Autoscaler のログを監視する

診断コマンド

トラブルシューティングに役立つコマンド:

# Pod のステータスとリソース使用状況を確認します
kubectl top pods -l app=deepseek-inference

# Pod の詳細情報を表示します
kubectl describe pod -l app=deepseek-inference

# GPU 使用率を確認します
kubectl exec -it <pod-name> -- nvidia-smi

# ログを監視します
kubectl logs -f -l app=deepseek-inference --tail=100

# HPA ステータスを確認します
kubectl get hpa deepseek-hpa

# Service の Endpoints を確認します
kubectl get endpoints deepseek-inference-service