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

Platform For AI:LLMインテリジェントルーターを使用した推論効率の向上

最終更新日:Sep 27, 2024

大規模言語モデル (LLM) シナリオでは、不確実なリソース需要やバックエンド推論インスタンスの不均衡な負荷などの問題が存在します。 これらの問題を解決するために、Elastic Algorithm Service (EAS) はLLMインテリジェントルーターコンポーネントを提供し、LLMシナリオのメトリックに基づいてリクエストスケジューリング層でリクエストを動的に配信します。 これにより、バックエンド推論インスタンス全体でコンピューティングパワーとGPUメモリを均等に割り当てることができ、クラスターのリソース使用量を改善できます。

背景情報

LLMシナリオでは、単一の要求によって占有されるGPUリソースの量は、ユーザ要求の長さとモデル応答の長さとの間の差、ならびに入力および出力生成フェーズにおいてモデルによって生成されるトークンの数のランダム性のために不確実である。 Round RobinやLeast Connectionsなどの従来のゲートウェイの負荷分散ポリシーでは、バックエンドコンピューティングリソースの負荷をリアルタイムで検出できません。 その結果、バックエンド推論インスタンスの負荷が不均衡になり、システムのスループットとレスポンスレイテンシに影響します。 特に、時間がかかり、大量のGPUコンピューティングを必要とし、または大量のGPUメモリを占有するロングテール要求は、不均一なリソース割り当てを悪化させ、クラスタ全体のパフォーマンスを低下させます。

前述の問題を解決するために、EASはLLMインテリジェントルータを要求スケジューリング層の基本コンポーネントとして提供します。 コンポーネントは、LLMシナリオのメトリックに基づいて要求を動的に分散します。 これにより、推論インスタンス全体でのコンピューティングパワーとGPUメモリの均等な割り当てが保証され、クラスターリソースの効率と安定性が大幅に向上します。

LLMインテリジェントルーターは、推論サービスの速度とスループットを大幅に向上させます。 詳細については、「付録1: テスト結果の比較」をご参照ください。

仕組み

image

LLMインテリジェントルーターは本質的に、バックエンド推論サービスへのリクエストをインテリジェントにスケジュールできる特別なEASサービスです。 LLMインテリジェントルーターは、サービスグループを介して推論インスタンスに関連付けられます。 次のセクションでは、LLMインテリジェントルーターの仕組みについて説明します。

  • デフォルトでは、LLM Intelligent Routerサービスには、推論インスタンスのメトリックを収集するために使用される組み込みのLLMスケジューラオブジェクトがあり、特定のアルゴリズムを使用して、メトリックに基づいてグローバルに最適なインスタンスを選択します。 LLMインテリジェントルーターは、最適なインスタンスにリクエストを転送します。 Metrics APIの詳細については、「付録2: Metrics API」をご参照ください。

  • LLMスケジューラはまた、推論インスタンスとのキープアライブ接続を確立する。 推論インスタンスで例外が発生した場合、LLMスケジューラはすぐに例外を検出し、インスタンスへのトラフィックの配信を停止できます。

  • LLMゲートウェイは、LLMスケジューラによって指示されるように要求を転送する。 HTTPベースのサーバー送信イベント (SSE) およびWebSocketプロトコルがサポートされています。

制限事項

  • LLMインテリジェントルーターは、LLM推論シナリオに適用されます。 バックエンドインスタンスの推論フレームワークとして使用できるのは、BladeLLMまたはvLLMのみです。

  • LLMインテリジェントルーターの値は、LLMインテリジェントルーターと複数の推論インスタンスが同じサービスグループにデプロイされている場合にのみ実現できます。

サービスのデプロイ

LLM Intelligent Routerサービスの展開

次の配置方法がサポートされています。

