Torna alla versione inglese della documentazione

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

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

È possibile convertire i modelli di apprendimento automatico che utilizzano i seguenti framework in formato ONNX :

  1. PyTorch
  2. TensorFlow
  3. CatBoost
  4. LightGBM
  5. XGBoost
  6. Scikit-learn

Conversione dei modelli dell' PyTorch , in formato dell' ONNX

Segui questa procedura per convertire il tuo modello in formato PyTorch nel formato ONNX :

  1. 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.

  2. 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.

  3. 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.

  4. 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

Segui questa procedura per convertire il tuo modello TensorFlow nel formato ONNX:

  1. 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.

  2. Scaricare il modello di TensorFlow : È necessario scaricare il modello di TensorFlow creato esternamente e i dati utilizzati per addestrare il modello.

  3. 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.

  1. 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

Segui questa procedura per convertire il tuo modello addestrato in ONNX ( CatBoost ):

  1. 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.

  2. 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.

  3. 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)
    

    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'
        }
    )
    
  4. 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

Segui questa procedura per convertire il tuo modello in formato LightGBM nel formato ONNX :

  1. 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.

  2. 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.

  3. 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)
    

    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)
    
    Suggerimento:

    Per la risoluzione dei problemi di conversione dei modelli di LightGBM in formato ONNX , vedere Risoluzione dei problemi di Runtime di watsonx.ai.

  4. 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

Segui questa procedura per convertire il tuo modello in formato XGBoost nel formato ONNX :

  1. 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.

  2. 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.

  3. 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)
    

    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)
    
  4. 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

Segui questa procedura per convertire il tuo modello in formato scikit-learn nel formato ONNX :

  1. 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.

  2. 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.

  3. 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)
    

    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)
    
    with open("sklearn_model.onnx", "wb") as f:
       f.write(onnx_model.SerializeToString())
    
  4. 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 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

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:

  1. Nello spazio di distribuzione, andare alla scheda Assets (Risorse).

  2. Individuare il modello nell'elenco delle risorse, fare clic sull'icona Menu e selezionare Deploy.

  3. Selezionate il tipo di distribuzione per il vostro modello. Scegliete tra le opzioni di distribuzione online e batch.

  4. 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 modello di base personalizzato viene utilizzato periodicamente, è consigliabile assegnare al modello lo stesso nome ogni volta che viene utilizzato. In questo modo, dopo aver cancellato e poi distribuito nuovamente il modello, si può continuare a usare lo stesso endpoint nel codice.

  5. Selezionare una specifica hardware per il proprio modello.

  6. Selezionate una configurazione e una specifica software per il vostro modello.

  7. Fare clic su Crea.

Test del modello

Seguire questi passaggi per testare i modelli distribuiti e convertiti in formato ONNX:

  1. Nello spazio di installazione client, aprire la scheda Deployments e fare clic sul nome dell'installazione client.
  2. Fare clic sulla scheda Test per immettere un testo di richiesta e ottenere una risposta dall'asset distribuito.
  3. 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.
  4. Fare clic su Genera per ottenere risultati basati sulla richiesta.

Notebook di esempio

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 :

Notebook di esempio
Notebook 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 PyTorch, 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 Tensorflow, 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.
Utilizzare il modello ONNX convertito da CatBoost CatBoost, ONNX 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.
Utilizzare il modello ONNX convertito da LightGBM LightGBM, ONNX 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
Usa il modello ONNX convertito da XGBoost con ibm- watsonx -ai XGBoost, ONNX 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.
Usa il modello ONNX convertito da scikit-learn con ibm- watsonx -ai Scikit-learn, ONNX 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)

Argomento principale: Distribuzione di risorse di apprendimento automatico