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

モデルサービングのカスタムアーティファクトのパッケージ化

この記事では、モデルのファイルとアーティファクトの依存関係が Deploy models using Mosaic AI Model Serving エンドポイントで利用可能であることを確認する方法について説明します。

必要条件

MLflow 1.29 以降

モデルを含むアーティファクトのパッケージ化

推論中にモデルにファイルまたはアーティファクトが必要な場合は、モデルをログに記録するときに、それらをモデル アーティファクトにパッケージ化できます。

Databricksノートブックを使用している場合、一般的な方法は、これらのファイルをUnity Catalogボリュームに配置することです。モデルは、インターネットからアーティファクト (HuggingFace トークナイザーなど) をダウンロードするように構成されることもあります。 大規模なリアルタイムワークロードは、必要なすべての依存関係がデプロイ時に静的にキャプチャされると、最高のパフォーマンスを発揮します。 このため、モデルサービングでは、 Unity Catalog ボリュームのアーティファクトを MLflow インターフェースを使用してモデルアーティファクト自体にパッケージ化する必要があります。 モデルと共にロードされたネットワーク アーティファクトは、可能な限りモデルと共にパッケージ化する必要があります。

コマンドlog_model() を使用すると、MLflow パラメーターを使用してモデルとその従属アーティファクトをログに記録できます。artifacts

Python
mlflow.pyfunc.log_model(
...
artifacts={'model-weights': "/Volumes/catalog/schema/volume/path/to/file", "tokenizer_cache": "./tokenizer_cache"},
...
)

PyFuncモデルでは、これらのアーティファクトのパスはcontext.artifactsの下のcontextオブジェクトからアクセスでき、そのファイルタイプの標準的な方法でロードできます。

たとえば、カスタム MLflow モデルでは、次のようになります。

Python
class ModelPyfunc(mlflow.pyfunc.PythonModel):
def load_context(self, context):
self.model = torch.load(context.artifacts["model-weights"])
self.tokenizer = transformers.BertweetTokenizer.from_pretrained("model-base", local_files_only=True, cache_dir=context.artifacts["tokenizer_cache"])
...

ファイルとアーティファクトをモデル アーティファクト内にパッケージ化した後、 モデルをモデル サービング エンドポイントに提供できます。