Despliegue de modelos convertidos al formato ONNX
Puede implementar e inferir modelos de aprendizaje automático de PyTorch
o TensorFlow
que se guardan en diferentes formatos y se convierten 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 automático en un lenguaje de programación de alto nivel ( ONNX
) y realizar inferencias utilizando el tiempo de ejecución de Python ( ONNX
).
Ventajas de convertir modelos a un tiempo de ejecució ONNX
La conversión de un modelo a un tiempo de ejecución d ONNX
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:
Compatibilidad multiplataforma :
ONNX
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
.Rendimiento mejorado : 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 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.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 de trabajo a un formato de ONNX
:
PyTorch
TensorFlow
CatBoost
LightGBM
XGBoost
Scikit-learn
Conversión de modelos de PyTorch
al formato de 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 de
PyTorch
: 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.Convertir el modelo
PyTorch
al formato ONNX : Para convertir el modeloPyTorch
al formato ONNX:a. Preparar el modelo : Asegúrese de que su modelo de e
PyTorch
a esté en modo de evaluación utilizando la función de e a (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 de TensorFlow
al formato de ONNX
Siga este proceso para convertir su modelo TensorFlow
al formato ONNX:
Importar bibliotecas : Empiece por importar las bibliotecas esenciales, como
tf2onnx
, para facilitar la conversión de modelos deTensorFlow
a ONNX, y otras bibliotecas necesarias para su aplicación.Descargar modelo de aprendizaje automático (
TensorFlow
): Debe descargar el modelo de aprendizaje automático (TensorFlow
) creado externamente y los datos que se utilizan para entrenar el modelo.Convertir un modelo de
TensorFlow
al formato ONNX : Utilice el comandotf2onnx.convert
para convertir su modelo deTensorFlow
creado en el formatoSavedModel
al formatoONNX
. Si desea convertir un modelo deTensorFlow Lite
, utilice la bandera--tflite
en lugar de la bandera--saved-model
.
Keras
y las funciones tf
pueden convertirse directamente en Python utilizando las funciones tf2onnx.convert.from_keras
o 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
Siga este proceso para convertir su modelo entrenado en CatBoost
al formato ONNX:
Importar bibliotecas : Empiece por importar las bibliotecas esenciales, como
onnxruntime
para ejecutar el modelo,catboost
para las funcionalidades deCatBoost
, y otras bibliotecas necesarias para su aplicación.Crear o descargar un modelo de
CatBoost
: 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.Convertir el modelo
CatBoost
al formatoONNX
: Para convertir el modeloCatBoost
al formatoONNX
:a. Cargar el modelo
CatBoost
: Puede cargar el modeloCatBoost
utilizando bibliotecas comopickle
:catboost_model = pickle.load(file)
b. Exportar el modelo : Utilice la función
catboost_model.save_model
con el parámetro de formato establecido enonnx
para convertir el modelo al formatoONNX
.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
Siga este proceso para convertir su modelo entrenado en LightGBM
al formato ONNX
:
Importar bibliotecas : Empiece importando las bibliotecas esenciales, como
onnxruntime
para ejecutar el modelo,lightgbm
para las funcionalidades deLightGBM
, yonnxmltools
para la conversión y otras bibliotecas necesarias para su aplicación.Crear o descargar un modelo de
LightGBM
: 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.Convertir el modelo
LightGBM
al formatoONNX
: Para convertir el modeloLightGBM
al formatoONNX
:a. Cargar el modelo
LightGBM
: Puede cargar el modeloLightGBM
utilizando bibliotecas comopickle
:lgbm_model = pickle.load(file)
b. Exportar el modelo : Utilice la función "
convert_lightgbm
" para convertir el modelo al formato "ONNX
".from onnxmltools import convert_lightgbm from skl2onnx.common.data_types import FloatTensorType from onnxmltools.utils import save_model initial_types = [("float_input", FloatTensorType([None, X.shape[1]]))] onnx_model = convert_lightgbm(model=lgbm_model, initial_types=initial_types) onnx_model_filename = "lgbm_model.onnx" save_model(onnx_model, onnx_model_filename)
Consejo:Para solucionar problemas con la conversión de modelos de
LightGBM
al formato deONNX
, consulte Solución de problemas de watsonx.ai Runtime.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
Siga este proceso para convertir su modelo entrenado en XGBoost
al formato ONNX
:
Importar bibliotecas : Empiece por importar las bibliotecas esenciales, como
onnxruntime
para ejecutar el modelo,xgboost
para las funcionalidades deXGBoost
, y otras bibliotecas necesarias para su aplicación.Crear o descargar un modelo de
XGBoost
: 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.Convertir el modelo
XGBoost
al formato ONNX : Para convertir el modeloXGBoost
al formato ONNX:a. Cargar el modelo
XGboost
: Puede cargar el modeloXGBoost
utilizando bibliotecas comopickle
:xgboost_model = pickle.load(file)
b. Exportar el modelo : Utilice la función "
convert_xgboost
" para convertir el modelo al formato "ONNX
".from onnxmltools import convert_xgboost from onnxconverter_common.data_types import FloatTensorType from onnxmltools.utils import save_model initial_types = [("float_input", FloatTensorType([None, X.shape[1]]))] onnx_model = convert_xgboost(xgboost_model, initial_types=initial_types) onnx_model_filename = "xgboost_onnx_model.onnx" save_model(onnx_model, onnx_model_filename)
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
Siga este proceso para convertir su modelo entrenado en scikit-learn
al formato ONNX
:
Importar bibliotecas : Empiece por importar las bibliotecas esenciales, como
onnxruntime
para ejecutar el modelo,sklearn
para las funcionalidades descikit-learn
,skl2onnx
para la conversión y otras bibliotecas necesarias para su aplicación.Crear o descargar un modelo de
scikit-learn
: 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.Convertir el modelo
scikit-learn
al formato ONNX : Para convertir el modeloscikit-learn
al formatoONNX
:a. Cargar el modelo
scikit-learn
: Puede cargar el modeloscikit-learn
utilizando bibliotecas comopickle
:sklearn_model = pickle.load(file)
b. Exportar el modelo : Utilice la función "
to_onnx
" para convertir el modelo al formato "ONNX
".from skl2onnx import to_onnx onnx_model = to_onnx(sklearn_model, X, target_opset=19) with open("sklearn_model.onnx", "wb") as f: f.write(onnx_model.SerializeToString())
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
PyTorch
oTensorFlow
.Versión de opset : La versión de opset en
ONNX
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.Los diferentes marcos y tiempos de ejecución de
ONNX
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.
Implementación de modelos convertidos a formato e ONNX
Utilice la especificación de software de onnxruntime_opset_19
para implementar su modelo de aprendizaje automático convertido al formato de ONNX
. 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.
Para implementar modelos convertidos a 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 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 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 | 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