Estudiamos ONNX para aplicarlo al trading

 

Hemos añadido el soporte para modelos ONNX a MQL5, ya que consideramos que este es el futuro. Así que, en este tema, ofrecemos al lector comenzar la discusión y el estudio de una tendencia prometedora que permitirá elevar a un nuevo nivel el uso del aprendizaje automático. Y es que ahora podrá entrenar sus modelos en su entorno preferido y luego comenzar a comerciar con el mínimo esfuerzo.


Una pequeña panorámica de la tecnología

ONNX (Open Neural Network Exchange) es un estándar abierto para intercambiar modelos de aprendizaje automático entre diferentes marcos de trabajo. Fue desarrollado conjuntamente por Microsoft, Facebook y Amazon Web Services (AWS) para facilitar el desarrollo y la implementación de modelos de aprendizaje automático.

Las principales ventajas de ONNX son:

  • Interoperabilidad: el estándar permite el intercambio de modelos entre diferentes marcos de trabajo como TensorFlow, PyTorch, Caffe2, MXNet y otros. Esto simplificará el proceso de desarrollo e implementación de modelos.
  • Optimización: la tecnología ofrece operaciones optimizadas y gráficos computacionales para mejorar el rendimiento del modelo y reducir los costos computacionales.
  • Estandarización: ONNX ofrece un formato único para serializar y almacenar modelos de aprendizaje automático. Esto simplificará el intercambio de modelos entre desarrolladores y organizaciones.
  • Ecosistema: está respaldado por muchas bibliotecas, herramientas y hardware que ayudará a difundir y acelerar la innovación del aprendizaje automático.
  • Carácter abierto: el proyecto supone un estándar abierto con una comunidad activa,  y creemos que no hará más que expandirse. Le proponemos desarrollarlo juntos.


Para usar ONNX, los desarrolladores podrán exportar sus modelos desde varios marcos de trabajo como TensorFlow o PyTorch al formato ONNX. Luego, estos modelos podrán integrarse en los programas MQL5 y ejecutarse directamente en el terminal MetaTrader 5. Nadie más ofrece esta posibilidad.

Una de las herramientas más populares para convertir modelos al formato ONNX es ONNXMLTools de Microsoft.  La instalación de ONNXMLTools es simple y se describe en la página del proyecto https://github.com/onnx/onnxmltools#install, también se ofrecen algunos ejemplos de conversión de modelos.

Para ejecutar un modelo entrenado, se usa ONNX Runtime.  ONNX Runtime es una biblioteca multiplataforma de alto rendimiento para ejecutar modelos de aprendizaje automático exportados en formato ONNX.   Con ONNX, los desarrolladores podrán crear modelos en un marco de trabajo y luego implementarlos fácilmente en otras plataformas, ofreciendo flexibilidad y simplificando el proceso de desarrollo.

Por lo tanto, ONNX supone una poderosa herramienta para desarrolladores e investigadores en el campo del aprendizaje automático. Aproveche estas oportunidades para realizar desarrollos de forma eficiente e implementarlos en el trading de la manera más sencilla: utilizando MQL5.

Busque información y nuevos enfoques para trabajar con modelos de aprendizaje automático y compártalos aquí con otros miembros de la comunidad MQL5. Hemos encontrado para usted algunos materiales útiles sobre este tema, esperamos que le sirvan de ayuda para asimilar rápidamente esta nueva tecnología tan prometedora.

ONNXMLTools
ONNXMLTools
  • 2022.12.02
  • QuinnRadich
  • learn.microsoft.com
Aprenda a usar ONNXMLTools para convertir modelos de diferentes kits de herramientas de aprendizaje automático en ONNX.
 

1. ONNX Runtime



Aquí se habla sobre el proyecto Open Neural Network Exchange (ONNX), que es un formato abierto para presentar modelos tradicionales y de aprendizaje profundo.  También se describe ONNX Runtime, un motor de alto rendimiento para ejecutar estos modelos.

ONNX Runtime cumple totalmente con los operadores definidos en las especificaciones de ONNX y se ejecuta tanto en la CPU como en la GPU en muchas plataformas, incluidas Linux, Windows y Mac.

Asimismo, ofrece una guía paso a paso para convertir, cargar e iniciar un modelo usando ONNX Runtime en Azure ML y muestra sus potenciales ventajas, incluida la ejecución mejorada y el rendimiento de predicción para varios modelos.

También se recomienda probar ONNX y contribuir a la creciente comunidad de ONNX.

 

2. Converting Models to #ONNX Format



Describe varias formas de convertir modelos de aprendizaje automático al formato ONNX para su uso con ONNX Runtime.  ONNX es compatible con muchas bibliotecas populares de aprendizaje automático, tales como PyTorch, TensorFlow y Scikit-Learn.

Para convertir un modelo al formato ONNX, deberemos usar la biblioteca de conversión adecuada y luego crear un modelo ONNX usando dicha biblioteca.  Esto nos permitirá utilizar un modelo con ONNX Runtime, lo cual mejorará su rendimiento y lo hará compatible con múltiples plataformas.

