カスタム モデル サービスを使用してカスタム LLM を提供する

Important

この機能は ベータ版です。 ワークスペース管理者は、[ プレビュー] ページからこの機能へのアクセスを制御できます。 Manage Azure Databricks プレビューを参照してください。

このページでは、vLLM エンジンを使用してモデル サービスにカスタムの大規模言語モデル (LLM) をデプロイする方法について説明します。 このワークフローを使用して、微調整されたモデル、PEFT バリアント、マルチモーダル モデル、および Foundation Model API (FMAPI) で使用できないその他の基盤モデルを提供します。 このページの最後にある スターター ノートブック には、次の手順で実行可能なすべてのコードが含まれています。

カスタム LLM サービスを使用する場合

Azure Databricksでは、次のいずれかのユース ケースがある場合に、カスタム LLM サービスを使用することをお勧めします。

  • Azure Databricks でトレーニングしたカスタムウェイトを用いた、完全にファインチューニングされたモデル。
  • FMAPI で使用できない Hugging Face のモデル。
  • FMAPI でサポートされていないカスタム PEFT レシピ。
  • MedGemma など、FMAPI カタログ外の特殊なモデル。
  • Qwen/Qwen2.5-VL-3B-Instructなどのマルチモーダル (視覚言語) モデル。
  • 1xH100 (80 GB の GPU メモリ) に収まるすべてのモデル。

Requirements

  • カスタム LLM サービスはベータ版です。 ワークスペース管理者は 、[プレビュー] ページからこの機能を有効または無効にすることができます。 Manage Azure Databricks プレビューを参照してください。

  • サーバーレス GPU コンピューティング。 A10 GPU は、小さいモデルの場合は推奨される開発環境であり、大規模なモデルでは H100 です。

  • MLflow 3.12 以降。 スターター ノートブックで mlflow==3.12.0 をピン留めします。 独自の環境を構築する場合は、このバージョンと一致します。

手順 1: 環境を設定する

A10 GPU を使用して、サーバーレス GPU コンピューティング上にノートブックを作成します。 vLLM とその依存関係をインストールします。 スターター ノートブックは、テスト済みの vLLM バージョンをピン留めします。

を使用する代わりに、%pip installで依存関係を指定することもできます。

Important

作業ディレクトリをローカル ハード ドライブに設定します (たとえば、 tempfile.mkdtemp()を使用)。 /Workspace ファイル システムでは、モデルの重みなどの大きなファイルはサポートされていません。

手順 2: モデルをダウンロードする

snapshot_downloadを使用してHugging Faceからモデルの重みをダウンロードします。 スターター ノートブックでは Qwen/Qwen3-4B を例として使用しますが、選択した GPU のメモリ予算に適合する任意のモデルを置き換えることができます。これには、次のものが含まれます。

  • 視覚言語ユース ケースの Qwen/Qwen2.5-VL-3B-Instruct などのマルチモーダル モデル。
  • openai/gpt-oss-120bなど、1xH100 に収まる大規模なモデル。

モデルのメモリとパフォーマンスのニーズに基づいて GPU を選択します。

GPU GPU メモリ workload_type
T4 16 GB GPU_SMALL
A100 80 GB GPU_LARGE

手順 3: vLLM を使用してモデルをローカルでテストする

デプロイする前に、ローカル vLLM サーバーを起動して、サーバーレス GPU ノートブックでモデルを直接テストします。 ローカル テストを使用すると、サービス エンドポイントを作成する前に、モデルの検証、vLLM パラメーターの実験、問題のトラブルシューティングを行うことができます。

知っておくべき重要な事項:

  • サーバーレス GPU コンピューティングでは、ローカル テスト用のポート 3000 ~ 3999 のみが許可されます。 その範囲内のポートを選択します。スターター ノートブックでは 3080 が使用されます。
  • vLLM サーバーは、 /invocationsで OpenAI 互換 API を公開します。
  • 通常の要求とストリーミング要求の両方をテストできます。
  • モデルの --dtype--max-model-len--gpu-memory-utilization などのパラメーターを調整します。
  • --enforce-eagerを追加して、推論のパフォーマンスを犠牲にして、起動を高速化します。
  • 大規模なモデルの場合は、H100 サーバーレス GPU バリアントをローカル テストに使用します。

