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

Container Service for Kubernetes:ACK で大規模言語モデルの推論サービスを迅速にデプロイ

最終更新日:Mar 27, 2026

Container Service for Kubernetes (ACK) のマネージドプロ版クラスターは、大規模言語モデル (LLM) の推論サービスを実行するためのすぐに使える環境を提供します。ローカルの GPU ハードウェアや複雑な依存関係の設定は不要です。このガイドでは、2 つのデプロイパスについて説明します。約 15 分でモデルを検証するためのクイックオプションと、永続ストレージにモデルファイルをプリロードしてコールドスタート時間と帯域幅コストを削減する本番環境向けのオプションです。

前提条件

作業を開始する前に、以下のものがあることを確認してください。

  • Kubernetes 1.22 以降を実行している ACK マネージドプロ版クラスター

  • 16 GB 以上の GPU メモリを持つ GPU アクセラレーションノードが少なくとも 1 つ

  • GPU ノードプールにインストールされている NVIDIA ドライバーのバージョンが 535 以降であること (このガイドでは ack.aliyun.com/nvidia-driver-version ラベルで設定された 550.144.03 を使用します)

  • Arena クライアントがインストールされていること

デプロイパスの選択

オプション 1:クイックテスト オプション 2:本番環境
セットアップ時間 約 15 分 より長い (モデルの事前アップロードが必要)
モデルストレージ 起動時にコンテナにダウンロード Object Storage Service (OSS) に事前ロード
コールドスタート 遅い — Pod が再起動するたびにモデルを再ダウンロード 速い — モデルはマウントされたボリュームにすでに存在
最適な用途 推論機能の検証 安定的で再現性のある本番環境のワークロード

オプション 1:テスト用のクイックデプロイ

Arena を使用して ModelScope から qwen/Qwen1.5-4B-Chat をデプロイします。コンテナは起動時にモデルをダウンロードするため、GPU ノードには少なくとも 30 GB の空きディスク領域が必要です。

  1. Arena コマンドを実行して、推論サービスをデプロイします:

    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
  2. サービスステータスを確認します。モデルのダウンロード中は、Pod のステータスは ContainerCreating のままです。ネットワークの状況によりますが、これには 5〜15 分かかる場合があります:

    arena serve get modelscope

    Pod のステータスが Running と表示されたら、推論サービスの準備は完了です。

オプション 2:永続ストレージを使用した本番環境対応のデプロイ

モデルファイルを OSS に事前ロードすることで、Pod が再起動するたびに 10 GB を超えるファイルを再ダウンロードすることを回避できます。これにより、コールドスタート時間が短縮され、帯域幅コストが削減され、サービスの安定性が向上します。

ステップ 1:モデルファイルのダウンロード

  1. Git と Git Large File Storage (LFS) をインストールします。macOS

    brew install git
    brew install git-lfs

    Windows Git の公式サイトから Git をダウンロードしてインストールします。Git Large File Storage は Git for Windows にバンドルされています — 最新バージョンをダウンロードしてください。Linux (Red Hat ベース)

    yum install git
    yum install git-lfs

    その他の Linux ディストリビューションについては、Git の公式サイトをご参照ください。

  2. 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

ステップ 2:モデルファイルの OSS へのアップロード

  1. ossutil をインストールして設定します

  2. バケットを作成します。モデルのプルレイテンシーを削減するために、クラスターと同じリージョンにバケットを作成します:

    ossutil mb oss://<your-bucket-name>
  3. モデルファイル用にバケット内にフォルダを作成します:

    ossutil mkdir oss://<your-bucket-name>/Qwen1.5-4B-Chat
  4. モデルファイルをアップロードします:

    ossutil cp -r ./Qwen1.5-4B-Chat oss://<your-bucket-name>/Qwen1.5-4B-Chat

ステップ 3:永続ボリューム (PV) の設定

  1. ACK コンソールにログインし、対象のクラスターをクリックします。左側のナビゲーションウィンドウで、[ボリューム] > [永続ボリューム] を選択します。

  2. [作成] をクリックします。[PV の作成] ダイアログボックスで、次のパラメーターを設定し、[作成] をクリックします:

    パラメーター
    PV タイプ OSS
    ボリューム名 llm-model
    容量 20Gi
    アクセスモード ReadOnlyMany
    アクセス証明書 [シークレットの作成]
    [オプションパラメーター] -o umask=022 -o max_stat_cache_size=0 -o allow_other
    バケット ID [バケットの選択] をクリックし、ご利用のバケットを選択します
    OSS パス /Qwen1.5-4B-Chat
    エンドポイント [パブリックエンドポイント]

