Imparare ONNX per il trading

 

Abbiamo aggiunto il supporto per i modelli ONNX in MQL5 poiché crediamo che questo sia il futuro. Abbiamo creato questa discussione per esaminare e studiare questo promettente campo che può aiutare a portare l'uso dell'apprendimento automatico ad un nuovo livello. Utilizzando le nuove funzionalità, puoi addestrare i modelli nel tuo ambiente preferito e quindi eseguirli nel trading con il minimo sforzo.


Una breve panoramica della tecnologia

ONNX (Open Neural Network Exchange) è un formato open source per lo scambio di modelli di apprendimento automatico tra vari framework. Sviluppato da Microsoft, Facebook e Amazon Web Services (AWS), mira a facilitare lo sviluppo e l'implementazione di modelli ML.

Principali vantaggi di ONNX:

  • Interoperabilità: Lo standard consente lo scambio di modelli tra diversi framework come TensorFlow, PyTorch, Caffe2, MXNet e altri. Ciò facilita i processi di sviluppo e distribuzione del modello.
  • Ottimizzazione: La tecnologia fornisce operazioni ottimizzate e grafici di elaborazione per migliorare le prestazioni del modello e ridurre i costi computazionali.
  • Standardizzazione: ONNX offre un unico formato per serializzare e archiviare i modelli ML. Ciò semplifica lo scambio di modelli tra sviluppatori e aziende.
  • Ecosistema: ONNX è supportato da una pletora di librerie, strumenti e hardware, che aiuta a diffondere e accelerare le innovazioni ML.
  • Standard Aperto: Il progetto è in un formato aperto con una comunità attiva e crediamo che continuerà a crescere. Ti invitiamo a contribuire allo sviluppo del progetto.


Per utilizzare ONNX, gli sviluppatori possono esportare i propri modelli da vari framework come TensorFlow o PyTorch nel formato ONNX. Inoltre, i modelli possono essere inclusi nelle applicazioni MQL5 ed eseguiti nel terminale di trading MetaTrader 5. Questa è un'opportunità unica non offerta da nessun altro.

Uno degli strumenti più popolari per convertire i modelli nel formato ONNX è ONNXMLTools di Microsoft. ONNXMLTools può essere facilmente installato. Per i dettagli sull'installazione e gli esempi di conversione del modello, vedere la pagina del progetto all'indirizzo https://github.com/onnx/onnxmltools#install.

Per eseguire un modello addestrato, devi utilizzare ONNX Runtime. ONNX Runtime è un motore multipiattaforma ad alte prestazioni progettato per eseguire modelli ML esportati nel formato ONNX. Con ONNX, gli sviluppatori possono creare modelli in un framework e poi distribuirli facilmente in altri ambienti. Ciò fornisce flessibilità semplificando il processo di sviluppo.

ONNX è un potente strumento per sviluppatori e ricercatori di ML. Usa queste funzionalità per sviluppare in modo efficiente e implementare i modelli nel trading utilizzando MQL5.

Esplora le informazioni disponibili e i nuovi approcci per lavorare con i modelli ML e condividili con i membri di MQL5.community. Abbiamo trovato alcune pubblicazioni utili su questo argomento, che possono aiutarti a esplorare e iniziare con questa nuova promettente tecnologia.

Documentazione su MQL5: ONNX models
Documentazione su MQL5: ONNX models
  • www.mql5.com
ONNX models - MQL5 Riferimento - Guida al linguaggio di trading algoritmico/automatico per MetaTrader 5
 

1. Tempo di esecuzione ONNX



ONNX Runtime

Il video discute il progetto Open Neural Network Exchange (ONNX), un formato aperto per rappresentare modelli di apprendimento tradizionali e profondi. Descrive inoltre ONNX Runtime, il motore ad alte prestazioni per l'esecuzione dei modelli.

ONNX Runtime fornisce copertura e supporto completi di tutti gli operatori definiti in ONNX e funziona sia con CPU che con GPU su molte piattaforme tra cui Linux, Windows e Mac.

Fornisce inoltre una guida dettagliata alla conversione, al caricamento e all'esecuzione di un modello usando ONNX Runtime in Azure ML e ne illustra i potenziali vantaggi, tra cui il miglioramento delle prestazioni e l'efficienza di previsione per vari modelli.

Il video ha incoraggiato gli sviluppatori a provare ONNX e a contribuire alla crescente comunità ONNX.

ONNX Runtime
ONNX Runtime
  • 2018.12.04
  • www.youtube.com
ONNX Runtime is a high performance scoring engine for traditional and deep machine learning models, and it's now open sourced on GitHub. In this video, we'll...
 

2. Conversione dei modelli nel formato #ONNX



Conversione di modelli in formato #ONNX

Il video illustra il processo di conversione dei modelli di machine learning nel formato ONNX, concentrandosi su librerie popolari come PyTorch, TensorFlow e Scikit-learn. L'esempio fornito è per PyTorch, in cui un modello preaddestrato viene convertito in formato ONNX utilizzando torch.onnx.export. Il video copre i diversi parametri che possono essere passati in questa funzione, nonché la conversione dei modelli TensorFlow e transformer in formato ONNX. Una volta che il modello è in formato ONNX, può essere sfruttato per distribuzioni multipiattaforma e miglioramenti delle prestazioni tramite il pacchetto di runtime ONNX. Vengono anticipati anche altri video su modelli innovativi che utilizzano ONNX.

  • 00:00:00 apprendimento delle biblioteche nel formato ONNX. In questa sezione, ci concentreremo sulle librerie popolari come PyTorch, TensorFlow e Scikit-learn. Per prima cosa dobbiamo ottenere la libreria del convertitore per il framework di formazione specifico che stiamo utilizzando. L'esempio fornito è per PyTorch in cui otteniamo un modello pre-addestrato, creiamo un input fittizio e quindi utilizziamo torch.onnx.export per convertirlo in formato ONNX. I nomi di input e output creati durante la conversione verranno utilizzati successivamente per l'inferenza tramite il pacchetto di runtime ONNX. Il modello ONNX può ora essere sfruttato per le sue capacità. La sezione copre anche i diversi parametri che possono essere inviati nella funzione torch.onnx.export e come convertire i modelli TensorFlow e transformer in formato ONNX.

  • 00:05:00 In questa sezione, il relatore spiega il processo di conversione di un modello di machine learning nel formato ONNX. L'estratto mostra un esempio di importazione di Scikit-learn e di creazione di un tipo o forma iniziale. Il metodo convert to sklearn viene utilizzato per inviare il modello e il tipo iniziale, seguito dalla denominazione e dalla scrittura del modello in un file. Una volta che il modello è in un formato ONNX, è possibile utilizzare implementazioni multipiattaforma e miglioramenti delle prestazioni tramite il runtime ONNX. L'oratore accenna ad altri video imminenti su modelli innovativi che utilizzano ONNX in un tema di follia del modello di marcia.