方法1: PAIコンソールでのサービスのデプロイ

  1. EASページに移動します。

    1. Platform for AI (PAI) コンソールにログインします。

    2. 左側のナビゲーションペインで、[ワークスペース] をクリックします。 [ワークスペース] ページで、モデルを配置するワークスペースを見つけ、その名前をクリックして [ワークスペースの詳細] ページに移動します。

    3. 左側のナビゲーションウィンドウで、[モデル展開] > [Elastic Algorithm Service (EAS)] を選択して、[Elastic Algorithm Service (EAS)] ページに移動します。image

  2. [Elastic Algorithm Service (EAS)] ページで、[サービスのデプロイ] をクリックします。

  3. [サービスのデプロイ] ページで、次のいずれかのデプロイ方法を選択します。

    • [カスタムモデルのデプロイ] > [カスタムデプロイ] を選択します。

    • [シナリオベースのモデル展開] > [LLM展開] を選択します。 [LLMデプロイ] ページの [基本情報] セクションで、推論アクセラレーションをサポートするモデルタイプ (Qwen2-7b、Qwen1.5-1.8b、Qwen1.5-7b、Qwen1.5-14b、llama3-8b、llama2-7b、llama2-13b、chatglm3-6b、baichuan2-7b、baichuan2-13b、falcon-7b、yi-6b、mistral-7b-instruct-v0.2、gemma-2b-it、gemma-7b-it、deepseek-coder-7b-instruct-v1.5など) を選択します。

  4. [サービス設定] セクションで、[LLMインテリジェントルーター] をクリックし、[LLMインテリジェントルーター] をオンにしてから、ドロップダウンリストで [LLMインテリジェントルーターの作成] をクリックします。image

  5. [LLMインテリジェントルーターの作成] パネルでパラメーターを設定し、[デプロイ] をクリックします。 下表に、各パラメーターを説明します。

    パラメーター

    説明

    基本情報

    サービス名

    プロンプトに従って、LLM Intelligent Routerサービスの名前を指定します。 例: llm_router.

    リソース設定

    デプロイ

    LLM Intelligent Routerサービスのリソースを設定します。 デフォルト設定:

    • 最小インスタンス数: 2 LLM Intelligent Routerサービスを複数のインスタンスで実行できるようにするには、[最小インスタンス] を2に設定することを推奨します。

    • CPU: 2コア。

    • メモリ: 4 GB。

    スケジュールリソース

    LLMスケジューラのスケジューリングリソースを設定します。 デフォルト設定:

    • CPU: 2コア。

    • メモリ: 4 GB。

    推論の加速

    イメージで使用する推論フレームワークを選択します。 LLMゲートウェイは、次の2つのフレームワークをサポートします。

    • BladeLLM推論の加速

    • オープンソースvLLM推論アクセラレーション

LLM Intelligent Routerサービスがデプロイされると、同時にサービスグループが作成されます。 サービスグループは、[Elastic Algorithm service (EAS)] ページの [グループサービス] タブで表示できます。 サービスグループの名前は、group_Name of an LLM Intelligent Router service形式で指定されます。image

説明

インテリジェントルーティングとサービスキューが競合します。 サービスグループにはキューサービスを作成しないことを推奨します。

