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

Elastic Container Instance:Qwen-7B-Chat のデプロイ

最終更新日:Dec 28, 2024

このトピックでは、データキャッシュを使用して、ModelScope コミュニティが提供する Qwen-7B-Chat アプリケーションをデプロイする方法について説明します。Qwen-7B-Chat アプリケーションをデプロイする前に、Qwen-7B-Chat モデルデータをデータキャッシュに保存できます。Qwen-7B-Chat アプリケーションに対応するエラスティックコンテナインスタンスを作成するときに、モデルデータをインスタンスにマウントできます。このようにして、システムはエラスティックコンテナインスタンスからモデルデータをプルする必要がなくなり、アプリケーションをより迅速にデプロイできます。

背景情報

Tongyi Qianwen-7b (Qwen-7B) は、アリババクラウドが開発した Tongyi Qianwen 基礎モデルシリーズの 70 億パラメータモデルです。Qwen-7B は、Transformer に基づいており、超大規模な事前トレーニングデータでトレーニングされた大規模言語モデル (LLM) です。Qwen-7B-Chat は、アライメントメカニズムを使用して Qwen-7B に基づいて開発された LLM AI アシスタントです。

前提条件

使用する仮想プライベートクラウド (VPC) は、インターネット NAT ゲートウェイに関連付けられています。VPC 内のリソースまたは VPC 内の vSwitch に接続されているリソースがインターネットにアクセスできるように、SNAT エントリが NAT ゲートウェイに構成されています。

説明

VPC がインターネット NAT ゲートウェイに関連付けられていない場合は、DataCache を作成してアプリケーションをデプロイするときに、エラスティック IP アドレス (EIP) を VPC に関連付ける必要があります。このようにして、インターネットからデータをプルできます。

ランタイム環境を準備する

  • ハードウェア要件

    エラスティックコンテナインスタンスベースのポッドの作成に使用される GPU アクセラレーション Elastic Compute Service (ECS) インスタンスファミリは、次の条件を満たしている必要があります。ポッドの作成に使用できる GPU アクセラレーション ECS インスタンスファミリの詳細については、サポートされているインスタンスファミリ を参照してください。

    • CPU: 厳密な制限なし

    • メモリサイズ: 16 GiB 以上

    • GPU の数: 1 以上

    • GPU メモリのサイズ: 16 GB 以上。GPU メモリサイズが 16 GB 未満の場合、メモリ不足 (OOM) エラーが発生する可能性があります。

  • ソフトウェア要件

    Qwen-7B-Chat は、多数のライブラリと構成に依存しています。エラスティックコンテナインスタンスは、Gradio ベースの Qwen WebUI を含むパブリックコンテナイメージを提供します。パブリックコンテナイメージを直接使用するか、二次開発のベースイメージとして使用できます。イメージアドレスは registry.cn-hangzhou.aliyuncs.com/eci_open/qwen-webui:1.0.0 で、イメージサイズは約 15 GB です。

手順

データキャッシュを作成する

コンソールモード

  1. ModelScope にアクセスし、Qwen-7B-Chat モデルの ID を取得します。

    このトピックでは、Qwen-7B-Chat のバージョンは v1.1.4 です。ModelScope で使用するモデルを見つけ、モデルの詳細ページの上部にあるモデル ID をコピーします。

  2. エラスティックコンテナインスタンスコンソール にログオンします。

  3. 上部のナビゲーションバーで、リージョンを選択します。

  4. 左側のナビゲーションペインで、データキャッシュ をクリックします。

  5. Qwen-7B-Chat モデルのデータキャッシュを作成します。

    1. データキャッシュの作成 をクリックします。

    2. データキャッシュの作成に使用するパラメータを構成します。

      次の表に、サンプルパラメータを示します。Qwen-7B-Chat モデルをプルするための固定構成であるキャッシュデータソースパラメータには、指定された値を使用する必要があります。ビジネス要件に基づいて他のパラメータを指定できます。詳細については、データキャッシュを作成する を参照してください。

      パラメータ

      キャッシュバケット

      test

      キャッシュディレクトリ

      /model/qwen/

      キャッシュ名

      qwen

      キャッシュサイズ

      20 GiB

      キャッシュデータソース

      • タイプ: URL

      • パラメータ

        • repoSource: ModelScope/Model

        • repoId: qwen/Qwen-7B-Chat

        • revision: v1.1.4

      通义千问-控制台1.png

    3. OK をクリックします。

  6. データキャッシュのステータスを表示します。

    データキャッシュ ページで、ページを更新してデータキャッシュのステータスを表示します。ステータスが「使用可能」になったら、データキャッシュを使用する準備ができています。

