implantado Python code with servindo modelo
Este artigo descreve como implantar seu código Python personalizado com o Mosaic AI Model Serving. O exemplo deste artigo se concentra em fornecer orientação para adicionar lógica de pré-processamento e pós-processamento ao seu modelo e implantá-lo.
MLflowA função Python, pyfunc
, oferece flexibilidade para implantar qualquer parte do código Python ou qualquer modelo Python. A seguir, exemplos de cenários em que o senhor pode querer usar o guia.
Seu modelo requer pré-processamento antes que as entradas possam ser passadas para a função de previsão do modelo.
Sua estrutura de modelo não é suportada nativamente pelo MLflow.
Seu aplicativo exige que as saídas brutas do modelo sejam pós-processadas para consumo.
O modelo em si tem lógica de ramificação por solicitação.
O senhor está procurando implantar um código totalmente personalizado como modelo.
Construir um modelo personalizado de função Python do MLflow
MLflow oferece a capacidade de log Python código com o formato personalizado de modelos Python .
Há duas funções necessárias ao empacotar o código Python arbitrário com MLflow:
load_context
- qualquer coisa que precise ser carregada apenas uma vez para que o modelo funcione deve ser definida nesta função. Isso é fundamental para que o sistema minimize o número de artefatos carregados durante a funçãopredict
, o que acelera a inferência.predict
- Essa função abriga toda a lógica que é executada sempre que uma solicitação de entrada é feita.
Registre seu modelo de função Python
Mesmo que você esteja escrevendo seu modelo com código personalizado, é possível usar módulos de código compartilhados da sua organização. Com o parâmetro code_path
, os autores de modelos podem log referências completas de código que são carregadas no caminho e podem ser usadas em outros modelos pyfunc
personalizados.
Por exemplo, se um modelo for registrado com:
mlflow.pyfunc.log_model(CustomModel(), "model", code_path = ["preprocessing_utils/"])
O código do preprocessing_utils
está disponível no contexto carregado do modelo. Veja a seguir um exemplo de modelo que usa esse código.
class CustomModel(mlflow.pyfunc.PythonModel):
def load_context(self, context):
self.model = torch.load(context.artifacts["model-weights"])
from preprocessing_utils.my_custom_tokenizer import CustomTokenizer
self.tokenizer = CustomTokenizer(context.artifacts["tokenizer_cache"])
def format_inputs(self, model_input):
# insert some code that formats your inputs
pass
def format_outputs(self, outputs):
predictions = (torch.sigmoid(outputs)).data.numpy()
return predictions
def predict(self, context, model_input):
model_input = self.format_inputs(model_input)
outputs = self.model.predict(model_input)
return self.format_outputs(outputs)
Sirva seu modelo
Depois de log seu modelo pyfunc
personalizado, o senhor pode registrá-lo em Unity Catalog ou no Registro do espaço de trabalho e servir seu modelo para um modelo servindo endpoint.