Preparazione di un artifact del modello
Dopo aver eseguito l'addestramento di un modello, è necessario creare un artifact del modello da salvare con il modello in un catalogo modelli.
Ciò consente di creare una memorizzazione centralizzata degli artifact del modello per tenere traccia dei metadati del modello.
Un artifact modello è un archivio zip dei file necessari per distribuire il modello come distribuzione del modello o caricarlo di nuovo in una sessione notebook.
Abbiamo fornito vari esempio di catalogo modelli che includono artifact modello per vari framework di apprendimento automatico e formati modello. Abbiamo esempi per i modelli ONNX, Scikit-learn, Keras, PyTorch, LightGBM e XGBoost. Per iniziare, ottieni il nostro modello di artifact che include i seguenti file:
File | descrizione; |
---|---|
score.py |
Contiene la logica personalizzata per il caricamento di oggetti modello serializzati in memoria e la definizione di un endpoint di inferenza (predict() ). |
runtime.yaml |
Fornisce istruzioni sull'ambiente Conda da utilizzare durante la distribuzione del modello mediante una distribuzione del modello Data Science. |
README.md |
Fornisce una serie di istruzioni dettagliate per preparare e salvare un artifact modello nel catalogo modelli. Ti consigliamo vivamente di seguire questi passaggi. |
artifact-introspection-test/requirements.txt |
Elenca le dipendenze di terze parti che è necessario installare nell'ambiente locale prima di eseguire i test di introspezione. |
artifact-introspection-test/model_artifact_validate.py |
Fornisce una serie facoltativa di definizioni di test che è possibile eseguire sull'artifact del modello prima di salvarlo nel catalogo modelli. Questi test di introspezione dei modelli acquisiscono molti degli errori più comuni durante la preparazione di un artifact del modello. |
La struttura di directory dell'artifact modello deve corrispondere a questo esempio:
.
|-- runtime.yaml
|-- score.py
|--<your-serialized-model>
|--<your-custom-module.py>
Altri moduli Python importati in score.py
. Si consiglia di comprimere il codice utilizzato per l'inferenza allo stesso livello di score.py
o a qualsiasi livello del file. Se sono presenti file obbligatori a livello di cartella che precedono il file score.py
, i file vengono ignorati e potrebbero causare un errore di distribuzione.
Il file score.py
Questo file contiene le definizioni delle funzioni necessarie per caricare un modello in memoria ed effettuare previsioni.
Le due funzioni sono denominate load_model()
e predict()
. I parametri della funzione non sono personalizzabili. Ad esempio, è possibile definire le trasformazioni dei dati in predict()
prima di chiamare il metodo di inferenza dell'oggetto valutatore. È possibile caricare in memoria più oggetti valutatore ed eseguire una valutazione di ensemble. La funzione predict()
si trova dietro l'endpoint /predict
di una distribuzione modello. Assicurarsi che il tipo di dati del parametro data
in predict()
corrisponda al formato di payload previsto con la distribuzione del modello.
La distribuzione del modello supporta solo il payload e i byte JSON. Assicurarsi che il parametro dati in predict()
sia un oggetto BLOB o byte JSON.
ADS (oracle-ads
) fornisce classi specifiche del framework di registrazione del modello. Ad esempio, se la classe SklearnModel
viene utilizzata con .prepare()
, per impostazione predefinita ADS serializza il modello in joblib. Quando si utilizza XgboostModel
, per impostazione predefinita .prepare()
salva il modello in un file JSON.
Il modello score.py
utilizza il load_model()
per restituire l'oggetto valutatore modello. La funzione predict()
acquisisce i dati e l'oggetto modello restituito da load_model()
. Entrambe le funzioni sono personalizzabili e richiedono definizioni. Il corpo di predict()
può includere trasformazioni dei dati e altri task di manipolazione dei dati prima di eseguire una previsione del modello. Tutti i moduli Python personalizzati possono essere importati in score.py
se sono disponibili nel file artifact o come parte dell'ambiente Conda utilizzato per scopi di inferenza, ad esempio il modello.
È possibile definire altre funzioni dell'applicazione di supporto in score.py
richiamate in predict()
. Ad esempio, è possibile definire una funzione data_transformation()
che definisca trasformazioni personalizzate.
Rivedere le migliori prassi per gli artifact del modello per creare questi file in modo efficace.
Sono stati forniti vari esempio e modelli di catalogo dei modelli, inclusi i file score.py
. Abbiamo esempi per i modelli ONNX, scikit-learn, Keras, PyTorch, LightGBM e XGBoost.