Delen via


Python-code implementeren met Model Serving

In dit artikel wordt beschreven hoe u Python-code implementeert met Mosaic AI Model Serving.

De Python-functie van MLflow biedt pyfuncflexibiliteit om elk stukje Python-code of elk Python-model te implementeren. Hier volgen voorbeeldscenario's waarin u de handleiding kunt gebruiken.

  • Uw model vereist voorverwerking voordat invoer kan worden doorgegeven aan de voorspellingsfunctie van het model.
  • Uw modelframework wordt niet systeemeigen ondersteund door MLflow.
  • Voor uw toepassing moeten de onbewerkte uitvoer van het model na verwerking worden verwerkt voor gebruik.
  • Het model zelf heeft vertakkingslogica per aanvraag.
  • U wilt volledig aangepaste code implementeren als een model.

Een aangepast MLflow Python-functiemodel maken

MLflow biedt de mogelijkheid om Python-code te registreren met de aangepaste Indeling van Python-modellen.

Er zijn twee vereiste functies bij het verpakken van willekeurige Python-code met MLflow:

  • load_context - Alles wat slechts één keer moet worden geladen om het model te laten werken, moet worden gedefinieerd in deze functie. Dit is van cruciaal belang, zodat het systeem het aantal artefacten dat tijdens de predict functie wordt geladen, minimaliseert, waardoor deductie wordt versneld.
  • predict - deze functie bevat alle logica die wordt uitgevoerd telkens wanneer een invoeraanvraag wordt gedaan.

Uw Python-functiemodel registreren

Hoewel u uw model schrijft met aangepaste code, is het mogelijk om gedeelde modules met code van uw organisatie te gebruiken. Met de code_path parameter kunnen auteurs van modellen volledige codeverwijzingen vastleggen die in het pad worden geladen en kunnen ze worden gebruikt vanuit andere aangepaste pyfunc modellen.

Als een model bijvoorbeeld wordt geregistreerd met:

mlflow.pyfunc.log_model(CustomModel(), "model", code_path = ["preprocessing_utils/"])

Code uit de code preprocessing_utils is beschikbaar in de geladen context van het model. Hier volgt een voorbeeldmodel dat gebruikmaakt van deze code.

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)

Uw model bedienen

Nadat u uw aangepaste pyfunc model hebt geregistreerd, kunt u het registreren bij Unity Catalog of Workspace Registry en uw model bedienen op een eindpunt voor modelservering.

Voorbeeld van notitieblok

In het volgende notebookvoorbeeld ziet u hoe u modeluitvoer aanpast wanneer de onbewerkte uitvoer van het opgevraagde model na verwerking moet worden verwerkt voor verbruik.

Model aanpassen dat uitvoer levert met MLflow PyFunc-notebook

Notebook downloaden