Despliegue de modelos convertidos al formato ONNX
Puede implementar e inferir modelos de aprendizaje automático de
o PyTorch
que se guardan en diferentes formatos y se convierten al formato TensorFlow
(Open Neural Network Exchange
). 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 ONNX
o PyTorch
, y luego exportarlo para ejecutarlo en otro entorno con diferentes características de rendimiento. El formato TensorFlow
proporciona una potente solución para convertir un modelo de aprendizaje automático en un lenguaje de programación de alto nivel ( ONNX
) y realizar inferencias utilizando el tiempo de ejecución de Python ( ONNX
).ONNX
Ventajas de convertir modelos a un tiempo de ejecució ONNX
ONNX
La conversión de un modelo a un tiempo de ejecución d
e 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 un tiempo de ejecució ONNX
e son las siguientes:ONNX
Compatibilidad multiplataforma :
proporciona un formato estándar para representar modelos de aprendizaje automático, lo que facilita la implementación de modelos en diferentes marcos, como PyTorch o Tensorflow. Puede entrenar modelos en un framework e implementarlos en otro framework que admita el tiempo de ejecución deONNX
.ONNX
Rendimiento mejorado : el tiempo de ejecución de
optimiza los modelos para la inferencia aplicando varias optimizaciones específicas de hardware y software, como las optimizaciones de gráficos. Además, admite la ejecución en hardware diverso, como CPU y GPU, lo que garantiza una utilización eficiente de los recursos.ONNX
Interoperabilidad :
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.ONNX
Marcos compatibles para la conversión
Puede convertir modelos de aprendizaje automático que utilicen los siguientes marcos de trabajo a un formato de
:ONNX
PyTorch
TensorFlow
CatBoost
LightGBM
XGBoost
Scikit-learn
Conversión de modelos de PyTorch
al formato de ONNX
PyTorch
ONNX
Siga este proceso para convertir su modelo entrenado en
al formato PyTorch
:ONNX
Importar librerías : Empieza importando las librerías esenciales, como
para ejecutar el modelo,onnxruntime
para las funcionalidades PyTorch, y otras librerías necesarias para tu aplicación.torch
Crear o descargar un modelo de
: Puede crear un modelo dePyTorch
utilizando su propio conjunto de datos o utilizar modelos proporcionados por repositorios de modelos externos de código abierto como Hugging Face.PyTorch
Convertir el modelo
al formato ONNX : Para convertir el modeloPyTorch
al formato ONNX:PyTorch
a. Preparar el modelo : Asegúrese de que su modelo de e
a esté en modo de evaluación utilizando la función de e a (PyTorch
). Es posible que necesite un tensor de entrada ficticio para que coincida con la forma del modelo.model.eval()
b. Exporte el modelo : Utilice la función
para convertir el modelo al formato ONNX.torch.onnx.export
Verifique la conversión : Después de convertir el modelo, compruebe que funciona como se espera utilizando la biblioteca
.onnx
Conversión de modelos de TensorFlow
al formato de ONNX
TensorFlow
ONNX
Siga este proceso para convertir su modelo
al formato ONNX:TensorFlow
Importar bibliotecas : Empiece por importar las bibliotecas esenciales, como
, para facilitar la conversión de modelos detf2onnx
a ONNX, y otras bibliotecas necesarias para su aplicación.TensorFlow
Descargar modelo de aprendizaje automático (
): Debe descargar el modelo de aprendizaje automático (TensorFlow
) creado externamente y los datos que se utilizan para entrenar el modelo.TensorFlow
Convertir un modelo de
al formato ONNX : Utilice el comandoTensorFlow
para convertir su modelo detf2onnx.convert
creado en el formatoTensorFlow
al formatoSavedModel
. Si desea convertir un modelo deONNX
, utilice la banderaTensorFlow Lite
en lugar de la bandera--tflite
.--saved-model
y las funciones Keras
pueden convertirse directamente en Python utilizando las funciones tf
o tf2onnx.convert.from_keras
.tf2onnx.convert.from_function
- Verifique la conversión : Después de convertir el modelo, compruebe que funciona como se espera utilizando la biblioteca
.onnx
Conversión de modelos de CatBoost
al formato ONNX
CatBoost
Siga este proceso para convertir su modelo entrenado en
al formato ONNX:CatBoost
Importar bibliotecas : Empiece por importar las bibliotecas esenciales, como
para ejecutar el modelo,onnxruntime
para las funcionalidades decatboost
, y otras bibliotecas necesarias para su aplicación.CatBoost
Crear o descargar un modelo de
: Puede crear un modelo deCatBoost
utilizando su propio conjunto de datos o utilizar modelos proporcionados por repositorios de modelos externos de código abierto como Hugging Face.CatBoost
Convertir el modelo
al formatoCatBoost
: Para convertir el modeloONNX
al formatoCatBoost
:ONNX
a. Cargar el modelo
: Puede cargar el modeloCatBoost
utilizando bibliotecas comoCatBoost
:pickle
catboost_model = pickle.load(file)
b. Exportar el modelo : Utilice la función
con el parámetro de formato establecido encatboost_model.save_model
para convertir el modelo al formatoonnx
.ONNX
catboost_model.save_model( onnx_model_name, format="onnx", export_parameters={ 'onnx_domain': 'ai.catboost', 'onnx_model_version': 1, 'onnx_doc_string': 'test model for Regressor', 'onnx_graph_name': 'CatBoostModel_for_Regression' } )
Verifique la conversión : Después de convertir el modelo, compruebe que funciona como se espera utilizando la biblioteca
.onnx
Conversión de modelos de LightGBM
al formato ONNX
LightGBM
Siga este proceso para convertir su modelo entrenado en
al formato LightGBM
:ONNX
Importar bibliotecas : Empiece importando las bibliotecas esenciales, como
para ejecutar el modelo,onnxruntime
para las funcionalidades delightgbm
, yLightGBM
para la conversión y otras bibliotecas necesarias para su aplicación.onnxmltools
Crear o descargar un modelo de
: Puede crear un modelo deLightGBM
utilizando su propio conjunto de datos o utilizar modelos proporcionados por repositorios de modelos externos de código abierto como Hugging Face.LightGBM
Convertir el modelo
al formatoLightGBM
: Para convertir el modeloONNX
al formatoLightGBM
:ONNX
a. Cargar el modelo
: Puede cargar el modeloLightGBM
utilizando bibliotecas comoLightGBM
:pickle
lgbm_model = pickle.load(file)
b. Exportar el modelo : Utilice la función "
" para convertir el modelo al formato "convert_lightgbm
".ONNX
from onnxmltools import convert_lightgbm from skl2onnx.common.data_types import FloatTensorType from onnxmltools.utils import save_model initial_types = [("float_input", FloatTensorType([None, X.shape[1]]))] onnx_model = convert_lightgbm(model=lgbm_model, initial_types=initial_types) onnx_model_filename = "lgbm_model.onnx" save_model(onnx_model, onnx_model_filename)
Consejo:Para solucionar problemas con la conversión de modelos de
al formato deLightGBM
, consulte Solución de problemas de watsonx.ai Runtime.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 de XGBoost
al formato de ONNX
XGBoost
ONNX
Siga este proceso para convertir su modelo entrenado en
al formato XGBoost
:ONNX
Importar bibliotecas : Empiece por importar las bibliotecas esenciales, como
para ejecutar el modelo,onnxruntime
para las funcionalidades dexgboost
, y otras bibliotecas necesarias para su aplicación.XGBoost
Crear o descargar un modelo de
: Puede crear un modelo deXGBoost
utilizando su propio conjunto de datos o utilizar modelos proporcionados por repositorios de modelos externos de código abierto como Hugging Face.XGBoost
Convertir el modelo
al formato ONNX : Para convertir el modeloXGBoost
al formato ONNX:XGBoost
a. Cargar el modelo
: Puede cargar el modeloXGboost
utilizando bibliotecas comoXGBoost
:pickle
xgboost_model = pickle.load(file)
b. Exportar el modelo : Utilice la función "
" para convertir el modelo al formato "convert_xgboost
".ONNX
from onnxmltools import convert_xgboost from onnxconverter_common.data_types import FloatTensorType from onnxmltools.utils import save_model initial_types = [("float_input", FloatTensorType([None, X.shape[1]]))] onnx_model = convert_xgboost(xgboost_model, initial_types=initial_types) onnx_model_filename = "xgboost_onnx_model.onnx" save_model(onnx_model, onnx_model_filename)
Verificar la conversión : Después de convertir el modelo, verifique que el modelo funciona como se espera utilizando la biblioteca onnx.
Conversión de modelos de scikit-learn
al formato de ONNX
scikit-learn
ONNX
Siga este proceso para convertir su modelo entrenado en
al formato scikit-learn
:ONNX
Importar bibliotecas : Empiece por importar las bibliotecas esenciales, como
para ejecutar el modelo,onnxruntime
para las funcionalidades desklearn
,scikit-learn
para la conversión y otras bibliotecas necesarias para su aplicación.skl2onnx
Crear o descargar un modelo de
: Puede crear un modelo descikit-learn
utilizando su propio conjunto de datos o utilizar modelos proporcionados por repositorios de modelos externos de código abierto como Hugging Face.scikit-learn
Convertir el modelo
al formato ONNX : Para convertir el modeloscikit-learn
al formatoscikit-learn
:ONNX
a. Cargar el modelo
: Puede cargar el modeloscikit-learn
utilizando bibliotecas comoscikit-learn
:pickle
sklearn_model = pickle.load(file)
b. Exportar el modelo : Utilice la función "
" para convertir el modelo al formato "to_onnx
".ONNX
from skl2onnx import to_onnx onnx_model = to_onnx(sklearn_model, X, target_opset=19) with open("sklearn_model.onnx", "wb") as f: f.write(onnx_model.SerializeToString())
Verifique la conversión : Después de convertir el modelo, compruebe que funciona como se espera utilizando la biblioteca
.onnx
Consideraciones adicionales
A continuación, se incluyen algunas consideraciones adicionales para convertir sus modelos a un formato e
: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
oPyTorch
.TensorFlow
Versión de opset : La versión de opset en
determina el conjunto de operaciones y sus especificaciones que son compatibles con el modelo. Es un factor crítico durante la conversión y el despliegue del modelo.ONNX
Los diferentes marcos y tiempos de ejecución de
son compatibles con versiones específicas de opset. Las versiones antiguas de opset pueden carecer de funciones u optimizaciones presentes en las versiones más recientes. La incompatibilidad entre la versión de operaciones de un modelo y el tiempo de ejecución deONNX
puede provocar errores durante la inferencia. Debe asegurarse de que la versión de conjunto de operaciones (ONNX
) que elija sea compatible con su tiempo de ejecución de destino.ONNX
Implementación de modelos convertidos a formato e ONNX
ONNX
Utilice la especificación de software de
para implementar su modelo de aprendizaje automático convertido al formato de onnxruntime_opset_19
. Debe especificar la especificación del software y el tipo de modelo cuando almacene el modelo en el repositorio de tiempo de ejecución de watsonx.ai. Para obtener más información, consulte Especificaciones de software compatibles.ONNX
Para implementar modelos convertidos a formato
desde la interfaz de usuario, siga estos pasos:ONNX
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 se utiliza periódicamente su modelo de base personalizado, considere la posibilidad de asignar a su modelo el mismo nombre de servicio cada vez que lo implemente. 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.
- 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 muestra demuestran cómo implementar modelos de aprendizaje automático convertidos de
o PyTorch
al formato TensorFlow
utilizando la biblioteca cliente Python :ONNX
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 | PyTorch, 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 | Tensorflow, 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. |
Utilizar el modelo ONNX convertido de CatBoost | CatBoost, ONNX | Modelo entrenado CatBoost. Convierta el modelo CatBoost al formato ONNX. Persista el modelo convertido en el 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. |
Utilizar el modelo ONNX convertido de LightGBM | LightGBM, ONNX | Entrenar un modelo LightGBM Convertir el modelo LightGBM al formato ONNX Persistir el modelo convertido en el repositorio watsonx.ai Runtime Desplegar el modelo para la puntuación en línea utilizando la biblioteca de clientes Puntuar registros de muestra utilizando la biblioteca de clientes |
Uso del modelo ONNX convertido de XGBoost con ibm- watsonx -ai | XGBoost, ONNX | Entrenar un modelo XGBoost. Convertir el modelo XGBoost al formato ONNX. Conservar el modelo convertido en el repositorio de watsonx.ai. Implementar modelo para puntuación en línea utilizando la instancia APIClient. Registre muestras de registros utilizando la instancia APIClient. |
Uso del modelo ONNX convertido de scikit-learn con ibm- watsonx -ai | Scikit-learn, ONNX | Entrenar un modelo scikit-learn Convertir el modelo nativo scikit-learn al formato ONNX Realizar la conversión de un modelo scikit-learn personalizado envuelto en un canal sklearn Persistir el modelo convertido en el repositorio de tiempo de ejecución de watsonx.ai Implementar el modelo para la puntuación en línea utilizando la biblioteca del cliente Puntuar registros de muestra utilizando la biblioteca del cliente |
Tema principal: Despliegue de activos de aprendizaje automático