ステップ 4:永続ボリューム要求 (PVC) の設定

  1. 左側のナビゲーションウィンドウで、[ボリューム] > [永続ボリューム要求] を選択します。

  2. [永続ボリューム要求] ページで、次のパラメーターを設定し、[作成] をクリックします:

    パラメーター
    PVC タイプ OSS
    名前 llm-model
    割り当てモード [既存のボリューム]
    既存のボリューム 前のステップで作成した llm-model PV を選択します
    容量 20Gi

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

Arena コマンドを実行してサービスをデプロイします。--data フラグは、事前ロードされたモデルファイルを含む PVC をマウントします。モデルはすでにマウントされたボリューム上にあるため、Pod は何もダウンロードせずに起動します:

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 modelscope

Pod のステータスが Running と表示されたら、推論サービスの準備は完了です。

推論サービスの検証

  1. 推論サービスへのポートフォワーディングを設定します:

    重要

    kubectl port-forward は開発およびデバッグ専用であり、本番環境では信頼性、安全性に欠け、スケーラブルではありません。本番環境のネットワーキングについては、「Ingress 管理」をご参照ください。

    kubectl port-forward svc/modelscope-v1 8000:8000

    期待される出力:

    Forwarding from 127.0.0.1:8000 -> 8000
    Forwarding from [::1]:8000 -> 8000
  2. 新しいターミナルで、テスト用の推論リクエストを送信します:

    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

# PVC と PV の削除 (オプション 2 のみ)
kubectl delete pvc llm-model
kubectl delete pv llm-model

よくある質問

ModelScope の代わりに Hugging Face からモデルファイルをプルするにはどうすればよいですか?

コンテナランタイムが Hugging Face リポジトリに到達できることを確認してから、Arena コマンドで MODEL_SOURCE=Huggingface を設定します。ダウンロードされたファイルを格納するために、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"

次の出力は、リソースが作成されたことを示しています:

service/huggingface-v1 created
deployment.apps/huggingface-v1-custom-serving created
INFO[0003] ジョブ huggingface は正常に送信されました 
INFO[0003] `arena serve get huggingface --type custom-serving -n default` を実行してジョブのステータスを確認できます 

付録:コマンドパラメーターリファレンス

パラメーター 説明
serve custom Arena サブコマンド。tfservingtriton のようなプリセットタイプではなく、カスタムモデルサービスをデプロイします。
--name サービス名。ログの確認やサービスの削除などの後続操作で使用される一意の識別子。 modelscope
--version サービスバージョン。サービスのバージョンラベルで、バージョン管理や段階的リリースに役立ちます。 v1
--gpus GPU 数。各 Pod に割り当てられる GPU の数。モデルが推論に GPU を必要とする場合に必須です。 1
--replicas レプリカ数。実行する Pod の数。レプリカを増やすと、同時スループットと可用性が向上します。 1
--restful-port RESTful API ポート。サービスが推論リクエストを受信するために RESTful API を公開するポート。 8000
--readiness-probe-action readiness プローブタイプ。コンテナがトラフィックを受信する準備ができているかどうかを判断するために Kubernetes の readiness プローブが使用するチェックメソッド。 tcpSocket
--readiness-probe-action-option プローブタイプのオプション。選択したプローブタイプのパラメーター。tcpSocket の場合、チェックするポートを指定します。 port: 8000
--readiness-probe-option 追加のプローブ設定。readiness プローブの追加パラメーター。このフラグは複数回使用できます。初期遅延とチェック間隔を設定します。 initialDelaySeconds: 30, periodSeconds: 30
--data ボリュームマウント。<pvc-name>:<mount-path> の形式で、コンテナ内の指定されたパスに PVC をマウントします。事前ロードされたモデルファイルをマウントするために使用されます。 llm-model:/Qwen1.5-4B-Chat
--image コンテナイメージ。サービスの実行環境を定義するコンテナイメージの完全な URL。 kube-ai-registry.cn-shanghai.cr.aliyuncs.com/kube-ai/quick-deploy-llm:v1
[COMMAND] 起動コマンド。コンテナの起動後に実行するコマンド。MODEL_ID 環境変数を設定し、server.py を起動します。 "MODEL_ID=/Qwen1.5-4B-Chat python3 server.py"

よくある質問

Hugging Face からモデルをプルする

  1. コンテナの実行環境が Hugging Face リポジトリにアクセス可能であることを確認します。

  2. 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 

次のステップ