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

Container Compute Service:ACS GPU コンピューティングを使用したフル機能 DeepSeek-R1 モデルの分散推論サービスの構築

最終更新日:Jan 27, 2026

Container Compute Service (ACS) は、サーバーレスですぐに利用できるエクスペリエンスを提供し、基盤となるハードウェアや GPU ノードの構成を管理する手間から解放します。シンプルなデプロイメントと従量課金モデルにより、ACS は大規模言語モデル (LLM) の推論タスクに最適であり、推論コストを大幅に削減します。DeepSeek-R1 モデルはパラメーター数が膨大であるため、単一の GPU では効率的にロードまたは実行できません。したがって、このような大規模モデルで推論を実行し、スループットを向上させ、パフォーマンスを確保するには、2 つ以上のコンテナインスタンスにわたる分散デプロイメントが推奨されます。このトピックでは、ACS を使用して、本番環境に対応したフル機能の分散型 DeepSeek-R1 推論サービスをデプロイする方法について説明します。

背景情報

DeepSeek-R1

DeepSeek-R1 は、DeepSeek が提供する第一世代の推論モデルです。大規模な強化学習を通じて LLM の推論パフォーマンスを向上させることを目的としています。統計によると、DeepSeek-R1 は数学的推論やプログラミングコンテストにおいて、他のクローズドソースモデルを上回る性能を発揮します。特定のセクターでは、そのパフォーマンスは OpenAI-01 シリーズに匹敵するか、それを超えることさえあります。DeepSeek-R1 のパフォーマンスは、創作、執筆、Q&A などの知識関連セクターでも驚異的です。DeepSeek の詳細については、「DeepSeek AI GitHub リポジトリ」をご参照ください。

vLLM

vLLM は、高性能で使いやすい LLM 推論サービスフレームワークです。vLLM は、Qwen シリーズのモデルを含む、最も一般的に使用される LLM のほとんどをサポートしています。vLLM は、PagedAttention の最適化、連続バッチ処理、モデル量子化などの技術によって、LLM の推論効率を大幅に向上させます。「vLLM GitHub リポジトリ」をご参照ください。

ACS

ACS は 2023 年にリリースされました。ACS は、包括的で使いやすく、弾力的で柔軟な次世代のコンテナコンピューティング能力を一貫して提供することに重点を置いています。ACS は、Kubernetes の仕様に準拠した汎用および異種混合のコンピューティング能力を提供します。サーバーレスのコンテナコンピューティングリソースを提供し、ノードやクラスターの運用保守について心配する必要がありません。スケジューリング、コンテナランタイム、ストレージ、およびネットワーキング機能を ACS と統合して、Kubernetes の運用保守の複雑さを軽減し、コンテナコンピューティング能力の弾力性と柔軟性を向上させることができます。従量課金制、弾力的なインスタンス、および柔軟な機能により、ACS はリソースコストを大幅に削減できます。LLM 推論シナリオでは、ACS はデータとイメージの読み込みを高速化し、モデルの起動時間とリソースコストをさらに削減できます。

LeaderWorkerSet (LWS)

LWS は、Kubernetes コミュニティの Special Interest Group (SIG) によって提案された新しいワークロードタイプです。Deployment や StatefulSet のようなネイティブの Kubernetes ワークロードとは異なり、LWS は単一の Pod ではなく、Pod のグループを単一のレプリカとして扱います。レプリカをスケールアップすることは、通常、一度に複数の Pod をスケールアップすることを意味し、単一のレプリカ内では、Pod 間にリーダーとワーカーの関係 (Leader Pod と Worker Pod) が存在します。このワークロードは、AI/ML におけるマルチノード分散推論タスクに適しています。LWS の詳細については、「LWS GitHub リポジトリ」をご参照ください。

Fluid

Fluid は JindoRuntime を管理およびスケジュールして、データセットの可視性、弾力的なスケーリング、およびデータ移行を実現します。Fluid を使用してモデルへのアクセスを高速化できます。その中心的な原則は、キャッシュを使用して大規模モデルを扱う際のアクセス速度のボトルネックを克服することです。たとえば、10 個の推論サービスインスタンスが同時に起動し、Object Storage Service (OSS) からデータをプルする必要がある場合、利用可能な総帯域幅は固定されています。各インスタンスは総帯域幅の 10 分の 1 しか受け取れないため、データプルのレイテンシが大幅に増加し、パフォーマンスが低下します。コンピューティング側の分散キャッシュを弾力的にスケーリングするには、基盤となるストレージシステムの限られた帯域幅を ACS クラスターに拡張できます。これにより、クラスター内で利用可能な帯域幅が分散キャッシュノードの数に依存するようになり、ビジネスニーズに基づいて柔軟にスケーリングし、モデルの読み込み時間を大幅に短縮できます。

