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

Platform For AI:BladeLLM を使い始める

最終更新日:Apr 01, 2025

このトピックでは、Platform for AI (PAI) の独自開発 BladeLLM エンジンを使用して、低レイテンシと高スループットで大規模言語モデル (LLM) 推論を実行することにより、サービスを効率的にデプロイする方法について説明します。

前提条件

  • PAI がアクティブ化され、デフォルトのワークスペースが作成されていること。 詳細については、「PAI をアクティブ化してデフォルトワークスペースを作成する」をご参照ください。

  • カスタムモデルをデプロイする場合、次の前提条件が満たされていることを確認してください。

    • モデルファイルと関連する構成ファイルが準備されていること。次の図は、モデルファイルの例を示しています。

      説明

      Qwen および Llama テキストモデルのみをデプロイでき、モデル構造は変更できません。

      image.png

      config.json 構成ファイルを含める必要があります。 Huggingface モデル形式に基づいて config.json ファイルを構成する必要があります。 サンプルファイルの詳細については、「config.json」をご参照ください。

    • Object Storage Service (OSS) バケットが作成され、カスタムモデルファイルがアップロードされていること。 詳細については、「OSS コンソールを使用して開始する」をご参照ください。

制限事項

次の表は、BladeLLM エンジンを使用してサービスをデプロイする場合に適用される制限事項を示しています。

種類

説明

モデルの制限

Qwen および Llama テキストモデル (オープンソース、ファインチューニング済み、量子化バージョンを含む) のみデプロイできます。

リソースの制限

  • カードタイプ: A シリーズ、H シリーズ、および L シリーズ GPU のみサポートされています。 P100、P4、V100、T4 などの古いタイプの GPU はサポートされていません。

  • GPU メモリ:。たとえば、FB16 モデルに 70 億のパラメーターが含まれている場合、GPU メモリは次の式を使用して計算されます。推論プロセスでは、キーバリュー (KV) キャッシュに追加のスペースが必要です。 24 GB の GPU メモリを搭載したインスタンスタイプを選択できます。

サービスをデプロイする

PAI は、BladeLLM エンジンを使用してサービスをデプロイするための次のデプロイ方法を提供します。 あらかじめ設定されたパブリックモデルまたは PAI でファインチューニングされたモデルを使用して、迅速なシナリオベースのデプロイメントを実装できます。 PAI は、特別な構成要件を持つユーザー向けに、カスタムデプロイメントと JSON デプロイメントもサポートしています。 ファインチューニングされたモデルを数回クリックするだけでデプロイできます。

