Distribuzione dei modelli convertiti in formato ONNX
Ultimo aggiornamento: 21 feb 2025
Distribuzione dei modelli convertiti in formato ONNX
È possibile distribuire e inferire modelli di apprendimento automatico da PyTorch o TensorFlow che sono salvati in diversi formati e convertiti nel formato Open Neural Network Exchange (ONNX). ONNX è un formato open source per la rappresentazione di modelli di deep learning. Gli sviluppatori possono utilizzare il formato ONNX per addestrare i loro modelli in un unico framework, come PyTorch o TensorFlow, e poi esportarlo per eseguirlo in un altro ambiente con caratteristiche di performance diverse. Il formato " ONNX " fornisce una soluzione potente per convertire un modello di apprendimento automatico in " ONNX " ed eseguire inferenze utilizzando il runtime " ONNX ".
Vantaggi della conversione dei modelli in un runtime dell' ONNX
Copy link to section
La conversione di un modello in un runtime dell ONNX e offre diversi vantaggi, soprattutto nel contesto delle applicazioni di machine learning e deep learning. Alcuni dei vantaggi della conversione dei modelli in un runtime dell ONNX :
Compatibilità multipiattaforma : ONNX fornisce un formato standard per rappresentare i modelli di apprendimento automatico, che rende più facile distribuire i modelli su diversi framework come PyTorch o Tensorflow. È possibile addestrare i modelli in un framework e distribuirli in un altro framework che supporti l'ambiente di esecuzion ONNX .
Prestazioni migliorate : l'esecuzione dell' ONNX e ottimizza i modelli per l'inferenza applicando varie ottimizzazioni specifiche per hardware e software, come le ottimizzazioni grafiche. Inoltre, supporta l'esecuzione su hardware diversi, come CPU e GPU, garantendo un utilizzo efficiente delle risorse.
Interoperabilità : ONNX fornisce un modo per addestrare modelli, come PyTorch, TensorFlow, e scikit-learn in un unico framework e poi esportarli per eseguirli in un altro ambiente, il che semplifica i flussi di lavoro. Abbatte le barriere tra i diversi framework di deep learning, consentendo agli sviluppatori di sfruttare i punti di forza delle diverse librerie senza rimanere bloccati in un unico ecosistema.
Quadri supportati per la conversione
Copy link to section
È possibile convertire i modelli di apprendimento automatico che utilizzano i seguenti framework in formato ONNX :
PyTorch
TensorFlow
CatBoost
LightGBM
XGBoost
Scikit-learn
Conversione dei modelli dell' PyTorch , in formato dell' ONNX
Copy link to section
Segui questa procedura per convertire il tuo modello in formato PyTorch nel formato ONNX :
Importare le librerie : Iniziare importando le librerie essenziali, come onnxruntime per l'esecuzione del modello, torch per le funzionalità di PyTorch e altre librerie necessarie per l'applicazione.
Creare o scaricare un modello di PyTorch : È possibile creare un modello di PyTorch utilizzando il proprio set di dati o utilizzare modelli forniti da archivi di modelli open source esterni come Hugging Face.
Convertire il modello PyTorch in formato ONNX : Per convertire il modello PyTorch in formato ONNX:
a. Preparare il modello : assicurarsi che il modello dell' PyTorch e sia in modalità di valutazione utilizzando la funzion model.eval() . Potrebbe essere necessario un tensore di ingresso fittizio per adattarlo alla forma del modello.
b. Esportare il modello : Utilizzare la funzione torch.onnx.export per convertire il modello in formato ONNX.
Verificare la conversione : Dopo aver convertito il modello, verificare che il modello funzioni come previsto utilizzando la libreria onnx.
Conversione dei modelli dell' TensorFlow , in formato dell' ONNX
Copy link to section
Segui questa procedura per convertire il tuo modello TensorFlow nel formato ONNX:
Importare librerie : iniziare importando le librerie essenziali, come tf2onnx per facilitare la conversione dei modelli TensorFlow in ONNX, e altre librerie necessarie per l'applicazione.
Scaricare il modello di TensorFlow : È necessario scaricare il modello di TensorFlow creato esternamente e i dati utilizzati per addestrare il modello.
TensorFlow Convertire un modello in formato ONNX : utilizzare il comando tf2onnx.convert per convertire un modello TensorFlow creato in formato SavedModel in formato ONNX . Se si desidera convertire un modello di TensorFlow Lite , utilizzare il flag --tflite invece del flag --saved-model .
Nota:
Keras i modelli e le funzioni di tf possono essere convertiti direttamente in Python utilizzando le funzioni tf2onnx.convert.from_keras o tf2onnx.convert.from_function.
Verificare la conversione : Dopo aver convertito il modello, verificare che il modello funzioni come previsto utilizzando la libreria onnx.
Conversione dei modelli di CatBoost e in formato ONNX
Copy link to section
Segui questa procedura per convertire il tuo modello addestrato in ONNX ( CatBoost ):
Importazione delle librerie : iniziare importando le librerie essenziali, come onnxruntime per l'esecuzione del modello, catboost per le funzionalità di CatBoost , e altre librerie necessarie per l'applicazione.
Creare o scaricare un modello di CatBoost : È possibile creare un modello di CatBoost utilizzando il proprio set di dati o utilizzare modelli forniti da archivi di modelli open source esterni come Hugging Face.
Convertire il modello CatBoost in formato ONNX : Per convertire il modello CatBoost in formato ONNX :
a. Caricare il modello CatBoost : È possibile caricare il modello CatBoost utilizzando librerie come pickle:
catboost_model = pickle.load(file)
Copy to clipboardCopiato negli appunti
b. Esportare il modello : utilizzare la funzione " catboost_model.save_model " con il parametro di formato impostato su " onnx " per convertire il modello nel formato " ONNX ".
catboost_model.save_model(
onnx_model_name,
format="onnx",
export_parameters={
'onnx_domain': 'ai.catboost',
'onnx_model_version': 1,
'onnx_doc_string': 'test model for Regressor',
'onnx_graph_name': 'CatBoostModel_for_Regression'
}
)
Copy to clipboardCopiato negli appunti
Verificare la conversione : Dopo aver convertito il modello, verificare che il modello funzioni come previsto utilizzando la libreria onnx.
Conversione dei modelli di LightGBM e in formato ONNX
Copy link to section
Segui questa procedura per convertire il tuo modello in formato LightGBM nel formato ONNX :
Importare le librerie : iniziare importando le librerie essenziali, come onnxruntime per l'esecuzione del modello, lightgbm per le funzionalità di LightGBM , e onnxmltools per la conversione e altre librerie necessarie per l'applicazione.
Creare o scaricare un modello di LightGBM : È possibile creare un modello di LightGBM utilizzando il proprio set di dati o utilizzare modelli forniti da archivi di modelli open source esterni come Hugging Face.
Convertire il modello LightGBM in formato ONNX : Per convertire il modello LightGBM in formato ONNX :
a. Caricare il modello LightGBM : È possibile caricare il modello LightGBM utilizzando librerie come pickle:
lgbm_model = pickle.load(file)
Copy to clipboardCopiato negli appunti
b. Esportare il modello : utilizzare la funzione " convert_lightgbm " per convertire il modello in formato " ONNX ".
from onnxmltools import convert_lightgbm
from skl2onnx.common.data_types import FloatTensorType
from onnxmltools.utils import save_model
initial_types = [("float_input", FloatTensorType([None, X.shape[1]]))]
onnx_model = convert_lightgbm(model=lgbm_model, initial_types=initial_types)
onnx_model_filename = "lgbm_model.onnx"
save_model(onnx_model, onnx_model_filename)
Verificare la conversione : Dopo aver convertito il modello, verificare che il modello funzioni come previsto utilizzando la libreria onnx.
Conversione dei modelli dell' XGBoost , in formato dell' ONNX
Copy link to section
Segui questa procedura per convertire il tuo modello in formato XGBoost nel formato ONNX :
Importazione delle librerie : iniziare importando le librerie essenziali, come onnxruntime per l'esecuzione del modello, xgboost per le funzionalità di XGBoost , e altre librerie necessarie per l'applicazione.
Creare o scaricare un modello di XGBoost : È possibile creare un modello di XGBoost utilizzando il proprio set di dati o utilizzare modelli forniti da archivi di modelli open source esterni come Hugging Face.
Convertire il modello XGBoost in formato ONNX : Per convertire il modello XGBoost in formato ONNX:
a. Caricare il modello XGboost : È possibile caricare il modello XGBoost utilizzando librerie come pickle:
xgboost_model = pickle.load(file)
Copy to clipboardCopiato negli appunti
b. Esportare il modello : utilizzare la funzione " convert_xgboost " per convertire il modello in formato " ONNX ".
from onnxmltools import convert_xgboost
from onnxconverter_common.data_types import FloatTensorType
from onnxmltools.utils import save_model
initial_types = [("float_input", FloatTensorType([None, X.shape[1]]))]
onnx_model = convert_xgboost(xgboost_model, initial_types=initial_types)
onnx_model_filename = "xgboost_onnx_model.onnx"
save_model(onnx_model, onnx_model_filename)
Copy to clipboardCopiato negli appunti
Verifica della conversione : dopo aver convertito il modello, verificare che funzioni come previsto utilizzando la libreria onnx.
Conversione dei modelli dell' scikit-learn , in formato dell' ONNX
Copy link to section
Segui questa procedura per convertire il tuo modello in formato scikit-learn nel formato ONNX :
Importare le librerie : iniziare importando le librerie essenziali, come onnxruntime per l'esecuzione del modello, sklearn per le funzionalità di scikit-learn , skl2onnx per la conversione e altre librerie necessarie per l'applicazione.
Creare o scaricare un modello di scikit-learn : È possibile creare un modello di scikit-learn utilizzando il proprio set di dati o utilizzare modelli forniti da archivi di modelli open source esterni come Hugging Face.
Convertire il modello scikit-learn in formato ONNX : Per convertire il modello scikit-learn in formato ONNX :
a. Caricare il modello scikit-learn : È possibile caricare il modello scikit-learn utilizzando librerie come pickle:
sklearn_model = pickle.load(file)
Copy to clipboardCopiato negli appunti
b. Esportare il modello : utilizzare la funzione " to_onnx " per convertire il modello in formato " ONNX ".
from skl2onnx import to_onnx
onnx_model = to_onnx(sklearn_model, X, target_opset=19)
withopen("sklearn_model.onnx", "wb") as f:
f.write(onnx_model.SerializeToString())
Copy to clipboardCopiato negli appunti
Verificare la conversione : Dopo aver convertito il modello, verificare che il modello funzioni come previsto utilizzando la libreria onnx.
Ulteriori considerazioni
Copy link to section
Ecco alcune considerazioni aggiuntive per convertire i vostri modelli in form ONNX :
Assi dinamici : Gli assi dinamici possono essere utilizzati da un modello per gestire forme di input variabili, come le dimensioni dinamiche dei lotti o le lunghezze delle sequenze, utili per i modelli utilizzati in applicazioni in cui le dimensioni di input possono variare. Utilizzare gli assi dinamici se il modello gestisce dimensioni di input variabili, come la dimensione dinamica del batch o la lunghezza della sequenza.
Gli assi dinamici riducono anche l'overhead di memoria, in quanto possono essere utilizzati con più ingressi e uscite per adattarsi dinamicamente senza riesportare il modello. È possibile specificare gli assi dinamici durante l'esportazione del modello in PyTorch o TensorFlow.
Versione OPSET: la versione OPSET in ONNX determina l'insieme delle operazioni e le relative specifiche supportate dal modello. È un fattore critico durante la conversione e la distribuzione del modello.
Diversi tempi di esecuzione dell' ONNX e e framework supportano versioni specifiche dell' e. Le vecchie versioni di opset possono essere prive di funzioni o ottimizzazioni presenti nelle versioni più recenti. L'incompatibilità tra la versione opset di un modello e il runtime dell' ONNX e può causare errori durante l'inferenza. È necessario assicurarsi che la versione di Opset dell' ONNX e scelta sia supportata dal proprio runtime di destinazione.
Distribuzione di modelli convertiti in form ONNX
Copy link to section
Utilizza le specifiche del software " onnxruntime_opset_19 " per distribuire il tuo modello di apprendimento automatico convertito in formato " ONNX ". È necessario specificare le specifiche del software e il tipo di modello quando si memorizza il modello nell'archivio di esecuzione di watsonx.ai. Per ulteriori informazioni, vedere Specifiche software supportate.
Per distribuire modelli convertiti in form ONNX e dall'interfaccia utente, procedere come segue:
Nello spazio di distribuzione, andare alla scheda Assets (Risorse).
Individuare il modello nell'elenco delle risorse, fare clic sull'icona Menu e selezionare Deploy.
Selezionate il tipo di distribuzione per il vostro modello. Scegliete tra le opzioni di distribuzione online e batch.
Immettere un nome per l'installazione client e, facoltativamente, un nome di servizio, una descrizione e dei tag.
Nota:
Usare il campo Nome dell'installazione client per specificare un nome per l'installazione client invece dell'ID dell'installazione client.
Il nome del servizio deve essere unico all'interno dello spazio dei nomi.
Il nome del servizio deve contenere solo questi caratteri: a-z,0-9,_] e deve essere lungo al massimo 36 caratteri.
Nei flussi di lavoro in cui l' foundation model e personalizzata viene utilizzata periodicamente, è consigliabile assegnare al modello lo stesso nome di servizio ogni volta che viene distribuito. In questo modo, dopo aver cancellato e poi distribuito nuovamente il modello, si può continuare a usare lo stesso endpoint nel codice.
Selezionare una specifica hardware per il proprio modello.
Selezionate una configurazione e una specifica software per il vostro modello.
Fare clic su Crea.
Test del modello
Copy link to section
Seguire questi passaggi per testare i modelli distribuiti e convertiti in formato ONNX:
Nello spazio di installazione client, aprire la scheda Deployments e fare clic sul nome dell'installazione client.
Fare clic sulla scheda Test per immettere un testo di richiesta e ottenere una risposta dall'asset distribuito.
Immettere i dati di prova in uno dei seguenti formati, a seconda del tipo di risorsa distribuita:
Testo : Immettere i dati di input del testo per generare un blocco di testo come output.
JSON : inserire i dati di input JSON per generare l'output in formato JSON.
Fare clic su Genera per ottenere risultati basati sulla richiesta.
Notebook di esempio
Copy link to section
I seguenti esempi di notebook mostrano come distribuire modelli di apprendimento automatico convertiti da PyTorch o TensorFlow al formato ONNX utilizzando la libreria client Python :
Impostare l'ambiente Creare ed esportare il modello ONNX di base Convertire il modello da assi fissi ad assi dinamici Persistere il modello ONNX convertito Distribuire e valutare il modello ONNX Pulire Riepilogo e passi successivi
Creare il modello PyTorch con il set di dati. Convertire il modello PyTorch in formato ONNX Persistere il modello convertito nel repository Watson Machine Learning. Distribuire il modello per la valutazione online utilizzando la libreria client. Punteggio dei record di campione utilizzando la libreria dei clienti.
Scaricare un modello TensorFlow addestrato esternamente con un set di dati. Convertire il modello TensorFlow in formato ONNX Persistere il modello convertito nel repository Watson Machine Learning. Distribuire il modello per la valutazione online utilizzando la libreria client. Punteggio dei record di campione utilizzando la libreria dei clienti.
Modello addestrato CatBoost. Convertire il modello CatBoost in formato ONNX. Persistere il modello convertito nel repository Watson Machine Learning. Distribuire il modello per la valutazione online utilizzando la libreria client. Punteggio dei record di campione utilizzando la libreria dei clienti.
Addestrare un modello LightGBM Convertire il modello LightGBM in formato ONNX Persistere il modello convertito nel repository di runtime watsonx.ai Distribuire il modello per lo scoring online utilizzando la libreria client Assegnare il punteggio ai record di esempio utilizzando la libreria client
Addestrare un modello XGBoost. Convertire il modello XGBoost nel formato ONNX. Conservare il modello convertito nell'archivio dell' watsonx.ai. Distribuire il modello per il punteggio online utilizzando l'istanza APIClient. Registra i record di esempio utilizzando l'istanza APIClient.
Train a scikit-learn model (Addestrare un modello scikit-learn) (Convertire il modello scikit-learn nativo in formato ONNX) (Eseguire la conversione per un modello scikit-learn personalizzato avvolto in una pipeline sklearn) (Persistere il modello convertito nel repository Runtime di watsonx.ai ) (Distribuire il modello per il punteggio online utilizzando la libreria client) (Punteggiare record campione utilizzando la libreria client)