Asimismo, se ofrecen ejemplos de conversión de modelos al formato ONNX utilizando PyTorch y TensorFlow.

Evaluación y selección de variables en modelos de aprendizaje de máquinas
Evaluación y selección de variables en modelos de aprendizaje de máquinas
  • www.mql5.com
Este artículo se centra en aspectos específicos relacionados con la elección, los prerrequisitos y la evaluación de las variables de entrada (predictores) de los modelos de aprendizaje de máquinas. Vamos a plantear nuevos enfoques, y también expondremos las oportunidades que ofrece el análisis predictivo profundo, así como la influencia que tiene en el sobreajuste de los modelos. El resultado general de los modelos depende en gran medida del resultado de esta etapa. Analizaremos dos paquetes que ofrecen enfoques nuevos y originales para seleccionar predictores.
 

4.  (Deep) Machine Learned Model Deployment with ONNX



Luego describe el desarrollo de una biblioteca de aprendizaje automático de código abierto de Microsoft publicada en GitHub.

El autor explica un problema de implementación de modelos de aprendizaje automático donde el modelo se construye en una máquina grande con gigabytes de memoria, pero que se utiliza en condiciones muy diferentes que requieren la optimización para realizar una predicción cada vez.

El autor muestra el rendimiento de varias bibliotecas como scikit-learn, XGBoost y ML.NET y enseña que la diferencia de rendimiento disminuye a medida que aumenta el tamaño del paquete. El autor también presenta ONNX como una solución de optimización para dichos casos.

 

3.  ONNX – open format for machine learning models​



Aquí se habla sobre el formato ONNX, que es un formato abierto de almacenamiento de modelos de aprendizaje automático .  Así, resulta posible convertir modelos de varios marcos de trabajo al formato ONNX, lo cual garantiza su compatibilidad y facilidad de uso.

Además, se ofrecen ejemplos de formatos compatibles, como TensorFlow, PyTorch, Keras y scikit-learn, y se analizan las ventajas del uso de ONNX, como un tiempo de ejecución de modelo más rápido y un rendimiento optimizado en hardware específico.

En el siguiente vídeo, el autor promete mostrar cómo convertir un modelo de Keras al formato ONNX y probarlo usando el ejemplo de clasificación de imágenes y problemas de segmentación de imágenes.

 

4. Implementación (profunda) del modelo de aprendizaje automático con ONNX



PyParis 2018 - Implementación de modelo de aprendizaje automático (profundo) con ONNX

El orador en el video de PyParis 2018 analiza los desafíos de implementar modelos de aprendizaje automático, incluidos los tiempos de predicción variables en bibliotecas comunes como scikit-learn y XGBoost. Presentan ML.NET, una biblioteca de aprendizaje automático de código abierto desarrollada por Microsoft y lanzada recientemente con el tiempo de ejecución ONNX, que puede ofrecer una mayor precisión en ciertos casos, pero es más lenta que otras bibliotecas. El orador también demuestra el tiempo de ejecución de ONNX y explica que reduce el tiempo de producción a la mitad para los modelos MobileNet y SqueezeNet. ONNX está diseñado no solo para llevar los modelos a la producción, sino también para almacenar metadatos para rastrear el rendimiento del modelo y se puede ejecutar en cualquier lugar debido a que es independiente de la plataforma.

  • 00:00:00 En esta sección, el orador analiza los desafíos en la implementación de modelos de aprendizaje automático, específicamente cuando se usan en condiciones diferentes a las del entrenamiento. Demuestra cómo las bibliotecas comunes como scikit-learn y XGBoost tienen tiempos de predicción variables y presenta ML.NET, una biblioteca de aprendizaje automático de código abierto desarrollada por Microsoft y lanzada recientemente con el tiempo de ejecución ONNX. El orador mide el tiempo de predicción de ML.NET y muestra que es más lento que otras bibliotecas, pero puede ofrecer una mayor precisión en ciertos casos.

  • 00:05:00 En esta sección, el ponente habla sobre las métricas de rendimiento obtenidas a través de una notebook con c-sharp y Python. El cuaderno muestra el rendimiento de diferentes bibliotecas, como Cyclone, GBM ML y Trees. El orador también demuestra cómo la predicción por lotes ayuda a reducir el tiempo promedio dedicado a predecir posiciones. Luego, la discusión continúa para describir la canalización del modelo de aprendizaje automático y cómo ONNX ayuda a describir la canalización utilizando un lenguaje mínimo. ONNX proporciona un formato común para volcar el modelo basado en el producto de Google y es compatible con Microsoft y Facebook. El orador concluye afirmando que el método de entrenamiento requiere mala predicción, buena memoria y gran cantidad de datos, mientras que para predecir una posición, se desea poca memoria y buena predicción.

  • 00:10:00 En esta sección, el orador demuestra el tiempo de ejecución de ONNX, que significa intercambio de redes neuronales abiertas. Mediante el uso de un archivo XML para convertir modelos, el tiempo de ejecución de ONNX pudo reducir el tiempo de producción a la mitad para los modelos MobileNet y SqueezeNet. El zoológico modelo todavía es inestable en este punto, pero eventualmente se estabilizará en unos meses. Mientras tanto, se cubren los modelos estándar de aprendizaje automático y las transformaciones que están disponibles en Python y Keras, ya que ONNX está disponible en Python y no habrá otras dependencias para ejecutar el modelo.

  • 00:15:00 En esta sección, el orador explica que ONNX fue diseñado no solo para llevar los modelos a la producción, sino también para almacenar metadatos que se pueden usar para rastrear el rendimiento del modelo. El orador también menciona que ONNX es una biblioteca que se puede ejecutar en cualquier lugar porque es independiente de la plataforma. El modelo ONNX está optimizado y se hace más pequeño usando Google+ para la serialización, y solo contiene coeficientes. En respuesta a las preguntas, el orador explica que Microsoft está adoptando ONNX y se está utilizando para mejorar el tiempo de predicción, y el orador cree que seguirá siendo ampliamente utilizado.
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. Recurrent Neural Networks | LSTM Price Movement Predictions For Trading Algorithms


