Importación de modelos en un espacio de despliegue

Importe modelos de aprendizaje de máquina entrenados fuera de IBM Watson Machine Learning para poder desplegar y probar los modelos. Revise los marcos de modelos disponibles para importar modelos.

Aquí importar un modelo entrenado significa:

  1. Almacenar el modelo entrenado en el repositorio de Watson Machine Learning
  2. Opcional: Despliega el modelo almacenado en tu servicio Watson Machine Learning

y repositorio significa un directorio en su cluster. Para más información, consulte Creación de espacios de despliegue.

Puedes importar un modelo de estas formas:

Para obtener más información, consulte:

Si tiene previsto transferir mediante programación un modelo entre instancias de Cloud Pak for Data, siga el flujo que se describe en Activos en espacios de despliegue.

Para ver un ejemplo de cómo añadir un modelo mediante programación utilizando el clientePython, consulte este cuaderno:

Formas disponibles de importar modelos, por tipo de estructura

Esta tabla enumera las formas disponibles de importar modelos a Watson Machine Learning, por tipo de marco.

Opciones de importación de modelos, por tipo de marco
Opción import Spark MLlib Scikit-learn XGBoost TensorFlow PyTorch
Importar un modelo mediante la interfaz de usuario
Importación de un objeto de modelo
Importar un modelo utilizando una ruta a un archivo
Importar un modelo utilizando una ruta a un directorio

Añadir un modelo mediante UI

Para importar un modelo mediante UI:

Importante:

Si desea importar un modelo en formato PMML, puede importar directamente el archivo del modelo ' .xml '. Todos los demás formatos deben guardarse primero como archivo .zip.

  1. En la pestaña Activos de su espacio en Watson Machine Learning, haga clic en Importar activos.
  2. Seleccione " Local file " y, a continuación, Modelo.
  3. Seleccione el archivo de modelo que desea importar y haga clic en Importar.

Una vez seleccionado el archivo que desea importar, el mecanismo de importación generará una lista de tipos de modelo y especificaciones de software coincidentes para que usted elija.

La lógica de esta selección es la siguiente:

  • Archivos " .pkl o " .pickle " archivados: la lista contiene tipos de modelos y especificaciones de software que se ajustan a los marcos Scikit-learn y XGBoost
  • Archivos ' .onnx ' archivados: la lista contiene tipos de modelos y especificaciones de software que coinciden con el marco PyTorch
  • Archivos ' .pb' , ' .h5 o ' .hdf5 ' archivados: la lista contiene tipos de modelos y especificaciones de software que coinciden con el modelo Tensorflow.
  • archivos .xml " (modelos guardados en formato PMML): El mecanismo de importación selecciona automáticamente un tipo de modelo y una especificación de software adecuados en función de la cadena de versión del archivo " .xml ".

Importación de un objeto de modelo

Nota:

Este método de importación es compatible con un número limitado de marcos de trabajo de ML. Para más información, consulte Formas disponibles de importar modelos, por tipo de framework.

Para importar un objeto modelo:

  1. Si su modelo se encuentra en una ubicación remota, siga ' Descarga de un modelo almacenado en una ubicación remota.
  2. Almacene el modelo en el repositorio de Watson Machine Learning. Para obtener más información, consulte Almacenamiento del modelo en el repositorio de Watson Machine Learning.

Importar un modelo utilizando una ruta a un archivo

Nota:

Este método de importación es compatible con un número limitado de marcos de trabajo de ML. Para más información, consulte Formas disponibles de importar modelos, por tipo de framework.

Para importar un modelo mediante una ruta a un archivo:

  1. Si su modelo se encuentra en una ubicación remota, siga ' Descarga de un modelo almacenado en una ubicación remota para descargarlo.

  2. Si el modelo está ubicado localmente, colóquelo en un directorio específico:

      !cp <saved model> <target directory>
      !cd <target directory>
    
  3. Para los modelos scikit-learn, XGBoost, Tensorflow y PyTorch, si el archivo descargado no es un archivo .tar.gz, realice un archivado:

      !tar -zcvf <saved model>.tar.gz <saved model>
    

    El fichero modelo debe estar en la carpeta de nivel superior del directorio, por ejemplo:

    assets/
    <saved model>
    variables/
    variables/variables.data-00000-of-00001
    variables/variables.index
    
  4. Utilice la vía de acceso del archivo guardado para almacenar el archivo de modelo en el repositorio de Watson Machine Learning. Para obtener más información, consulte Almacenamiento del modelo en el repositorio de Watson Machine Learning.

Importar un modelo utilizando una ruta a un directorio

Nota:

Este método de importación es compatible con un número limitado de marcos de trabajo de ML. Para más información, consulte Formas disponibles de importar modelos, por tipo de framework.

Para importar un modelo utilizando una ruta a un directorio:

  1. Si el modelo se encuentra en una ubicación remota, consulte Descarga de un modelo almacenado en una ubicación remota.

  2. Si el modelo está ubicado localmente, colóquelo en un directorio específico:

    !cp <saved model> <target directory>
    !cd <target directory>
    

    Para los modelos scikit-learn, XGBoost, Tensorflow y PyTorch, el archivo del modelo debe estar en la carpeta de nivel superior del directorio, por ejemplo:

    assets/
    <saved model>
    variables/
    variables/variables.data-00000-of-00001
    variables/variables.index
    
  3. Utilice la vía de acceso del directorio para almacenar el archivo de modelo en el repositorio de Watson Machine Learning. Para obtener más información, consulte Almacenamiento del modelo en el repositorio de Watson Machine Learning.