シナリオベースのモデルデプロイメント (推奨)

  1. PAI コンソール にログオンします。 上部のナビゲーションバーで、目的のリージョンを選択します。 表示されるページで、目的のワークスペースを選択し、[elastic Algorithm Service (EAS) に入る] をクリックします。

  2. Elastic Algorithm Service (EAS) ページで、[サービスのデプロイ] をクリックします。 [シナリオベースのモデルデプロイメント] セクションの [サービスのデプロイ] ページで、[LLM デプロイメント] をクリックします。

  3. LLM デプロイメント ページで、次の表に示すパラメーターを構成します。

    パラメーター

    説明

    基本情報

    サービス名

    サービスの名前を指定します。

    blade_llm_qwen_server

    バージョン

    このパラメーターを [高パフォーマンスデプロイメント] に設定すると、PAI の独自開発 BladeLLM エンジンが迅速なデプロイメントに使用されます。

    高パフォーマンスデプロイメント

    イメージバージョン

    BladeLLM エンジンバージョンを選択します。

    blade-llm:0.9.0

    モデル設定

    モデルのソース。有効な値:

    • [パブリックモデル]: PAI はさまざまな共通モデルを提供します。 ドロップダウンリストの image アイコンをクリックして、各モデルの詳細を表示します。

    • [カスタムモデル]: パブリックモデルがビジネス要件を満たせない場合は、ファインチューニングされたモデルを選択できます。 OSS、NAS ファイルシステム (NAS)、Extreme NAS、凌雲向け Cloud Parallel File System (CPFS)、PAI モデルのいずれかのマウント方法を選択できます。

    [パブリックモデル] > qwen2.5-7b-instruct

    リソースデプロイメント

    リソースタイプ

    次のリソースタイプを使用できます。

    • [パブリックリソース]: ワークロードが軽く、適時性の要件が低いシナリオでは、パブリックリソースを使用することをお勧めします。

    • [EAS リソースグループ]: リソースの隔離が必要なシナリオ、またはセキュリティ要件が高いシナリオに適しています。 Elastic Algorithm Service (EAS) リソースグループの購入方法については、「EAS リソースグループの使用」をご参照ください。

    • [リソースクォータ]: 強力なコンピューティング能力と効率的なデータ処理能力が必要なシナリオに適しています。 リソースクォータの準備方法については、「凌雲リソースクォータ」をご参照ください。

    パブリックリソース

    デプロイリソース

    サービスをデプロイするためのインスタンスタイプを選択します。 詳細については、「制限事項」をご参照ください。

    ecs.gn7i-c16g1.4xlarge

    機能

    共有メモリ

    共有メモリサイズを構成して、インスタンスがデータのコピーと転送を必要とせずにメモリに対する読み取りおよび書き込み操作を実行できるようにします。 デフォルトでは、複数の GPU を搭載したインスタンスタイプを選択すると、共有メモリは 64 GB に設定されます。 それ以外の場合は、共有メモリは 0 に設定されます。 共有メモリサイズを手動で変更することもできます。

    デフォルト設定

    詳細設定

    テンソル並列処理

    BladeLLM は、複数の GPU にわたる分散推論をサポートしています。 ほとんどの場合、このパラメーターをインスタンスタイプの GPU 数に設定できます。

    1

    ポート番号

    イメージの起動後にモデルサービスが listen するローカル HTTP ポート。

    説明

    EAS はポート 8080 で listen するため、ポート 8080 を指定することはできません。

    8001

    最大 GPU メモリ使用量

    モデルが占有するメモリを引いた合計 GPU メモリに対する KV キャッシュメモリの比率。 デフォルト値: 0.85。 メモリ不足の問題が発生した場合は、パラメーター値を小さくすることができます。 十分なメモリがある場合は、パラメーター値を大きくすることができます。

    0.85

    プリフィルのチャンクサイズ

    BladeLLM の組み込み最適化ポリシー。 プリフィルフェーズでは、入力データが複数のチャンクに分割され、計算リソース効率が向上し、レイテンシが短縮されます。 チャンクサイズは、一度にモデルに提供されるデータ量です。 単位: トークン。

    2048

    投機的デコード

    宛先モデルの推論を高速化するために、より小さく高速なドラフトモデルを使用する高速化戦略を有効にするかどうかを指定します。 ドラフトモデルは、将来のトークン生成を複数ステップで予測します。 宛先モデルは、同時にトークンを検証およびフィルタリングします。 これにより、精度を損なうことなくトークン生成が高速化されます。

    重要

    投機的デコード機能はドラフトモデルをデプロイし、より大きな GPU メモリを搭載したインスタンスタイプが必要です。 投機的デコード機能を有効にする場合は、宛先モデルとドラフトモデルのパラメーター数に基づいて必要なメモリサイズを再計算する必要があります。

    • [ドラフトモデル]: 宛先モデルと同様のアーキテクチャを持つ小規模モデル。 PAI の組み込みパブリックモデルを使用するか、特定のタスクまたはデータセットに基づいてモデルをファインチューニングできます。

    • [投機ステップサイズ]: 各予測でドラフトモデルによって生成されるトークンシーケンスの長さ。 デフォルト値: 4。 これらのシーケンスは、宛先モデルによって検証およびフィルタリングされます。

    無効

    その他のパラメーター

    • [オプションパラメーターを追加]: オプションパラメーターは、そのパラメーター値を使用して構成を指定します。 パラメーター名と値を入力する必要があります。

    • [フラグパラメーターを追加]: フラグパラメーターはブール型であり、機能を有効または無効にするために使用されます。 パラメーター名を入力するだけで済みます。

    なし

    コマンドプレビュー

    イメージとパラメーターの構成に基づいて自動的に生成される実行コマンド。 デフォルトでは、実行コマンドを変更することはできません。 実行コマンドを変更する場合は、[フリー編集モードに切り替える] をクリックします。

    構成を変更せずに使用されるデフォルト構成

  4. パラメーターを構成した後、[デプロイ] をクリックします。

