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

Container Compute Service:ACS の GPU 計算能力を使用して、DeepSeek 蒸留モデルからモデル推論サービスをデプロイします。

最終更新日:Apr 29, 2025

Container Compute Service (ACS) では、基盤となるハードウェアに関する深い知識や GPU インスタンス ノードの管理は不要です。すべての構成はすぐに使用できます。ACK はデプロイが容易で、従量課金制です。LLM 推論サービスに適しており、推論コストを効率的に削減できます。このトピックでは、DeepSeek 蒸留バージョンを使用して ACK にモデル推論サービスをデプロイする方法について説明します。

背景情報

DeepSeek-R1

DeepSeek-R1 は、DeepSeek が提供する第 1 世代の推論モデルです。大規模拡張学習を通じて LLM の推論パフォーマンスを向上させることを目的としています。統計によると、DeepSeek-R1 は数学的推論とプログラミング競技において他のクローズドソースモデルよりも優れています。そのパフォーマンスは、特定の分野では OpenAI-01 シリーズに匹敵、あるいは凌駕しています。DeepSeek-R1 のパフォーマンスは、創作、執筆、Q&A などの知識に関連する分野でも素晴らしいものです。DeepSeek はまた、推論機能を Qwen や Llama などのより小さなモデルに蒸留して、推論パフォーマンスを微調整します。DeepSeek から蒸留された 14B モデルは、オープンソースの QwQ-32B モデルを上回っています。DeepSeek から蒸留された 32B モデルと 70B モデルも新記録を達成しました。 DeepSeek の詳細については、「DeepSeek AI GitHub リポジトリ」をご参照ください。

vLLM

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

Arena

Arena は、Kubernetes ベースの機械学習タスクを管理するために使用される軽量クライアントです。 Arena を使用すると、機械学習のライフサイクル全体を通して、データの準備、モデル開発、モデル トレーニング、モデル予測を合理化できます。これにより、データ サイエンティストの作業効率が向上します。 Arena はまた、Alibaba Cloud の基本サービスと深く統合されています。 GPU 共有とクラウド並列ファイルシステム (CPFS) をサポートしています。 Arena は、Alibaba Cloud によって最適化された深層学習フレームワークで実行できます。これにより、Alibaba Cloud が提供する異種計算リソースのパフォーマンスと使用率が最大化されます。 Arena の詳細については、「Arena GitHub リポジトリ」をご参照ください。

前提条件

GPU インスタンスの仕様と推定コスト

GPU メモリは、推論フェーズでモデル パラメータによって占有されます。使用量は、次の式に基づいて計算されます。

GPU メモリ = モデル パラメータの数 × 精度データのバイト数

デフォルトの精度が FP16 で、パラメータ数が 7B のモデルを例にとります。モデルのパラメータは 70 億です。その精度データは 2 バイトです (デフォルトの 16 ビット浮動小数点数/バイトあたり 8 ビット)。

GPU メモリ = 7 × 109 × 2 バイト ≈ 13.04 GiB

モデルのロードに使用されるメモリに加えて、KV キャッシュのサイズと GPU 使用率も考慮する必要があります。通常、メモリの一定割合はバッファリング用に予約されています。したがって、推奨される仕様は メモリ 24 GiB、vCPU 8 個、メモリ 32 GiB の 1GPU です。推奨仕様の表とGPU モデルと仕様も参照できます。ACK GPU インスタンスの課金の詳細については、「課金概要」をご参照ください。

モデル名

モデル バージョン

モデル サイズ

推奨仕様

vCPU

メモリ

GPU メモリ

DeepSeek-R1-Distill-Qwen-1.5B

1.5B (15 億パラメータ)

3.55 GB

4 または 6

30 GiB

24 GiB

DeepSeek-R1-Distill-Qwen-7B

7B (70 億パラメータ)

15.23 GB

6 または 8

32 GiB

24 GiB

DeepSeek-R1-Distill-Llama-8B

8B (80 億パラメータ)

16.06 GB

6 または 8

32 GiB

24 GiB

DeepSeek-R1-Distill-Qwen-14B

14B (140 億パラメータ)

29.54 GB

8 より大きい

64 GiB

48 GiB

DeepSeek-R1-Distill-Qwen-32B

32B (320 億パラメータ)

74.32 GB

8 より大きい

128 GiB

96 GiB

DeepSeek-R1-Distill-Llama-70B

70B (700 億パラメータ)

140.56 GB

12 より大きい

128 GiB

192 GiB

説明

手順

手順 1:DeepSeek-R1-Distill-Qwen-7B モデル ファイルを準備する

説明

モデルのダウンロードとアップロードには通常 1 ~ 2 時間かかります。 チケットを送信して、モデル ファイルを OSS バケットにコピーできます。

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

    説明

    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-Distill-Qwen-7B.git
    cd DeepSeek-R1-Distill-Qwen-7B/
    git lfs pull
  2. OSS ディレクトリを作成し、モデル ファイルをディレクトリにアップロードします。

    説明

    ossutil をインストールして使用するには、「ossutil をインストールする」をご参照ください。

    ossutil mkdir oss://<your-bucket-name>/models/DeepSeek-R1-Distill-Qwen-7B
    ossutil cp -r ./DeepSeek-R1-Distill-Qwen-7B oss://<your-bucket-name>/models/DeepSeek-R1-Distill-Qwen-7B
  3. PV と PVC を作成します。llm-model という名前の PV と、クラスタ用の PVC を作成します。詳細については、「静的にプロビジョニングされた OSS ボリュームをマウントする」をご参照ください。

    次の表に、PV の作成に使用される基本パラメータを示します。

    パラメータ

    説明

    PV タイプ

    OSS

    ボリューム名

    llm-model

    アクセス証明書

    OSS バケットへのアクセスに使用する AccessKey ID と AccessKey シークレットを指定します。

    バケット ID

    前の手順で作成した OSS バケットを選択します。

    OSS パス

    モデルのパスを選択します (例:/models/DeepSeek-R1-Distill-Qwen-7B)。

    次の表に、PVC の作成に使用される基本パラメータを示します。

    パラメータ

    説明

    PVC タイプ

    OSS

    名前

    llm-model

    割り当てモード

    この例では、「既存のボリューム」が選択されています。

    既存のボリューム

    「既存のボリューム」をクリックし、作成した PV を選択します。

    次のコード ブロックは、YAML テンプレートを示しています。

    apiVersion: v1
    kind: Secret
    metadata:
      name: oss-secret
    stringData:
      akId: <your-oss-ak> # OSS バケットへのアクセスに使用する AccessKey ID。
      akSecret: <your-oss-sk> # OSS バケットへのアクセスに使用する AccessKey シークレット。
    ---
    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> # OSS バケットの名前。
          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-Distill-Qwen-7B/)。
    ---
    apiVersion: v1
    kind: PersistentVolumeClaim
    metadata:
      name: llm-model
    spec:
      accessModes:
        - ReadOnlyMany
      resources:
        requests:
          storage: 30Gi
      selector:
        matchLabels:
          alicloud-pvname: llm-model

