Python-kód üzembe helyezése a Modellkiszolgálóval
Ez a cikk bemutatja, hogyan helyezhet üzembe Python-kódot a Mozaik AI-modellkiszolgálóval.
Az MLflow Python-függvénye pyfunc
rugalmasságot biztosít a Python-kódok vagy bármely Python-modell üzembe helyezéséhez. Az alábbiakban példaforgatókönyveket láthat, amelyekben érdemes lehet használni az útmutatót.
- A modell előfeldolgozást igényel, mielőtt a bemenetek átadhatók a modell előrejelzési függvényének.
- Az MLflow nem támogatja natív módon a modell keretrendszerét.
- Az alkalmazás megköveteli, hogy a modell nyers kimeneteit használat után feldolgozzák.
- Maga a modell kérelemenkénti elágaztatási logikával rendelkezik.
- Teljesen egyéni kódot szeretne üzembe helyezni modellként.
Egyéni MLflow Python-függvénymodell létrehozása
Az MLflow lehetővé teszi a Python-kód naplózhatóságát az egyéni Python-modellek formátumával.
Az MLflow-jal való tetszőleges Python-kód csomagolásához két szükséges függvény szükséges:
load_context
- minden olyan dolgot, amelyet csak egyszer kell betölteni a modell működéséhez, ebben a függvényben kell definiálni. Ez kritikus fontosságú, hogy a rendszer minimalizálja a függvény során betöltött összetevők számát, ami felgyorsítja apredict
következtetést.predict
- ez a függvény tartalmazza az összes olyan logikát, amelyet a bemeneti kérések minden alkalommal futtatnak.
Python-függvénymodell naplózása
Annak ellenére, hogy a modellt egyéni kóddal írja, a szervezet megosztott kódmoduljait is használhatja. A paraméterrel a code_path
modellek szerzői teljes kódhivatkozásokat naplózhatnak, amelyek betöltődnek az elérési útra, és más egyéni pyfunc
modellekből használhatók.
Ha például egy modell a következővel van naplózva:
mlflow.pyfunc.log_model(CustomModel(), "model", code_path = ["preprocessing_utils/"])
A kód a preprocessing_utils
modell betöltött környezetében érhető el. Az alábbi példamodell ezt a kódot használja.
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)
A modell kiszolgálása
Az egyéni pyfunc
modell naplózása után regisztrálhatja azt a Unity Katalógusban vagy a Munkaterület-beállításjegyzékben, és kiszolgálhatja a modellt egy modellkiszolgáló végponton.
Példa jegyzetfüzetre
Az alábbi jegyzetfüzet-példa bemutatja, hogyan szabhatja testre a modell kimenetét, ha a lekérdezett modell nyers kimenetét használat után kell feldolgozni.