El video analiza el uso de redes neuronales recurrentes, en concreto, de redes LSTM, para predecir movimientos de precio en mercados financieros como FOREX, acciones y criptomonedas.

El algoritmo está escrito en Python y se puede descargar para experimentar cambiando los parámetros del algoritmo.

El aprendizaje profundo tiene fama como un excelente algoritmo predictivo, aquí lo probaremos en el comercio y en la predicción de movimientos de precio.  También se han añadido indicadores técnicos como el indicador de fuerza relativa RSI y las medias móviles MA para ampliar los datos de entrada para el modelo comercial.

 

Todo lo que quieres saber sobre ONNX




Todo lo que quieres saber sobre ONNX

El formato ONNX tiene como objetivo abordar los desafíos presentados por el conjunto fragmentado de herramientas y marcos en el entorno de aprendizaje profundo al proporcionar un formato de archivo portátil que permite exportar modelos de un marco a otro. Es muy transparente y está bien documentado, estandariza la sintaxis, la semántica y las convenciones utilizadas en el dominio del aprendizaje profundo, y es compatible tanto con el aprendizaje profundo como con los modelos tradicionales de aprendizaje automático. ONNX permite la interoperabilidad, la eficiencia y la optimización en diversos entornos de hardware sin optimización o conversión manual. El video muestra una demostración básica de cómo convertir un modelo entrenado de scikit-learn al formato ONNX usando el convertidor específico de ONNX y demuestra cómo realizar la inferencia final en un caso de uso reactivo donde el entrenamiento se realiza con PI torch y la inferencia se realiza en TensorFlow.