Converting Models to #ONNX Format
Converting Models to #ONNX Format
  • 2022.03.07
  • www.youtube.com
The first step to using #ONNXRuntime is converting your model to an ONNX Format. In this video we show you how to convert a model from PyTorch, TensorFlow, S...
 

3. ONNX: formato aperto per modelli di machine learning



3. ONNX: formato aperto per modelli di machine learning

Il video illustra i vantaggi dell'utilizzo di ONNX per l'inferenza, inclusa l'ottimizzazione dell'hardware e l'interoperabilità con vari formati. Il relatore sottolinea l'importanza dell'hardware appropriato per sfruttare i vantaggi di ONNX, in particolare per l'implementazione su dispositivi edge. La sezione copre anche l'ottimizzazione dei modelli di deep learning per dispositivi iOS utilizzando Core ML, che è integrato nel sistema operativo, semplificando la distribuzione di modelli ONNX su dispositivi iOS senza la necessità di spedire librerie ML. Il prossimo tutorial si concentrerà sulla classificazione e segmentazione delle immagini, incoraggiando gli studenti universitari a prendere in considerazione un progetto nello sviluppo di app iOS.

  • 00:00:00 Il relatore parla di ONNX, un formato aperto per i modelli di machine learning. ONNX offre interoperabilità e accesso hardware, consentendo agli utenti di convertire qualsiasi modello in ONNX o viceversa. Supporta anche un'ampia gamma di formati, inclusi TensorFlow e PyTorch. Convertendo i modelli in ONNX, gli utenti possono ottimizzare l'hardware e velocizzare il runtime.

  • 00:05:00 In questa sezione, il relatore discute i vantaggi dell'utilizzo di ONNX per l'inferenza, con l'ottimizzazione che può accelerare il processo. È possibile utilizzare GPU e CPU diverse, rendendo le dimensioni dei batch irrilevanti per la velocità di esecuzione dei modelli ONNX. Il relatore sottolinea che l'hardware utilizzato deve essere appropriato per sfruttare i vantaggi di ONNX. La distribuzione sui dispositivi edge può dimostrare il massimo vantaggio, che
    il prossimo tutorial coprirà. Infine, il relatore spiega uno scenario ipotetico di distribuzione di un modello addestrato tramite un'app iOS, in cui l'inferenza avviene sul dispositivo stesso per prestazioni ottimali. I dispositivi Apple dotati di un motore neurale Apple possono ottimizzare l'inferenza per essere veloci e affidabili.

  • 00:10:00 Il relatore discute l'ottimizzazione dei modelli di deep learning per dispositivi iOS utilizzando Core ML, che è un framework per l'inferenza di deep learning. Salvando un modello addestrato da Keras o PyTorch come ONNX, può essere facilmente convertito in un modello Core ML e distribuito su dispositivi iOS. Core ML è integrato nel sistema operativo, eliminando la necessità di compilare, collegare o fornire file binari per le librerie ML. Nel prossimo tutorial, il relatore si concentrerà sulla classificazione e segmentazione delle immagini e incoraggia gli studenti universitari a prendere in considerazione un progetto nello sviluppo di app iOS.
 

4. Implementazione del modello di machine learning (profondo) con ONNX



PyParis 2018 - Distribuzione (profonda) di modelli con apprendimento automatico con ONNX

Il relatore nel video PyParis 2018 discute le sfide dell'implementazione di modelli di apprendimento automatico, inclusi i tempi di previsione variabili nelle librerie comuni come scikit-learn e XGBoost. Introducono ML.NET, una libreria di apprendimento automatico open source sviluppata da Microsoft e recentemente rilasciata con il runtime ONNX, che può offrire una migliore precisione in alcuni casi ma è più lenta di altre librerie. Il relatore dimostra anche il runtime per ONNX e spiega che riduce i tempi di produzione della metà per i modelli MobileNet e SqueezeNet. ONNX è progettato non solo per spingere i modelli in produzione, ma anche per archiviare i metadati per il monitoraggio delle prestazioni del modello e può essere eseguito ovunque grazie alla sua indipendenza dalla piattaforma.

  • 00:00:00 In questa sezione, il relatore discute le sfide nell'implementazione di modelli di machine learning, in particolare quando li si utilizza in condizioni diverse rispetto all'addestramento. Dimostra come le librerie comuni come scikit-learn e XGBoost hanno tempi di previsione variabili e introduce ML.NET, una libreria di machine learning open source sviluppata da Microsoft e recentemente rilasciata con il runtime ONNX. Il relatore misura il tempo di previsione per ML.NET e mostra che è più lento di altre librerie ma può offrire una migliore precisione in alcuni casi.

  • 00:05:00 In questa sezione, il relatore parla delle metriche prestazionali ottenute attraverso un notebook con c-sharp e Python. Il notebook mostra le prestazioni di diverse librerie come Cyclone, GBM ML e Trees. Il relatore dimostra anche come la previsione in batch aiuti a ridurre il tempo medio trascorso nella previsione delle posizioni. La discussione prosegue quindi descrivendo la pipeline del modello di machine learning e in che modo ONNX aiuta a descrivere la pipeline utilizzando un linguaggio minimo. ONNX fornisce un formato comune per scaricare il modello basato sul prodotto Google ed è supportato da Microsoft e Facebook. Il relatore conclude affermando che il metodo per l'allenamento richiede cattiva previsione, buona memoria e dati enormi, mentre per prevedere una posizione sono desiderabili poca memoria e buona previsione.

  • 00:10:00 In questa sezione, il relatore dimostra il runtime per ONNX, che sta per scambio di reti neurali aperte. Utilizzando un file XML per convertire i modelli, il runtime ONNX è stato in grado di dimezzare i tempi di produzione per i modelli MobileNet e SqueezeNet. Il Model Zoo è ancora instabile a questo punto, ma alla fine si stabilizzerà in pochi mesi. Nel frattempo, vengono coperti i modelli e le trasformazioni di machine learning standard disponibili in Python e Keras, poiché ONNX è disponibile da Python e non ci saranno altre dipendenze per eseguire il modello.

  • 00:15:00 In questa sezione, il relatore spiega che ONNX è stato progettato non solo per spingere i modelli in produzione, ma anche per archiviare metadati che possono essere utilizzati per tenere traccia delle prestazioni del modello. L'oratore menziona anche che ONNX è una libreria che può essere eseguita ovunque perché è indipendente dalla piattaforma. Il modello ONNX è ottimizzato e ridotto utilizzando Google+ per la serializzazione e contiene solo coefficienti. In risposta alle domande, il relatore spiega che ONNX è stato adottato da Microsoft e viene utilizzato per migliorare i tempi di previsione e il relatore ritiene che continuerà ad essere ampiamente utilizzato.