構成に問題がなければ、続行する前にローカル サーバーを停止します。

手順 4: カスタム エントリ ポイントを使用してモデルをログに記録する

この手順では、ローカル セットアップを Model Serving に接続し、次の構成要件があります。

  • task"llm/v1/chat" である必要があります。
  • エントリ ポイントは、Model Serving が期待するポートであるポート 8080 で開く必要があります。
  • entrypoint コマンドは、ローカル ポートではなくポート 8080 を使用して、手順 3 でテストした内容を反映する必要があります。
  • エントリ ポイントは MLflow モデル成果物フォルダーから起動するため、モデル パスはそのフォルダーに対して相対的です。
metadata = {
    "task": "llm/v1/chat",
    "entrypoint": (
        "python -u -m vllm.entrypoints.openai.api_server "
        "--model qwen3 --served-model-name qwen "
        "--host 0.0.0.0 --port 8080 "
        "--dtype float16 --max-model-len 16384 "
        "--gpu-memory-utilization 0.85"
    ),
}

手順 5: モデルを Unity カタログに登録する

mlflow.register_modelを使用してモデルを Unity カタログに登録します。 カスタム LLM サービスは 、高速デプロイによって異なります。 env_pack="databricks_model_serving" パラメーターを使用して有効にします。

たとえば、ノートブックに次のコードを追加します。


model_version = mlflow.register_model(model_info.model_uri, UC_MODEL_NAME, env_pack="databricks_model_serving")

手順 6: サービス エンドポイントを作成する

UI からエンドポイントを作成するか、Azure Databricks SDK を使用してプログラムで作成します。 主な決定事項は、コンピューティングの種類、ワークロード サイズ、スケールからゼロへの動作です。

モデルとクラウドに基づいて workload_type を選択します。

workload_type GPU 注記
GPU_SMALL T4 x 1 (16 GB) 最小オプション。
GPU_LARGE 1x A100 (80 GB) 大規模な LLM ワークロードに推奨されます。

workload_size (SmallMedium、または Large) は、エンドポイントの背後にあるプロビジョニング済みレプリカの数を制御します。 開発およびトラフィックの少ないワークロードには、 Small を使用します。

次の例は、一般的な構成を示しています。

ServedEntityInput(
    entity_name="main.<catalog>.<model_name>",
    entity_version="<version>",
    workload_type=ServingModelWorkloadType.GPU_MEDIUM,
    workload_size="Small",
    scale_to_zero_enabled=True,
)

ゼロへのスケーリングと容量計画

ベータで提供されるカスタム LLM では、エンドポイントの背後にある一定の数のレプリカがプロビジョニングされます。 0 を超えるレプリカ間の自動スケールはまだサポートされていないため、ピーク時のトラフィックに合わせて workload_typeworkload_size サイズを設定する必要があります。 エンドポイントは、プロビジョニングされたレプリカの容量を超える要求をキューに入れます。

scale_to_zero_enabled=Trueを設定して、アイドル時にエンドポイントをゼロ レプリカにスケール ダウンさせます。 コールド スタートは低速です。モデルの重みの読み込みと vLLM の開始には通常、1 ~ 数分かかります。

待機時間の影響を受けやすいワークロードまたは運用クリティカルなワークロードの場合は、ピーク時のトラフィックに scale_to_zero_enabled=False とサイズの workload_size を事前に設定します。

警告