ソリューションの概要

モデルのパーティション分割

DeepSeek-R1 モデルには 6710 億のパラメーターがあります。単一の GPU は通常、最大 96 GiB のメモリしか持たず、モデル全体をロードすることはできません。したがって、モデルをパーティション分割する必要があります。このトピックでは、2 つの GPU コンテナインスタンスでの分散デプロイメントを使用し、パイプライン並列処理 (PP=2) とテンソル並列処理 (TP=8) のパーティション分割戦略を採用します。モデルのパーティション分割を次の図に示します。

image

パイプライン並列処理 (PP=2) は、モデルを 2 つのステージに分割し、各ステージを別々の GPU コンテナインスタンスで実行します。たとえば、モデル M は M1 と M2 に分割できます。M1 は最初のインスタンスで入力を処理し、中間結果を 2 番目のインスタンスの M2 に渡して後続の操作を行います。

テンソル並列処理 (TP=8) は、モデルの各ステージ (M1 や M2 など) 内の計算操作を 8 つの GPU に分散します。たとえば、M1 ステージでは、入力データが到着すると、8 つの部分に分割され、8 つの GPU で同時に処理されます。各 GPU はデータのごく一部を処理し、その結果が結合されます。

分散デプロイメントアーキテクチャ

このソリューションでは、ACS を使用して、vLLM と Ray を介して分散型のフル機能 DeepSeek-R1 推論サービスをデプロイします。LWS を使用して Leader-Worker デプロイメントを管理し、Fluid を使用して分散キャッシュを行い、モデルの読み込みを高速化します。vLLM は 2 つの 8-GPU Pod 上で実行され、それぞれが Ray Group (Head と Worker) として機能し、スループットを向上させます。アーキテクチャの変更は、YAML 変数 ( tensor-parallel-sizeLWS_GROUP_SIZE など) に影響することにご注意ください。

image

前提条件

GPU インスタンスの仕様とコスト見積もり

ACS でのデュアルインスタンスまたはマルチインスタンスのデプロイメントには、GPU メモリが 96 GiB の単一インスタンスが推奨されます:GPU: 8 カード (カードあたり 96 GiB メモリ)、CPU: 64 vCPU、メモリ: 512 GiB。「推奨インスタンスタイプ」および「GPU 高速化コンピューティングインスタンスタイプ」を参照して、適切なインスタンスタイプを選択してください。ACS GPU インスタンスのコストを計算するには、「課金」をご参照ください。

説明
  • ACS GPU インスタンスの仕様も、「ACS Pod 仕様の正規化ロジック」に従います。

  • デフォルトでは、ACS Pod は 30 GiB の無料の一時ストレージ (EphemeralStorage) を提供します。このトピックで使用される推論イメージ registry-cn-hangzhou.ack.aliyuncs.com/ack-demo/vllm:v0.7.2 は約 9.5 GiB を占有します。このストレージサイズがニーズを満たさない場合は、カスタマイズできます。詳細については、「一時ストレージ領域のサイズを増やす」をご参照ください。

操作手順

ステップ 1: DeepSeek-R1 モデルファイルの準備

LLM はパラメーター数が膨大であるため、モデルファイルにはかなりのディスク領域が必要です。モデルファイルの永続ストレージとして NAS または OSS ボリュームを作成することをお勧めします。このトピックでは、OSS を例として使用します。

説明

