Container Service for Kubernetes (ACK) マネージド Pro クラスターは、大規模言語モデル (LLM) の推論サービスをデプロイするための合理化された環境を提供することで、基盤となるハードウェアや依存関係の管理に伴う複雑さを解消します。これにより、ローカルの GPU リソース不足や複雑な環境設定といった一般的な課題に直面することなく、モデルの推論能力を迅速に検証できます。
シナリオ
ACK マネージド Pro クラスターが Kubernetes バージョン 1.22 以降で実行されていること。クラスターには、それぞれ少なくとも 16 GB の GPU メモリを持つ GPU 高速化ノードも含まれている必要があります。
NVIDIA ドライバーのバージョンが 535 以降であること。このトピックでは、GPU ノードプールに
ack.aliyun.com/nvidia-driver-versionラベルを値550.144.03で追加する例を使用します。
オプション 1: テスト用のクイックデプロイ
Arena を使用して qwen/Qwen1.5-4B-Chat を迅速にデプロイします。この方法はテスト環境に適しており、約 15 分かかります。
Arena クライアントをインストールします。
Arena を使用してカスタムサービスをデプロイし、
--imageフラグでコンテナイメージを指定します。パラメーターの完全なリストについては、「付録: コマンドパラメーターリファレンス」をご参照ください。この方法では、ModelScope モデルファイルがコンテナーにダウンロードされます。モデルを格納するために、GPU ノードに少なくとも 30 GB の利用可能なディスク領域があることを確認してください。
arena serve custom \ --name=modelscope \ --version=v1 \ --gpus=1 \ --replicas=1 \ --restful-port=8000 \ --readiness-probe-action="tcpSocket" \ --readiness-probe-action-option="port: 8000" \ --readiness-probe-option="initialDelaySeconds: 30" \ --readiness-probe-option="periodSeconds: 30" \ --image=kube-ai-registry.cn-shanghai.cr.aliyuncs.com/kube-ai/quick-deploy-llm:v1 \ "MODEL_ID=qwen/Qwen1.5-4B-Chat python3 server.py"Hugging Face からモデルファイルをプルしたい場合は、「Hugging Face リポジトリからモデルファイルをプルする」をご参照ください。
次の出力は、
modelscope-v1推論サービス用の Kubernetes リソースが作成されたことを示しています:service/modelscope-v1 created deployment.apps/modelscope-v1-custom-serving created INFO[0002] The Job modelscope has been submitted successfully INFO[0002] You can run `arena serve get modelscope --type custom-serving -n default` to check the job statusサービスステータスを確認します。
モデルのダウンロードには数分かかる場合があり、その間、Pod は
ContainerCreating状態になります。arena serve get modelscopePod のステータスが
Runningになると、modelscope推論サービスの準備が整います。
オプション 2: 永続ストレージを使用した本番環境向けのデプロイ
本番環境では、モデルファイルを Object Storage Service (OSS) などの永続ストレージボリュームにあらかじめロードしておくことを推奨します。これにより、Pod が起動するたびに大容量のモデルファイル (10 GB 以上) をダウンロードする必要がなくなり、コールドスタート時間の大幅な短縮、ネットワーク帯域幅コストの削減、およびサービス安定性の向上が実現します。
ステップ 1: モデルデータの準備
ModelScope からモデルファイルをダウンロードします。
Git と Git Large File Storage (LFS) 拡張機能をインストールします。
macOS
Git をインストールします。
公式にメンテナンスされている macOS Git インストーラーは、Git の公式 Web サイトから入手できます。
brew install git大容量ファイルをプルするために Git LFS 拡張機能をインストールします。
brew install git-lfs
Windows
Git をインストールします。
Git の公式 Web サイトから適切なバージョンをダウンロードしてインストールします。
大容量ファイルをプルするために Git LFS 拡張機能をインストールします。Git LFS は Git for Windows に統合されています。最新バージョンをダウンロードして使用してください。
Linux
Git をインストールします。
次のコマンドは Red Hat ベースの Linux ディストリビューション用です。他のシステムについては、「Git の公式 Web サイト」をご参照ください。
yum install git大容量ファイルをプルするために Git LFS 拡張機能をインストールします。
yum install git-lfs
Qwen1.5-4B-Chat モデルをダウンロードします。
GIT_LFS_SKIP_SMUDGE=1 git clone https://www.modelscope.cn/qwen/Qwen1.5-4B-Chat.git cd Qwen1.5-4B-Chat git lfs pull
Qwen1.5-4B-Chat モデルファイルを OSS バケットにアップロードします。
ossutil をインストールして設定し、OSS リソースを管理します。
バケットを作成します。
モデルのプルを高速化するために、クラスターと同じリージョンにバケットを作成します。
ossutil mb oss://<Your-Bucket-Name>バケットに
Qwen1.5-4B-Chatという名前のフォルダを作成します。ossutil mkdir oss://<Your-Bucket-Name>/Qwen1.5-4B-Chatモデルファイルをアップロードします。
ossutil cp -r ./Qwen1.5-4B-Chat oss://<Your-Bucket-Name>/Qwen1.5-4B-Chat
永続ボリューム (PV) を設定します。
ACK コンソールにログインし、対象のクラスターをクリックします。左側のナビゲーションウィンドウで、 を選択します。
[永続ボリューム] ページで、[作成] をクリックします。[ボリュームの作成] ダイアログボックスでパラメーターを設定し、[作成] をクリックします。
PV タイプ:
OSSを選択しますボリューム名:
llm-model容量:
20Giアクセスモード:
ReadOnlyManyアクセス証明書: [Secret の作成] を選択します
オプションのパラメータ:
-o umask=022 -o max_stat_cache_size=0 -o allow_otherバケット ID: [バケット選択] をクリックします
OSS パス:
/Qwen1.5-4B-Chatエンドポイント: [パブリックエンドポイント] を選択します
永続ボリューム要求 (PVC) を設定します。
クラスター詳細ページで、 を選択します。
[永続ボリューム要求] ページで、パラメーターを設定します。
PVC タイプ:
OSSを選択します名前:
llm-model割り当てモード: [既存ボリューム] を選択します
既存ボリューム: 前のステップで作成した
llm-modelPV を選択します容量:
20Gi
ステップ 2: 推論サービスのデプロイ
Arena クライアントをインストールします。
Arena を使用してサービスをデプロイします。このコマンドはオプション 1 のクイックデプロイと似ていますが、モデルファイルを含む PVC をマウントするために
--dataフラグが追加されている点が異なります。パラメーターの完全なリストについては、「付録: コマンドパラメーターリファレンス」をご参照ください。arena serve custom \ --name=modelscope \ --version=v1 \ --gpus=1 \ --replicas=1 \ --restful-port=8000 \ --readiness-probe-action="tcpSocket" \ --readiness-probe-action-option="port: 8000" \ --readiness-probe-option="initialDelaySeconds: 30" \ --readiness-probe-option="periodSeconds: 30" \ --data=llm-model:/Qwen1.5-4B-Chat \ --image=kube-ai-registry.cn-shanghai.cr.aliyuncs.com/kube-ai/quick-deploy-llm:v1 \ "MODEL_ID=/Qwen1.5-4B-Chat python3 server.py"次の出力は、推論サービスが送信されたことを示しています:
service/modelscope-v1 created deployment.apps/modelscope-v1-custom-serving created INFO[0001] The Job modelscope has been submitted successfully INFO[0001] You can run `arena serve get modelscope --type custom-serving -n default` to check the job statusサービスステータスを確認します。
arena serve get modelscopePod が
Running状態になっていることを確認すると、推論サービスの準備が整ったことを示します。
推論サービスの検証
推論サービスへのポートフォワーディングを設定します。
重要kubectl port-forwardによるポートフォワーディングは、信頼性、セキュリティ、拡張性の懸念があるため、本番環境での使用には適していません。これは開発およびデバッグ目的でのみ使用してください。ACK クラスターの本番環境で使用されるネットワークソリューションの詳細については、「Ingress 管理」をご参照ください。kubectl port-forward svc/modelscope-v1 8000:8000期待される出力:
Forwarding from 127.0.0.1:8000 -> 8000 Forwarding from [::1]:8000 -> 8000新しいターミナルで、サンプルの推論リクエストを送信します。
curl -X POST http://localhost:8000/generate \ -H "Content-Type: application/json" \ -d '{ "text_input": "What is artificial intelligence? Artificial intelligence is", "parameters": { "stream": false, "temperature": 0.9, "seed": 10 } }'成功したレスポンスには、モデルが生成したテキストが含まれます。
{"model_name":"/Qwen1.5-4B-Chat","text_output":"What is artificial intelligence? Artificial intelligence is a branch of computer science that studies how to make computers have intelligent behavior."}
(オプション) 環境のクリーンアップ
作業が完了したら、推論サービスを削除してリソースをリリースします。
デプロイされた推論サービスを削除します。
arena serve del modelscope作成された PV と PVC を削除します。
kubectl delete pvc llm-model kubectl delete pv llm-model
付録: コマンドパラメーターリファレンス
パラメーター | 説明 | 例 |
| Arena サブコマンド。 | (N/A) |
| サービス名。デプロイするサービスの一意の名前を指定します。この名前は、ログの表示やサービスの削除など、後続の管理操作に使用されます。 |
|
| サービスバージョン。バージョン管理や段階的リリースなどの操作を容易にするために、サービスのバージョン番号を指定します。 |
|
| GPU リソース。各サービス (Pod) に割り当てられる GPU の数。モデルが推論に GPU を必要とする場合、このパラメーターは必須です。 |
|
| レプリカ数。実行するサービスインスタンス (Pod) の数。レプリカ数を増やすと、サービスの同時処理能力と可用性が向上します。 |
|
| RESTful ポート。サービスが推論リクエストを受信するために RESTful API を公開するポート。 |
|
| Readiness Probeのタイプ。コンテナーがトラフィックを受信する準備ができているかどうかを判断する Kubernetes readiness プローブのチェック方法を設定します。 |
|
| プローブタイプオプション。選択したプローブタイプの特定のパラメーターを提供します。 |
|
| その他のプローブオプション。readiness プローブの動作に関する追加のパラメーターを設定します。このパラメーターは複数回使用できます。この例では、初期遅延とチェック間隔を設定しています。 |
|
| ボリュームマウント。PVC をコンテナー内の指定されたパスにマウントします。フォーマットは |
|
| コンテナイメージ。サービスのデプロイに使用されるコンテナイメージの完全な URL。これはサービスのコアランタイム環境を定義します。 |
|
| 起動コマンド。コンテナーの起動後に実行するコマンド。この例では、 |
|
よくある質問
Hugging Face リポジトリからモデルファイルをプルするにはどうすればよいですか?
コンテナーランタイム環境が Hugging Face リポジトリにアクセスできることを確認します。
Arena を使用してカスタムサービスをデプロイし、
--imageフフラグでコンテナイメージを指定します。パラメーターの完全なリストについては、「付録: コマンドパラメーターリファレンス」をご参照ください。この方法では、Hugging Face のモデルファイルがコンテナ内に直接ダウンロードされます。モデルを格納するために、GPU ノードに 30 GB 以上の利用可能なディスク領域があることを確認してください。
arena serve custom \ --name=huggingface \ --version=v1 \ --gpus=1 \ --replicas=1 \ --restful-port=8000 \ --readiness-probe-action="tcpSocket" \ --readiness-probe-action-option="port: 8000" \ --readiness-probe-option="initialDelaySeconds: 30" \ --readiness-probe-option="periodSeconds: 30" \ --image=kube-ai-registry.cn-shanghai.cr.aliyuncs.com/kube-ai/quick-deploy-llm:v1 \ "MODEL_ID=Qwen/Qwen1.5-4B-Chat MODEL_SOURCE=Huggingface python3 server.py"次の出力は、
huggingface-v1推論サービス用の Kubernetes リソースが作成されたことを示しています:service/huggingface-v1 created deployment.apps/huggingface-v1-custom-serving created INFO[0003] The Job huggingface has been submitted successfully INFO[0003] You can run `arena serve get huggingface --type custom-serving -n default` to check the job status
関連ドキュメント
ドライバーのバージョンを指定するには、「バージョン番号を指定してノードの GPU ドライバーバージョンをカスタマイズする」をご参照ください。
本番環境で vLLM や Triton などの成熟した推論サービスフレームワークを使用するには、「vLLM を使用して Qwen モデル推論サービスをデプロイする」および「Triton を使用して Qwen モデル推論サービスをデプロイする」をご参照ください。