PyParis 2018 - (Deep) Machine Learned Model Deployment with ONNX
PyParis 2018 - (Deep) Machine Learned Model Deployment with ONNX
  • 2018.11.20
  • www.youtube.com
(Deep) Machine Learned Model Deployment with ONNX (Xavier Dupré, Microsoft)
 

5. Reti neurali ricorrenti | Previsioni di movimento dei prezzi LSTM per algoritmi di trading



Reti neurali ricorrenti | Previsioni di movimento dei prezzi LSTM per algoritmi di trading

Il video spiega l'uso di reti neurali ricorrenti e reti di memoria a lungo termine LSTM per prevedere le tendenze del movimento dei prezzi negli algoritmi di trading. Il video illustra i passaggi per preelaborare il set di dati prima di inserirlo nel modello LSTM. Le colonne non necessarie vengono eliminate e viene applicato il ridimensionamento min-max per ridimensionare i dati delle caratteristiche tra zero e uno. I dati vengono quindi inseriti in "x", mentre i dati previsti vanno in "y". Il video copre anche l'addestramento e il test del modello LSTM con l'80% dei dati utilizzati per l'addestramento e il 20% per i test. Il modello viene compilato e adattato con i dati di addestramento prima di prevedere i dati di test, con i risultati presentati sotto forma di grafico. Il video mostra alcune previsioni promettenti, ma il relatore osserva che c'è ancora spazio per miglioramenti nei video futuri.

  • 00:00:00 In questa sezione, l'autore spiega come utilizzare le reti neurali ricorrenti e le reti di memoria a lungo termine lstm per le previsioni sui movimenti dei prezzi. I parametri di input potrebbero essere valori di prezzo, indicatori tecnici e indicatori personalizzati che possono essere inclusi nel dataframe per prevedere l'output, che sarebbe l'andamento del movimento dei prezzi. Il modello lstm prende i dati passati e cerca di prevedere il prezzo di chiusura del giorno successivo. Il modello richiede un input bidimensionale e il set di dati di addestramento è tridimensionale, tenendo conto della forma del set di dati. Lo YouTuber dimostra come importare moduli utilizzando l'analisi tecnica numpy, pandas, matplotlib e pandas TA e scaricare i dati utilizzando YFinance per creare un dataframe. Gli indicatori tecnici vengono aggiunti al dataframe utilizzando l'analisi tecnica TA. Infine, il prezzo di chiusura successivo viene impostato come colonna di destinazione e ottenuto spostando la colonna di chiusura regolata con un indice meno uno, le righe vuote vengono eliminate e il dataframe viene ripristinato.

  • 00:05:00 In questa sezione, il relatore spiega i passaggi per pre-elaborare il set di dati prima di inserirlo nel modello LSTM. Innanzitutto, eliminano le colonne non necessarie e utilizzano MinMaxScaler dal pacchetto Scikit-learn per ridimensionare i dati delle caratteristiche tra zero e uno. I dati di input sono costituiti da otto colonne, comprese tre medie mobili, l'RSI, i prezzi aperti, alti e bassi, e vengono elaborati in un array Numpy bidimensionale. Quindi scelgono la colonna target "prossima chiusura" da prevedere e impostano il numero di back candle, che rappresenta il numero di giorni passati da considerare. I dati di input vengono inseriti in "x", mentre i dati previsti, ovvero il prezzo di chiusura del giorno successivo, vanno in "y". Il codice è scritto in Python e le dimensioni corrette del modello LSTM devono essere considerate per evitare errori. Infine, i dati vengono suddivisi per scopi di formazione e test.

  • 00:10:00 In questa sezione, il relatore addestra e testa il modello LSTM con l'80% dei dati utilizzati per l'addestramento e il 20% per i test. La forma della funzione di input è uguale al numero di candele posteriori, ovvero il numero di righe inserite nel modello, con il numero di colonne che creano una matrice di forma di input bidimensionale per il modello. Dopo aver creato uno strato intermedio e denso con nodi specifici, il modello viene compilato prima di essere adattato con i dati di addestramento. Il modello viene quindi utilizzato per prevedere i dati di test, con la variabile y che rappresenta il prezzo di chiusura del giorno successivo. I risultati si presentano sotto forma di un grafico, che mostra alcune previsioni promettenti, anche se il relatore nota che il modello sta fallendo in alcune aree e dovrebbero essere apportati miglioramenti nei video futuri.
 

Tutto quello che vuoi sapere su ONNX