モデルファイルのダウンロードとアップロードには時間がかかる場合があります。チケットを送信して、モデルファイルを OSS バケットに迅速にコピーできます。

  1. 次のコマンドを実行して、ModelScope から DeepSeek-R1 モデルをダウンロードします。

    説明

    git-lfs プラグインがインストールされていることを確認してください。yum install git-lfs または apt-get install git-lfs を実行してインストールします。その他のインストール方法については、「git-lfs のインストール」をご参照ください。

    git lfs install
    GIT_LFS_SKIP_SMUDGE=1 git clone https://www.modelscope.cn/deepseek-ai/DeepSeek-R1.git
    cd DeepSeek-R1/
    git lfs pull
  2. OSS にディレクトリを作成し、モデルを OSS にアップロードします。

    説明

    ossutil のインストールと使用方法の詳細については、「ossutil のインストール」をご参照ください。

    ossutil mkdir oss://<your-bucket-name>/models/DeepSeek-R1
    ossutil cp -r ./DeepSeek-R1 oss://<your-bucket-name>/models/DeepSeek-R1
  3. モデルを OSS に保存した後、2 つの方法でロードできます。

    1. PVC と PV を使用してモデルを直接マウントする:この方法は、小規模なモデルや、Pod の起動速度やモデルの読み込み速度に厳しい要件がないアプリケーションに最適です。

      コンソール

      次の表に、PV の例の基本構成を示します:

      構成項目

      説明

      ボリュームタイプ

      OSS

      名前

      llm-model

      アクセス証明書

      OSS にアクセスするための AccessKey ID と AccessKey Secret を構成します。

      バケット ID

      前のステップで作成した OSS バケットを選択します。

      OSS パス

      モデルが配置されているパス (例:/models/DeepSeek-R1) を選択します。

      次の表に、PVC の例の基本構成を示します:

      構成項目

      説明

      永続ボリューム要求 (PVC) タイプ

      OSS

      名前

      llm-model

      割り当てモード

      既存のボリュームを選択します。

      既存のボリューム

      [既存の PV を選択] リンクをクリックし、作成した PV を選択します。

      kubectl

      以下は YAML の例です:

      apiVersion: v1
      kind: Secret
      metadata:
        name: oss-secret
      stringData:
        akId: <your-oss-ak> # OSS にアクセスするための AccessKey ID。
        akSecret: <your-oss-sk> # OSS にアクセスするための AccessKey Secret。
      ---
      apiVersion: v1
      kind: PersistentVolume
      metadata:
        name: llm-model
        labels:
          alicloud-pvname: llm-model
      spec:
        capacity:
          storage: 30Gi 
        accessModes:
          - ReadOnlyMany
        persistentVolumeReclaimPolicy: Retain
        csi:
          driver: ossplugin.csi.alibabacloud.com
          volumeHandle: llm-model
          nodePublishSecretRef:
            name: oss-secret
            namespace: default
          volumeAttributes:
            bucket: <your-bucket-name> # バケット名。
            url: <your-bucket-endpoint> # エンドポイント (例:oss-cn-hangzhou-internal.aliyuncs.com)。
            otherOpts: "-o umask=022 -o max_stat_cache_size=0 -o allow_other"
            path: <your-model-path> # この例では、/models/DeepSeek-R1/。
      ---
      apiVersion: v1
      kind: PersistentVolumeClaim
      metadata:
        name: llm-model
      spec:
        accessModes:
          - ReadOnlyMany
        resources:
          requests:
            storage: 30Gi
        selector:
          matchLabels:
            alicloud-pvname: llm-model
    2. Fluid を使用してモデルの読み込みを高速化する:この方法は、大規模なモデルや、Pod の起動速度やモデルの読み込み速度に要件があるアプリケーションに適しています。詳細については、「Fluid を使用したデータアクセスの高速化」をご参照ください。

      1. ACS App Marketplace で、Helm を使用して ack-fluid コンポーネントをインストールします。コンポーネントのバージョンは 1.0.11-* 以降である必要があります。詳細については、「Helm を使用したアプリケーションの作成」をご参照ください。

      2. ACS Pod の特権モードを有効にするには、チケットを送信してください。

      3. OSS にアクセスするための Secret を作成します。

        apiVersion: v1
        kind: Secret
        metadata:
          name: mysecret
        stringData:
          fs.oss.accessKeyId: xxx
          fs.oss.accessKeySecret: xxx

        上記のコードでは、fs.oss.accessKeyIdfs.oss.accessKeySecret は、OSS バケットへのアクセスに使用される AccessKey ID と AccessKey Secret です。

      4. Dataset と JindoRuntime を作成します。

        apiVersion: data.fluid.io/v1alpha1
        kind: Dataset
        metadata:
          name: deepseek
        spec:
          mounts:
            - mountPoint:  oss://<your-bucket-name>       # <your-bucket-name> を実際の値に置き換えます。
              options:
                fs.oss.endpoint: <your-bucket-endpoint>    # <your-bucket-endpoint> を実際の値に置き換えます。
              name: deepseek
              path: "/"
              encryptOptions:
                - name: fs.oss.accessKeyId
                  valueFrom:
                    secretKeyRef:
                      name: mysecret
                      key: fs.oss.accessKeyId
                - name: fs.oss.accessKeySecret
                  valueFrom:
                    secretKeyRef:
                      name: mysecret
                      key: fs.oss.accessKeySecret
        ---
        apiVersion: data.fluid.io/v1alpha1
        kind: JindoRuntime
        metadata:
          name: deepseek
        spec:
          replicas: 16    # 必要に応じて調整します。
          master:
            podMetadata:
              labels:
                alibabacloud.com/compute-class: performance
                alibabacloud.com/compute-qos: default
          worker:
            podMetadata:
              labels:
                alibabacloud.com/compute-class: performance
                alibabacloud.com/compute-qos: default
              annotations:
                kubernetes.io/resource-type: serverless
            resources:
              requests:
                cpu: 16
                memory: 128Gi
              limits:
                cpu: 16
                memory: 128Gi
          tieredstore:
            levels:
              - mediumtype: MEM
                path: /dev/shm
                volumeType: emptyDir
                ## 必要に応じて調整します。
                quota: 128Gi
                high: "0.99"
                low: "0.95"

        リソースが作成された後、kubectl get pod | grep jindo コマンドを実行して、Pod が Running 状態であることを確認します。期待される出力:

        deepseek-jindofs-master-0    1/1     Running   0          3m29s
        deepseek-jindofs-worker-0    1/1     Running   0          2m52s
        deepseek-jindofs-worker-1    1/1     Running   0          2m52s
        ...
      5. DataLoad を作成してモデルをキャッシュします。

        apiVersion: data.fluid.io/v1alpha1
        kind: DataLoad
        metadata:
          name: deepseek
        spec:
          dataset:
            name: deepseek
            namespace: default
          loadMetadata: true
      6. 次のコマンドを実行して、キャッシュのステータスを確認します。

        kubectl get dataload

        期待される出力:

        NAME       DATASET    PHASE       AGE     DURATION
        deepseek   deepseek   Executing   4m30s   Unfinished

        PHASEExecuting の場合、プロセスが進行中であることを示します。約 20 分待ってからコマンドを再実行してください。ステータスが Complete に変われば、キャッシュは成功です。kubectl logs $(kubectl get pods --selector=job-name=deepseek-loader-job -o jsonpath='{.items[0].metadata.name}') | grep progress コマンドを使用してジョブ名を取得し、ログを表示して進行状況を確認できます。

        Fluid DataLoad リソースのパラメーター

        パラメーター

        説明

        値の例

        Name

        データ読み込みタスクの名前。

        deepseek

        Dataset

        関連付けられたデータセットの名前。

        deepseek

        Phase

        データ読み込みタスクのステータス (例:Complete は完了を意味します)。

        ExecutingComplete

        Age

        データ読み込みタスクが作成されてからの時間。

        4m30s

        Duration

        データ読み込みタスクにかかった時間。

        Unfinished16m29s

      7. 次のコマンドを実行して、Dataset リソースを確認します。

        kubectl get datasets

        期待される出力:

        NAME       UFS TOTAL SIZE   CACHED    CACHE CAPACITY   CACHED PERCENTAGE   PHASE   AGE
        deepseek   1.25TiB          1.25TiB   2.00TiB          100.0%              Bound   21h

        Fluid Dataset リソースのパラメーター

        パラメーター

        説明

        値の例

        Name

        データセットの名前。

        deepseek

        UFS Total Size

        基盤となるストレージ内のデータセットの合計サイズ。

        1.25TiB

        Cached

        現在キャッシュされているデータの量。

        1.25TiB

        Cache Capacity

        キャッシュの総容量。

        2.00TiB

        Cached %

        キャッシュされているデータの割合。

        100.0%

        Phase

        データセットのステータス (例:Bound はバインド済みを意味します)。

        Bound

        Age

        データセットリソースが作成されてからの時間。

        21h

ステップ 2: ACS GPU コンピューティングを使用したモデルのデプロイ

  1. ACS App Marketplace で、Helm を使用して lws コンポーネントをインストールします。詳細については、「Helm を使用したアプリケーションの作成」をご参照ください。

  2. LeaderWorkerSet を使用してモデルをデプロイします。

    説明
    • YAML ファイルの alibabacloud.com/gpu-model-series: <example-model> を、ACS がサポートする特定の GPU モデルに置き換えてください。現在サポートされている GPU モデルのリストについては、アカウントマネージャーにご相談いただくか、チケットを送信してください。

    • TCP/IP と比較して、高性能 RDMA ネットワークは、ゼロコピーとカーネルバイパスを特徴とし、データコピーと頻繁なコンテキストスイッチを回避します。これらの機能により、より低いレイテンシ、より高いスループット、およびより低い CPU 使用率が実現します。ACS は、YAML ファイルでラベル alibabacloud.com/hpn-type: "rdma" を構成することで RDMA の使用をサポートします。RDMA をサポートする GPU モデルのリストについては、アカウントマネージャーにご相談いただくか、チケットを送信してください。

    • Fluid を使用してモデルをロードする場合、両方の PVC の claimName を Fluid Dataset の名前に変更する必要があります。

    • 異なる分散デプロイメントアーキテクチャは、YAML ファイル内の tensor-parallel-sizeLWS_GROUP_SIZE などの変数の値に影響します。

    標準デプロイメント

    apiVersion: leaderworkerset.x-k8s.io/v1
    kind: LeaderWorkerSet
    metadata:
      name: deepseek-r1-671b-fp8-distrubution
    spec:
      replicas: 1
      leaderWorkerTemplate:
        size: 2 # リーダーとワーカーの総数。
        restartPolicy: RecreateGroupOnPodRestart
        leaderTemplate:
          metadata:
            labels: 
              role: leader
              alibabacloud.com/compute-class: gpu  # GPU タイプを指定します。
              alibabacloud.com/compute-qos: default # ACS QoS レベルを指定します。
              alibabacloud.com/gpu-model-series: <example-model> ## GPU モデルを指定します。
          spec:
            volumes:
              - name: llm-model
                persistentVolumeClaim:
                  ## Fluid を使用する場合、ここに Fluid データセット名を入力します (例:deepseek)。
                  claimName: llm-model
              - name: shm
                emptyDir:
                  medium: Memory
                  sizeLimit: 32Gi
            containers:
              - name: deepseek-r1-671b-leader
                image: registry-cn-hangzhou.ack.aliyuncs.com/ack-demo/vllm:v0.7.2
                env:
                  - name: NCCL_SOCKET_IFNAME # ネットワークインターフェースカードを指定します。
                    value: eth0
                command:
                  - sh
                  - -c
                  - "/vllm-workspace/ray_init.sh leader --ray_cluster_size=$(LWS_GROUP_SIZE);vllm serve /models/DeepSeek-R1/ --port 8000 --trust-remote-code --served-model-name ds --max-model-len 2048 --gpu-memory-utilization 0.95 --tensor-parallel-size 8 --pipeline-parallel-size 2 --enforce-eager"
    # tensor-parallel-size を、各リーダーおよびワーカー Pod のカードの総数に設定します。
                resources:
                  limits:
                    nvidia.com/gpu: "8"
                    cpu: "64"
                    memory: 512G
                  requests:
                    nvidia.com/gpu: "8"
                    cpu: "64"
                    memory: 512G           
                ports:
                  - containerPort: 8000
                volumeMounts:
                  - mountPath: /models/DeepSeek-R1
                    name: llm-model
                  - mountPath: /dev/shm
                    name: shm
        workerTemplate:
          metadata:
            labels: 
              alibabacloud.com/compute-class: gpu  # GPU タイプを指定します。
              alibabacloud.com/compute-qos: default # ACS QoS レベルを指定します。
              alibabacloud.com/gpu-model-series: <example-model> ## GPU モデルを指定します。
          spec:
            volumes:
              - name: llm-model
                persistentVolumeClaim:
                  ## Fluid を使用する場合、ここに Fluid データセット名を入力します (例:deepseek)。
                  claimName: llm-model
              - name: shm
                emptyDir:
                  medium: Memory
                  sizeLimit: 32Gi
            containers:
              - name: deepseek-r1-671b-worker
                image: registry-cn-hangzhou.ack.aliyuncs.com/ack-demo/vllm:v0.7.2
                env:
                  - name: NCCL_SOCKET_IFNAME # ネットワークインターフェースカードを指定します。
                    value: eth0
                command:
                  - sh
                  - -c
                  - "/vllm-workspace/ray_init.sh worker --ray_address=$(LWS_LEADER_ADDRESS)"
                resources:
                  limits:
                    nvidia.com/gpu: "8"
                    cpu: "64"
                    memory: 512G
                  requests:
                    nvidia.com/gpu: "8"
                    cpu: "64"
                    memory: 512G
                ports:
                  - containerPort: 8000
                volumeMounts:
                  - mountPath: /models/DeepSeek-R1
                    name: llm-model
                  - mountPath: /dev/shm
                    name: shm

    RDMA 高速化

    オープンソースのベースイメージ (vLLM など) を使用する場合、次の環境変数を YAML ファイルに追加します:

    名前

    NCCL_SOCKET_IFNAME

    eth0

    NCCL_IB_TC

    136

    NCCL_IB_SL

    5

    NCCL_IB_GID_INDEX

    3

    NCCL_DEBUG

    INFO

    NCCL_IB_HCA

    mlx5

    NCCL_NET_PLUGIN

    none

    apiVersion: leaderworkerset.x-k8s.io/v1
    kind: LeaderWorkerSet
    metadata:
      name: deepseek-r1-671b-fp8-distrubution
    spec:
      replicas: 1
      leaderWorkerTemplate:
        size: 2 # リーダーとワーカーの総数。
        restartPolicy: RecreateGroupOnPodRestart
        leaderTemplate:
          metadata:
            labels: 
              role: leader
              alibabacloud.com/compute-class: gpu  # GPU タイプを指定します。
              alibabacloud.com/compute-qos: default # ACS QoS レベルを指定します。
              alibabacloud.com/gpu-model-series: <example-model> ## GPU モデルを指定します。
              # アプリケーションが高性能 RDMA ネットワークで実行されることを指定します。サポートされている GPU モデルのリストについては、チケットを送信してください。
              alibabacloud.com/hpn-type: "rdma"
          spec:
            volumes:
              - name: llm-model
                persistentVolumeClaim:
                  ## Fluid を使用する場合、ここに Fluid データセット名を入力します (例:deepseek)。
                  claimName: llm-model
              - name: shm
                emptyDir:
                  medium: Memory
                  sizeLimit: 32Gi
            containers:
              - name: deepseek-r1-671b-leader
                image: registry-cn-hangzhou.ack.aliyuncs.com/ack-demo/vllm:v0.7.2
                env:
                  - name: NCCL_SOCKET_IFNAME # ネットワークインターフェースカードを指定します。
                    value: eth0
                  - name: NCCL_IB_TC
                    value: "136"
                  - name: NCCL_IB_SL
                    value: "5"
                  - name: NCCL_IB_GID_INDEX
                    value: "3"
                  - name: NCCL_DEBUG
                    value: "INFO"
                  - name: NCCL_IB_HCA
                    value: "mlx5"
                  - name: NCCL_NET_PLUGIN
                    value: "none"                
                command:
                  - sh
                  - -c
                  - "/vllm-workspace/ray_init.sh leader --ray_cluster_size=$(LWS_GROUP_SIZE);vllm serve /models/DeepSeek-R1/ --port 8000 --trust-remote-code --served-model-name ds --max-model-len 2048 --gpu-memory-utilization 0.95 --tensor-parallel-size 8 --pipeline-parallel-size 2 --enforce-eager"
    # tensor-parallel-size を、各リーダーおよびワーカー Pod のカードの総数に設定します。
                resources:
                  limits:
                    nvidia.com/gpu: "8"
                    cpu: "64"
                    memory: 512G
                  requests:
                    nvidia.com/gpu: "8"
                    cpu: "64"
                    memory: 512G           
                ports:
                  - containerPort: 8000
                volumeMounts:
                  - mountPath: /models/DeepSeek-R1
                    name: llm-model
                  - mountPath: /dev/shm
                    name: shm
        workerTemplate:
          metadata:
            labels: 
              alibabacloud.com/compute-class: gpu  # GPU タイプを指定します。
              alibabacloud.com/compute-qos: default # ACS QoS レベルを指定します。
              alibabacloud.com/gpu-model-series: <example-model> ## GPU モデルを指定します。
              # アプリケーションが高性能 RDMA ネットワークで実行されることを指定します。サポートされている GPU モデルのリストについては、チケットを送信してください。
              alibabacloud.com/hpn-type: "rdma"
          spec:
            volumes:
              - name: llm-model
                persistentVolumeClaim:
                  ## Fluid を使用する場合、ここに Fluid データセット名を入力します (例:deepseek)。
                  claimName: llm-model
              - name: shm
                emptyDir:
                  medium: Memory
                  sizeLimit: 32Gi
            containers:
              - name: deepseek-r1-671b-worker
                image: registry-cn-hangzhou.ack.aliyuncs.com/ack-demo/vllm:v0.7.2
                env:
                  - name: NCCL_SOCKET_IFNAME # ネットワークインターフェースカードを指定します。
                    value: eth0
                  - name: NCCL_IB_TC
                    value: "136"
                  - name: NCCL_IB_SL
                    value: "5"
                  - name: NCCL_IB_GID_INDEX
                    value: "3"
                  - name: NCCL_DEBUG
                    value: "INFO"
                  - name: NCCL_IB_HCA
                    value: "mlx5"
                  - name: NCCL_NET_PLUGIN
                    value: "none"      
                command:
                  - sh
                  - -c
                  - "/vllm-workspace/ray_init.sh worker --ray_address=$(LWS_LEADER_ADDRESS)"
                resources:
                  limits:
                    nvidia.com/gpu: "8"
                    cpu: "64"
                    memory: 512G
                  requests:
                    nvidia.com/gpu: "8"
                    cpu: "64"
                    memory: 512G
                ports:
                  - containerPort: 8000
                volumeMounts:
                  - mountPath: /models/DeepSeek-R1
                    name: llm-model
                  - mountPath: /dev/shm
                    name: shm
  3. Service を使用して推論サービスを公開します。

    apiVersion: v1
    kind: Service
    metadata:
      name: ds-leader
    spec:
      ports:
        - name: http
          port: 8000
          protocol: TCP
          targetPort: 8000
      selector:
        leaderworkerset.sigs.k8s.io/name: deepseek-r1-671b-fp8-distrubution
        role: leader
      type: ClusterIP

ステップ 3: 推論サービスの検証

  1. kubectl port-forward を使用して、推論サービスとローカル環境の間にポートフォワーディングを確立します。

    説明

    kubectl port-forward によって確立されたポートフォワーディングは、信頼性、セキュリティ、スケーラビリティに欠けるため、本番環境には適していません。したがって、開発およびデバッグにのみ使用してください。Kubernetes クラスターでの本番環境に対応したネットワーキングソリューションの詳細については、「Ingress 管理」をご参照ください。

    kubectl port-forward svc/ds-leader 8000:8000

    期待される出力:

    Forwarding from 127.0.0.1:8000 -> 8000
    Forwarding from [::1]:8000 -> 8000
  2. モデルに推論リクエストを送信します。

    curl http://localhost:8000/v1/chat/completions \
      -H "Content-Type: application/json" \
      -d '{
        "model": "ds",
        "messages": [
          {
            "role": "system", 
            "content": "You are a friendly AI assistant."
          },
          {
            "role": "user",
            "content": "Tell me about deep learning."
          }
        ],
        "max_tokens": 1024,
        "temperature": 0.7,
        "top_p": 0.9,
        "seed": 10
      }'

    期待される出力:

    {"id":"chatcmpl-4bc78b66e2a4439f8362bd434a60be57","object":"chat.completion","created":1739501401,"model":"ds","choices":[{"index":0,"message":{"role":"assistant","reasoning_content":null,"content":"Okay, the user wants me to explain deep learning. I need to think about how to answer this well. First, I need to clarify the basic definition of deep learning. It's a branch of machine learning, right? Then I should compare it with traditional machine learning methods to explain its advantages, such as automatic feature extraction. I might need to mention neural networks, especially the structure of deep neural networks with multiple hidden layers.\n\nNext, I should talk about the core components of deep learning, such as activation functions, loss functions, and optimizers. The user might not be familiar with these terms, so I should briefly explain the role of each part. For example, ReLU as an activation function, Adam as an optimizer, and examples like the cross-entropy loss function.\n\nThen, for application areas, computer vision and natural language processing are common. I should provide some practical examples like image recognition and machine translation to make it easier for the user to understand. For industry applications, like healthcare and finance, the user might be interested in these real-world use cases.\n\nI also need to mention popular frameworks like TensorFlow and PyTorch, which make deep learning easier to implement. The importance of hardware acceleration, such as GPUs, is also key to explaining why deep learning is advancing so quickly.\n\nI should also discuss the challenges and limitations of deep learning, such as data dependency, high computational resource requirements, and poor interpretability. This will give the user a balanced view of its pros and cons. I might also mention future development directions, like efficient training algorithms and research into interpretability.\n\nThe user probably wants to understand the basic concepts of deep learning. They might have some technical background but not in-depth knowledge. They likely want to quickly grasp the key points and applications, so the answer needs to be well-structured and focused, without getting too deep into technical details but also not being too brief. I need to balance professionalism with ease of understanding.\n\nI should avoid using too much jargon, or explain terms when I use them, such as 'neural network' or 'convolutional neural network'. The user could be a student or a newcomer to the field, so I should use plain language. I should also use examples to connect the concepts to real-world applications to make them more memorable.\n\nI also need to be clear about the relationship between deep learning and machine learning, explaining that deep learning is a subset of machine learning but operates at a deeper level to handle more complex problems. I might also mention the backpropagation algorithm as one of the key training techniques.\n\nFinally, I'll provide a summary that emphasizes the impact and potential of deep learning and its future directions. This will give the user a comprehensive understanding. I'll double-check if I've missed any important points, like common model architectures such as CNNs and RNNs, which I should briefly mention to show the diversity.\n\nSometimes users are interested in the principles, but it's better to keep it concise here, focusing on an overview rather than in-depth technical details. I need to ensure the answer flows logically, starting from the definition, then moving to core components, applications, frameworks, challenges, and future directions. That structure seems reasonable.\n</think>\n\nDeep learning is a branch of machine learning that aims to simulate the human brain's learning process by building multi-layer neural networks (known as 'deep' networks). By automatically learning complex features and patterns from large amounts of data, it is widely used in fields such as image recognition, speech processing, and natural language processing.\n\n### Core concepts\n1. **Artificial Neural Network (ANN)**:\n   - Consists of an input layer, multiple hidden layers, and an output layer, with each layer containing multiple neurons.\n   - Processes information by simulating the activation and transmission of signals between neurons.\n\n2. **Automatic feature extraction**:\n   - Traditional machine learning relies on manually designed features. Deep learning, through its multi-layer networks, automatically extracts abstract features from data, such as edges and shapes from pixels in an image.\n\n3. **Key components**:\n   - **Activation function** (such as ReLU, Sigmoid): Introduces non-linearity, enhancing the model's expressive power.\n   - **Loss function** (such as cross-entropy, mean squared error): Measures the difference between the predicted output and the actual value.\n   - **Optimizer** (such as SGD, Adam): Optimizes the network's parameters through backward propagation to minimize the loss.\n\n---\n\n### Typical models\n- **Convolutional Neural Network (CNN)**:  \n  Designed specifically for images, it uses convolutional kernels to extract spatial features. Classic models include ResNet and VGG.\n- **Recurrent Neural Network (RNN)**:  \n  Processes sequential data like text and speech by introducing a memory mechanism. Improved versions include LSTM and GRU.\n- **Transformer**:  \n  Based on a self-attention mechanism, it has significantly improved performance in natural language processing tasks. Examples include the BERT and GPT series.\n\n---\n\n### Application scenarios\n- **Computer vision**: Facial recognition, medical imaging analysis (such as detecting lesions in lung CT scans).\n- **Natural language processing**: Intelligent chatbots, document summary generation, and translation (such as DeepL).\n- **Speech technology**: Voice assistants (such as Siri) and real-time caption generation.\n- **Reinforcement learning**: Game AI (AlphaGo) and robot control.\n\n---\n\n### Advantages and challenges\n- **Advantages**:\n  - Automatically learns complex features, reducing the need for manual intervention.\n  - Far outperforms traditional methods when given large amounts of data and high computing power.\n- **Challenges**:\n  - Relies on massive amounts of labeled data (for example, tens of thousands of labeled medical images).\n  - High model training costs (for example, training GPT-3 cost over ten million USD).\n  - Its 'black box' nature leads to poor interpretability, limiting its application in high-risk fields like medicine.\n\n---\n\n### Tools and trends\n- **Mainstream frameworks**: TensorFlow (friendly for industrial deployment) and PyTorch (preferred for research).\n- **Research directions**:\n  - Lightweight models (such as MobileNet for mobile devices).\n  - Self-supervised learning (to reduce dependency on labeled data).\n  - Enhanced interpretability (such as visualizing the model's decision-making basis).\n\nDeep learning is pushing the boundaries of artificial intelligence. From generative AI (such as Stable Diffusion generating images) to autonomous driving, it continues to transform the technology ecosystem. Future developments may bring breakthroughs in reducing computational costs, improving efficiency, and enhancing interpretability.","tool_calls":[]},"logprobs":null,"finish_reason":"stop","stop_reason":null}],"usage":{"prompt_tokens":17,"total_tokens":1131,"completion_tokens":1114,"prompt_tokens_details":null},"prompt_logprobs":null}

    モデルのパラメーター

    このトピックでは、検証に使用されるパラメーターのみを説明します。その他のパラメーターについては、「DeepSeek API ドキュメント」をご参照ください。

    パラメーター

    説明

    値の例

    model

    使用するモデル。

    ds

    messages

    会話を形成するメッセージのリスト。

    • role:メッセージ開始者のロール。

    • content:メッセージの内容。

    -

    max_tokens

    モデルが 1 回のリクエストで生成できるトークンの最大数。

    • 範囲:1 から 8192。

    • デフォルト:4096 (指定されていない場合)。

    1024

    temperature

    サンプリング温度。高い値 (1 など) は出力をよりランダムにし、低い値 (0.2 など) はより焦点を絞り、決定論的にします。値:0 から 2 の間。

    0.7

参考資料