カスタムデプロイメント

  1. PAI コンソール にログオンします。 上部のナビゲーションバーで、目的のリージョンを選択します。 表示されるページで、目的のワークスペースを選択し、[elastic Algorithm Service (EAS) に入る] をクリックします。

  2. Elastic Algorithm Service (EAS) ページで、[サービスのデプロイ] をクリックします。 [カスタムモデルデプロイメント] セクションの [サービスのデプロイ] ページで、[カスタムデプロイメント] をクリックします。

  3. カスタムデプロイメント ページで、パラメーターを構成します。 次の表にパラメーターを示します。 その他のパラメーターについては、「コンソールのカスタムデプロイメントパラメーターの説明」をご参照ください。

    パラメーター

    説明

    基本情報

    サービス名

    サービスの名前を指定します。

    環境情報

    デプロイ方法

    このパラメーターを [イメージベースのデプロイメント] に設定します。

    イメージ構成

    [alibaba Cloud イメージ] > blade-llm > blade-llm:0.8.0 を選択します。

    モデル設定

    OSS をクリックして、ファインチューニングされたモデルの構成をマウントし、次のパラメーターを構成します。

    • OSS: モデルファイルが格納されている OSS ディレクトリを選択します。 例: oss://examplebucket/bloom_7b

    • マウントパス: サービスインスタンスにマウントされたモデル構成のパス。 例: /mnt/model/bloom_7b

    コマンド

    このパラメーターを blade_llm_server --port 8081 --model /mnt/model/bloom_7b/ に設定します。

    ポート番号

    このパラメーターを 8081 に設定します。 値は、コマンドのポート番号と同じである必要があります。

    リソースデプロイメント

    デプロイリソース

    サービスのデプロイに使用するインスタンスタイプを選択します。 詳細については、「制限事項」をご参照ください。

    共有メモリ

    推論に複数の GPU を使用する場合は、共有メモリサイズを構成する必要があります。 デフォルトでは、複数の GPU を搭載したインスタンスタイプを選択すると、共有メモリは 64 GB に設定されます。 それ以外の場合は、共有メモリは 0 に設定されます。 共有メモリサイズを手動で変更することもできます。

  4. パラメーターを構成した後、[デプロイ] をクリックします。

JSON デプロイメント

  1. PAI コンソール にログオンします。 上部のナビゲーションバーで、目的のリージョンを選択します。 表示されるページで、目的のワークスペースを選択し、[elastic Algorithm Service (EAS) に入る] をクリックします。

  2. Elastic Algorithm Service (EAS) ページで、[サービスのデプロイ] をクリックします。 [カスタムモデルデプロイメント] セクションの [サービスのデプロイ] ページで、[JSON デプロイメント] をクリックします。

  3. JSON デプロイメントページで、JSON エディターに次のコンテンツを指定し、[デプロイ] をクリックします。

    {
        "name": "blade_llm_bloom_server",  // サービスの名前。
        "containers": [
            {
                // -vpc サフィックスが付いたイメージとコマンドの URL を使用します。 URL では、<region_id> は cn-hangzhou などのリージョン ID を示します。
                // 有効なバージョン番号を指定します。
                "image": "eas-registry-vpc.<region_id>.cr.aliyuncs.com/pai-eas/blade-llm:0.8.0",
                "command": "blade_llm_server --port 8081 --model /mnt/model/bloom_7b/",
                // ポート番号は、コマンドの --port パラメーターの値と同じである必要があります。
                "port": 8081
            }
        ],
        "storage": [
            {
                // モデルのマウントパス。
                "mount_path": "/mnt/model/bloom_7b/",
                "oss": {
                    "endpoint": "oss-<region_id>-internal.aliyuncs.com",
                    // モデル構成が格納されている OSS ディレクトリ。
                    "path": "oss://examplebucket/bloom_7b/"
                }
            },
            {
                // 推論に複数の GPU を使用する場合は、共有メモリを構成する必要があります。
                "empty_dir": {
                    "medium": "memory",
                    "size_limit": 64
                },
                "mount_path": "/dev/shm"
            }
        ],
        "metadata": {
            "instance": 1,
            "memory": 64000, // メモリサイズ。単位: MB。
            "cpu": 16,
            "gpu": 1,
            "resource": "eas-r-xxxxxx" // リソースグループの ID。
        }
    }

