Usare librerie Python personalizzate con Model Serving
In questo articolo si apprenderà come includere librerie o librerie personalizzate da un server mirror privato quando si registra il modello, in modo da poterle usare con le distribuzioni del modello Di gestione dei modelli di mosaico per intelligenza artificiale. È necessario completare i passaggi descritti in questa guida dopo avere un modello di Machine Learning con training pronto per la distribuzione, ma prima di creare un endpoint di gestione del modello di Azure Databricks.
Lo sviluppo di modelli spesso richiede l'uso di librerie Python personalizzate che contengono funzioni per pre-elaborazione o post-elaborazione, definizioni di modelli personalizzati e altre utilità condivise. Inoltre, molti team di sicurezza aziendali incoraggiano l'uso di mirror PyPi privati, ad esempio Nexus o Artifactory, per ridurre il rischio di attacchi a catena di approvvigionamento. Azure Databricks offre supporto nativo per l'installazione di librerie e librerie personalizzate da un mirror privato nell'area di lavoro di Azure Databricks.
Requisiti
- MLflow 1.29 o versione successiva
Passaggio 1: Caricare il file di dipendenza
Databricks consiglia di caricare il file di dipendenza nei volumi del catalogo Unity. In alternativa, è possibile caricarlo in Databricks File System (DBFS) usando l'interfaccia utente di Azure Databricks.
Per assicurarsi che la libreria sia disponibile per il notebook, è necessario installarla usando %pip%
. Usando %pip
installa la libreria nel notebook corrente e scarica la dipendenza nel cluster.
Passaggio 2: Registrare il modello con una libreria personalizzata
Importante
Le indicazioni contenute in questa sezione non sono necessarie se si installa la libreria privata puntando a un mirror PyPi personalizzato.
Dopo aver installato la libreria e caricato il file wheel python in volumi del catalogo Unity o DBFS, includere il codice seguente nello script.
extra_pip_requirements
In specificare il percorso del file di dipendenza.
mlflow.sklearn.log_model(model, "sklearn-model", extra_pip_requirements=["/volume/path/to/dependency.whl"])
Per DBFS, usare quanto segue:
mlflow.sklearn.log_model(model, "sklearn-model", extra_pip_requirements=["/dbfs/path/to/dependency.whl"])
Se si dispone di una libreria personalizzata, è necessario specificare tutte le librerie Python personalizzate associate al modello durante la configurazione della registrazione. È possibile farlo con i extra_pip_requirements
parametri o conda_env
in log_model().
Importante
Se si usa DBFS, assicurarsi di includere una barra, /
, prima del percorso durante la dbfs
registrazione extra_pip_requirements
di . Altre informazioni sui percorsi DBFS in Usare i file in Azure Databricks.
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)
Passaggio 3: Aggiornare il modello MLflow con i file della rotellina Python
MLflow fornisce l'utilità add_libraries_to_model() per registrare il modello con tutte le relative dipendenze preconfezionate come file con rotellina Python. In questo modo le librerie personalizzate vengono incluse insieme al modello, oltre a tutte le altre librerie specificate come dipendenze del modello. Ciò garantisce che le librerie usate dal modello siano esattamente quelle accessibili dall'ambiente di training.
Nell'esempio seguente model_uri
fa riferimento al registro dei modelli di Catalogo Unity usando la sintassi models:/<uc-model>/<model-version>
. Per fare riferimento all'uso del registro dei modelli dell'area di lavoro (legacy), models:/<model-name>/<model-version>
.
Quando si usa l'URI del Registro di sistema del modello, questa utilità genera una nuova versione nel modello registrato esistente.
import mlflow.models.utils
mlflow.models.utils.add_libraries_to_model(<model-uri>)
Passaggio 4: Gestire il modello
Quando una nuova versione del modello con i pacchetti inclusi è disponibile nel Registro di sistema dei modelli, è possibile aggiungere questa versione del modello a un endpoint con Model Serving.