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:
- Almacenar el modelo entrenado en el repositorio de Watson Machine Learning
- 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:
- Directamente a través de la interfaz de usuario
- Utilizando una ruta a un archivo
- Utilizando una ruta a un directorio
- Importar un objeto modelo
Para obtener más información, consulte:
- Formas disponibles de importar modelos, por tipo de estructura
- Aspectos a tener en cuenta al importar modelos
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.
| 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:
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.
- En la pestaña Activos de su espacio en Watson Machine Learning, haga clic en Importar activos.
- Seleccione "
Local file" y, a continuación, Modelo. - 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 "
.pklo ".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' , '.h5o '.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
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:
- Si su modelo se encuentra en una ubicación remota, siga ' Descarga de un modelo almacenado en una ubicación remota.
- 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
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:
Si su modelo se encuentra en una ubicación remota, siga ' Descarga de un modelo almacenado en una ubicación remota para descargarlo.
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, 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.indexUtilice 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
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:
Si el modelo se encuentra en una ubicación remota, consulte Descarga de un modelo almacenado en una ubicación remota.
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.indexUtilice 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:
- Modelos guardados en formato PMML
- Modelos Spark MLlib
- Modelos Scikit-learn
- Modelos XGBoost
- ModelosTensorFlow
- ModelosPyTorch
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
- '
.pkly '.pickleson 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
- '
.pkly '.pickleson 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, '.h5y '.hdf5son los formatos de importación disponibles. - Para guardar o serializar un modelo TensorFlow, utiliza el método '
tf.saved_model.save()'. tf.estimatorno 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étodoclient.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=Truey 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)