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

Container Service for Kubernetes:ACK で LLM 推論サービスを迅速にデプロイ

最終更新日:Nov 07, 2025

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 分かかります。

  1. Arena クライアントをインストールします。

  2. 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
  3. サービスステータスを確認します。

    モデルのダウンロードには数分かかる場合があり、その間、Pod は ContainerCreating 状態になります。
    arena serve get modelscope

    Pod のステータスが Running になると、modelscope 推論サービスの準備が整います。

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

本番環境では、モデルファイルを Object Storage Service (OSS) などの永続ストレージボリュームにあらかじめロードしておくことを推奨します。これにより、Pod が起動するたびに大容量のモデルファイル (10 GB 以上) をダウンロードする必要がなくなり、コールドスタート時間の大幅な短縮、ネットワーク帯域幅コストの削減、およびサービス安定性の向上が実現します。

ステップ 1: モデルデータの準備

  1. ModelScope からモデルファイルをダウンロードします。

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

      macOS
      1. Git をインストールします。

        公式にメンテナンスされている macOS Git インストーラーは、Git の公式 Web サイトから入手できます。
        brew install git
      2. 大容量ファイルをプルするために Git LFS 拡張機能をインストールします。

        brew install git-lfs
      Windows
      1. Git をインストールします。

        Git の公式 Web サイトから適切なバージョンをダウンロードしてインストールします。

      2. 大容量ファイルをプルするために Git LFS 拡張機能をインストールします。Git LFS は Git for Windows に統合されています。最新バージョンをダウンロードして使用してください。

      Linux
      1. Git をインストールします。

        次のコマンドは Red Hat ベースの Linux ディストリビューション用です。他のシステムについては、「Git の公式 Web サイト」をご参照ください。

        yum install git
      2. 大容量ファイルをプルするために Git LFS 拡張機能をインストールします。

        yum install git-lfs
    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. Qwen1.5-4B-Chat モデルファイルを OSS バケットにアップロードします。

    1. ossutil をインストールして設定し、OSS リソースを管理します。

    2. バケットを作成します。

      モデルのプルを高速化するために、クラスターと同じリージョンにバケットを作成します。
      ossutil mb oss://<Your-Bucket-Name>
    3. バケットに Qwen1.5-4B-Chat という名前のフォルダを作成します。

      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 タイプ: OSS を選択します

      • ボリューム名: llm-model

      • 容量: 20Gi

      • アクセスモード: ReadOnlyMany

      • アクセス証明書: [Secret の作成] を選択します

      • オプションのパラメータ: -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

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

  1. Arena クライアントをインストールします。

  2. 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
  3. サービスステータスを確認します。

    arena serve get modelscope

    Pod が Running 状態になっていることを確認すると、推論サービスの準備が整ったことを示します。

推論サービスの検証

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

    重要

    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
  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
  • 作成された PV と PVC を削除します。

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

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

パラメーター

説明

serve custom

Arena サブコマンド。tfservingtriton などのプリセットタイプを使用する代わりに、カスタムモデルサービスをデプロイします。

(N/A)

--name

サービス名。デプロイするサービスの一意の名前を指定します。この名前は、ログの表示やサービスの削除など、後続の管理操作に使用されます。

modelscope

--version

サービスバージョン。バージョン管理や段階的リリースなどの操作を容易にするために、サービスのバージョン番号を指定します。

v1

--gpus

GPU リソース。各サービス (Pod) に割り当てられる GPU の数。モデルが推論に GPU を必要とする場合、このパラメーターは必須です。

1

--replicas

レプリカ数。実行するサービスインスタンス (Pod) の数。レプリカ数を増やすと、サービスの同時処理能力と可用性が向上します。

1

--restful-port

RESTful ポート。サービスが推論リクエストを受信するために RESTful API を公開するポート。

8000

--readiness-probe-action

Readiness Probeのタイプ。コンテナーがトラフィックを受信する準備ができているかどうかを判断する Kubernetes readiness プローブのチェック方法を設定します。

tcpSocket

--readiness-probe-action-option

プローブタイプオプション。選択したプローブタイプの特定のパラメーターを提供します。tcpSocket の場合、チェックするポートを指定します。

port: 8000

--readiness-probe-option

その他のプローブオプション。readiness プローブの動作に関する追加のパラメーターを設定します。このパラメーターは複数回使用できます。この例では、初期遅延とチェック間隔を設定しています。

initialDelaySeconds: 30
periodSeconds: 30

--data

ボリュームマウント。PVC をコンテナー内の指定されたパスにマウントします。フォーマットは 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 

関連ドキュメント