Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
Ebből a cikkből megtudhatja, hogyan vehet fel egyéni könyvtárakat vagy egy privát tükörkiszolgálóról származó könyvtárakat a modell naplózásakor, hogy azokat a Model Serving modelltelepítésekkel használhassa. 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
- Hálózati házirendek konfigurálásával korlátozhatja a kimenő hálózati hozzáférést a modellkiszolgáló végpontjairól. Lásd Érvényesítés modellkiszolgálással.
1. lehetőség: Privát csomagtárház használata
Használja az 1. lehetőséget, ha a szervezet privát PyPI-tükrözőt használ (például Nexust vagy Artifactoryt). A munkaterület rendszergazdái a munkaterület alapértelmezett csomagadattáraként konfigurálhatják. A modellkiszolgáló automatikusan ezt a munkaterületszintű konfigurációt használja a modellkörnyezet létrehozásakor.
Privát csomagtárház beállításához tekintse meg az alapértelmezett csomagtárházak konfigurálását ismertető témakört.
Az adattár konfigurálása után lépjen tovább a A modell kiszolgálása részhez.
2. lehetőség: Egyéni könyvtárak csomagolása wheel fájlokként
Használja a 2. lehetőséget, ha egy privát PyPI-tükör nem érhető el, vagy ha olyan egyéni kódtárakat használ, amelyek nem érhetők el egyetlen csomagtárban sem. Python-kerékfájlokként csomagolhatja őket, és belefoglalhatja őket a modell naplózása során.
1. lépés: A függőségi fájl feltöltése
A Databricks azt javasolja, hogy töltse fel a függőségi fájlt a Unity Catalogba kötetek. 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 könyvtár elérhető legyen a jegyzetfüzet számára, telepítenie kell azt %pip használatával.
%pip telepíti a könyvtárat az aktuális jegyzetfüzetben, és a fürtre tölti le a függőséget.
2. lépés: A modell naplózása egyéni kódtár használatával
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=["/volumes/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_env vagy paramétereivel teheti meg.
from mlflow.utils.environment import _mlflow_conda_env
mlflow.pyfunc.log_model(
name="model",
python_model=MyModel(),
extra_pip_requirements=["/volumes/path/to/dependency.whl"],
)
Ha az egyéni könyvtár köteten vagy DBFS-en kívül máshol van tárolva, a code_paths paraméterrel megadhatja a helyét, és az "code/<wheel-file-name>.whl" paraméterben adhatja meg extra_pip_requirements.
mlflow.pyfunc.log_model(
name="model",
python_model=MyModel(),
code_paths=["/path/to/dependency.whl"], # This will be logged as `code/dependency.whl`
extra_pip_requirements=["code/dependency.whl"],
)
3. lépés: MLflow-modell frissítése Python-kerékfájlokkal
Az MLflow biztosítja az add_libraries_to_model() segédprogramot, amellyel a modellt az összes függőséggel együtt, előre Python wheel fájlként naplózhatja. 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 Unity Catalog modellregisztrációs adatbázisára hivatkozik a models:/<uc-model>/<model-version>szintaxis használatával. A munkaterület-modell nyilvántartásának (régi) használatára való hivatkozáshoz, models:/<model-name>/<model-version>.
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>)
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.
Csomagtelepítés hibaelhárítása
Ha a modell üzembe helyezése a buildelési fázis során meghiúsul, a csomagtelepítési problémák azonosításához tekintse át a buildnaplókat.
- Nyissa meg az Azure Databricks-munkaterület Kiszolgálás lapját.
- Kattintson a végpont nevére a végpont részleteinek megnyitásához.
- Kattintson a Naplók fülre.
- Válassza ki a sikertelen verziót a legördülő menüből.
- Kattintson a Buildnaplók elemre.
Tekintse át a hibaüzeneteket a probléma azonosításához.
A probléma megoldása után hozzon létre egy új üzembe helyezést, vagy frissítse a végpontot egy új build aktiválásához.
Privát csomagtárház hibaelhárítása
Ha privát csomagtárházat használ, a gyakori problémák a következők:
- Hiányzó csomagok: A csomag nem érhető el a konfigurált adattárban. Adja hozzá a szükséges csomagot a privát adattárhoz.
- Csatlakozási problémák: A modellkiszolgáló nem tudja elérni a csomagtárat. Ellenőrizze a hálózati kapcsolatot és a tűzfalszabályokat.
- Hitelesítési hibák: Az adattárhoz konfigurált hitelesítő adatok érvénytelenek vagy lejártak. Frissítse a munkaterület konfigurációjának titkait.
A kiszolgáló nélküli jegyzetfüzetek ugyanazt az alapértelmezett csomagtárházat használják, amelyet a munkaterülethez konfiguráltak. Egy jegyzetfüzettel tesztelheti a kapcsolatot, a hitelesítést és a csomagok rendelkezésre állását, ha telepíti a követelményeket a modell requirements.txt fájljából, mielőtt a Modellkiszolgálóba helyezné.
import mlflow
import subprocess
import sys
# Step 1: Set your model details
catalog = "<your_catalog>"
schema = "<your_schema>"
model_name = "<your_model>"
version = <your_version>
# Step 2: Download the model's requirements.txt
full_model_name = f"{catalog}.{schema}.{model_name}"
requirements_uri = f"models:/{full_model_name}/{version}/requirements.txt"
print(f"Downloading artifacts from: {requirements_uri}")
local_path = mlflow.artifacts.download_artifacts(requirements_uri)
# Step 3: Print the requirements
with open(local_path, "r") as f:
print(f.read())
# Step 4: Install the requirements using the workspace's default package repository
print(f"Installing requirements from {local_path}...")
subprocess.check_call([sys.executable, "-m", "pip", "install", "-r", local_path])
print("Installation complete!")