Tutto quello che vuoi sapere su ONNX

Il formato ONNX mira ad affrontare le sfide presentate dall'insieme frammentato di strumenti e framework nell'ambiente di deep learning fornendo un formato di file portatile che consente l'esportazione dei modelli da un framework all'altro. È altamente trasparente e ben documentato, standardizza sintassi, semantica e convenzioni utilizzate nel dominio del deep learning e supporta sia il deep learning che i tradizionali modelli di machine learning. ONNX consente l'interoperabilità, l'efficienza e l'ottimizzazione in diversi ambienti hardware senza ottimizzazione o conversione manuale. Il video mostra una demo di base della conversione di un modello addestrato da scikit-learn in formato ONNX utilizzando il convertitore specifico di ONNX e dimostra come eseguire l'inferenza finale in un caso d'uso reattivo in cui l'addestramento viene eseguito utilizzando la torcia PI e l'inferenza viene eseguita in TensorFlow.

Il webinar si conclude con una dimostrazione di come convertire un modello ONNX in un formato TensorFlow utilizzando la funzione "prepara" dal "backend ONNX TF" e salvando l'output come file ".pb". Il relatore osserva che il modello TensorFlow può quindi essere utilizzato per l'inferenza senza fare alcun riferimento a ONNX. Il pubblico viene ringraziato e il relatore annuncia i prossimi articoli su ONNX su The New Stack, insieme a un altro webinar in arrivo sul runtime delle applicazioni distribuite di Microsoft. Il feedback dei partecipanti è stato positivo.

  • 00:00:00 Se stai lottando con le complessità del machine learning e del deep learning a causa della frammentazione e del set distribuito di strumenti e framework, ONNX potrebbe essere proprio la soluzione di cui hai bisogno. In una sezione di un webinar, il relatore spiega le attuali sfide affrontate nell'ambiente di deep learning e come ONNX può affrontarle. Presupponendo una familiarità generale con il machine learning e il deep learning, la discussione fornisce una panoramica dettagliata delle promesse offerte sia da ONNX che dal runtime ONNX. Alla fine di questa sezione, il pubblico viene introdotto all'idea della convergenza tra intelligenza artificiale e infrastruttura moderna, che è un tema ricorrente in tutta la serie di webinar.

  • 00:05:00 In questa sezione, il relatore discute le sfide del deep learning, soprattutto in termini di formazione e produzione. Quando si tratta di formazione, l'utilizzo di un set frammentato di framework e toolkit non è facile e l'infrastruttura è essenziale quando si lavora con le GPU per accelerare la formazione. Inoltre, non si tratta solo di hardware, ma anche di software, come CUDA e KuDNN per le GPU NVIDIA e oneDNN per gli FPGA di Intel. Sul lato della produzione, il modello addestrato deve essere ottimizzato per l'ambiente di destinazione per fornire elevata precisione e bassa latenza, il che richiede la conversione dei tipi di dati e l'utilizzo di strumenti come TensorRT. Pertanto, il deep learning richiede la comprensione dei livelli hardware e software e l'ottimizzazione del modello per fornire le prestazioni desiderate.

  • 00:10:00 In questa sezione, il relatore discute i vari strumenti, framework e ambienti hardware necessari per ottimizzare e distribuire in modo efficace i modelli di intelligenza artificiale. Il relatore sottolinea la necessità di ottimizzazione e quantizzazione del modello, in particolare per le CPU, e menziona i popolari toolkit come Nvidia T4 e il toolkit OpenVINO di Intel. Il relatore spiega inoltre che diversi ambienti hardware richiedono toolkit diversi, come la famiglia Jetson di Nvidia per l'automazione industriale e i casi d'uso IoT, l'unità di elaborazione della visione di Intel per il vision computing e l'Edge TPU di Google per l'edge. Il processo di ottimizzazione e distribuzione dei modelli di intelligenza artificiale è un processo complesso e continuo che prevede il rilevamento della deriva, il riaddestramento, l'ottimizzazione, la distribuzione e il ridimensionamento del modello. L'oratore sottolinea l'importanza di disporre di una pipeline che si occupi efficacemente di questo intero meccanismo a circuito chiuso.

  • 00:15:00 In questa sezione, il relatore introduce ONNX come Open Neural Network Exchange che funge da intermediario tra diversi framework e ambienti target promuovendo efficienza, ottimizzazione e interoperabilità. ONNX supporta il deep learning e i tradizionali modelli di machine learning e consente l'esportazione e l'importazione di modelli da un framework all'altro. Inoltre, ONNX supporta diversi ambienti hardware senza ottimizzazione o conversione manuale. Il relatore osserva che sin dal suo inizio nel 2017 con i membri fondatori AWS, Microsoft e Facebook, ONNX è cresciuto in modo significativo con i contributi di Nvidia, Intel, IBM, Qualcomm, Huawei, Baidu e altri, promuovendo attivamente questo ecosistema all'interno delle piattaforme cloud pubbliche, toolkit e runtime. ONNX ha subito un cambiamento significativo in risposta ai progressi in altri framework e toolkit, rendendolo compatto, multipiattaforma e al passo con gli ultimi sviluppi.

  • 00:20:00 In questa sezione, il relatore discute ONNX, un formato di file portatile che consente l'esportazione di modelli addestrati in un framework o toolkit in un altro. ONNX è fortemente ispirato ai runtime portatili come JVM e CLR e fornisce un livello di astrazione e disaccoppiamento dai toolkit di livello superiore. È un formato altamente trasparente e ben documentato che standardizza sintassi, semantica e convenzioni utilizzate nel dominio del deep learning. ONNX ML è anche un'estensione che supporta il machine learning tradizionale. Quando un modello viene esportato come ONNX, diventa un grafico di più nodi di calcolo che rappresentano l'intero modello.

  • 00:25:00 In questa sezione, il relatore spiega la struttura dei nodi di calcolo all'interno di un grafico in ONNX. Ogni nodo è autonomo e contiene un operatore che esegue il calcolo effettivo, insieme a dati e parametri di input. I dati di input possono essere un tensore composto da vari tipi di dati, che viene elaborato dall'operatore per emettere un output che viene inviato al nodo di calcolo successivo. Il relatore osserva inoltre che gli operatori sono essenziali in ONNX poiché mappano il tipo di operatore ONNX con il framework o il toolkit di livello superiore, semplificando l'interpretazione del modello e la mappatura della struttura del grafico di alto livello sull'operatore effettivo disponibile all'interno di ONNX.

  • 00:30:00 In questa sezione, il video illustra gli operatori personalizzati e come possono essere definiti all'interno di ONNX. Gli operatori personalizzati sono utili per gli utenti avanzati che stanno creando le proprie funzioni o tecniche di attivazione che non sono incluse negli operatori ONNX disponibili. Gli operatori personalizzati possono quindi essere utilizzati per esportare un modello da un livello di framework in ONNX. Il video mostra quindi una demo di base dell'utilizzo di ONNX per convertire un modello addestrato da scikit-learn in formato ONNX utilizzando il convertitore specifico per ONNX.

  • 00:35:00 In questa sezione, il relatore sottolinea la trasparenza e l'interpretabilità del formato ONNX, che consente una facile analisi ed esplorazione della struttura del modello. Il modello ONNX può anche essere esportato in protobuf, consentendo l'iterazione programmatica sui nodi disponibili nel modello. Il video mostra l'inferenza usando un modello esistente e il codice mostra come inviare dati di input per l'inferenza, che restituisce una matrice numpy con la classificazione per ogni elemento nei dati di input. Uno dei vantaggi di ONNX è che è disaccoppiato da Escalon, quindi non devi preoccuparti della provenienza del modello, semplificando l'utilizzo del modello. Il formato ONNX è simile ai file DLL o jar, poiché non è necessario preoccuparsi del linguaggio di programmazione in cui è stato scritto prima del consumo, rendendolo flessibile e versatile.

  • 00:40:00 In questa sezione, il relatore parla del formato file ONNX e del runtime ONNX. ONNX è un formato portatile e indipendente che definisce il grafico e gli operatori di un modello in una specifica ben definita. Il runtime ONNX, d'altra parte, è un progetto guidato e sostenuto da Microsoft. È un progetto diverso da ONNX e porta la promessa di ONNX al livello successivo creando il runtime effettivo. Microsoft sta scommettendo molto sul runtime ONNX poiché sta diventando il livello de facto per il minimo in Windows 10. Il relatore spiega la relazione tra il runtime ONNX e ONNX attraverso una rappresentazione visiva dei loro livelli.

  • 00:45:00 In questa sezione, il relatore discute la promessa del runtime ONNX, che astrae l'hardware sottostante, rendendolo facile da usare con diversi hardware e ottimizzatori. ONNX utilizza i provider di esecuzione tramite un modello plug-in, che può essere creato dai fornitori di hardware per interfacciarsi con i driver e le librerie esistenti, rendendo il runtime estremamente portabile. Microsoft ha pubblicato numerosi benchmark che dimostrano che il runtime ONNX è altamente performante e molti team di prodotto all'interno di Microsoft lo stanno ora adottando come runtime di deep learning preferito, da Bing a Office 365 ai servizi cognitivi. Il relatore passa quindi a descrivere i quattro modi per ottenere modelli ONNX che è possibile eseguire sul runtime ONNX, a partire da Model Zoo e terminando con l'uso di Azure ml per addestrare e distribuire il modello nel cloud o nell'edge.

  • 00:50:00 In questa sezione, il relatore illustra come scaricare un modello ONNX preaddestrato dallo zoo modello e utilizzarlo per l'inferenza. La demo prevede un modello EMNIST ONNX preaddestrato scaricato dallo zoo modello e immagini di prova di cifre scritte a mano utilizzate per l'inferenza. Il relatore esamina il codice e spiega i passaggi di pre-elaborazione necessari prima di inviare i dati di input al modello ONNX. Il codice usa le librerie ONNX runtime, NumPy e OpenCV e l'output finale sono i valori delle cifre previsti. Il presentatore dimostra che il modello è accurato e può identificare correttamente le cifre scritte a mano.

  • 00:55:00 In questa sezione, il relatore dimostra come eseguire l'inferenza finale in un caso d'uso molto reattivo in cui l'addestramento viene eseguito utilizzando la torcia PI e l'inferenza viene eseguita in TensorFlow. Il relatore mostra come convertire un modello di torcia PI in un modello ONNX e poi ulteriormente in un file protobuf che può essere utilizzato direttamente in TensorFlow. Il codice è semplice e la conversione viene eseguita tramite uno strumento di esportazione integrato disponibile in Pytorch.

  • 01:00:00 In questa sezione, il relatore spiega come convertire un modello ONNX in un formato TensorFlow. Questo viene fatto semplicemente importando ONNX e utilizzando la funzione "prepare" dal "backend ONNX TF" per caricare il modello, quindi scrivendo l'output in un file ".pb". Il relatore dimostra che il modello TensorFlow può quindi essere utilizzato per l'inferenza, senza fare alcun riferimento a ONNX. La sessione si conclude con una nota sui prossimi articoli su ONNX da parte del relatore su The New Stack, dove saranno disponibili tutorial e tutto il codice sorgente.

    01:05:00
    Questa sezione non contiene alcuna informazione su ONNX, ma serve piuttosto come conclusione di un webinar sull'argomento. Il relatore ringrazia il pubblico per la partecipazione e il supporto e annuncia che il video registrato del webinar verrà presto caricato. Al pubblico viene chiesto di valutare la pertinenza e la qualità del webinar, con la maggior parte degli intervistati che fornisce un feedback positivo. Il relatore conclude annunciando un altro prossimo webinar sul runtime delle applicazioni distribuite di Microsoft, che si terrà il mese prossimo.
