È possibile distribuire e fare inferenza su modelli di apprendimento automatico salvati in diversi formati di modello, come PyTorch o Tensorflow, 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 usare il formato ONNX per addestrare i loro modelli in un framework, come PyTorch o TensorFlow, e poi esportarli per eseguirli in un altro ambiente con caratteristiche di prestazione diverse. Il formato ONNX offre 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 runtime ONNX
La conversione di un modello in runtime ONNX offre diversi vantaggi, soprattutto nel contesto delle applicazioni di machine learning e deep learning. Alcuni dei vantaggi della conversione dei modelli in ONNX runtime sono i seguenti:
Compatibilità multipiattaforma : ONNX fornisce un formato standard per la rappresentazione dei modelli di apprendimento automatico, che facilita la distribuzione dei modelli in diversi framework, come PyTorch o Tensorflow. È possibile addestrare i modelli in un framework e distribuirli in un altro framework che supporta il runtime ONNX.
Prestazioni migliorate : Il runtime ONNX ottimizza i modelli per l'inferenza applicando varie ottimizzazioni hardware e software specifiche, come le ottimizzazioni dei grafi. Inoltre, supporta l'esecuzione su hardware diversi, come CPU e GPU, garantendo un utilizzo efficiente delle risorse.
Interoperabilità : ONNX offre un modo per addestrare i modelli, come PyTorch, TensorFlow, e scikit-learn, in un framework e poi esportarli per eseguirli in un altro ambiente, semplificando 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
È possibile convertire in formato ONNX i modelli di apprendimento automatico che utilizzano i seguenti framework:
- PyTorch
- TensorFlow
Conversione dei modelli PyTorch in formato ONNX
Seguire questa procedura per convertire il modello addestrato in 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 PyTorch : È possibile creare un modello 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 PyTorch sia in modalità di valutazione usando la funzione
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 TensorFlow in formato ONNX
Seguire questa procedura per convertire il modello TensorFlow nel formato ONNX:
Importare le librerie : Iniziare a importare le librerie essenziali, come
tf2onnx
per facilitare la conversione dei modelli TensorFlow in ONNX e altre librerie necessarie per l'applicazione.Scaricare il modello TensorFlow : È necessario scaricare il modello TensorFlow creato esternamente e i dati utilizzati per l'addestramento del modello.
Convertire il modello TensorFlow in formato ONNX : Usare il comando
tf2onnx.convert
per convertire il modello TensorFlow creato nel formatoSavedModel
in formato ONNX. Se si vuole convertire un modello TensorFlow Lite, usare il flag--tflite
invece del flag--saved-model
.Verificare la conversione : Dopo aver convertito il modello, verificare che il modello funzioni come previsto utilizzando la libreria
onnx
.
Ulteriori considerazioni
Ecco alcune considerazioni aggiuntive per la conversione dei modelli TensorFlow in formato 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 dell'opset : La versione dell'opset in ONNX determina l'insieme delle operazioni e delle loro specifiche supportate dal modello. È un fattore critico durante la conversione e la distribuzione del modello.
Diversi runtime e framework ONNX supportano versioni specifiche di opset. Le vecchie versioni di opset possono essere prive di funzioni o ottimizzazioni presenti nelle versioni più recenti. L'incompatibilità tra la versione dell'opset di un modello e il runtime ONNX può causare errori durante l'inferenza. È necessario assicurarsi che la versione dell'opset ONNX scelta sia supportata dal runtime di destinazione.
Distribuzione dei modelli convertiti in formato ONNX
Utilizzate le specifiche del software onnxruntime_opset_19
per distribuire il vostro modello di apprendimento automatico convertito in formato ONNX. Per ulteriori informazioni, vedere Specifiche del software supportato.
Per distribuire i modelli convertiti in formato ONNX 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 il foundation model personalizzato viene utilizzato periodicamente, si consiglia di assegnare al modello lo stesso nome di servizio ogni volta che lo si distribuisce. 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
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.
- Flusso : Immettere i dati di input del testo per generare un flusso 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
I seguenti notebook di esempio dimostrano come distribuire modelli di apprendimento automatico convertiti da PyTorch o TensorFlow al formato ONNX utilizzando la libreria client Python :
Blocco appunti | Framework | Descrizione |
---|---|---|
Convertire la rete neurale ONNX da assi fissi ad assi dinamici e utilizzarla con watsonx | ONNX | 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 |
Utilizzare il modello ONNX convertito da PyTorch con watsonx | ONNX | 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. |
Usare il modello ONNX convertito da TensorFlow per riconoscere le cifre scritte a mano con watsonx | ONNX | 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. |
Argomento principale: Distribuzione di risorse di apprendimento automatico