Descarga de un modelo almacenado en una ubicación remota

Siga este código de ejemplo para descargar el modelo desde una ubicación remota:

import os
from wget import download

target_dir = '<target directory name>'
if not os.path.isdir(target_dir):
    os.mkdir(target_dir)
filename = os.path.join(target_dir, '<model name>')
if not os.path.isfile(filename):
    filename = download('<url to model>', out = target_dir)

Aspectos a tener en cuenta al importar modelos

Para obtener más información sobre la importación de un tipo de modelo específico, consulte:

Para obtener más información sobre los frameworks que puede utilizar con Watson Machine Learning, consulte Frameworks compatibles.

Modelos guardados en formato PMML

  • El único tipo de despliegue disponible para los modelos importados de PMML es el despliegue en línea.
  • El archivo PMML debe tener la extensión ' .xml.
  • No se pueden utilizar modelos PMML en un flujo de secuencias de SPSS.
  • El archivo PMML no debe contener un prólogo. Dependiendo de la biblioteca que utilices, al guardar el modelo puede que se añada por defecto un prólogo al principio del archivo. Por ejemplo, si el archivo contiene una serie de prólogo como spark-mllib-lr-model-pmml.xml, elimine la serie antes de importar el archivo PMML en el espacio de despliegue.

Dependiendo de la biblioteca que esté utilizando, cuando guarde su modelo, puede que se añada un prólogo al principio del archivo por defecto, como en este ejemplo:

::::::::::::::
spark-mllib-lr-model-pmml.xml
::::::::::::::

Debe eliminar dicho prólogo para poder importar el archivo PMML a Watson Machine Learning.

Modelos Spark MLlib

  • Sólo se dispone de modelos de clasificación y regresión.
  • Los transformadores personalizados, las funciones definidas por el usuario y las clases no están disponibles.

Modelos Scikit-learn

  • '.pkl y ' .pickle son los formatos de importación disponibles.
  • Para serializar o picklear el modelo, utilice el paquete ' joblib '.
  • Sólo se dispone de modelos de clasificación y regresión.
  • El tipo de entrada Pandas Dataframe para la API ' predict() ' no está disponible.
  • El único tipo de despliegue disponible para scikit-learn models es el despliegue en línea.

Modelos XGBoost

  • '.pkl y ' .pickle son los formatos de importación disponibles.
  • Para serializar o picklear el modelo, utilice el paquete ' joblib '.
  • Sólo se dispone de modelos de clasificación y regresión.
  • El tipo de entrada Pandas Dataframe para la API ' predict() ' no está disponible.
  • El único tipo de despliegue disponible para los modelos XGBoost es el despliegue en línea.

Modelos TensorFlow

  • '.pb, ' .h5 y ' .hdf5 son los formatos de importación disponibles.
  • Para guardar o serializar un modelo TensorFlow, utiliza el método ' tf.saved_model.save() '.
  • tf.estimator no está disponible.
  • Los únicos tipos de despliegue disponibles para los modelos TensorFlow son: despliegue en línea y despliegue por lotes.

Modelos PyTorch

  • El único tipo de despliegue disponible para los modelos PyTorch es el despliegue en línea.

  • Para que un modelo Pytorch se pueda importar en Watson Machine Learning, se debe exportar previamente al formato .onnx. Consulte este código.

    torch.onnx.export(<model object>, <prediction/training input data>, "<serialized model>.onnx", verbose=True, input_names=<input tensor names>, output_names=<output tensor names>)
    

Almacenamiento de un modelo en su repositorio de Watson Machine Learning

Utilice este código para almacenar el modelo en el repositorio de Watson Machine Learning:

from ibm_watson_machine_learning import APIClient

client = APIClient(<your credentials>)
sw_spec_uid = client.software_specifications.get_uid_by_name("<software specification name>")

meta_props = {
    client.repository.ModelMetaNames.NAME: "<your model name>",
    client.repository.ModelMetaNames.SOFTWARE_SPEC_UID: sw_spec_uid,
    client.repository.ModelMetaNames.TYPE: "<model type>"}

client.repository.store_model(model=<your model>, meta_props=meta_props)

Notas:

  • Dependiendo del marco de trabajo del modelo utilizado, ' <your model> ' puede ser el objeto modelo real, una ruta completa a un archivo de modelo guardado o una ruta a un directorio donde se encuentra el archivo de modelo. Para más información, consulte Formas disponibles de importar modelos, por tipo de framework.

  • Para ver una lista de las especificaciones de software disponibles para utilizar como <software specification name>, utilice el método client.software_specifications.list().

  • Para ver una lista de tipos de modelo disponibles para utilizar como model_type, consulte Especificaciones de software y especificaciones de hardware para despliegues.

  • Cuando exporte un modelo Pytorch al formato ' .onnx ', especifique la bandera ' keep_initializers_as_inputs=True y establezca ' opset_version ' en 9 (los desplieguesWatson Machine Learning utilizan el tiempo de ejecución ONNX ' caffe2 ' que no admite versiones de opset superiores a 9).

    torch.onnx.export(net, x, 'lin_reg1.onnx', verbose=True, keep_initializers_as_inputs=True, opset_version=9)