Everything You Want to Know About ONNX
Everything You Want to Know About ONNX
  • 2020.07.12
  • www.youtube.com
Open Neural Network Exchange (ONNX) is an open format built to represent machine learning models. It defines the building blocks of machine learning and deep...
 

Runtime ONNX e ONNX



Runtime ONNX e ONNX

L'ecosistema ONNX è un formato standard interoperabile che converte i modelli di qualsiasi framework in un formato di rappresentazione del modello uniforme ottimizzato per ogni destinazione di distribuzione. L'implementazione ONNX Runtime dello standard ONNX è multipiattaforma e modulare, con supporto dell'acceleratore hardware. I diversi livelli di ottimizzazione su cui lavorano i trasformatori includono la trasformazione del grafico, il partizionamento del grafico e l'assegnazione. I relatori discutono anche dei vari vantaggi dell'utilizzo di ONNX come l'API C, la stabilità dell'API per sfruttare i nuovi vantaggi in termini di prestazioni senza preoccuparsi di interrompere la compatibilità binaria e lo strumento ONNX Go Live che può essere utilizzato per determinare la configurazione ottimale per l'esecuzione di un modello ONNX su hardware diverso. Confrontano anche ONNX con i framework e toccano la compatibilità multipiattaforma.

  • 00:00:00 In questa sezione, Ton of Sharma, del team ONNX Runtime, fornisce un'introduzione e un sondaggio sull'ecosistema ONNX, spiegandone le motivazioni e l'adozione diffusa in Microsoft, insieme al design tecnico sia per ONNX che per ONNX Runtime. Sottolinea i problemi di diversi team che utilizzano framework diversi per addestrare i propri modelli, ma quando si tratta di distribuire modelli in produzione e utilizzare l'hardware al massimo, ONNX si trova nel mezzo e converte i modelli da qualsiasi framework in un formato di rappresentazione del modello uniforme, ottimizzato per ogni destinazione di distribuzione, rendendolo un formato standard interoperabile. Il progetto open-source è stato avviato a dicembre 2017, con Facebook, Microsoft e Amazon tra i primi ad aderire al consorzio, che ora conta più di 40-50 aziende che partecipano attivamente e investono nell'ONNX.

  • 00:05:00 In questa sezione, il relatore discute i diversi modi per ottenere un modello ONNX una volta che un modello è stato addestrato nel framework desiderato, ad esempio utilizzando ONNX Model Zoo, lo strumento Azure Custom Vision AutoML o la conversione open source strumenti per convertire un modello in un formato specifico in ONNX. Il runtime ONNX, che è l'implementazione dello standard ONNX, viene introdotto come un modo per eseguire il modello ONNX il più velocemente possibile sul dispositivo desiderato o sulla destinazione di distribuzione. È estensibile, modulare e multipiattaforma, con supporto di acceleratori hardware integrato di vari fornitori come Tensor RT e Intel MKL DNN. L'ultima versione, ONNX Runtime 1.0, ha il supporto completo per la specifica ONNX ed è la libreria di base in esecuzione nel framework Windows Machine Learning.

  • 00:10:00 in questa sezione, il relatore parla dell'implementazione di ONNX dopo averlo compilato in un formato JET utilizzando LLVM e TVM come framework sottostanti. Hanno pubblicato punti di riferimento e notebook per la distribuzione di ONNX su vari tipi di dispositivi, tra cui il servizio di apprendimento automatico di Azure, i cloud perimetrali e i dispositivi IoT perimetrali, che fa parte della loro pianificazione per la piattaforma MNIST. ML minimal e ML dotnet di Microsoft supportano già ONNX e finora hanno circa 60+ modelli ONNX in produzione con una media di 3 volte il miglioramento delle prestazioni. I principi di progettazione di ONNX dovevano essere interoperabili, compatti, multipiattaforma, compatibili con le versioni precedenti e supportare sia il carico profondo che i tradizionali modelli di machine learning.

  • 00:15:00 In questa sezione, il relatore discute le tre parti della specifica ONNX, a partire dalla rappresentazione del grafico del flusso di dati stesso. Spiega che la rappresentazione può essere estesa e possono essere aggiunti nuovi operatori e tipi. La seconda parte è la definizione dei tipi standard e degli attributi memorizzati nel grafico, mentre la terza parte è lo schema per ogni operatore nel modello ONNX. Il formato del file del modello si basa su protobuf, che è facilmente ispezionabile, e include la versione, i metadati e il grafico di calcolo aciclico, costituito da input, output, nodi di calcolo e nome del grafico. Sono supportati tipi tensoriali, tipi complessi e non tensoriali come sequenze e mappe. Il set di operatori ONNX include circa 140 operatori e chiunque può aggiungere altri operatori inviando una richiesta pull al repository GitHub open source ONNX.

  • 00:20:00 In questa sezione, il relatore discute le capacità di ONNX, inclusa la possibilità di aggiungere operazioni personalizzate che potrebbero non essere supportate dalle operazioni esistenti di ONNX. Il relatore parla anche dell'importanza del controllo delle versioni e di come ONNX incorpori il controllo delle versioni a tre diversi livelli, tra cui la versione IR, la versione del set OP e la versione dell'operatore. Viene discusso anche il runtime ONNX, i cui obiettivi primari sono le prestazioni, la compatibilità con le versioni precedenti e successive, la compatibilità multipiattaforma e l'esecuzione ibrida dei modelli. Il runtime include un'architettura collegabile per l'aggiunta di acceleratori hardware esterni.

  • 00:25:00 In questa sezione, il relatore spiega le due fasi dell'esecuzione di un modello all'interno di ONNX Runtime, ovvero la creazione di una sessione con il modello e il caricamento del modello, seguite dalla chiamata delle API di esecuzione. Al caricamento del modello, viene creata una rappresentazione grafica inefficiente del protobuf, quindi il grafico passa attraverso diversi livelli di trasformazioni grafiche, simili alle ottimizzazioni del compilatore. ONNX Runtime fornisce diversi livelli di regole di trasformazione del grafico e fusioni che possono essere personalizzate e l'utente può aggiungere le proprie regole tramite l'API. Una volta che il grafico è stato ottimizzato, viene partizionato in diversi acceleratori hardware e ogni nodo viene assegnato a un acceleratore specifico. L'oratore tocca anche la parte esecutiva e menziona le due modalità di funzionamento, la modalità sequenziale e la modalità di esecuzione parallela. Infine, il relatore parla del lavoro futuro di ONNX Runtime nel dire all'utente su quali provider eseguire.

  • 00:30:00 In questa sezione, il relatore spiega i dettagli sull'ottimizzazione nel runtime ONNX. La trasformazione del grafico, il partizionamento del grafico e l'assegnazione sono i diversi livelli di ottimizzazione su cui lavorano i trasformatori per riscrivere il grafico. La sessione e l'esecuzione sono la doppia API del runtime ONNX che carica e ottimizza il modello per renderlo pronto per l'esecuzione con una semplice chiamata alla funzione run. Il relatore parla anche del provider di esecuzione, che è l'interfaccia dell'acceleratore hardware del runtime ONNX e di come i fornitori possono aggiungere un nuovo acceleratore hardware implementando un'API del provider di esecuzione. Infine, il relatore menziona i molteplici punti di estensione del runtime ONNX, come l'aggiunta di nuovi provider di esecuzione o operazioni personalizzate e l'estensione del livello delle fusioni.

  • 00:35:00 In questa sezione, il relatore discute i vantaggi dell'utilizzo dell'API C in ONNX Runtime, inclusa la stabilità dell'API che consente agli utenti di sfruttare i nuovi vantaggi in termini di prestazioni senza preoccuparsi di interrompere la compatibilità binaria. Spiega anche lo strumento ONNX Go Live che può essere utilizzato per determinare la configurazione ottimale per l'esecuzione di un modello ONNX su hardware diverso. Il relatore tocca quindi le funzionalità imminenti, tra cui il supporto per N in API su dispositivi Android, Qualcomm e l'ottimizzazione della formazione, oltre alle continue ottimizzazioni delle prestazioni per far funzionare ONNX Runtime il più velocemente possibile.

  • 00:40:00 In questa sezione del video, i relatori si concentrano sull'importanza di ottimizzare le operazioni all'interno di un determinato operatore (OP) per garantire che funzioni il più velocemente possibile. Confrontano ONNX con i framework, tentando di identificare se funziona meglio o meno rispetto ai suoi predecessori. I relatori discutono anche di come funziona la formazione, osservando che sebbene ci stiano lavorando, la formazione alla fonte non è ancora completa. Rispondono anche a domande su cosa produce il formato ONNX e che tipo di formati può gestire, come le stringhe. Si discute dell'impatto di Microsoft sulla progettazione di ONNX Runtime come prodotto di selezione, che attualmente manca di una modalità di governance aperta ed è in definitiva controllato da Microsoft, sebbene continuino ad accogliere contributi esterni. L'oratore tocca anche la compatibilità multipiattaforma, osservando che il runtime è progettato per Linux, Windows e Mac.
