Empacote artefatos personalizados para Model Serving
Prévia
O Mosaic AI Model Serving está em Public Preview e é compatível com os sites us-east1
e us-central1
.
Este artigo descreve como garantir que as dependências de arquivos e artefatos do seu modelo estejam disponíveis no seu modelo de serviço com Databricks endpoint.
Artefatos de pacote com modelos
Quando seu modelo requer arquivos ou artefatos durante a inferência, você pode empacotá-los no artefato de modelo ao logs o modelo.
Se o senhor estiver trabalhando com o Databricks Notebook, uma prática comum é fazer com que esses arquivos residam em volumes doUnity Catalog . Às vezes, os modelos também são configurados para download artefatos da Internet (como HuggingFace Tokenizers). As cargas de trabalho em tempo real em escala têm melhor desempenho quando todas as dependências necessárias são capturadas estaticamente no momento da implementação. Por esse motivo, a manutenção do modelo exige que os artefatos de volumes Unity Catalog sejam incluídos no próprio artefato do modelo usando as interfaces MLflow. Os artefatos de rede carregados com o modelo devem ser empacotados com o modelo sempre que possível.
Com o comando MLflow logs s(), você pode logs um modelo e seus artefatos dependentes com o parâmetro artifacts
.
mlflow.pyfunc.log_model(
...
artifacts={'model-weights': "/Volumes/catalog/schema/volume/path/to/file", "tokenizer_cache": "./tokenizer_cache"},
...
)
Nos modelos PyFunc, os caminhos desses artefatos são acessíveis a partir do objeto context
em context.artifacts
e podem ser carregados da maneira padrão para esse tipo de arquivo.
Por exemplo, em um modelo MLflow personalizado:
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"])
...
Depois que seus arquivos e artefatos forem incluídos em seu artefato de modelo, você poderá servir seu modelo para um terminalModel Serving .