El seminario web concluye con una demostración de cómo convertir un modelo ONNX a un formato TensorFlow mediante la función "preparar" del "backend ONNX TF" y guardar el resultado como un archivo ".pb". El orador señala que el modelo TensorFlow se puede usar para la inferencia sin hacer ninguna referencia a ONNX. Se agradece a la audiencia y el orador anuncia los próximos artículos sobre ONNX en The New Stack, junto con otro próximo seminario web sobre el tiempo de ejecución de aplicaciones distribuidas de Microsoft. Los comentarios de los asistentes fueron positivos.

  • 00:00:00 Si está luchando con las complejidades del aprendizaje automático y el aprendizaje profundo debido a la fragmentación y el conjunto distribuido de herramientas y marcos, ONNX podría ser la solución que necesita. En una sección de un seminario web, el orador explica los desafíos actuales que enfrenta el entorno de aprendizaje profundo y cómo ONNX puede abordarlos. Suponiendo una familiaridad general con el aprendizaje automático y el aprendizaje profundo, la discusión proporciona una descripción detallada de las promesas que ofrecen tanto ONNX como el tiempo de ejecución de ONNX. Al final de esta sección, se presenta a la audiencia la idea de la convergencia de la inteligencia artificial y la infraestructura moderna, que es un tema recurrente a lo largo de la serie de seminarios web.

  • 00:05:00 En esta sección, el orador analiza los desafíos del aprendizaje profundo, especialmente en términos de capacitación y producción. Cuando se trata de capacitación, usar un conjunto fragmentado de marcos y conjuntos de herramientas no es fácil, y la infraestructura es esencial cuando se trabaja con GPU para acelerar la capacitación. Además, no se trata solo del hardware, sino también del software, como CUDA y KuDNN para las GPU de NVIDIA y oneDNN para las FPGA de Intel. En el lado de la producción, el modelo entrenado debe optimizarse para el entorno de destino a fin de ofrecer alta precisión y baja latencia, lo que requiere la conversión de tipos de datos y el uso de herramientas como TensorRT. Por lo tanto, el aprendizaje profundo requiere comprender las capas de hardware y software y optimizar el modelo para ofrecer el rendimiento deseado.

  • 00:10:00 En esta sección, el orador analiza las diversas herramientas, marcos y entornos de hardware que se requieren para optimizar e implementar modelos de IA de manera efectiva. El orador destaca la necesidad de optimizar y cuantificar el modelo, especialmente para las CPU, y menciona los juegos de herramientas populares como Nvidia T4 y el juego de herramientas OpenVINO de Intel. El orador explica además que los diferentes entornos de hardware requieren diferentes conjuntos de herramientas, como la familia Jetson de Nvidia para la automatización industrial y los casos de uso de IoT, la unidad de procesamiento de visión de Intel para la computación de visión y Edge TPU de Google para el perímetro. El proceso de optimización y despliegue de modelos de IA es un proceso complejo y continuo que implica detectar la deriva, volver a entrenar, optimizar, desplegar y escalar el modelo. El orador enfatiza la importancia de tener una tubería que se encargue de todo este mecanismo de circuito cerrado de manera efectiva.

  • 00:15:00 En esta sección, el orador presenta ONNX como el intercambio de redes neuronales abiertas que actúa como intermediario entre diferentes marcos y entornos de destino que promueven la eficiencia, la optimización y la interoperabilidad. ONNX admite modelos de aprendizaje profundo y aprendizaje automático tradicional y permite exportar e importar modelos de un marco a otro. Además, ONNX admite diversos entornos de hardware sin optimización o conversión manual. El orador señala que desde su inicio en 2017 con los miembros fundadores AWS, Microsoft y Facebook, ONNX ha crecido significativamente con las contribuciones de Nvidia, Intel, IBM, Qualcomm, Huawei, Baidu y más, promoviendo activamente este ecosistema dentro de las plataformas de nube pública. kits de herramientas y tiempos de ejecución. ONNX ha pasado por un cambio significativo en respuesta a los avances en otros marcos y conjuntos de herramientas, haciéndolo compacto, multiplataforma y manteniéndose al día con los últimos desarrollos.

  • 00:20:00 En esta sección, el orador analiza ONNX, un formato de archivo portátil que permite exportar modelos entrenados en un marco o conjunto de herramientas a otro. ONNX está muy inspirado en tiempos de ejecución portátiles como JVM y CLR y proporciona un nivel de abstracción y desacoplamiento de kits de herramientas de nivel superior. Es un formato altamente transparente y bien documentado que estandariza la sintaxis, la semántica y las convenciones utilizadas en el dominio del aprendizaje profundo. ONNX ML también es una extensión que admite el aprendizaje automático tradicional. Cuando un modelo se exporta como ONNX, se convierte en un gráfico de múltiples nodos de computación que representan el modelo completo.

  • 00:25:00 En esta sección, el ponente explica la estructura de los nodos de computación dentro de un gráfico en ONNX. Cada nodo es autónomo y contiene un operador que realiza el cálculo real, junto con los datos de entrada y los parámetros. Los datos de entrada pueden ser un tensor compuesto por varios tipos de datos, que el operador procesa para emitir una salida que se envía al siguiente nodo de cálculo. El orador también señala que los operadores son esenciales en ONNX, ya que mapean el tipo de operador de ONNX con el marco o conjunto de herramientas de nivel superior, lo que facilita la interpretación del modelo y el mapeo de la estructura gráfica de alto nivel para el operador real disponible dentro de ONNX.

  • 00:30:00 En esta sección, el video analiza los operadores personalizados y cómo se pueden definir dentro de ONNX. Los operadores personalizados son útiles para usuarios avanzados que están creando sus propias funciones o técnicas de activación que no están incluidas en los operadores ONNX disponibles. Luego, los operadores personalizados se pueden usar para exportar un modelo desde un nivel de marco a ONNX. Luego, el video muestra una demostración básica del uso de ONNX para convertir un modelo entrenado de scikit-learn al formato ONNX usando el convertidor específico de ONNX.

  • 00:35:00 En esta sección, el ponente destaca la transparencia y la interpretabilidad del formato ONNX, que permite un fácil análisis y exploración de la estructura del modelo. El modelo ONNX incluso se puede exportar a protobuf, lo que permite la iteración programática sobre los nodos disponibles en el modelo. El video demuestra la inferencia utilizando un modelo existente, y el código muestra cómo enviar datos de entrada para la inferencia, lo que devuelve una matriz numérica con la clasificación de cada elemento en los datos de entrada. Uno de los beneficios de ONNX es que está desacoplado de Escalon, por lo que no necesita preocuparse por el origen del modelo, lo que facilita el consumo del modelo. El formato ONNX es similar a los archivos DLL o jar, ya que no necesita preocuparse por el lenguaje de programación en el que se escribió antes de su consumo, lo que lo hace flexible y versátil.

  • 00:40:00 En esta sección, el orador habla sobre el formato de archivo ONNX y el tiempo de ejecución de ONNX. ONNX es un formato portátil e independiente que define el gráfico y los operadores de un modelo en una especificación bien definida. El tiempo de ejecución de ONNX, por otro lado, es un proyecto impulsado y defendido por Microsoft. Es un proyecto diferente de ONNX y lleva la promesa de ONNX al siguiente nivel al crear el tiempo de ejecución real. Microsoft está apostando fuerte por el tiempo de ejecución de ONNX, ya que se está convirtiendo en la capa de facto para mínimos en Windows 10. El orador explica la relación entre ONNX y el tiempo de ejecución de ONNX a través de una representación visual de sus capas.

  • 00:45:00 En esta sección, el orador analiza la promesa del tiempo de ejecución de ONNX, que abstrae el hardware subyacente, lo que facilita su uso con diferentes hardware y optimizadores. ONNX utiliza proveedores de ejecución a través de un modelo de complemento, que los proveedores de hardware pueden crear para interactuar con sus controladores y bibliotecas existentes, lo que hace que el tiempo de ejecución sea extremadamente portátil. Microsoft ha publicado numerosos puntos de referencia que demuestran que el tiempo de ejecución de ONNX tiene un alto rendimiento y muchos equipos de productos dentro de Microsoft ahora lo están adoptando como su tiempo de ejecución de aprendizaje profundo preferido, desde Bing hasta Office 365 y servicios cognitivos. Luego, el orador continúa describiendo las cuatro formas de obtener modelos de ONNX que puede ejecutar sobre el tiempo de ejecución de ONNX , comenzando con Model Zoo y terminando con el uso de Azure ml para entrenar e implementar el modelo en la nube o en el perímetro.

  • 00:50:00 En esta sección, el presentador analiza cómo descargar un modelo ONNX previamente entrenado del zoológico modelo y usarlo para la inferencia. La demostración incluye un modelo EMNIST ONNX preentrenado descargado del zoológico modelo e imágenes de prueba de dígitos escritos a mano que se usan para la inferencia. El presentador recorre el código y explica los pasos de preprocesamiento necesarios antes de enviar los datos de entrada al modelo ONNX. El código usa las bibliotecas ONNX runtime, NumPy y OpenCV, y el resultado final son los valores de dígitos previstos. El presentador demuestra que el modelo es preciso y puede identificar correctamente los dígitos escritos a mano.

  • 00:55:00 En esta sección, el orador demuestra cómo realizar la inferencia final en un caso de uso muy reactivo donde el entrenamiento se realiza con PI Torch y la inferencia se realiza en TensorFlow. El orador muestra cómo convertir un modelo de antorcha PI en un modelo ONNX y luego en un archivo protobuf que se puede usar directamente en TensorFlow. El código es sencillo y la conversión se realiza a través de una herramienta de exportación integrada disponible en Pytorch.

  • 01:00:00 En esta sección, el ponente explica cómo convertir un modelo ONNX a un formato TensorFlow. Esto se hace simplemente importando ONNX y usando la función "preparar" desde el "backend ONNX TF" para cargar el modelo, luego escribiendo la salida en un archivo ".pb". El orador demuestra que el modelo TensorFlow se puede usar para la inferencia, sin hacer ninguna referencia a ONNX. La sesión finaliza con una nota sobre próximos artículos sobre ONNX por parte del ponente en The New Stack, donde estarán disponibles los tutoriales y todo el código fuente.

    01:05:00
    Esta sección no contiene información sobre ONNX, sino que sirve como conclusión de un seminario web sobre el tema. El ponente agradece a la audiencia por su asistencia y apoyo, y anuncia que próximamente se subirá el video grabado del webinar. Se le pide a la audiencia que califique la relevancia y la calidad del seminario web, y la mayoría de los encuestados dan comentarios positivos. El orador concluye anunciando otro próximo seminario web sobre el tiempo de ejecución de aplicaciones distribuidas de Microsoft, que tendrá lugar el próximo mes.
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...
 