ONNX and ONNX Runtime
ONNX and ONNX Runtime
  • 2019.12.06
  • www.youtube.com
What is the universal inference engine for neural networks?Tensorflow? PyTorch? Keras? There are many popular frameworks out there for working with Deep Lear...
 

ONNX - ONNX Runtime, semplice esempio



ONNX - ONNX Runtime, semplice esempio

In questo video di YouTube, il relatore presenta ONNX, un formato aperto per i modelli di machine learning in grado di ottimizzare le prestazioni su più framework. Il video fornisce esempi di utilizzo di ONNX in diversi scenari, come l'analisi del sentiment di articoli di notizie e la conversione di classificatori vettoriali numerici in reti neurali. Il relatore sottolinea l'importanza di utilizzare librerie consolidate per le funzioni e misurare accuratamente il tempo di esecuzione per il codice. Inoltre, il relatore discute le sfide dello sviluppo su diversi sistemi operativi e consiglia di caricare solo i moduli necessari per migliorare le prestazioni di runtime. Nel complesso, questo video fornisce preziose informazioni sui vantaggi e sulle sfide dell'utilizzo di ONNX per i modelli di machine learning.

  • 00:00:00 In questa sezione, il relatore descrive ONNX, un formato aperto per i modelli di machine learning che può essere utilizzato in vari framework per ottimizzare le prestazioni dei modelli. ONNX si basa sul buffer di protocollo, che è un formato binario analogico del formato XML ma più veloce e più adatto per messaggi più piccoli. I modelli ONNX possono essere sviluppati in un unico sistema operativo e processore e utilizzati ovunque, inclusi dispositivi mobili e schede grafiche. Il runtime ONNX è una libreria per l'accelerazione multipiattaforma dell'addestramento e dell'inferenza del modello. ONNX consente inoltre la quantizzazione del modello per ridurne le dimensioni senza utilizzare l'accelerazione hardware e l'eliminazione di un modello per ridurne le dimensioni sostituendo alcuni dei suoi valori di peso con valori zero. Il relatore include un collegamento ai siti Web in cui è possibile trovare ulteriori informazioni su ONNX.

  • 00:05:00 In questa sezione, il relatore illustra i passaggi necessari per lavorare con un modello preaddestrato in formato ONNX utilizzando ONNX Runtime. Il modello può essere creato utilizzando qualsiasi framework, salvato in formato ONNX e quindi utilizzato in vari modi, ad esempio su un server meno potente o per gestire carichi di server pesanti. L'oratore fornisce quindi un esempio dell'utilizzo della libreria del trasformatore Hugging Face per determinare il sentimento degli articoli di notizie relativi alla criptovaluta. Infine, il relatore dimostra un'applicazione del modello caricando ed elaborando le librerie necessarie e mostrando il risultato dell'esecuzione del modello su un articolo di notizie di esempio.

  • 00:10:00 In questa sezione, il relatore discute il processo di conversione di un classificatore vettoriale numerico per produrre risultati da una rete neurale, utilizzando il framework ONNX. Spiegano che la funzione SoftMax non è stata utilizzata in quanto ha rallentato in modo significativo il processo e sono stati invece utilizzati i valori inseriti manualmente. Il modello è stato quindi caricato e testato per verificarne l'accuratezza, mostrando risultati promettenti. Tuttavia, sono state riscontrate difficoltà con l'installazione su diversi sistemi operativi e framework, evidenziando la necessità di test approfonditi e flessibilità nella distribuzione dei modelli.

  • 00:15:00 In questa sezione, il relatore discute i potenziali problemi che possono sorgere quando si tenta di sviluppare software su piattaforme diverse e l'importanza di utilizzare librerie consolidate piuttosto che provare a implementare tutto manualmente. Menziona i problemi con l'utilizzo di diversi formati in virgola mobile e come ciò possa portare a errori quando si tenta di lavorare con numeri molto grandi o molto piccoli. Inoltre, suggerisce di utilizzare implementazioni preesistenti di funzioni come SoftMax piuttosto che provare a crearne di personalizzate, poiché gli sviluppatori di librerie consolidate hanno già affrontato i potenziali problemi che potrebbero sorgere.

  • 00:20:00 In questa sezione, l'oratore discute i problemi incontrati durante lo sviluppo su MacOS e le differenze tra MacOS e Linux. Menziona anche la necessità di caricare solo i moduli necessari disabilitando il resto per migliorare le prestazioni di runtime, poiché il caricamento di troppi moduli potrebbe influire in modo significativo sul tempo di esecuzione. Il relatore consiglia inoltre di utilizzare l'utilità "timeet" per misurare accuratamente il tempo di esecuzione, tenendo conto dei vari fattori che possono influire sulle prestazioni.

  • 00:25:00 In questa sezione del video, il relatore discute l'importanza di misurare il tempo di esecuzione del codice, in particolare per confrontare le prestazioni di diverse parti di codice. Sottolineano la necessità di misurare il tempo di esecuzione più volte e prendere la media per una valutazione più accurata. L'oratore utilizza quindi questo approccio per confrontare le prestazioni di due parti di codice con diversi modi di gestire i dati, il che ha dimostrato che un metodo era significativamente più veloce dell'altro. Infine, il relatore fornisce un link alla sua presentazione e ringrazia il pubblico per la sua partecipazione.