手順 2:モデルをデプロイする

  1. 次のコマンドを実行して、vLLM フレームワークを使用する DeepSeek-R1-Distill-Qwen-7B モデル推論サービスをデプロイします。

    推論サービスは、OpenAI 互換の HTTP API を公開します。次のコード ブロックでは、Arena クライアントによって提供される --data パラメータを使用して、モデル パラメータ ファイルを特別なデータセットとして扱い、推論サービスを実行するコンテナの指定されたパス (/model/DeepSeek-R1-Distill-Qwen-7B) にマウントします。 --max_model_len は、モデルで処理できるトークンの最大長を指定します。長さを増やすとパフォーマンスが向上しますが、GPU メモリの使用量も増加します。

    説明
    • gpu-model-series=<example-model> コマンドの変数を、ACK でサポートされている実際の GPU モデルに置き換えます。 チケットを送信して、ACK でサポートされている GPU モデルのリストを入手してください。

    • egslingjun-registry.cn-wulanchabu.cr.aliyuncs.com/egslingjun/{image:tag} はパブリックイメージのアドレスです。AI コンテナイメージのプルを高速化するために、VPC を使用することをお勧めします。

    arena serve custom \
    --name=deepseek-r1 \
    --version=v1 \
    --gpus=1 \
    --cpu=8 \
    --memory=32Gi \
    --replicas=1 \
    --label=alibabacloud.com/compute-class=gpu \
    --label=alibabacloud.com/gpu-model-series=<example-model> \
    --restful-port=8000 \
    --readiness-probe-action="tcpSocket" \
    --readiness-probe-action-option="port: 8000" \
    --readiness-probe-option="initialDelaySeconds: 30" \
    --readiness-probe-option="periodSeconds: 5" \
    --image=egslingjun-registry.cn-wulanchabu.cr.aliyuncs.com/egslingjun/inference-nv-pytorch:25.02-vllm0.7.2-sglang0.4.3.post2-pytorch2.5-cuda12.4-20250305-serverless \
    --data=pvc://llm-model:/model/DeepSeek-R1-Distill-Qwen-7B \
    --command="bash -c 'vllm-server --model /model/DeepSeek-R1-Distill-Qwen-7B --tokenizer /model/DeepSeek-R1-Distill-Qwen-7B --tensor-parallel-size 1 --max-model-len 4096'"

    期待される結果:

    service/deepseek-r1-v1 created
    deployment.apps/deepseek-r1-v1-custom-serving created
    INFO[0004] ジョブ deepseek-r1 が正常に送信されました // The Job deepseek-r1 has been submitted successfully
    INFO[0004] ジョブ ステータスを確認するには、`arena serve get deepseek-r1 --type custom-serving -n default` を実行します // You can run `arena serve get deepseek-r1 --type custom-serving -n default` to check the job status

    次の表は、パラメーターについて説明しています。

    パラメータ

    説明

    --name

    推論サービスの名前。

    --version

    推論サービスのバージョン。

    --gpus

    各推論サービス レプリカで使用される GPU の数。

    --cpu

    各推論サービス レプリカで使用される vCPU の数。

    --memory

    各推論サービス レプリカで使用されるメモリの量。

    --replicas

    推論サービス レプリカの数。

    --label

    次のラベルを追加して、ACS GPU 計算能力を指定します。

    --label=alibabacloud.com/compute-class=gpu

    --label=alibabacloud.com/gpu-model-series=<example-model>

    --restful-port

    公開される推論サービスのポート。

    --readiness-probe-action

    readiness プローブの接続タイプ。有効な値: httpGetexecgrpctcpSocket

    --readiness-probe-action-option

    readiness プローブの接続方法。

    --readiness-probe-option

    readiness プローブの構成。

    --image

    推論サービス イメージのアドレス。

    --data

    共有 PVC をランタイム環境にマウントします。値はコロン (:) で区切られた 2 つの部分で構成されます。コロンの左側には PVC の名前を指定します。 arena data list コマンドを実行して、現在のクラスタ内の PVC を表示できます。コロンの右側には、PVC がマウントされるパスを指定します。トレーニング データは、指定されたパスから読み取られます。このようにして、トレーニング ジョブは PVC によって要求された PV に格納されているデータを取得できます。

  2. 推論サービスの詳細をクエリするには、次のコマンドを実行します。

    arena serve get deepseek-r1

    期待される結果:

    Name:       deepseek-r1
    Namespace:  default
    Type:       Custom
    Version:    v1
    Desired:    1
    Available:  1
    Age:        6h
    Address:    10.0.78.27
    Port:       RESTFUL:8000
    GPU:        1
    
    Instances:
      NAME                                            STATUS   AGE  READY  RESTARTS  GPU  NODE
      ----                                            ------   ---  -----  --------  ---  ----
      deepseek-r1-v1-custom-serving-54d579d994-dqwxz  Running  1h   1/1    0         1    virtual-kubelet-cn-hangzhou-b

