Puede desplegar e inferir modelos de aprendizaje automático guardados en distintos formatos de modelo, como PyTorch o Tensorflow, y convertidos al formato Open Neural Network Exchange (ONNX). ONNX es un formato de código abierto para representar modelos de aprendizaje profundo. Los desarrolladores pueden utilizar el formato ONNX para entrenar sus modelos en un marco, como PyTorch o TensorFlow, y luego exportarlo para ejecutarlo en otro entorno con diferentes características de rendimiento. El formato ONNX proporciona una potente solución para convertir un modelo de aprendizaje mecanizado a ONNX y realizar inferencias utilizando el tiempo de ejecución ONNX.
Ventajas de convertir los modelos al tiempo de ejecución de ONNX
La conversión de un modelo al tiempo de ejecución de ONNX ofrece varias ventajas, especialmente en el contexto de las aplicaciones de aprendizaje automático y aprendizaje profundo. Algunas de las ventajas de convertir modelos a ONNX runtime son las siguientes:
Compatibilidad entre plataformas : ONNX proporciona un formato estándar para representar modelos de aprendizaje automático, lo que facilita el despliegue de modelos en diferentes marcos como PyTorch o Tensorflow. Puede entrenar modelos en un marco y desplegarlos en otro que admita el tiempo de ejecución de ONNX.
Mejora del rendimiento : El tiempo de ejecución de ONNX optimiza los modelos para la inferencia aplicando varias optimizaciones específicas de hardware y software, como las optimizaciones de grafos. Además, admite la ejecución en hardware diverso, como CPU y GPU, lo que garantiza una utilización eficiente de los recursos.
Interoperabilidad : ONNX proporciona una forma de entrenar modelos, como PyTorch, TensorFlow, y scikit-learn en un marco y luego exportarlos para ejecutarlos en otro entorno, lo que agiliza los flujos de trabajo. Rompe las barreras entre los distintos marcos de aprendizaje profundo, lo que permite a los desarrolladores aprovechar los puntos fuertes de las distintas bibliotecas sin quedar atrapados en un único ecosistema.
Marcos compatibles para la conversión
Puede convertir modelos de aprendizaje automático que utilicen los siguientes marcos al formato ONNX:
- PyTorch
- TensorFlow
Conversión de modelos PyTorch al formato ONNX
Siga este proceso para convertir su modelo entrenado en PyTorch al formato ONNX:
Importar librerías : Empieza importando las librerías esenciales, como
onnxruntime
para ejecutar el modelo,torch
para las funcionalidades PyTorch, y otras librerías necesarias para tu aplicación.Crear o descargar un modelo PyTorch : Puedes crear un modelo PyTorch utilizando tu propio conjunto de datos o utilizar modelos proporcionados por repositorios externos de modelos de código abierto como Hugging Face.
Conversión del modelo PyTorch al formato ONNX: Para convertir el modelo PyTorch al formato ONNX:
a. Prepara el modelo : Asegúrese de que su modelo PyTorch está en modo de evaluación utilizando la función
model.eval()
. Es posible que necesite un tensor de entrada ficticio para que coincida con la forma del modelo.b. Exporte el modelo : Utilice la función torch.onnx.export para convertir el modelo al formato ONNX.
Verifique la conversión : Después de convertir el modelo, compruebe que funciona como se espera utilizando la biblioteca
onnx
.
Conversión de modelos TensorFlow al formato ONNX
Siga este proceso para convertir su modelo TensorFlow al formato ONNX:
Importar librerías : Comience importando las bibliotecas esenciales, como
tf2onnx
para facilitar la conversión de modelos TensorFlow a ONNX, y otras bibliotecas necesarias para su aplicación.Descargar modelo TensorFlow : Debe descargar el modelo TensorFlow creado externamente y los datos que se utilizan para entrenar el modelo.
Convertir modelo TensorFlow a formato ONNX : Utilice el comando
tf2onnx.convert
para convertir su modelo TensorFlow creado en el formatoSavedModel
al formato ONNX. Si desea convertir un modelo TensorFlow Lite, utilice el indicador--tflite
en lugar del indicador--saved-model
.Verifique la conversión : Después de convertir el modelo, compruebe que funciona como se espera utilizando la biblioteca
onnx
.
Consideraciones adicionales
He aquí algunas consideraciones adicionales para convertir sus modelos TensorFlow al formato ONNX:
Ejes dinámicos : Los ejes dinámicos pueden ser utilizados por un modelo para manejar formas de entrada variables, tales como tamaños de lote dinámicos o longitudes de secuencia, lo cual es útil para modelos desplegados en aplicaciones donde las dimensiones de entrada pueden variar. Utilice ejes dinámicos si su modelo maneja tamaños de entrada variables, como el tamaño de lote dinámico o la longitud de secuencia.
Los ejes dinámicos también reducen la sobrecarga de memoria, ya que pueden utilizarse con múltiples entradas y salidas para adaptarse dinámicamente sin necesidad de volver a exportar el modelo. Puede especificar los ejes dinámicos durante la exportación del modelo en PyTorch o TensorFlow.
Versión del opset : La versión de opset en ONNX determina el conjunto de operaciones y sus especificaciones que soporta el modelo. Es un factor crítico durante la conversión y el despliegue del modelo.
Los distintos tiempos de ejecución y marcos de ONNX admiten versiones de opset específicas. Las versiones antiguas de opset pueden carecer de funciones u optimizaciones presentes en las versiones más recientes. La incompatibilidad entre la versión opset de un modelo y el tiempo de ejecución de ONNX puede provocar errores durante la inferencia. Debes asegurarte de que la versión de ONNX opset que elijas sea compatible con tu runtime de destino.
Despliegue de modelos convertidos al formato ONNX
Utilice la especificación de software onnxruntime_opset_19
para desplegar su modelo de aprendizaje automático convertido al formato ONNX. Para más información, consulte Especificaciones de software compatibles.
Para desplegar modelos convertidos al formato ONNX desde la interfaz de usuario, siga estos pasos:
En su espacio de despliegue, vaya a la pestaña Activos.
Busque su modelo en la lista de activos, haga clic en el icono Menú y seleccione Desplegar.
Seleccione el tipo de despliegue para su modelo. Elija entre las opciones de despliegue en línea o por lotes.
Introduzca un nombre para su despliegue y, opcionalmente, introduzca un nombre de servicio, una descripción y etiquetas.
Nota:- Utilice el campo Nombre de servicio para especificar un nombre para su despliegue en lugar del ID de despliegue.
- El nombre de servicio debe ser único dentro del espacio de nombres.
- El nombre del servidor debe contener sólo estos caracteres a-z,0-9,_] y debe tener un máximo de 36 caracteres.
- En los flujos de trabajo en los que su modelo de base personalizado se utiliza periódicamente, considere la posibilidad de asignar a su modelo el mismo nombre de servicio cada vez que lo despliegue. De esta manera, después de eliminar y volver a desplegar el modelo, puede seguir utilizando el mismo punto final en su código.
Seleccione una especificación de hardware para su modelo.
Seleccione una configuración y una especificación de software para su modelo.
Pulse Crear.
Prueba del modelo
Siga estos pasos para probar sus modelos desplegados convertidos al formato ONNX:
- En su espacio de despliegue, abra la pestaña Despliegues y haga clic en el nombre del despliegue.
- Haga clic en la pestaña Prueba para introducir un texto y obtener una respuesta del activo desplegado.
- Introduzca los datos de la prueba en uno de los siguientes formatos, en función del tipo de activo que haya desplegado:
- Texto : Introduzca datos de entrada de texto para generar un bloque de texto como salida.
- Flujo : Introduzca datos de entrada de texto para generar un flujo de texto como salida.
- JSON : Introduzca los datos de entrada JSON para generar la salida en formato JSON.
- Haga clic en Generar para obtener resultados basados en su consulta.
Cuadernos de ejemplo
Los siguientes cuadernos de ejemplo muestran cómo desplegar modelos de aprendizaje automático convertidos de PyTorch o TensorFlow al formato ONNX utilizando la biblioteca cliente Python :
Cuaderno | Infraestructura | Descripción |
---|---|---|
Convertir la red neuronal ONNX de ejes fijos a ejes dinámicos y utilizarla con watsonx | ONNX | Configurar el entorno Crear y exportar el modelo ONNX básico Convertir el modelo de ejes fijos a ejes dinámicos Persistir el modelo ONNX convertido Desplegar y puntuar el modelo ONNX Limpiar Resumen y próximos pasos |
Utilizar el modelo ONNX convertido de PyTorch con watsonx | ONNX | Crear modelo PyTorch con conjunto de datos. Convertir modelo PyTorch a formato ONNX Persistir modelo convertido en repositorio Watson Machine Learning. Despliegue del modelo de puntuación en línea utilizando la biblioteca de clientes. Puntúe los registros de ejemplo utilizando la biblioteca de cliente. |
Usa el modelo ONNX convertido de TensorFlow para reconocer dígitos escritos a mano con watsonx | ONNX | Descargue un modelo TensorFlow entrenado externamente con un conjunto de datos. Convierta el modelo TensorFlow al formato ONNX Persista el modelo convertido en el repositorio de Watson Machine Learning. Despliegue del modelo de puntuación en línea utilizando la biblioteca de clientes. Puntúe los registros de ejemplo utilizando la biblioteca de cliente. |
Tema principal: Despliegue de activos de aprendizaje automático