本記事はこちらのブログを参考にしています。
翻訳にはアリババクラウドのModelStudio(Qwen)を使用しております。
DeepSeekとACK One登録クラスタの統合ガイド
著者: Xiaobing Meng (Zhishi)
DeepSeekは、深層学習に基づくインテリジェントな推論モデルとして、自然言語処理(NLP)、画像認識などの分野で優れたパフォーマンスを発揮し、急速に人気を集めました。企業レベルのアプリケーションでも学術研究でも、DeepSeekは強力な可能性を示しています。しかし、その適用範囲が拡大するにつれて、データセンターの計算能力のボトルネックが徐々に顕在化してきています。この計算能力不足に対応するため、アリババクラウドが提供するACK One登録クラスタは、企業にとって柔軟かつ効果的な解決策を提供します。オンプレミスデータセンター内のKubernetesクラスタをACK One登録クラスタに接続することで、企業はシームレスに計算資源を拡張でき、強力なACS GPUの計算能力をフル活用し、DeepSeek推論モデルを効率的にデプロイできます。
背景
ACK One登録クラスタ
データセンターやサードパーティのクラウドに展開されたクラスタをAlibaba Cloud Distributed Cloud Container Platform for Kubernetes (ACK One)に登録することができます。これにより、ハイブリッドクラスタを構築し、集中管理することが可能です。
ACS計算能力
Container Compute Service (ACS) は、ACK Serverlessクラスタ(旧称 ASK)のアップグレード版です。コスト効率が高く、使いやすく、弾力性があります。ACSはさまざまなビジネスシナリオ向けに設計されており、コスト効率の良いサーバーレスコンピュートクラスとコンピュートQoSクラスを定義し、必要に応じてリソースを要求し、秒単位での支払いが可能です。これにより、クラスタやノードの運用保守について心配する必要がなくなります。
DeepSeek-R1
DeepSeek-R1は、DeepSeekが提供する第一世代の推論モデルであり、大規模な強化学習を通じてLLM(大規模言語モデル)の推論性能を向上させることを目指しています。統計によると、DeepSeek-R1は数学的推論やプログラミングコンペティションにおいて他のクローズドソースモデルよりも優れています。特定の分野では、OpenAI-01シリーズに匹敵または凌駕するパフォーマンスを達成しています。また、創作、執筆、質問応答など知識に関連する分野でも優れた結果を出しています。DeepSeekはさらに、QwenやLlamaといった小型モデルにも推論能力を蒸留し、それらの推論性能を微調整しています。DeepSeekから蒸留された14Bモデルは、オープンソースのQwQ-32Bモデルを上回ります。同様に、蒸留された32Bおよび70Bモデルも新たな記録を達成しました。DeepSeekに関する詳細情報は、DeepSeek AI GitHubリポジトリをご覧ください。
vLLM
vLLMは高性能で使いやすいLLM推論サービフレームワークです。vLLMは、Qwenモデルを含む複数の一般的なLLMをサポートしており、PagedAttention最適化、継続的なバッチ処理、モデル量子化などの技術によって、LLMの推論効率を大幅に向上させます。vLLMフレームワークに関する詳細情報は、vLLM GitHubリポジトリをご覧ください。
クイック統合
- Container Service for Kubernetes (ACK) コンソールにログインし、指示に従ってコンテナサービスを有効化します。
- ACSコンソールにログインし、画面の指示に従ってACSを有効化します。
- ACK One登録クラスタを作成し、それをデータセンターや別のクラウドサービスプロバイダのKubernetesクラスタに接続します。ACK Oneクラスタは1.24以降に設定することをお勧めします。詳細情報は、ACK One登録クラスタを作成し、Cluster Bを登録クラスタに接続するをご覧ください。
- Arenaクライアントがインストールされ、設定されていることを確認します。詳細情報は、Arenaクライアントの設定をご覧ください。
- ack-virtual-nodeコンポーネントをインストールします。詳細情報は、ACK One登録クラスタでACS計算能力を使用するをご覧ください。
手順
ステップ1: DeepSeek-R1-Distill-Qwen-7Bモデルファイルの準備
-
ModelScopeからDeepSeek-R1-Distill-Qwen-7Bモデルをダウンロードするには、以下のコマンドを実行します。
注: git-lfsプラグインがインストールされているかどうか確認してください。インストールされていない場合は、yum install git-lfs
またはapt-get install git-lfs
を実行してインストールしてください。詳細情報は、Install git-lfsをご覧ください。
bash
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 -
OSSディレクトリを作成し、モデルファイルをそのディレクトリにアップロードします。
注: ossutilのインストールおよび使用方法については、Install ossutilをご覧ください。
bash
ossutil mkdir oss:///models/DeepSeek-R1-Distill-Qwen-7B
ossutil cp -r ./DeepSeek-R1-Distill-Qwen-7B oss:///models/DeepSeek-R1-Distill-Qwen-7B -
PVおよびPVCを作成します。クラスタに対して「llm-model」という名前の永続ボリューム(PV)と「llm-model」という名前の永続ボリューム要求(PVC)を設定します。詳細情報は、[静的にプロビジョニングされたOSSボリュームのマウント](https://
otherOpts: -o umask=022 -o max_stat_cache_size=0 -o allow_other
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: モデルをデプロイする
-
クラスタ内のノードのステータスを確認するために、次のコマンドを実行します。bash
kubectl get no -owide
期待される出力:
NAME STATUS ROLES AGE VERSION INTERNAL-IP EXTERNAL-IP OS-IMAGE KERNEL-VERSION CONTAINER-RUNTIME
idc-master-0210-001 Ready control-plane 26h v1.28.2 192.168.8.XXX Alibaba Cloud Linux 3.2104 U11 (OpenAnolis Edition) 5.10.134-18.al8.x86_64 containerd://1.6.32
idc-worker-0210-001 Ready 26h v1.28.2 192.168.8.XXX Alibaba Cloud Linux 3.2104 U11 (OpenAnolis Edition) 5.10.134-18.al8.x86_64 containerd://1.6.32
idc-worker-0210-002 Ready 26h v1.28.2 192.168.8.XXX Alibaba Cloud Linux 3.2104 U11 (OpenAnolis Edition) 5.10.134-18.al8.x86_64 containerd://1.6.32
virtual-kubelet-cn-hangzhou-b Ready agent 20h v1.28.2 10.244.11.XXX
virtual-kubelet-cn-hangzhou-h Ready agent 25h v1.28.2 10.244.11.XXX
出力結果から、ノードに virtual-kubelet-cn-hangzhou- ノードが存在することがわかります。 -
次のコマンドを実行して、vLLM を使用して Qwen モデルを推論サービスとしてデプロイします。
注意:推奨される GPU リソースは、1 GPU、8 vCPU、および 32 GiB のメモリです。bash
arena serve custom
--name=deepseek-r1
--version=v1
--gpus=1
--cpu=8
--memory=32Gi
--replicas=1
--env-from-secret=akId=oss-secret
--env-from-secret=akSecret=oss-secret
--label=alibabacloud.com/acs=true \ # ACS コンピューティングパワーを使用します。
--label=alibabacloud.com/compute-class=gpu
--label=alibabacloud.com/gpu-model-series= \ # GPU インスタンスシリーズを指定します。
--restful-port=8000
--readiness-probe-action=tcpSocket
--readiness-probe-action-option=port: 8000
--readiness-probe-option=initialDelaySeconds: 30
--readiness-probe-option=periodSeconds: 30
--image=registry-cn-hangzhou-vpc.ack.aliyuncs.com/ack-demo/vllm:v0.6.6
--data=llm-model:/model/DeepSeek-R1-Distill-Qwen-7B
vllm serve /model/DeepSeek-R1-Distill-Qwen-7B --port 8000 --trust-remote-code --served-model-name deepseek-r1 --max-model-len 32768 --gpu-memory-utilization 0.95 --enforce-eager
注意:以下のラベルを使用して、ACS GPU コンピューティングパワーの使用方法を記述する必要があります。bash
--label=alibabacloud.com/acs=true
--label=alibabacloud.com/compute-class=gpu
--label=alibabacloud.com/gpu-model-series=
期待される出力:
service/deepseek-r1-v1 created
deployment.apps/deepseek-r1-v1-custom-serving created
INFO[0001] The Job deepseek-r1 has been submitted successfully
INFO[0001] You can run arena serve get deepseek-r1 --type custom-serving -n default
to check the job status
以下の表はパラメータの説明です。
パラメータ | 説明 |
---|---|
--name | 推論サービスの名前 |
--version | 推論サービスのバージョン |
--gpus | 各推論サービスレプリカで使用されるGPUの数 |
--cpu | 各推論サービスレプリカで使用されるCPUの数 |
--memory | 各推論サービスレプリカで使用されるメモリ量 |
--replicas | 推論サービスレプリカの数 |
--label |
ACS GPUコンピューティングパワーを指定するためのラベルを追加します。--label=alibabacloud.com/acs=true --label=alibabacloud.com/compute-class=gpu --label=alibabacloud.com/gpu-model-series=example-model 注意: サポートされているGPUモデルを確認するには、チケットを送信してください。 |
--restful-port | 公開する推論サービスのポート |
--readiness-probe-action | リードネスプローブの接続タイプ。有効な値: HttpGet, Exec, gRPC, TCPSocket |
--readiness-probe-action-option | リードネスプローブの接続方法 |
--readiness-probe-option | リードネスプローブの設定 |
--image | 推論サービスのイメージアドレス |
--data | 共有PVCをランタイム環境にマウントします。値はコロン(:)で区切られた2つの部分で構成されます。コロンの左側にはPVCの名前を指定します。PVCの名前を取得するには、arena data list コマンドを実行します。このコマンドは、指定されたクラスタで利用可能なPVCを照会します。コロンの右側にはPVCによって要求されたPVがマウントされるパスを指定します。トレーニングデータは指定されたパスから読み取られます。これにより、トレーニングジョブはPVCによって要求された対応するPVに格納されたデータを取得できます。 |
- 次のコマンドを実行して、推論サービスの詳細を照会します。サービスが準備できるまで待ちます。bash
arena serve get deepseek-r1
期待される出力:
Name: deepseek-r1
Namespace: default
Type: Custom
Version: v1
Desired: 1
Available: 1
Age: 17m
Address: 10.100.136.39
Port: RESTFUL:8000
GPU: 1
Instances:
NAME STATUS AGE READY RESTARTS GPU NODE
deepseek-r1-v1-custom-serving-5f59745cbd-bsrdq Running 17m 1/1 0 1 virtual-kubelet-cn-hangzhou-b
- 次のコマンドを実行して、推論サービスが仮想ノードにデプロイされたかどうかを確認します。bash
kubectl get po -owide
{id:chatcmpl-cef570252f324ed2b34953b8062f793f,object:chat.completion,created:1739245450,model:deepseek-r1,choices:[{index:0,message:{role:assistant,content:こんにちは!私はDeepSeek-R1です。中国のDeepSeek社が独自に開発したインテリジェントアシスタントです。お手伝いできることを嬉しく思います! \n</think>\n\n こんにちは!私はDeepSeek-R1です。中国のDeepSeek社が独自に開発したインテリジェントアシスタントです。お手伝いできることを嬉しく思います! ,tool_calls:[]},logprobs:null,finish_reason:stop,stop_reason:null}],usage:{prompt_tokens:10,total_tokens:68,completion_tokens:58,prompt_tokens_details:null},prompt_logprobs:null}
結論
DeepSeek-R1は、数学的推論やプログラミングコンテストにおいて他のクローズドソースモデルより優れた性能を発揮します。そのパフォーマンスは、特定の分野でOpenAI-01シリーズに匹敵するか、それ以上に達することもあります。リリース後、多くの人々が試しました。この記事では、ACS GPUの計算能力を使用して、ACK One登録クラスター上で本番利用可能なDeepSeek推論サービスをデプロイする方法について説明します。これにより、データセンター内の計算リソース不足を解消し、企業が複雑で変化に富んだビジネス課題に対処するのを容易にします。これにより、クラウドの生産性の潜在能力を最大限に引き出すことができます。詳細を学び、インテリジェントなスケーリングの旅を始めるには、 ACK One公式サイト をご覧ください。