チュートリアル: カスタム モデルのデプロイとクエリ

この記事では、ML Mosaic AI Model Servingを使用して、従来の モデルであるカスタムモデルをデプロイおよびクエリするための基本的なステップについて説明します。モデルは、 Unity Catalog またはワークスペース モデルレジストリに登録されている必要があります。

代わりに生成AI モデルの提供とデプロイについては、次の記事を参照してください。

ステップ 1: モデルをモデルレジストリに記録する

モデルサービングのモデルを記録するには、さまざまな方法があります。

ロギング手法

説明

自動ロギング

これは、機械学習に Databricks Runtime を使用すると自動的に有効になります。 これは最も簡単な方法ですが、制御が少なくなります。

MLflow の組み込みフレーバーを使用したログ記録

MLflow の組み込みモデル フレーバーを使用して、モデルを手動でログに記録できます。

カスタムロギング pyfunc

これは、カスタム モデルがある場合、または推論の前後に追加のステップが必要な場合に使用します。

次の例は、 transformer フレーバーを使用して MLflow モデルをログに記録し、モデルに必要なパラメーターを指定する方法を示しています。

with mlflow.start_run():
    model_info = mlflow.transformers.log_model(
        transformers_model=text_generation_pipeline,
        artifact_path="my_sentence_generator",
        inference_config=inference_config,
        registered_model_name='gpt2',
        input_example=input_example,
        signature=signature
    )

モデルが記録された後、モデルが MLflow Unity CatalogまたはModel Registryに登録されていることを必ず確認してください。

ステップ 2: サービングUI を使用してエンドポイントを作成する

登録したモデルがログに記録され、提供する準備ができたら、 Serve UI を使用してモデルサービングエンドポイントを作成できます。

  1. サイドバーの [ サービング] をクリックして、 サービング UI を表示します。

  2. [ サービングエンドポイントの作成] をクリックします。

    モデルサービング UI のペインDatabricks
  3. [ 名前 ] フィールドに、エンドポイントの名前を入力します。

  4. [ Served entities ] セクションで、次の操作を行います

    1. [エンティティ] フィールドをクリックして、"提供エンティティの選択" フォームを開きます。

    2. 提供するモデルの種類を選択します。 フォームは、選択内容に基づいて動的に更新されます。

    3. 提供するモデルとモデル バージョンを選択します。

    4. 配信モデルにルーティングするトラフィックの割合を選択します。

    5. 使用するコンピュートのサイズを選択します。 ワークロードには CPU または GPU コンピュートを使用できます。 GPU でのモデルサービングのサポートは パブリック プレビュー段階です。 使用可能な GPU コンピュートの詳細については、「 GPU ワークロードの種類 」を参照してください。

    6. [コンピュート スケールアウト] で、この提供モデルが同時に処理できるリクエストの数に対応するコンピュート スケールアウトのサイズを選択します。この数値は、QPS x モデルの実行時間にほぼ等しくなります。

      1. 使用可能なサイズは、0 から 4 の要求の場合は [ ]、8 から 16 の要求の場合は [ 中] 、16 から 64 の要求の場合は [大] です。

    7. 使用していないときにエンドポイントをゼロにスケーリングするかどうかを指定します。

  5. 「作成」をクリックします。[Serving endpoints ] ページが表示され、[ Serving endpoint state ] が [Not Ready] と表示されます。

    モデルサービング エンドポイントを作成する

Databricks Serving API を使用してプログラムでエンドポイントを作成する場合は、 「カスタム モデルサービング エンドポイントの作成」を参照してください。

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

スコアリングリクエストをテストしてサーブモデルに送信する最も簡単で最速の方法は、 Serve UI を使用することです。

  1. [ サービス エンドポイント] ページで、[ クエリー エンドポイント] を選択します。

  2. モデル入力データを JSON 形式で挿入し、[ 要求の送信] をクリックします。 モデルが入力例とともにログに記録されている場合は、[ 例の表示 ] をクリックして入力例を読み込みます。

       {
       "inputs" : ["Hello, I'm a language model,"],
       "params" : {"max_new_tokens": 10, "temperature": 1}
       }
    

スコアリング リクエストを送信するには、サポートされているキーの 1 つと入力形式に対応する JSON オブジェクトを使用して JSON を構築します。 サポートされている形式と、API を使用してスコアリング リクエストを送信する方法についてのガイダンスについては、「カスタムモデルのサービングエンドポイントをクエリする」を参照してください。

Databricks Serving UI の外部からサービス エンドポイントにアクセスする場合は、 DATABRICKS_API_TOKENが必要です。

重要

オンプレミス運用シナリオのセキュリティのベスト プラクティスとして、 Databricksでは、オンプレミス運用中の認証にマシン間OAuthトークンを使用することをお勧めします。

テストと開発の場合、 Databricksでは、ワークスペース ユーザーではなく、サービスプリンシパルに属する個人用アクセストークンを使用することをお勧めします。 サービスプリンシパルのトークンを作成するには、 「サービスプリンシパルのトークンの管理」を参照してください。

ノートブックの例

モデルサービングで MLflow transformers モデルを提供する方法については、次のノートブックを参照してください。

Hugging Face Transformers モデルをデプロイするノートブック

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

モデルサービングを使用して MLflow pyfunc モデルを提供する方法については、次のノートブックを参照してください。 モデル・デプロイメントのカスタマイズの詳細は、 モデルサービングを使用したPythonコードのデプロイを参照してください。

MLflow pyfunc モデルをデプロイするノートブック

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