Tiempo de ejecución de ONNX y ONNX



Tiempo de ejecución de ONNX y ONNX

El ecosistema ONNX es un formato estándar interoperable que convierte modelos de cualquier marco en un formato de representación de modelo uniforme optimizado para cada objetivo de implementación. La implementación de ONNX Runtime del estándar ONNX es multiplataforma y modular, con soporte de acelerador de hardware. Los diferentes niveles de optimización en los que trabajan los transformadores incluyen transformación de gráficos, partición de gráficos y asignación. Los oradores también analizan varias ventajas de usar ONNX, como la API C, la estabilidad de la API para aprovechar los nuevos beneficios de rendimiento sin preocuparse por romper la compatibilidad binaria y la herramienta ONNX Go Live, que se puede usar para determinar la configuración óptima para ejecutar un modelo ONNX. en hardware diferente. También comparan ONNX con marcos y abordan la compatibilidad entre plataformas.

  • 00:00:00 En esta sección, Ton of Sharma, del equipo de ONNX Runtime, brinda una introducción y un estudio del ecosistema ONNX, explicando su motivación y adopción generalizada en Microsoft, junto con el diseño técnico para ONNX y ONNX Runtime. Él destaca los problemas de diferentes equipos que usan diferentes marcos para entrenar sus modelos, pero cuando se trata de implementar modelos en producción y usar el hardware al máximo, ONNX se sienta en el medio y convierte los modelos de cualquier marco en un formato de representación de modelo uniforme. optimizado para cada destino de implementación, lo que lo convierte en un formato estándar interoperable. El proyecto de código abierto se inició en diciembre de 2017, con Facebook, Microsoft y Amazon entre los primeros en unirse al consorcio, que ahora cuenta con más de 40-50 empresas que participan activamente e invierten en ONNX.

  • 00:05:00 En esta sección, el orador analiza las diferentes formas de obtener un modelo ONNX una vez que se ha entrenado un modelo en el marco deseado, como usar ONNX Model Zoo, la herramienta Azure Custom Vision AutoML o la conversión de código abierto herramientas para convertir un modelo en un formato específico a ONNX. ONNX Runtime, que es la implementación del estándar ONNX, se presenta como una forma de ejecutar el modelo ONNX lo más rápido posible en el dispositivo deseado o el destino de implementación. Es extensible, modular y multiplataforma, con soporte de acelerador de hardware incorporado de varios proveedores, como Tensor RT e Intel MKL DNN. La última versión, ONNX Runtime 1.0, es totalmente compatible con la especificación ONNX y es la biblioteca principal que se ejecuta en el marco de Windows Machine Learning.

  • 00:10:00 en esta sección, el orador habla sobre la implementación de ONNX después de compilarlo en un formato JET utilizando LLVM y TVM como marcos subyacentes. Han publicado puntos de referencia y cuadernos para implementar ONNX en varios tipos de dispositivos, incluidos el servicio de aprendizaje automático de Azure, las nubes perimetrales y los dispositivos IoT perimetrales, que forman parte de su planificación para la plataforma MNIST. ML minimal y ML dotnet de Microsoft ya son compatibles con ONNX, y hasta el momento tienen alrededor de 60 modelos ONNX en producción con una mejora promedio de rendimiento de 3x. Los principios de diseño de ONNX debían ser interoperables, compactos, multiplataforma, compatibles con versiones anteriores y admitir modelos de aprendizaje automático tradicionales y de carga profunda.

  • 00:15:00 En esta sección, el orador analiza las tres partes de la especificación ONNX, comenzando con la representación del propio gráfico de flujo de datos. Explica que la representación se puede extender y se le pueden agregar nuevos operadores y tipos. La segunda parte es la definición de tipos y atributos estándar almacenados en el gráfico, mientras que la tercera parte es el esquema para cada operador en el modelo ONNX. El formato de archivo del modelo se basa en protobuf, que se puede inspeccionar fácilmente e incluye la versión, los metadatos y el gráfico de cálculo acíclico, que consta de entradas, salidas, nodos de cálculo y nombre del gráfico. Se admiten tipos de tensores, tipos complejos y no tensores, como secuencias y mapas. El conjunto de operadores de ONNX incluye alrededor de 140 operadores, y cualquiera puede agregar más operadores enviando una solicitud de extracción al repositorio GitHub de código abierto de ONNX.

  • 00:20:00 En esta sección, el orador analiza las capacidades de ONNX, incluida la capacidad de agregar operaciones personalizadas que pueden no ser compatibles con las operaciones existentes de ONNX. El orador también habla sobre la importancia del control de versiones y cómo ONNX incorpora el control de versiones en tres niveles diferentes, incluida la versión IR, la versión del conjunto OP y la versión del operador. También se analiza el tiempo de ejecución de ONNX, cuyos objetivos principales son el rendimiento, la compatibilidad con versiones anteriores y posteriores, la compatibilidad entre plataformas y la ejecución híbrida de modelos. El tiempo de ejecución incluye una arquitectura conectable para agregar aceleradores de hardware externos.

  • 00:25:00 En esta sección, el orador explica las dos fases de ejecutar un modelo dentro de ONNX Runtime, que son crear una sesión con el modelo y cargar el modelo, seguido de llamar a las API de ejecución. Al cargar el modelo, se crea una representación gráfica ineficiente del protobuf, y luego el gráfico pasa por diferentes niveles de transformaciones de gráficos, similares a las optimizaciones del compilador. ONNX Runtime proporciona diferentes niveles de reglas de transformación de gráficos y fusiones que se pueden personalizar, y el usuario puede agregar sus propias reglas a través de la API. Una vez que se ha optimizado el gráfico, se particiona en diferentes aceleradores de hardware y cada nodo se asigna a un acelerador específico. El ponente también toca la parte de ejecución y menciona los dos modos de operación, el modo secuencial y el modo de ejecución en paralelo. Finalmente, el orador habla sobre el trabajo futuro de ONNX Runtime para decirle al usuario en qué proveedores ejecutar.

  • 00:30:00 En esta sección, el orador explica los detalles sobre la optimización en ONNX Runtime. La transformación del gráfico, la partición del gráfico y la asignación son los diferentes niveles de optimización en los que trabajan los transformadores para reescribir el gráfico. La sesión y la ejecución son la API doble de ONNX Runtime que carga y optimiza el modelo para que esté listo para ejecutarse con una simple llamada a la función de ejecución. El orador también habla sobre el proveedor de ejecución, que es la interfaz del acelerador de hardware de ONNX Runtime y cómo los proveedores pueden agregar un nuevo acelerador de hardware mediante la implementación de una API de proveedor de ejecución. Finalmente, el orador menciona los múltiples puntos de extensión de ONNX Runtime, como agregar nuevos proveedores de ejecución u operaciones personalizadas y extender el nivel de fusiones.

  • 00:35:00 En esta sección, el orador analiza las ventajas de usar la API de C en ONNX Runtime, incluida la estabilidad de la API que permite a los usuarios aprovechar los nuevos beneficios de rendimiento sin preocuparse por romper la compatibilidad binaria. También explica la herramienta ONNX Go Live que se puede usar para determinar la configuración óptima para ejecutar un modelo ONNX en hardware diferente. Luego, el orador se refiere a las próximas funciones, incluida la compatibilidad con N en API en dispositivos Android, Qualcomm y optimización de capacitación, además de optimizaciones de rendimiento continuas para que ONNX Runtime se ejecute lo más rápido posible.

  • 00:40:00 En esta sección del video, los oradores se enfocan en la importancia de optimizar las operaciones dentro de un determinado operador (OP) para garantizar que se ejecute lo más rápido posible. Comparan ONNX con marcos, intentando identificar si funciona mejor o no que sus predecesores. Los oradores también analizan cómo funciona la capacitación y señalan que, aunque están trabajando en ello, la capacitación de fuentes aún no está completa. También responden preguntas sobre qué produce el formato ONNX y qué tipo de formatos puede manejar, como cadenas. Existe cierta discusión sobre el impacto de Microsoft en el diseño de ONNX Runtime como un producto destacado, que actualmente carece de un modo de gobierno abierto y, en última instancia, está controlado por Microsoft, aunque siguen aceptando contribuciones externas. El orador también menciona la compatibilidad entre plataformas y señala que el tiempo de ejecución está diseñado para Linux, Windows y 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, ejemplo sencillo