ステップ 3: 推論サービスを確認する

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

    説明

    kubectl port-forward を使用して設定されたポート フォワーディングは、本番環境では信頼性、安全性、または拡張性がありません。開発およびデバッグ専用です。本番環境でポート フォワーディングを設定するには、このコマンドを使用しないでください。ACK クラスタの本番環境で使用されるネットワーク ソリューションの詳細については、「Ingress 管理」をご参照ください。

    kubectl port-forward svc/deepseek-r1-v1 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": "deepseek-r1",
        "messages": [
          {
            "role": "user",
            "content": "Write a letter to my daughter from the future 2035 and tell her to study science and technology well, be the master of science and technology, and promote the development of science and technology and economy. She is now in grade 3."
          }
        ],
        "max_tokens": 1024,
        "temperature": 0.7,
        "top_p": 0.9,
        "seed": 10
      }'

    期待される結果:

    {"id":"chatcmpl-53613fd815da46df92cc9b92cd156146","object":"chat.com pletion","created":1739261570,"model":"deepseek-r1","choices":[{"index":0,"message":{"role":"assistant","content":"<think>\nOK. The user needs to write a letter to his third-grade daughter from 2035 in the future, and convey three key messages at the same time: learn technology well, be the master of technology, and promote technology and economic development. First, I have to consider that the tone of the letter should be kind and hopeful, while reflecting a sense of future technology. \n\nConsidering that the daughter is now in the third grade, the content should not be too complicated and the language should be simple and easy to understand. At the same time, let the daughter feel the importance of science and technology and spike her interests in science and technology. It may be necessary to start from her daily life and give some examples that she may have come into contact with, such as electronic products, the Internet, etc., so that she can resonate more easily. \n\nNext, I have to think about how to structure this letter. It may start with welcoming her to receive this letter, and then introduce the development of future technology, such as smart robots and smart homes. Then it emphasizes the importance of learning science and technology, and encourages her to become the master of science and technology and participate in the development of science and technology. Finally, express the expectations and blessings. \n\nIn terms of content, it is necessary to highlight the impact of technology on life, such as smart assistants, smart homes, new energy vehicles, etc. These are all children may have heard of, but the specific details may need to be simplified to avoid being too technical and keep them interesting. \n\nAt the same time, the letter should mention the impact of science and technology on the economy, such as economic growth, job creation, etc., but it should be presented in a positive and encouraging way, so that the daughter can feel the benefits of science and technology, rather than a simple digital game. \n\nFinally, the ending part should be warm, express her pride and expectation, and encourage her to pursue the future bravely and become a leader in science and technology. \n\nIn general, this letter needs to be educational, interesting and encouraging, using simple and clear language, combined with specific examples of future technology, so that my daughter can feel the charm of technology and the importance of learning in a relaxed reading. \n</think>\n\n未来の2035年へ\n\nこんにちは!\n\nまず、良い知らせがあります。地球は新しい時代に入りました! 2035年までに、テクノロジーはもはやSFの物語ではなく、私たちの日常生活の一部になります。今日、私はこの手紙を書いて、未来の秘密と、科学技術が急速に発展しているこの世界でどのように生活し、学ぶべきかについてお伝えしたいと思います。\n\n### 1. テクノロジーはあなたの周りにある\n2035年には、テクノロジーはどこにでもあります。私たち一人ひとりが、いつでも利用できる先生のような、インテリジェント アシスタントを持つことができます。シンプルな アプリケーションで、家のスマート ホーム デバイスを制御できます。照明のオンとオフ、温度の調整、さらには料理まで、すべてあなたの指示通りです!\n\nまた、聞いたことがあるかもしれません。インテリジェント ロボットです。これらのロボットは、退屈な作業を完了するのに役立つだけでなく、学習やエンターテインメントでも大きな役割を果たします。彼らはあなたとチャットしたり、一緒に勉強したり、数学の問題を解決するのを手伝ったりすることさえできます! 難しい問題に遭遇したときに、ロボットが辛抱強く問題の解決方法を段階的に教えてくれると想像してみてください。素晴らしいと思いませんか?\n\n### 2. 科学技術を学ぶことの重要性\n未来の2035年には、科学技術は社会発展を促進する主要な原動力となっています。あらゆる業界がテクノロジーによって変革されています。医師は高度な医療機器を使用して病気を早期に発見できます。教師はオンライン教室を使用して、生徒が家を出ることなくグローバルな知識を学ぶことができます。農家はスマート デバイスを使用して畑を正確に管理し、すべての木が最高のケアを受けられるようにすることができます。\n\nですから、テクノロジーを学ぶことは、すべての子どもにとって最も重要なタスクであることをお伝えしたいと思います。科学技術は、より多くの知識を習得できるだけでなく、未来の主人になることもできます。新しいテクノロジーを生み出し、私たちの生活を変える機会が得られます!\n\n### 3. 科学技術の主人になる\n2035年には、科学技術の世界はみんなの力が必要です。企業の経営者である必要はありません。自分らしくいるだけでいいのです。あなたは自分の知恵と手を使って、科学技術の発展を促進することができます。たとえば、学校で技術革新コンテストに参加して、よりスマートなロボットを設計したり、家庭で小さな発明をして生活をより便利にすることができます。\n\n重要なのは、新しいことに挑戦し、未知のものを探求する勇気を持つことです。科学技術の世界は無限に広大であり、誰もがここで自分の居場所を見つけることができます。\n\n### 4. 経済について\n2035年には、科学技術の発展により、経済はより繁栄するでしょう。スマート シティは私たちの生活をより効率的にし、新エネルギー車は私たちの旅行をより環境に優しくし、医療技術は私たちの健康をより良く守ってくれます。\n\nですから、この時代の始まりに立つとき、テクノロジーは私たちの生活様式を変えているだけでなく、未来の機会も創造していることを知っておく必要があります。\n\n### 5. 私の期待\n未来のあなたが科学技術を愛し、科学技術を理解し、科学技術を習得できることを願っています。テクノロジーの使い方を学ぶだけでなく、その背後にある原則と物語を理解する必要があります。あなたが成長したとき、あなたは科学技術の分野のリーダーになり、私たちをより明るい未来へと導くかもしれません。\n\n未来の世界はあなたを必要としています! 挑戦の準備はできていますか?\n\n最後に、あなたは今日の誰よりも賢く、勇敢で、潜在能力が高いことをお伝えしたいと思います。前途は非常に長いですが、努力する意思があれば、必ず夢を実現できるでしょう。\n\n2035年の愛娘よ、頑張れ!\n\nあなたのおじいちゃん","tool_calls":[]},"logprobs":null,"finish_reason":"stop","stop_reason":null}],"usage":{"prompt_tokens":40,"total_tokens":1034,"completion_tokens":994,"prompt_tokens_details":null}"

    ,

手順 3:推論サービスをテストする

推論サービスが不要になった場合は、環境を速やかに削除してください。

  1. 推論サービスを削除します。

    arena serve delete deepseek-r1

    期待される結果:

    INFO[0007] バージョン v1 の提供ジョブ deepseek-r1 が正常に削除されました
  2. PV と PVC を削除します。

    kubectl delete pvc llm-model
    kubectl delete pv llm-model

    期待される結果:

    persistentvolumeclaim "llm-model" deleted
    persistentvolume "llm-model" deleted

参照資料