サービスを呼び出す

実行状態のサービスをデプロイすると、サービスを呼び出してモデル推論を実行できます。

  1. サービスのアクセスアドレスとトークンを表示します。

    1. Elastic Algorithm Service (EAS) ページで、目的のサービスを見つけ、[サービスタイプ] 列の [呼び出し方法] をクリックします。

    2. [呼び出し方法] ダイアログボックスで、サービスのアクセスアドレスとトークンを表示できます。

  2. ターミナルで次のコードを実行してサービスを呼び出し、ストリーミングモードで生成されたテキストを取得します。

    # EAS サービスの呼び出し
    curl -X POST \
        -H "Content-Type: application/json" \
        -H "Authorization: AUTH_TOKEN_FOR_EAS" \
        -d '{"prompt":"What is the capital of Canada?", "stream":"true"}' \
        <service_url>/v1/completions

    次のパラメーターに注意してください。

    • Authorization: サービスのトークン。

    • <service_url>: サービスのアクセスアドレス。

    応答例:

    data: {"id":"91f9a28a-f949-40fb-b720-08ceeeb2****","choices":[{"finish_reason":"","index":0,"logprobs":null,"text":" The"}],"object":"text_completion","usage":{"prompt_tokens":7,"completion_tokens":1,"total_tokens":8},"error_info":null}
    
    data: {"id":"91f9a28a-f949-40fb-b720-08ceeeb2****","choices":[{"finish_reason":"","index":0,"logprobs":null,"text":" capital"}],"object":"text_completion","usage":{"prompt_tokens":7,"completion_tokens":2,"total_tokens":9},"error_info":null}
    
    data: {"id":"91f9a28a-f949-40fb-b720-08ceeeb2****","choices":[{"finish_reason":"","index":0,"logprobs":null,"text":" of"}],"object":"text_completion","usage":{"prompt_tokens":7,"completion_tokens":3,"total_tokens":10},"error_info":null}
    
    data: {"id":"91f9a28a-f949-40fb-b720-08ceeeb2****","choices":[{"finish_reason":"","index":0,"logprobs":null,"text":" Canada"}],"object":"text_completion","usage":{"prompt_tokens":7,"completion_tokens":4,"total_tokens":11},"error_info":null}
    
    data: {"id":"91f9a28a-f949-40fb-b720-08ceeeb2****","choices":[{"finish_reason":"","index":0,"logprobs":null,"text":" is"}],"object":"text_completion","usage":{"prompt_tokens":7,"completion_tokens":5,"total_tokens":12},"error_info":null}
    
    data: {"id":"91f9a28a-f949-40fb-b720-08ceeeb2****","choices":[{"finish_reason":"","index":0,"logprobs":null,"text":" Ottawa"}],"object":"text_completion","usage":{"prompt_tokens":7,"completion_tokens":6,"total_tokens":13},"error_info":null}
    
    data: {"id":"91f9a28a-f949-40fb-b720-08ceeeb2****","choices":[{"finish_reason":"","index":0,"logprobs":null,"text":"."}],"object":"text_completion","usage":{"prompt_tokens":7,"completion_tokens":7,"total_tokens":14},"error_info":null}
    
    data: {"id":"91f9a28a-f949-40fb-b720-08ceeeb2****","choices":[{"finish_reason":"stop","index":0,"logprobs":null,"text":""}],"object":"text_completion","usage":{"prompt_tokens":7,"completion_tokens":8,"total_tokens":15},"error_info":null}
    
    data: [DONE]