ONNX - ONNX Runtime, ejemplo sencillo

En este video de YouTube, el orador presenta ONNX, un formato abierto para modelos de aprendizaje automático que puede optimizar el rendimiento en múltiples marcos. El video proporciona ejemplos del uso de ONNX en diferentes escenarios, como el análisis de opiniones de artículos de noticias y la conversión de clasificadores de vectores numéricos en redes neuronales. El orador enfatiza la importancia de usar bibliotecas establecidas para funciones y medir el tiempo de ejecución con precisión para el código. Además, el orador analiza los desafíos de desarrollar en diferentes sistemas operativos y recomienda cargar solo los módulos necesarios para mejorar el rendimiento del tiempo de ejecución. En general, este video brinda información valiosa sobre los beneficios y desafíos de usar ONNX para modelos de aprendizaje automático.

  • 00:00:00 En esta sección, el orador describe ONNX, un formato abierto para modelos de aprendizaje automático que se puede usar en varios marcos para optimizar el rendimiento de los modelos. ONNX se basa en el búfer de protocolo, que es un formato binario analógico del formato XML pero más rápido y más adaptado para mensajes más pequeños. Los modelos ONNX pueden desarrollarse en un sistema operativo y procesador y usarse en cualquier lugar, incluidos dispositivos móviles y tarjetas gráficas. El tiempo de ejecución de ONNX es una biblioteca para la aceleración multiplataforma del entrenamiento y la inferencia de modelos. ONNX también permite la cuantificación del modelo para reducir su tamaño sin utilizar la aceleración de hardware y podar un modelo para reducir su tamaño al reemplazar algunos de sus valores de peso con valores cero. El ponente incluye un enlace a los sitios web donde se puede encontrar más información sobre ONNX.

  • 00:05:00 En esta sección, el orador analiza los pasos necesarios para trabajar con un modelo previamente entrenado en formato ONNX utilizando ONNX Runtime. El modelo se puede crear usando cualquier marco, guardarse en formato ONNX y luego usarse de varias maneras, como en un servidor menos poderoso o para manejar cargas de servidor pesadas. Luego, el orador brinda un ejemplo del uso de la biblioteca de transformadores Hugging Face para determinar el sentimiento de los artículos de noticias relacionados con la criptomoneda. Por último, el orador demuestra una aplicación del modelo cargando y procesando las bibliotecas necesarias y mostrando el resultado de ejecutar el modelo en un artículo de noticias de muestra.

  • 00:10:00 En esta sección, el orador analiza el proceso de convertir un clasificador vectorial numérico para producir resultados a partir de una red neuronal, utilizando el marco ONNX. Explican que no se usó la función SoftMax porque ralentizaba significativamente el proceso, y en su lugar se usaron valores ingresados manualmente. Luego se cargó el modelo y se probó su precisión, mostrando resultados prometedores. Sin embargo, se encontraron dificultades con la instalación en diferentes sistemas operativos y marcos, lo que destaca la necesidad de pruebas exhaustivas y flexibilidad en la implementación de modelos.

  • 00:15:00 En esta sección, el orador analiza los posibles problemas que pueden surgir al intentar desarrollar software en diferentes plataformas y la importancia de utilizar bibliotecas establecidas en lugar de intentar implementar todo manualmente. Menciona problemas con el uso de diferentes formatos de punto flotante y cómo esto puede generar errores al intentar trabajar con números muy grandes o muy pequeños. Además, sugiere usar implementaciones preexistentes de funciones como SoftMax en lugar de intentar crear funciones personalizadas, ya que los desarrolladores de bibliotecas establecidas ya se han ocupado de los posibles problemas que puedan surgir.

  • 00:20:00 En esta sección, el orador analiza los problemas que encontró mientras desarrollaba en MacOS y las diferencias entre MacOS y Linux. También menciona la necesidad de cargar solo los módulos necesarios y deshabilitar el resto para mejorar el rendimiento del tiempo de ejecución, ya que cargar demasiados módulos podría afectar significativamente el tiempo de ejecución. El orador también recomienda usar la utilidad "timeet" para medir el tiempo de ejecución con precisión, teniendo en cuenta los diversos factores que pueden afectar el rendimiento.

  • 00:25:00 En esta sección del video, el orador analiza la importancia de medir el tiempo de ejecución del código, particularmente para comparar el rendimiento de diferentes partes del código. Hacen hincapié en la necesidad de medir el tiempo de ejecución varias veces y tomar el promedio para una evaluación más precisa. Luego, el orador usa este enfoque para comparar el rendimiento de dos piezas de código con diferentes formas de manejar los datos, lo que mostró que un método era significativamente más rápido que el otro. Finalmente, el orador proporciona un enlace a su presentación y agradece a la audiencia por su participación.
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 descripción general del convertidor PyTorch-ONNX