方法2: JSONを使用したサービスのデプロイ

  1. EASページに移動します。

    1. Platform for AI (PAI) コンソールにログインします。

    2. 左側のナビゲーションペインで、[ワークスペース] をクリックします。 [ワークスペース] ページで、モデルを配置するワークスペースを見つけ、その名前をクリックして [ワークスペースの詳細] ページに移動します。

    3. 左側のナビゲーションウィンドウで、[モデル展開] > [Elastic Algorithm Service (EAS)] を選択して、[Elastic Algorithm Service (EAS)] ページに移動します。image

  2. Elastic Algorithm Service (EAS) ページで、[サービスのデプロイ] をクリックします。

  3. [サービスのデプロイ] ページの [カスタムモデルのデプロイ] セクションで、[JSONデプロイ] をクリックします。

  4. JSON Deploymentページの設定エディターセクションで、パラメーターを設定し、[デプロイ] をクリックします。

    次のサンプルコードに例を示します。

    説明
    • 単一障害点 (SPOF) を防ぐには、metadata.instanceパラメーターを少なくとも2に設定して、LLMインテリジェントルーターを複数のインスタンスで実行できるようにすることを推奨します。

    • LLMサービスがデプロイされる前にLLMインテリジェントルーターサービスがデプロイされている場合、LLMインテリジェントルーターサービスは、LLMサービスがデプロイされるまで待機状態のままです。

    • 基本設定

      {
          "cloud": {
              "computing": {
                  "instance_type": "ecs.c7.large"
              }
          },
          "metadata": {
              "type": "LLMGatewayService",
              "cpu": 4,
              "group": "llm_group",
              "instance": 2,
              "memory": 4000,
              "name": "llm_router"
          }
      }

      LLM Intelligent Routerサービスをデプロイするには、metadata.typeパラメーターをLLMGatewayServiceに設定します。 その他のパラメーターについては、「モデルサービスのパラメーター」をご参照ください。 サービスが展開されると、EASはLLMインテリジェントルーターLLMスケジューラを含む複合サービスを自動的に作成します。 LLM Intelligent Routerは、LLM Intelligent Routerサービスに指定したリソース設定を使用します。 LLMスケジューラのデフォルトのリソース設定は、4 vCPUと4 GiBのメモリです。

    • 詳細設定: 基本設定がビジネス要件を満たせない場合は、JSONファイルを準備して次の詳細設定を指定できます。

      {
          "cloud": {
              "computing": {
                  "instance_type": "ecs.c7.large"
              }
          },
          "llm_gateway": {
              "infer_backend": "vllm",
              "max_queue_size": 128,
              "retry_count": 2,
              "wait_schedule_timeout": 5000,
              "wait_schedule_try_period": 500
          },
          "llm_scheduler": {
              "cpu": 4,
              "memory": 4000
          },
          "metadata": {
              "cpu": 2,
              "group": "llm_group",
              "instance": 2,
              "memory": 4000,
              "name": "llm_router",
              "type": "LLMGatewayService"
          }
      }

      次の表に、主要なパラメーターを示します。 その他のパラメーターについては、「モデルサービスのパラメーター」をご参照ください。

      パラメーター

      説明

      llm_gateway.infer_バックエンド

      LLMによって使用される推論フレームワーク。有効な値:

      • vllm (デフォルト)

      • bladellm

      llm_gateway.max_queue_サイズ

      LLMインテリジェントルータのキャッシュキューの最大長。 デフォルト値: 128

      バックエンド推論フレームワークの処理能力を超えると、LLMインテリジェントルータはリクエストをキューにキャッシュし、推論インスタンスが利用可能になったときにキャッシュされたリクエストを転送します。

      llm_gateway.retry_count

      リトライの回数。 デフォルト値:2 リクエストの転送先のバックエンド推論インスタンスが異常な場合、LLMインテリジェントルーターはリクエストを別のインスタンスに転送しようとします。

      llm_gateway.wait_schedule_timeout

      タイムアウト期間。 デフォルト値: 5000。 単位:ミリ秒。 LLMスケジューラがタイムアウト期間中使用できない場合、LLMインテリジェントルータは単純なラウンドロビンポリシーを使用して要求を分散します。

      llm_gateway.wait_schedule_try_ピリオド

      wait_schedule_timeoutパラメーターで指定されたタイムアウト期間中に、LLMインテリジェントルータがLLMスケジューラへの接続を再試行する間隔。 デフォルト値: 500。 単位:ミリ秒。

      llm_scheduler.cpu

      LLMスケジューラのvCPUの数。 デフォルト値: 4。

      llm_scheduler.memory

      LLMスケジューラのメモリ。 デフォルト値: 4。 単位は USD / GiB です。

      llm_scheduler.instance_型

      LLMスケジューラのインスタンスタイプ。 インスタンスタイプは、vCPUとメモリの数を定義します。 このパラメーターを指定した場合、vCPUとメモリの数を個別に指定する必要はありません。

LLMサービスのデプロイ

次の配置方法がサポートされています。

