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

Container Compute Service:ACS を使用して生成 AI を活用したチャットアプリケーションを作成する

最終更新日:Dec 27, 2024

Container Compute Service (ACS) は、Kubernetes のコンテナ仕様に準拠したコンテナコンピューティングリソースを提供します。ACS はサーバーレスコンピューティングリソースを提供し、コンテナ化されたアプリケーションを効率的に実行できます。このトピックでは、ACS コンソールで、および ACS クラスタ証明書を使用して、コンテナ化された生成 AI を活用したチャットアプリケーションをデプロイおよび公開する方法について説明します。また、アプリケーションを監視する方法についても説明します。

背景情報

  • このトピックでは、次のオープンソースプロジェクトを使用します。RWKV-RunnerChatGPT-Next-Web。RWKV-Runner は、RESTful API を使用してオンライン推論を提供する 0.1 億パラメータのモデルです。ChatGPT-Next-Web は、チャットアプリケーション用の Web UI です。イメージを使用して RWKV-Runner と ChatGPT-Next-Web を ACS クラスタにデプロイし、フロントエンドとバックエンドを分離するアーキテクチャ上に生成 AI を活用したチャットアプリケーションを構築できます。このトピックの手順を完了すると、生成 AI を活用したチャットアプリケーションが作成されます。

  • Kubernetes で使用される用語の詳細については、CNCF と阿里雲が共同開発したクラウドネイティブテクノロジーのコースを参照してください。

手順

ACS を初めて使用する場合は、ACS をアクティブ化し、クラウド リソースにアクセスするための権限を ACS に付与する必要があります。その後、ACS クラスタを作成し、クラスタに生成 AI を活用したアプリケーションをデプロイできます。

ACS のアクティブ化と権限の付与

ACS を初めて使用する場合は、ACS をアクティブ化し、クラウド リソースにアクセスするための権限を ACS に付与する必要があります。

  1. ACSコンソールにログオンし、有効化をクリックします。

  2. ACS アクティブ化ページに移動し、画面の指示に従って ACS をアクティブ化します。

  3. ACSコンソールに戻り、ページを更新します。今すぐ承認をクリックします。

  4. ACS 承認ページに移動し、画面の指示に従って ACS に権限を付与します。

    上記の手順を完了したら、ACS コンソールを更新します。その後、ACS を使い始めることができます。

手順 2: ACS クラスタを作成する。

この手順では、ACS クラスタを作成する際にクラスタパラメータを設定する方法を示します。

  1. クラスター ページの左上隅にある クラスターの作成 をクリックします。

  2. ACSコンソールにログオンします。左側のナビゲーションペインで、クラスタをクリックします。

  3. クラスターの作成ページで、次の表に示すパラメーターを設定します。

    表に記載されていないパラメータについては、デフォルト設定を使用します。

    パラメータ

    説明

    クラスター名

    クラスタの名前を入力します。

    ACS-Demo

    リージョン

    クラスタをデプロイするリージョンを選択します。

    中国 (北京)

    VPC(仮想プライベートクラウド)

    ACS クラスタは、仮想プライベートクラウド (VPC) にのみデプロイできます。クラスタと同じリージョンにある VPC を指定する必要があります。

    VPC の作成をクリックして、中国 (北京) リージョンに vpc-acs-demo という名前の VPC を作成します。詳細については、VPC の作成と管理を参照してください。

    vpc-acs-demo

    仮想スイッチ

    クラスタ内のノードが相互に通信するための vSwitch を選択します。

    Vswitch の作成 をクリックし、vpc-ack-demo VPC に vswitch-ack-demo という名前の vSwitch を作成します。次に、vSwitch リストで vswitch-ack-demo を選択します。詳細については、vSwitch の作成と管理を参照してください。

    vswitch-acs-demo

    APIサーバーアクセス設定

    クラスタの Kubernetes API サーバーをインターネットに公開するかどうかを指定します。インターネット経由でクラスタを管理する場合は、Elastic IP アドレス (EIP) を使用して Kubernetes API サーバーを公開する必要があります。

    EIP を使用して API サーバーを公開する を選択します。

    サービス ディスカバリ

    クラスターのサービスディスカバリを有効にするかどうかを指定します。サービスディスカバリを有効にするには、CoreDNS を選択します。

    CoreDNS を選択します。

  4. 注文の確認 をクリックし、利用規約を読んで選択し、クラスターの作成 をクリックします。

    説明

    クラスターの作成には約10分かかります。クラスターが作成された後、クラスターページでクラスターを表示できます。