API モード

  1. ModelScope にアクセスし、Qwen-7B-Chat モデルの ID を取得します。

    このトピックでは、Qwen-7B-Chat のバージョンは v1.1.4 です。ModelScope で使用するモデルを見つけ、モデルの詳細ページの上部にあるモデル ID をコピーします。

  2. Qwen-7B-Chat モデルのデータキャッシュを作成します。

    次のコードは、CreateDataCache API オペレーションを呼び出してデータキャッシュを作成する場合に使用されるサンプルパラメータを示しています。システムは ModelScope からモデルデータをプルし、test という名前のバケットの /model/qwen/ ディレクトリにモデルデータを保存します。データキャッシュの名前は qwen で、1 日間保持されます。

    重要

    SDK を使用して DataCache を作成する場合、DataSource.Options の各パラメータにパラメータ名の長さをプレフィックスする必要はありません。たとえば、#10#repoSource の代わりに repoSource と記述します。#6#repoId の代わりに repoId と記述します。

    {
      "RegionId": "cn-beijing",
      "SecurityGroupId": "sg-2ze7l1o0ql1cbk******",
      "VSwitchId": "vsw-2ze23nqzig8inpr******",
      "Bucket": "test",
      "Path": "/model/qwen/",
      "Name": "qwen",
      "DataSource": {
        "Type": "URL",
        "Options": {
          "#6#repoId": "qwen/Qwen-7B-Chat",
          "#10#repoSource": "ModelScope/Model", // Add missing comma
          "#8#revision": "v1.1.4"
        }
      },
      "RetentionDays": 1
    }
  3. データキャッシュのステータスをクエリします。

    返された DataCache ID を使用して、DescribeDataCaches API オペレーションを呼び出し、DataCache の情報をクエリします。DataCaches.Status で示される DataCache のステータスが「使用可能」の場合、DataCache を使用する準備ができています。

Qwen-7B-Chat をデプロイする

コンソールモード

  1. エラスティックコンテナインスタンスコンソール の左側のナビゲーションペインで、[コンテナグループ] をクリックします。コンテナグループ ページで、コンテナグループの作成 をクリックします。

  2. コンテナグループ (エラスティックコンテナインスタンス) の作成に使用するパラメータを構成し、構成の確認 をクリックします。

    次の表に、エラスティックコンテナインスタンスの作成に使用されるサンプルパラメータを示します。インスタンスは、GPU アクセラレーション ECS インスタンスタイプに基づいて作成され、Qwen-7B-Chat モデルがマウントされています。エラスティックコンテナインスタンス内のコンテナは、Qwen WebUI アプリケーションを含むイメージを使用します。コンテナが起動した後、コンテナは python Qwen-7B/web_demo.py --server_port 8888 コマンドを実行して Qwen WebUI を起動します。

    重要

    エラスティックコンテナインスタンスが属する VPC がインターネット NAT ゲートウェイに関連付けられている場合、インスタンスの作成時に EIP をエラスティックコンテナインスタンスに関連付けない場合があります。インスタンスの作成後、DNAT エントリを構成して、インスタンスへの外部アクセスを許可できます。

    セクション

    パラメータ

    コンテナグループの構成

    インスタンスタイプの指定

    ecs.gn6i-c16g1.4xlarge

    名前

    qwen-web

    コンテナの構成

    コンテナ名

    qwen

    イメージ

    • イメージ: registry.cn-hangzhou.aliyuncs.com/eci_open/qwen-webui

    • イメージタグ: 1.0.0

    実行可能コマンド

    /bin/sh

    パラメータ

    • -c

    • python Qwen-7B/web_demo.py --server_port 8888

    データキャッシュ

    データキャッシュバケット

    test

    追加 をクリックして、Qwen-7B-Chat モデルのデータキャッシュをマウントします。

    • データキャッシュディレクトリ: /model/qwen/

    • デスティネーションコンテナ: qwen

    • コンテナマウントディレクトリ :/data/model/

    バーストの有効化

    バーストの有効化を選択します。

    EIP

    EIP

    • 自動作成

    • 最大帯域幅: 5 Mbit/s

  3. インスタンスの構成を確認し、利用規約を読んで選択し、注文の確認 をクリックします。

  4. コンテナグループ ページに戻り、Qwen-7B-Chat アプリケーションがデプロイされているかどうかを確認し、インスタンスの EIP を表示します。

    コンテナグループ ページで、エラスティックコンテナインスタンスのステータスを表示できます。インスタンス ID をクリックしてインスタンスの詳細ページに移動し、コンテナのステータスを表示できます。インスタンスのステータスとコンテナのステータスが 実行中 の場合、アプリケーションはデプロイされています。IP アドレス 列にインスタンスの EIP が表示されます。

    通义千问控制台2.png