方法1: PAIコンソールでのサービスのデプロイ

  1. EASページに移動します。

    1. Platform for AI (PAI) コンソールにログインします。

    2. 左側のナビゲーションペインで、[ワークスペース] をクリックします。 [ワークスペース] ページで、モデルを配置するワークスペースを見つけ、その名前をクリックして [ワークスペースの詳細] ページに移動します。

    3. 左側のナビゲーションウィンドウで、[モデル展開] > [Elastic Algorithm Service (EAS)] を選択して、[Elastic Algorithm Service (EAS)] ページに移動します。image

  2. [Elastic Algorithm Service (EAS)] ページで、[サービスのデプロイ] をクリックします。

  3. [サービスのデプロイ] ページで、次のいずれかのデプロイ方法を選択し、重要なパラメーターを設定します。 その他のパラメーターについては、「PAIコンソールでのモデルサービスのデプロイ」をご参照ください。

    • [カスタムモデルの配置] セクションで、[カスタム配置] を選択します。 [サービスの作成] ページで、次の表に示す主要なパラメーターを設定します。

      パラメーター

      説明

      モデルサービス情報

      デプロイ方法

      [イメージを使用したWebアプリのデプロイ] を選択します。

      画像の選択

      PAIイメージとカスタムイメージがサポートされています。

      • [イメージの選択] を [PAIイメージ] に設定した場合、chat-llm-webuiイメージを選択し、イメージバージョンの3.0-vllmまたは3.0-bladeを選択します。

      • [イメージの選択] を [イメージアドレス] に設定した場合、フィールドにカスタムイメージアドレスを入力します。 カスタムイメージの推論フレームワークは、BladeLLMまたはvllmである必要があります。

      サービス設定

      LLMインテリジェントルーター

      LLM Intelligent Routerをオンにし、展開したLLM Intelligent Routerサービスを選択します。

    • [シナリオベースのモデル展開] セクションで、[LLM展開] をクリックします。 [LLM展開] ページで、次の表に示す主要なパラメーターを設定します。

      パラメーター

      説明

      基本情報

      モデルタイプ

      推論アクセラレーションをサポートするモデルタイプを、Qwen2-7b、Qwen1.5-1.8b、Qwen1.5-7b、Qwen1.5-14b、llama3-8b、llama2-7b、llama2-13b、chatglm3-6b、baichuan2-7b、baichuan2-13b、falcon-7b、yi-6b、mistral-7b-instruct-v0.2、gemma-2b-it、gemma-7b-it、deepseek-coder-7b-instruct-v1.5から選択します。

      サービス設定

      LLMインテリジェントルーター

      LLM Intelligent Routerをオンにし、展開したLLM Intelligent Routerサービスを選択します。

  4. パラメーターを設定したら、[デプロイ] をクリックします。

方法2: JSONを使用したサービスのデプロイ

この例では、PAIによって提供される組み込みイメージであるオープンソースのvLLM-0.3.3イメージが使用される。 以下の手順を実行します。

  1. Elastic Algorithm Service (EAS) ページで、[サービスのデプロイ] をクリックします。

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

  3. JSON Deploymentページの設定エディターセクションで、パラメーターを設定し、[デプロイ] をクリックします。

    次のサンプルコードに例を示します。

    {
        "cloud": {
            "computing": {
                "instance_type": "ecs.gn7i-c16g1.4xlarge"
            }
        },
        "containers": [
            {
                "image": "eas-registry-vpc.<regionid>.cr.aliyuncs.com/pai-eas/chat-llm:vllm-0.3.3",
                "port": 8000,
                "script": "python3 -m vllm.entrypoints.openai.api_server --served-model-name llama2 --model /huggingface/models--meta-llama--Llama-2-7b-chat-hf/snapshots/c1d3cabadba7ec7f1a9ef2ba5467ad31b3b84ff0/"
            }
        ],
        "features": {
            "eas.aliyun.com/extra-ephemeral-storage": "50Gi"
        },
        "metadata": {
            "cpu": 16,
            "gpu": 1,
            "instance": 5,
            "memory": 60000,
            "group": "llm_group",
            "name": "vllm_service"
        }
    }

    次の表に、主要なパラメーターを示します。 その他のパラメーターについては、「モデルサービスのパラメーター」をご参照ください。

    • metadata.group: LLMサービスが属するサービスグループの名前。 LLMサービスは、LLMインテリジェントルーターサービスと同じサービスグループに属している必要があります。 このようにして、LLMサービスはLLMスケジューラに登録し、関連するメトリックを報告することができ、LLMインテリジェントルータはトラフィックを転送することができます。

      • コンソールでLLM Intelligent Routerサービスを展開する場合は、[Elastic Algorithm service (EAS)] ページの [グループサービス] タブで、LLM Intelligent Routerサービスが属するサービスグループの名前を表示する必要があります。 サービスグループの名前は、group_Name of an LLM Intelligent Router service形式です。

      • JSONを使用してLLMサービスをデプロイする場合は、サービスグループの名前をllm_groupとして指定します。

    • containers.image: この例では、PAIによって提供されるプリセットイメージが使用されます。 <regionid> は、サービスをデプロイするリージョンのIDに置き換える必要があります。 たとえば、サービスを中国 (北京) リージョンにデプロイする場合は、<regionid> をcn-Beijingに置き換えます。

LLMインテリジェントルーターサービスへのアクセス

LLM Intelligent Routerサービスにアクセスするためのエンドポイントとトークンの取得

  1. EAS-Online Model Servicesページに移動します。

    1. PAIコンソールにログインします。

    2. 左側のナビゲーションペインで、[ワークスペース] をクリックします。 [ワークスペース] ページで、モデルを配置するワークスペースの名前をクリックします。

    3. 左側のナビゲーションウィンドウで、[モデル展開] > [Elastic Algorithm Service (EAS)] を選択して、[Elastic Algorithm Service (EAS)] ページに移動します。 image

  2. デプロイしたLLM Intelligent Routerサービスを見つけ、[サービスタイプ] 列の [呼び出し方法] をクリックします。

  3. [呼び出しメソッド] ダイアログボックスの [パブリックエンドポイント] タブで、サービスにアクセスするためのエンドポイントとトークンを表示します。image

  4. LLM Intelligent Routerサービスにアクセスするためのエンドポイントを設定します。

    設定ルール

    形式: {domain}/api/predict/{group_name}.{router_service_name}_llm_gateway/{endpoint}

    {endpoint} を、LLMサービスでサポートされているAPIエンドポイントに置き換えます。 例: v1/completions

    この例では、JSONを使用してデプロイされるLLM Intelligent Routerサービスが使用されています。 手順3で取得したエンドポイントがhttp:// 175805416243 **** .cn-beijing.pai-eas.aliyuncs.com/api/predict/llm_group.llm_routerの場合。 LLMインテリジェントルーターサービスにアクセスするためのエンドポイントはhttp:// 175805416243 **** .cn-beijing.pai-eas.aliyuncs.com/api/predict/llm_group.llm_router_llm_gateway/v1/completionsです。

アクセスのテストTest the access

ターミナルで、次のコマンドを実行してLLMインテリジェントルーターサービスにアクセスします。

$curl -H "Authorization: xxxxxx" -H "Content-Type: application/json" http://***http://********.cn-beijing.pai-eas.aliyuncs.com/api/predict/{group_name}.{router_service_name}_llm_gateway/v1/completions -d '{"model": "llama2", "prompt": "I need your help writing an article. I will provide you with some background information to begin with. And then I will provide you with directions to help me write the article.", "temperature": 0.0, "best_of": 1, "n_predict": 34, "max_tokens": 34, "stream": true}'

前述のコマンドでは:

  • "Authorization: xxxxxx": 前の手順で取得したトークンを指定します。

  • http:// ******** .cn-beijing.pai-eas.aliyuncs.com/api/predict/{group_name}.{router_service_name}_llm_gateway/v1/completions: 値を前の手順で取得したエンドポイントに置き換えます。

レスポンス例:

data: {"id":"0d9e74cf-1025-446c-8aac-89711b2e9a38","choices":[{"finish_reason":"","index":0,"logprobs":null,"text":"\n"}],"object":"text_completion","usage":{"prompt_tokens":36,"completion_tokens":1,"total_tokens":37},"error_info":null}

data: {"id":"0d9e74cf-1025-446c-8aac-89711b2e9a38","choices":[{"finish_reason":"","index":0,"logprobs":null,"text":"\n"}],"object":"text_completion","usage":{"prompt_tokens":36,"completion_tokens":2,"total_tokens":38},"error_info":null}