手順 3: ACS クラスタに RWKV-Runner をデプロイする

この手順では、汎用デプロイメントを作成して ACS クラスタに RWKV-Runner をデプロイする方法と、RESTful API を使用してクラスタ内で RWKV-Runner を公開する方法を示します。デプロイメントの作成に使用されるパラメータの詳細については、デプロイメントを使用してステートレスアプリケーションを作成するを参照してください。

  1. ACSコンソールにログインします。クラスタページで、作成したクラスタの名前(この例ではACS-Demo)をクリックします。

  2. 左側のナビゲーション ウィンドウで、ワークロード > デプロイ を選択します。

  3. デプロイ ページで、イメージから作成 をクリックします。

  4. 基本情報名前基本情報ウィザードページで、汎用インスタンスタイプ既定Qosタイプ次へを に設定し、にを選択し、にを選択して、をクリックします。

  5. コンテナー ウィザード ページで、コンテナーを構成し、次へ をクリックします。

    パラメータ

    説明

    イメージ名

    タグのない画像アドレスを入力するか、画像を選択 をクリックして使用する画像を選択します。

    registry.cn-beijing.aliyuncs.com/acs-demo-ns/rwkv-runner

    イメージタグを選択

    イメージバージョンを選択 をクリックし、イメージバージョンを選択します。

    1.0.0

    CPU

    アプリケーションに必要な vCPU の数を入力します。

    1 コア

    メモリ

    アプリケーションに必要なメモリ量を入力します。

    2 GiB

    ポート番号

    コンテナポートを設定します。

    • 名前: runner.

    • コンテナーポート: 8000.

    • プロトコル: TCP。

  6. 詳細作成サービスウィザードページで、の右側にあるをクリックします。

  7. [サービスの作成] ダイアログボックスで、次のパラメーターを構成し、[作成] をクリックして、RESTful API を使用してクラスター内で rwkv-runner アプリケーションを公開します。

    パラメータ

    説明

    アプリケーション名

    サービスの名前を入力します。

    rwkv-runner-svc

    状態

    サービスのタイプ。このパラメータは、サービスへのアクセス方法を指定します。

    クラスタ IP

    ポートマッピング

    サービスポートコンテナポートを指定します。コンテナポートは、バックエンド ポッドで公開されているポートと同じである必要があります。

    • 名前: runner。

    • サービスポート: 80.

    • コンテナーポート: 8000.

    • プロトコル: TCP。

  8. 詳細設定 ウィザード ページの右下隅にある 作成 をクリックします。

    アプリケーションを作成すると、完了ウィザードページに移動します。このページには、アプリケーションのオブジェクトが表示されます。詳細の表示をクリックして、アプリケーションの詳細を表示します。

手順 4: クラスタ証明書を使用して ChatGPT-Next-Web をデプロイする

この手順では、クラスタ証明書を使用して汎用デプロイメントを作成してクラスタに ChatGPT-Next-Web をデプロイする方法と、RWKV-Runner をインターネットに公開する方法を示します。デプロイメントの作成に使用されるパラメータの詳細については、デプロイメントを使用してステートレスアプリケーションを作成するを参照してください。

  1. ACSコンソールにログオンします。クラスターページで、作成したクラスターの名前(この例ではACS-Demo)をクリックします。

  2. クラスター情報ページで、接続情報タブをクリックします。インターネットアクセス用のクラスター証明書を取得し、画面の指示に従って証明書をオンプレミス マシンに保存します。

  3. chat-next-web.yaml という名前のファイルを作成し、次の内容をファイルにコピーします。

    chat-next-web.yaml ファイルの内容を表示

    apiVersion: v1
    kind: Service
    metadata:
      name: chat-frontend-svc
    spec:
      ports:
        - name: chat
          port: 80
          protocol: TCP
          targetPort: 3000
      selector:
        app: chat-frontend
      type: LoadBalancer
    
    ---
    apiVersion: apps/v1
    kind: Deployment
    metadata:
      labels:
        app: chat-frontend
      name: chat-frontend
    spec:
      progressDeadlineSeconds: 600
      replicas: 1
      revisionHistoryLimit: 10
      selector:
        matchLabels:
          app: chat-frontend
      strategy:
        rollingUpdate:
          maxSurge: 25%
          maxUnavailable: 25%
        type: RollingUpdate
      template:
        metadata:
          labels:
            alibabacloud.com/compute-class: general-purpose  # 汎用タイプ。
            # パフォーマンス強化タイプを使用する場合は、alibabacloud.com/compute-class: performance を指定します。
            app: chat-frontend
        spec:
          containers:
            - env:
                - name: BASE_URL
                  value: 'http://rwkv-runner-svc'
              image: registry.cn-beijing.aliyuncs.com/acs-demo-ns/chatgpt-next-web:amd64
              imagePullPolicy: IfNotPresent
              name: chat-frontend
              ports:
                - containerPort: 3000
                  protocol: TCP
              resources:
                requests:
                  cpu: "1"
                  memory: 2Gi
              terminationMessagePath: /dev/termination-log
              terminationMessagePolicy: File
          dnsPolicy: ClusterFirst
          restartPolicy: Always
          schedulerName: default-scheduler
          securityContext: {}
          terminationGracePeriodSeconds: 30
  4. 次のコマンドを実行して、上記の resource をクラスタに作成します。

    kubectl apply -f chat-next-web.yaml

