Egyéni Python-kódtárak használata a Modellkiszolgálóval

Ebből a cikkből megtudhatja, hogyan vehet fel egyéni kódtárakat vagy tárakat egy privát tükrözési kiszolgálóról a modell naplózásakor, hogy a modellszolgáltatás-modell üzembe helyezésével használhassa őket. Az ebben az útmutatóban ismertetett lépéseket akkor kell elvégeznie, ha már rendelkezik üzembe helyezésre kész betanított ml-modellel, de mielőtt létrehoz egy Azure Databricks-modellkiszolgáló végpontot.

A modellfejlesztéshez gyakran szükség van olyan egyéni Python-kódtárak használatára, amelyek függvényeket tartalmaznak az előzetes vagy utólagos feldolgozáshoz, az egyéni modelldefiníciókhoz és más megosztott segédprogramokhoz. Emellett számos nagyvállalati biztonsági csapat támogatja a privát PyPi-tükrözések, például a Nexus vagy az Artifactory használatát az ellátási lánc támadásainak kockázatának csökkentése érdekében. Az Azure Databricks natív támogatást nyújt az egyéni kódtárak és tárak privát tükörből való telepítéséhez az Azure Databricks-munkaterületen.

Követelmények

  • MLflow 1.29 vagy újabb

1. lépés: Függőségfájl feltöltése

A Databricks azt javasolja, hogy töltse fel a függőségi fájlt a Unity Catalog köteteibe. Másik lehetőségként feltöltheti a Databricks fájlrendszerbe (DBFS) az Azure Databricks felhasználói felületével.

Annak érdekében, hogy a tár elérhető legyen a jegyzetfüzet számára, telepítenie kell a jegyzetfüzetet %pip%. A használatával %pip telepíti a tárat az aktuális jegyzetfüzetben, és letölti a függőséget a fürtre.

2. lépés: A modell naplózása egyéni kódtár használatával

Fontos

Az ebben a szakaszban található útmutatás nem szükséges, ha a magántárat egy egyéni PyPi-tükörre mutatva telepíti.

Miután telepítette a kódtárat, és feltöltötte a Python-kerékfájlt Unity Catalog-kötetekre vagy DBFS-ekre, adja meg a következő kódot a szkriptben. Adja meg a extra_pip_requirements függőségi fájl elérési útját.

mlflow.sklearn.log_model(model, "sklearn-model", extra_pip_requirements=["/volume/path/to/dependency.whl"])

A DBFS-hez használja a következőket:

mlflow.sklearn.log_model(model, "sklearn-model", extra_pip_requirements=["/dbfs/path/to/dependency.whl"])

Ha egyéni kódtárral rendelkezik, a naplózás konfigurálásakor meg kell adnia a modellhez társított összes egyéni Python-kódtárat. Ezt a extra_pip_requirementsconda_envlog_model() paraméterrel teheti meg.

Fontos

A DBFS használata esetén mindenképpen adjon meg egy perjelet az /elérési út előtt dbfs naplózáskor extra_pip_requirements. További információ a DBFS-útvonalakról az Azure Databricks fájljaival való munkában.

from mlflow.utils.environment import _mlflow_conda_env
conda_env =  _mlflow_conda_env(
            additional_conda_deps= None,
            additional_pip_deps= ["/volumes/path/to/dependency"],
            additional_conda_channels=None,
)
mlflow.pyfunc.log_model(..., conda_env = conda_env)

3. lépés: MLflow-modell frissítése Python-kerékfájlokkal

Az MLflow biztosítja a add_libraries_to_model() segédprogramot, amellyel a modell minden függőségét előre Python-kerékfájlként csomagolja. Ez az egyéni kódtárakat a modell mellett a modell függőségeiként megadott összes többi kódtár mellett csomagolja. Ez garantálja, hogy a modell által használt kódtárak pontosan azok, amelyek elérhetők a betanítási környezetből.

Az alábbi példában model_uri a modellregisztrációs adatbázisra hivatkozik a szintaxis models:/<model-name>/<model-version>használatával.

A modellregisztrációs adatbázis URI-ja használatakor ez a segédprogram létrehoz egy új verziót a meglévő regisztrált modell alatt.

import mlflow.models.utils
mlflow.models.utils.add_libraries_to_model(<model-uri>)

4. lépés: A modell kiszolgálása

Ha a modellregisztrációs adatbázisban elérhető a csomagokat tartalmazó új modellverzió, ezt a modellverziót hozzáadhatja egy végponthoz a Modellkiszolgálóval.