data: {"id":"0d9e74cf-1025-446c-8aac-89711b2e9a38","choices":[{"finish_reason":"","index":0,"logprobs":null,"text":""}],"object":"text_completion","usage":{"prompt_tokens":36,"completion_tokens":3,"total_tokens":39},"error_info":null}

...

[DONE]

サービスモニタリング指標の表示

テストが完了したら、サービスのモニタリング指標を表示して、サービスのパフォーマンスを把握できます。 以下の手順を実行します。

  1. Elastic Algorithm Service (EAS) ページで、展開したLLM Intelligent Routerサービスを見つけ、[モニタリング] 列のimageアイコンをクリックします。

  2. 表示されるページの [モニタリング] タブで、次のメトリックを表示します。

    トークンスループット

    LLMの入力トークンと出力トークンのスループットです。image

    • IN: LLMの入力トークンのスループット。

    • OUT: LLMの出力トークンのスループット。

    GPUキャッシュ使用量

    キー値 (KV) キャッシュによって消費されたGPUメモリの割合。

    image

    エンジンの現在の要求

    リアルタイムでのLLMエンジン上の同時リクエストの数。

    image

    • 実行中: LLMエンジンが処理している要求の数。

    • 待機中: LLMエンジンでキューイングされている要求の数。

    ゲートウェイの現在のリクエスト

    リアルタイムでのLLMインテリジェントルーターのリクエスト数。

    image

    • 合計: LLMインテリジェントルーターがリアルタイムで受信したリクエストの合計数。

    • Pending: LLMインテリジェントルータにキャッシュされ、LLMエンジンによって処理されるのを待っている要求の数。

    最初のトークン

    最初の出力トークンのレイテンシ。

    image

    • Max: 最初の出力トークンの最大レイテンシ。

    • Avg: 最初の出力トークンの平均レイテンシ。

    • Min: 最初の出力トークンの最小レイテンシ。

    • TPxx: 最初の出力トークンのレイテンシのパーセンタイル。

    出力トークンあたりの時間

    出力トークンのレイテンシ。

    image

    • Max: 出力トークンの最大レイテンシ。

    • Avg: 出力トークンの平均レイテンシ。

    • Min: 出力トークンの最小レイテンシ。

    • TPxx: 出力トークンのレイテンシのパーセンタイル。

付録1: テスト結果の比較

次のテスト結果は参照だけのためです。 実際のパフォーマンスの改善は、独自のテスト結果の対象となります。

テスト環境

項目

説明

モデル

Llama2-7B

Data

ShareGPT_V3_unfiltered_cleaned_split.json

クライアントコード (変更済み)

vllm/benchmarks/benchmark_serving.py

GPUタイプ

ecs.gn7i-c8g1.2xlarge (24G A10)

推論エンジン

vLLM

バックエンドインスタンスの数

5

ストレステストのコード

このセクションでは、この例で使用するvLLM 0.3.3 LLMサービスのテストコードを示します。

  • ダウンロードアドレス: benchmarks.tgz

  • 主なファイル:

    benchmarks
    ├── benchmark.sh # The test script. 
    ├── backend_request_func.py
    ├── benchmark_serving.py
    ├── samples.txt  # The request data excerpted from the file ShareGPT_V3_unfiltered_cleaned_split.json. 
    └── tokenizer    # The Llama2-7B tokenizer.
        ├── tokenizer_config.json
        ├── tokenizer.json
        └── tokenizer.model
  • テストコード:

    # Install vLLM of the required version. 
    $pip install vllm==0.3.3 
    # Replace {gateway_service_token} with the token for accessing the LLM Intelligent Router service. 
    $export OPENAI_API_KEY={router_service_token}
    
    # Run the client test code. 
    $python ./benchmark_serving.py --base-url http://********.cn-beijing.pai-eas.aliyuncs.com/api/predict/{group_name}.{router_service_name}_llm_gateway \
    --endpoint /v1/completions \
    --tokenizer ./tokenizer/ \
    --model-id llama2 \
    --load-inputs ./samples.txt \
    --request-count 10000 \
    --max-concurrent 160

テスト結果

メトリック

LLMインテリジェントルーターなし

LLMインテリジェントルーター

改善

成功リクエスト数