スケールアップ容量は保証されません。 Azure Databricks でエンドポイント用に新しい GPU を確保する必要があるたびに(作成時、workload_size の増加時、またはエンドポイントがゼロの状態から復帰したとき)、クラウド プロバイダーがお使いのリージョンで GPU の利用可能容量を確保できない場合、要求が応答しなくなることがあります。 これは、すべての GPU の種類に適用されます。 Databricksは、ウォームプールと事前予約によってこの問題を軽減し、GPU容量を利用可能ですぐに使える状態に保ちます。

手順 7: エンドポイントのクエリを実行する

エンドポイントの準備ができたら、エンドポイントのページから AI プレイグラウンド に自動的に表示されます。 Databricks SDK、OpenAI SDK、または curl を使用して プログラムでクエリを実行することもできます。

Databricks SDK

w.serving_endpoints.query(
    name="<endpoint-name>",
    messages=[ChatMessage(role=ChatMessageRole.USER, content="Hello")],
)

OpenAI SDK

client = OpenAI(
    api_key=DATABRICKS_TOKEN,
    base_url=f"{DATABRICKS_HOST}/serving-endpoints",
)
client.chat.completions.create(
    model="<endpoint-name>",
    messages=[{"role": "user", "content": "Hello"}],
)

curl

curl -X POST \
  -u "token:$DATABRICKS_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"messages":[{"role":"user","content":"Hello"}]}' \
  https://<workspace-url>/serving-endpoints/<endpoint-name>/invocations

エンドポイントを監視する

カスタム LLM サービスでは、標準の カスタム モデル サービス エンドポイントと同じ可観測性インフラストラクチャが使用されますが、次のセクションで説明する vLLM 固有の追加機能がいくつかあります。

ライブ ログ

サービス UI のエンドポイント ページの [ ログ ] タブには、vLLM プロセスからの stdoutstderr がリアルタイムで表示されます。 ログ API を使用してこの出力を開くこともできます。

永続化されたログとメトリック

テレメトリが有効になっている場合、ログとメトリックの両方が、長期的な保持、SQL クエリ、コンプライアンスのために Unity カタログデルタ テーブルに保持されます。 完全なセットアップ手順、要件、およびテーブル スキーマについては、 Unity カタログにデータを提供するカスタム モデルの永続化 に関する記事を参照してください。

特にカスタム LLM サービスの場合:

  • ログ: vLLM プロセスからの stdoutstderr が自動的にキャプチャされます。 アプリケーション側のログ 記録コードは必要ありません。
  • Metrics: Azure Databricksは、vLLM サーバーの Prometheus /metrics エンドポイントを自動的にスクレイピングし、ログと共にメトリックを保持します。 既定では、要求ごとの待機時間、スループット、トークン数、キューの深さ、KV キャッシュ使用率が得られます。

テレメトリをクエリする

ベータ期間中は、ログやメトリックを視覚化するための UI はありません。 SQL またはノートブックを使用して、Unity カタログ内の永続化されたデータに直接クエリを実行します。 Unity カタログにデータを提供するカスタム モデルの永続化に関する記事に記載されているメトリックとログ スキーマを参照してください。

次のノートブックは、永続化された vLLM メトリックを解析して視覚化する方法を示しています。

カスタム LLM 配信メトリクス ノートブック

ノートブックを入手

ノートブックの例

サーバーレス GPU ノートブックでモデルを開発してテストし、サービス エンドポイントと同じ構成をログに記録してデプロイします。 次のノートブックには、このガイドの完全な実行可能フローが含まれています。

カスタム LLM サービング用スターター ノートブック

ノートブックを入手

制限事項

ベータ期間中は、次の制限が適用されます。

  • レプリカ間の自動スケーリングはありません。 ゼロまでのスケールに対応しています。
  • マルチモーダルを含め、LLM チャット タスク (llm/v1/chat) のみがサポートされています。
  • ルートの最適化はありません。
  • ログまたはメトリックを視覚化するための UI はありません。 Unity カタログでテレメトリに直接クエリを実行します。

フィードバックや質問については、Azure Databricks アカウント チームにお問い合わせください。