Una descripción general del convertidor PyTorch-ONNX

En esta descripción general, Bowen Bao de Microsoft presenta PyTorch-ONNX Converter y explica su arquitectura y flujo para convertir un modelo PyTorch en la representación intermedia (IR) de antorcha y luego en ONNX IR y, finalmente, en un archivo Protobuf. El convertidor maneja la exportación de modelos con formas dinámicas, modelos cuantificados y captura bucles, declaraciones if y otras operaciones a través de ONNX loop y ONNX if nodes. Además, los usuarios pueden crear operadores personalizados o usar operadores PyTorch personalizados existentes para exportar un modelo ONNX o registrar una función simbólica personalizada para decirle al exportador cómo exportarlo. Bowen también explica la función local de ONNX, aborda la precisión mixta a través de autocast y concluye con planes para continuar admitiendo más modelos mientras se mejora el diagnóstico de fallas.

  • 00:00:00 En esta sección, Bowen, ingeniero de software de Microsoft, brinda una descripción general del convertidor PyTorch-ONNX, incluida su arquitectura y flujo. El convertidor, que forma parte del paquete PyTorch, utiliza el trazador de antorcha y el script de antorcha para convertir un modelo de PyTorch a la representación intermedia (IR) de antorcha y luego a ONNX IR. El paso final consiste en serializarlo en un modelo ONNX en un archivo Protobuf. El convertidor admite la exportación de modelos con formas dinámicas de entrada y salida, así como modelos cuantificados, y puede capturar bucles, declaraciones if y otras operaciones a través de bucles ONNX y nodos if ONNX. Además, los usuarios pueden crear operadores personalizados o usar PyTorch personalizado existente
    operadores para exportar un modelo ONNX o registrar una función simbólica personalizada para decirle al exportador cómo exportarlo. Por último, Bowen explica la motivación detrás de la función local ONNX.

  • 00:05:00 En esta sección, la atención se centra en el convertidor PyTorch-ONNX y algunas quejas comunes relacionadas con el modelo ONNX exportado, como los nodos planos. Para abordar este problema, se ha agregado una característica de función local que permite a los usuarios especificar una clase de módulo Torch o una función de tipo de nodo. La precisión mixta también es compatible mediante el uso de Torch autocast y NVIDIA Apex mp. El video concluye con una discusión sobre el diagnóstico mejorado de fallas y el objetivo de continuar admitiendo más modelos. Los enlaces proporcionados ofrecen recursos y herramientas útiles para aquellos que usan el convertidor PyTorch-ONNX.
An Overview of the PyTorch-ONNX Converter
An Overview of the PyTorch-ONNX Converter
  • 2022.07.13
  • www.youtube.com
This session will present an overview of the PyTorch-ONNX converter, its implementation, and recent improvements to support a wide range of models.Bowen is a...