9851

9851

-

ベンチマーク期間

1138.429295 s

1060.888924 s

+ 6.8%

合計入力トークン

1527985

1527985

-

生成されたトークンの合計

2808261

2812861

-

入力トークンのスループット

1342.19 tokens/s

1440.29 tokens/s

+ 7.3%

出力トークンのスループット

2466.79 tokens/s

2651.42 tokens/s

+ 7.5%

平均TTFT

1981.86 ms

304.00 ms

+ 84%

中央値TTFT

161.69 ms

158.67 ms

+ 1.8%

P99 TTFT

19396.84 ms

3534.64 ms

+ 81%

平均TPOT

120.33 ms

69.41 ms

+ 42%

P99 TPOT

852.49 ms

260.33 ms

+ 69%

付録2: メトリックAPI

LLMインテリジェントルーターのスケジューリングアルゴリズムは、さまざまなバックエンド推論インスタンスのメトリックに基づいて、アイドルインスタンスへのリクエストをスケジュールします。 LLMインテリジェントルーターを使用するには、推論インスタンスにMetrics APIを実装して、ビジネス要件に基づいて関連するメトリックを報告する必要があります。 LLMインテリジェントルーターは、vLLMおよびBladeLLMのMetrics APIと互換性があります。

次のコードは、vLLMのMetrics APIのサンプル出力を示しています。

# HELP vllm:num_requests_running Number of requests currently running on GPU.
# TYPE vllm:num_requests_running gauge
vllm:num_requests_running{model_name="Llama-2-7b-chat-hf"} 30.0
# HELP vllm:num_requests_swapped Number of requests swapped to CPU.
# TYPE vllm:num_requests_swapped gauge
vllm:num_requests_swapped{model_name="Llama-2-7b-chat-hf"} 0.0
# HELP vllm:num_requests_waiting Number of requests waiting to be processed.
# TYPE vllm:num_requests_waiting gauge
vllm:num_requests_waiting{model_name="Llama-2-7b-chat-hf"} 0.0
# HELP vllm:gpu_cache_usage_perc GPU KV-cache usage. 1 means 100 percent usage.
# TYPE vllm:gpu_cache_usage_perc gauge
vllm:gpu_cache_usage_perc{model_name="Llama-2-7b-chat-hf"} 0.8426270136307311
# HELP vllm:prompt_tokens_total Number of prefill tokens processed.
# TYPE vllm:prompt_tokens_total counter
vllm:prompt_tokens_total{model_name="Llama-2-7b-chat-hf"} 15708.0
# HELP vllm:generation_tokens_total Number of generation tokens processed.
# TYPE vllm:generation_tokens_total counter
vllm:generation_tokens_total{model_name="Llama-2-7b-chat-hf"} 13419.0

LLMスケジューラは、先行するメトリックデータを変換および計算し、計算結果に基づいてバックエンド推論インスタンスに優先順位を付けます。 LLMインテリジェントルーターは、LLMスケジューラにアクセスして、最も優先度の高いバックエンド推論インスタンスを照会し、リクエストをインスタンスに転送します。

次の表に、サポートされているLLM推論フレームワークと対応するメトリックを示します。

説明

LLMインテリジェントルーターは、次の表に示すメトリックと互換性のある他の推論フレームワークでも使用できます。 この場合、LLMインテリジェントルータは、期待通りに動作し、効率的な方法で要求をスケジュールすることができます。

LLM推論エンジン

メトリック

説明

vLLM

vllm:num_requests_running

実行中のリクエストの数。

vllm:num_requests_waiting

キューで待機しているリクエストの数。

vllm:gpu_cache_usage_perc

KVキャッシュによって消費されたGPUメモリの割合。

vllm:prompt_tokens_total

入力トークンの総数。

vllm:generation_tokens_total

出力トークンの総数。

BladeLLM

decode_batch_size_mean

実行中のリクエストの数。

wait_queue_size_mean

キューで待機しているリクエストの数。

block_usage_gpu_mean

KVキャッシュによって消費されたGPUメモリの割合。

tps_total

1秒あたりに処理されるトークンの総数。

tps_out

1秒あたりに生成される出力トークンの数。