Despliegue de modelos convertidos al formato ONNX

Última actualización: 21 feb 2025
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 de ONNX .

  • 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 :

  1. PyTorch
  2. TensorFlow
  3. CatBoost
  4. LightGBM
  5. XGBoost
  6. 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 :

  1. 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.

  2. Crear o descargar un modelo de PyTorch : Puede crear un modelo de PyTorch utilizando su propio conjunto de datos o utilizar modelos proporcionados por repositorios de modelos externos de código abierto como Hugging Face.

  3. Convertir el modelo PyTorch al formato ONNX : Para convertir el modelo PyTorch 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.

  4. 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:

  1. Importar bibliotecas : Empiece por importar las bibliotecas esenciales, como tf2onnx , para facilitar la conversión de modelos de TensorFlow a ONNX, y otras bibliotecas necesarias para su aplicación.

  2. 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.

  3. Convertir un modelo de TensorFlow al formato ONNX : Utilice el comando tf2onnx.convert para convertir su modelo de TensorFlow creado en el formato SavedModel al formato ONNX . Si desea convertir un modelo de TensorFlow Lite , utilice la bandera --tflite en lugar de la bandera --saved-model .

Nota:

Keras y las funciones tf pueden convertirse directamente en Python utilizando las funciones tf2onnx.convert.from_keras o tf2onnx.convert.from_function.

  1. 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:

  1. Importar bibliotecas : Empiece por importar las bibliotecas esenciales, como onnxruntime para ejecutar el modelo, catboost para las funcionalidades de CatBoost , y otras bibliotecas necesarias para su aplicación.

  2. Crear o descargar un modelo de CatBoost : Puede crear un modelo de CatBoost utilizando su propio conjunto de datos o utilizar modelos proporcionados por repositorios de modelos externos de código abierto como Hugging Face.

  3. Convertir el modelo CatBoost al formato ONNX : Para convertir el modelo CatBoost al formato ONNX :

    a. Cargar el modelo CatBoost : Puede cargar el modelo CatBoost utilizando bibliotecas como pickle:

    catboost_model = pickle.load(file)
    

    b. Exportar el modelo : Utilice la función catboost_model.save_model con el parámetro de formato establecido en onnx para convertir el modelo al formato 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'
        }
    )
    
  4. 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 :

  1. Importar bibliotecas : Empiece importando las bibliotecas esenciales, como onnxruntime para ejecutar el modelo, lightgbm para las funcionalidades de LightGBM , y onnxmltools para la conversión y otras bibliotecas necesarias para su aplicación.

  2. Crear o descargar un modelo de LightGBM : Puede crear un modelo de LightGBM utilizando su propio conjunto de datos o utilizar modelos proporcionados por repositorios de modelos externos de código abierto como Hugging Face.

  3. Convertir el modelo LightGBM al formato ONNX : Para convertir el modelo LightGBM al formato ONNX :

    a. Cargar el modelo LightGBM : Puede cargar el modelo LightGBM utilizando bibliotecas como pickle:

    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 de ONNX , consulte Solución de problemas de watsonx.ai Runtime.

  4. 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 :

  1. Importar bibliotecas : Empiece por importar las bibliotecas esenciales, como onnxruntime para ejecutar el modelo, xgboost para las funcionalidades de XGBoost , y otras bibliotecas necesarias para su aplicación.

  2. Crear o descargar un modelo de XGBoost : Puede crear un modelo de XGBoost utilizando su propio conjunto de datos o utilizar modelos proporcionados por repositorios de modelos externos de código abierto como Hugging Face.

  3. Convertir el modelo XGBoost al formato ONNX : Para convertir el modelo XGBoost al formato ONNX:

    a. Cargar el modelo XGboost : Puede cargar el modelo XGBoost utilizando bibliotecas como pickle:

    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)
    
  4. 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 :

  1. Importar bibliotecas : Empiece por importar las bibliotecas esenciales, como onnxruntime para ejecutar el modelo, sklearn para las funcionalidades de scikit-learn , skl2onnx para la conversión y otras bibliotecas necesarias para su aplicación.

  2. Crear o descargar un modelo de scikit-learn : Puede crear un modelo de scikit-learn utilizando su propio conjunto de datos o utilizar modelos proporcionados por repositorios de modelos externos de código abierto como Hugging Face.

  3. Convertir el modelo scikit-learn al formato ONNX : Para convertir el modelo scikit-learn al formato ONNX :

    a. Cargar el modelo scikit-learn : Puede cargar el modelo scikit-learn utilizando bibliotecas como pickle:

    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())
    
  4. 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 o TensorFlow.

  • 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 de ONNX 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:

  1. En su espacio de despliegue, vaya a la pestaña Activos.

  2. Busque su modelo en la lista de activos, haga clic en el icono Menú y seleccione Desplegar.

  3. Seleccione el tipo de despliegue para su modelo. Elija entre las opciones de despliegue en línea o por lotes.

  4. 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.

  5. Seleccione una especificación de hardware para su modelo.

  6. Seleccione una configuración y una especificación de software para su modelo.

  7. Pulse Crear.

Prueba del modelo

Siga estos pasos para probar sus modelos desplegados convertidos al formato ONNX:

  1. En su espacio de despliegue, abra la pestaña Despliegues y haga clic en el nombre del despliegue.
  2. Haga clic en la pestaña Prueba para introducir un texto y obtener una respuesta del activo desplegado.
  3. 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.
  4. 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 :

Cuadernos de ejemplo
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