API モード

  1. データキャッシュを使用してエラスティックコンテナインスタンスを作成し、Qwen-7B-Chat アプリケーションをデプロイします。

    次のコードは、CreateContainerGroup API オペレーションを呼び出してエラスティックコンテナインスタンスを作成する場合に使用されるパラメータを示しています。インスタンスは、GPU アクセラレーション ECS インスタンスタイプを使用し、Qwen-7B-Chat モデルがマウントされています。エラスティックコンテナインスタンス内のコンテナは、Qwen WebUI アプリケーションを含むイメージを使用します。コンテナが起動した後、コンテナは python Qwen-7B/web_demo.py --server_port 8888 コマンドを実行して Qwen WebUI を起動します。

    説明

    次の例では、システムは自動的に EIP を作成し、EIP をエラスティックコンテナインスタンスに関連付けます。エラスティックコンテナインスタンスが属する VPC がインターネット NAT ゲートウェイに関連付けられている場合、インスタンスの作成時に EIP をエラスティックコンテナインスタンスに関連付けない場合があります。インスタンスの作成後、DNAT エントリを構成して、インスタンスへの外部アクセスを許可できます。

    {
      "RegionId": "cn-beijing",
      "SecurityGroupId": "sg-2ze7l1o0ql1cbk******",
      "VSwitchId": "vsw-2ze23nqzig8inpr******",
      "ContainerGroupName": "qwen-web",
      "InstanceType": "ecs.gn6i-c16g1.4xlarge",
      "DataCacheBucket": "test",
      "Container": [
        {
          "Arg": [
            "-c",
            "python Qwen-7B/web_demo.py --server_port 8888"
          ],
          "Command": [
            "/bin/sh"
          ],
          "Gpu": 1,
          "Name": "qwen",
          "Image": "registry.cn-hangzhou.aliyuncs.com/eci_open/qwen-webui:1.0.0",
          "VolumeMount": [
            {
              "Name": "model-qwen",
              "MountPath": "/data/model"
            }
          ]
        }
      ],
      "Volume": [
        {
          "Type": "DataCacheVolume", // Corrected volume type
          "DataCacheVolume.Path": "/model/qwen/",
          "Name": "model-qwen"
        }
      ],
      "DataCacheProvisionedIops": 35000,
      "DataCacheBurstingEnabled": true,
      "AutoCreateEip": true
    }
  2. アプリケーションがデプロイされているかどうかを確認します。

    返されたインスタンス ID を使用して、DescribeContainerGroupStatus API オペレーションを呼び出し、インスタンスとコンテナのステータスをクエリします。Status で示されるインスタンスのステータスと ContainerStatuses.State で示されるコンテナのステータスが「実行中」の場合、インスタンスは作成され、コンテナは実行されています。

  3. エラスティックコンテナインスタンスの EIP をクエリします。

    返されたインスタンス ID を使用して、DescribeContainerGroups API オペレーションを呼び出し、インスタンスの詳細をクエリします。InternetIP パラメータからインスタンスの EIP を取得できます。

モデルをテストする

  1. エラスティックコンテナインスタンスが属するセキュリティグループにインバウンドルールを追加し、ポート 8888 を許可します。

  2. ブラウザを使用して Qwen の Web ページにアクセスします。

    この例では、EIP が Qwen-7B-Chat アプリケーションに関連付けられています。エラスティックコンテナインスタンスの EIP とコンテナの許可されたポートを入力して、アプリケーションにアクセスできます。例: 123.57.XX.XX:8888

  3. テキストを入力して、Qwen-7B-Chat モデルの効果をテストします。

    例:

    通义千问.png