手順 5: クラスタ証明書を使用してアプリケーションの初期化ジョブを作成する

この手順では、クラスタ証明書を使用して RWKV-Runner モデルの初期化ジョブを作成する方法を示します。ジョブによって作成されたポッドの QoS クラスは BestEffort です。ジョブの作成に使用されるパラメータの詳細については、ジョブの作成を参照してください。

  1. rwkv-init-job.yaml という名前のファイルを作成し、次の内容をファイルにコピーします。

    rwkv-init-job.yaml ファイルの内容を表示

    apiVersion: batch/v1
    kind: Job
    metadata:
      name: job-demo
    spec:
      activeDeadlineSeconds: 600
      backoffLimit: 6
      completionMode: NonIndexed
      completions: 1
      parallelism: 1
      suspend: false
      template:
        metadata:
          labels:
            alibabacloud.com/compute-qos: best-effort # BestEffort QoS クラス。
            # デフォルトの QoS クラスを使用する場合は、alibabacloud.com/compute-qos: default を指定します。
            app: job-demo
        spec:
          containers:
          - name: job
            image: registry.cn-beijing.aliyuncs.com/acs-demo-ns/rwkv-init-job:1.0.0
            imagePullPolicy: Always
            resources:
              requests:
                cpu: 500m
                memory: 1Gi
            terminationMessagePath: /dev/termination-log
            terminationMessagePolicy: File
          dnsPolicy: ClusterFirst
          restartPolicy: Never
          schedulerName: default-scheduler
          securityContext: {}
          terminationGracePeriodSeconds: 30
    
  2. 次のコマンドを実行して、初期化ジョブをデプロイします。

    kubectl apply -f rwkv-init-job.yaml
  3. 次のコマンドを実行して、初期化ジョブが完了したかどうかを確認します。

    kubectl get pod

    予期される出力:

手順 6: アプリケーションをテストする

この手順では、サービスを使用してアプリケーションにアクセスする方法を示します。

  1. ACSコンソールにログオンします。クラスターページで、作成したクラスターの名前 (この例ではACS-Demo) をクリックします。

  2. 左側のナビゲーションペインで、ネットワーク > サービス を選択します。

  3. サービス ページで、作成したサービス (この例では chat-frontend-svc) を見つけます。 外部 IP 列の IP アドレスをクリックしてアプリケーションにアクセスします。

リソースの解放

ACS クラスタを使用すると、次の料金が発生します。

  • クラスタ内のワークロードで使用されるコンピューティングパワーの料金。料金は ACS によって課金されます。

  • クラスタで使用される他のクラウド リソースの料金。料金は、阿里雲サービスの課金ルールに基づいて課金されます。

ACS クラスタを作成した後、次の項目に注意してください。

  • クラスタを使用する必要がなくなった場合は、クラスタと関連リソースを削除します。詳細については、ACS クラスタの削除を参照してください。

  • クラスタを保持する必要がある場合は、アカウントの残高が 100 人民元未満になったら、アカウントにチャージしてください。ACS で使用される阿里雲サービスの課金ルールの詳細については、課金を参照してください。