ONNX - ONNX Runtime, простой пример.
ONNX - ONNX Runtime, простой пример.
  • 2023.01.25
  • www.youtube.com
Доклад об использовании ONNX моделей. Подготовлен в рамках курса от ods.ai ML System Design. Рассмотрен простой пример https://github.com/lunaplush/onnx_exam...
 

Una panoramica del convertitore PyTorch-ONNX



Una panoramica del convertitore PyTorch-ONNX

In questa panoramica, Bowen Bao di Microsoft presenta il convertitore PyTorch-ONNX, spiegandone l'architettura e il flusso per convertire un modello PyTorch nella rappresentazione intermedia della torcia (IR) e quindi nell'IR ONNX e, infine, in un file Protobuf. Il convertitore gestisce l'esportazione di modelli con forme dinamiche, modelli quantificati e acquisisce loop, istruzioni if e altre operazioni tramite loop ONNX e nodi if ONNX. Inoltre, gli utenti possono creare operatori personalizzati o utilizzare operatori PyTorch personalizzati esistenti per esportare un modello ONNX o registrare una funzione simbolica personalizzata per indicare all'esportatore come esportarlo. Bowen spiega anche la funzione locale ONNX, affronta la precisione mista tramite autocast e conclude con i piani per continuare a supportare più modelli migliorando al contempo la diagnosi dei guasti.

  • 00:00:00 In questa sezione, Bowen, un ingegnere del software di Microsoft, fornisce una panoramica del convertitore PyTorch-ONNX, inclusa la sua architettura e il suo flusso. Il convertitore, che fa parte del pacchetto PyTorch, utilizza il tracciatore torcia e lo script torcia per convertire un modello PyTorch nella rappresentazione intermedia torcia (IR) e quindi nell'IR ONNX. Il passaggio finale prevede la serializzazione in un modello ONNX in un file Protobuf. Il convertitore supporta l'esportazione di modelli con forme dinamiche di input e output, nonché modelli quantificati, e può acquisire loop, istruzioni if e altre operazioni tramite loop ONNX e nodi if ONNX. Inoltre, gli utenti possono creare operatori personalizzati o utilizzare PyTorch personalizzato esistente
    operatori per esportare un modello ONNX o registrare una funzione simbolica personalizzata per indicare all'esportatore come esportarlo. Infine, Bowen spiega la motivazione alla base della funzione locale ONNX.

  • 00:05:00 In questa sezione, l'attenzione è rivolta al convertitore PyTorch-ONNX e ad alcune lamentele comuni relative al modello ONNX esportato, come i nodi appiattiti. Per risolvere questo problema, è stata aggiunta una funzionalità di funzione locale che consente agli utenti di specificare una classe di modulo Torch o una funzione di tipo di nodo. La precisione mista è supportata anche attraverso l'uso di Torch autocast e NVIDIA Apex mp. Il video si conclude con una discussione sul miglioramento della diagnosi dei guasti e sull'obiettivo di continuare a supportare più modelli. I collegamenti forniti offrono risorse e strumenti utili per coloro che utilizzano il convertitore PyTorch-ONNX.
 

Introduzione a ONNX | Tutorial-1 | Scambio di reti neurali aperte | ONNX



Introduzione a ONNX | Tutorial-1 | Scambio di reti neurali aperte | ONNX

Questo tutorial fornisce un'introduzione a ONNX, che è un framework di apprendimento automatico intermedio che converte i modelli esistenti da un framework a un altro. Il corso copre le sfide affrontate nel deep learning, una panoramica di ONNX e una discussione sul runtime ONNX. L'istruttore dimostra esempi pratici di conversione di modelli con ONNX e condivide un caso d'uso reale di conversione di un modello Python in un modello TensorFlow. È richiesta familiarità con la programmazione Python, le basi dell'apprendimento automatico e framework come PyTorch, TensorFlow e Scikit-learn.

Motivazione: