メインコンテンツまでスキップ

カスタム Model Serving を使用してカスタムLLMをデプロイ

備考

ベータ版

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

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

カスタムLLMサービスを使用するタイミング

Databricks は、次のいずれかのユースケースに該当する場合に、カスタムLLMサービングを推奨しています。

  • Databricksでトレーニングしたカスタムの重みによる完全にファインチューニングされたモデル
  • FMAPI で利用できない Hugging Face のモデル
  • FMAPI がサポートしていないカスタム PEFT レシピ
  • FMAPIカタログ外の特化モデルとして、MedGemmaなどがあります。
  • マルチモーダル(視覚言語)モデルのような Qwen/Qwen2.5-VL-3B-Instruct
  • 1xH100 (80 GBのGPUメモリ) に適合する任意のモデル。

要件

  • カスタムLLMサービングは現在ベータ版です。ワークスペース管理者は、 プレビュー ページからこの機能を有効または無効にできます。「Databricks プレビューの管理」を参照してください。

  • サーバレス GPU コンピュート。小規模なモデルには A10 GPU が、大規模なモデルには H100 が推奨開発環境です。

  • MLflow 3.12 以降。スターターノートブックはmlflow==3.12.0をピン留めします。ご自身で環境を構築する場合、このバージョンに合わせてください。

ステップ 1: 環境を設定する

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

%pip installを使用する代わりに、サーバレス環境を介して依存関係を指定することもできます。

重要

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

ステップ 2: モデルをダウンロードする

Hugging Faceからsnapshot_downloadを使用してモデルウェイトをダウンロードしてください。スターターノートブックは Qwen/Qwen3-4B を例として使用していますが、選択したGPUのメモリ予算に適合する任意のモデル(以下を含む)に置き換えることができます。

  • 視覚言語ユースケース向けのQwen/Qwen2.5-VL-3B-Instructなどのマルチモーダルモデル。
  • 1xH100に対応した大規模モデル(例:openai/gpt-oss-120b

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

GPU

GPUメモリ

workload_type

T4

16 GB

GPU_SMALL

A10

24GB

GPU_MEDIUM

H100

80GB

GPU_XLARGE

ステップ 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で開く必要があります。
  • エントリポイントコマンドは、ローカルポートの代わりにポート 8080 を使用して、ステップ 3 でテストしたものと同じである必要があります。
  • エントリポイントはMLflowモデルアーティファクトフォルダーから起動されるため、モデルパスはそのフォルダーに相対的です。
Python
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 Catalog にモデルを登録する

mlflow.register_modelを使用してモデルをUnity Catalogに登録します。カスタム LLM サービングは、Express デプロイメントに依存します。env_pack="databricks_model_serving"パラメーターを使用して有効にします。

たとえば、ノートブックに以下を追加します。

Python

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

ステップ 6: サービングエンドポイントを作成する

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

モデルとクラウドに基づいて、workload_type を選択する

workload_type

GPU

GPU_SMALL

1x T4(16 GB)

最小オプション

GPU_MEDIUM

1個の A10 (24GB)

一般的な推論のデフォルト。ノートブック開発環境と一致します。

GPU_XLARGE

1x H100(80GB)、 us-west-2

大規模な LLM ワークロードに推奨されます。登録が必要です。制限事項を参照してください。ベータ期間中は Scale-to-Zero をサポートしていません。

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

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

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

ゼロスケーリングとキャパシティ プランニング

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

scale_to_zero_enabled=True を設定すると、エンドポイントはアイドル時にゼロにスケールダウンされます。コールドスタートは遅く、モデルの重みを読み込み、vLLMを起動するには通常1~数分かかります。

レイテンシーの影響を受けやすいワークロードや、本番運用上重要なワークロードについては、ピークトラフィックに合わせて、事前にscale_to_zero_enabled=Falseとサイズworkload_sizeを設定してください。

警告

スケールアップ時の容量は保証されません。 Databricks がエンドポイント用に新しい GPU を取得する必要がある場合(作成時、workload_size の増加時、またはエンドポイントがゼロから起動する時)に、お客様のリージョンでクラウドプロバイダーに GPU キャパシティがないと、リクエストの応答が停止する可能性があります。これはすべてのGPUタイプに適用されますが、GPU_XLARGE(H100)では最も制約されます。Databricks は、ウォームプールと事前予約により、GPU 容量を常時利用可能で準備完了の状態に保ち、これを軽減します。

GPU_XLARGE (1xH100)エンドポイントはベータ期間中、scale_to_zero_enabled=Trueをサポートしていません。H100の容量は厳しく制約されているため、コールドスタート時のスケールアップの成功を保証できません。

ステップ 7: エンドポイントをクエリーする

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

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

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

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

ライブログ

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

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

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

カスタム LLM サービングについて、具体的には:

  • ログ:stdout stderrvLLMプロセスから「 」と「 」が自動的にキャプチャされます。アプリケーション側のロギングコードは必要ありません。
  • メトリクス: Databricks は vLLM サーバーの Prometheus/metrics エンドポイントを自動的にスクレイピングし、ログと共にメトリクスを保持します。デフォルトでは、リクエストごとのレイテンシー、スループット、トークン数、キューの深さ、KVキャッシュの使用率が得られます。

テレメトリデータの照会

ベータ期間中、ログまたはメトリクスを視覚化するためのUIはありません。SQL またはノートブック を使用して、Unity Catalog で永続化されたデータを直接クエリできます。「カスタムモデルサービングデータをUnity Catalogに永続化」に記載されているメトリクスおよびログスキーマを参照してください。

以下のノートブックは、永続化されたvLLMメトリクスを解析および視覚化する方法を示しています:

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

ノートブックを新しいタブで開く

ノートブックの例

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

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

ノートブックを新しいタブで開く

制限事項:

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

  • GPU_XLARGE (1xH100)エンドポイントはus-west-2でのみ利用可能であり、Databricksアカウントチームへの追加の登録が必要です。Beta期間中にゼロにスケーリングは有効にしません。
  • レプリカ間ではオートスケールされません。Scale-to-Zero は GPU_XLARGE を除くすべての GPU タイプでサポートされています。クラウド プロバイダーの容量に関する留意事項については、スケール・トゥ・ゼロとキャパシティ プランニングを参照してください。
  • マルチモーダルにも対応したLLMチャットタスク(llm/v1/chat)のみがサポートされています。
  • ルート最適化はありません。
  • ログまたはメトリクスを視覚化するためのUIはありません。Unity Catalogでテレメトリーを直接クエリできます。

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