Importe modelos de aprendizaje automático entrenados fuera de IBM watsonx.ai Runtime para poder desplegar y probar los modelos. Revise las infraestructuras de modelo que están disponibles para importar modelos.
Aquí importar un modelo entrenado significa:
- Almacena el modelo entrenado en tu repositorio watsonx.ai Runtime
- Opcional: Despliega el modelo almacenado en tu servicio watsonx.ai Runtime
y repositorio significa un grupo de Cloud Object Storage . Para obtener más información, consulte Creación de espacios de despliegue.
Puede importar un modelo de estas maneras:
- Directamente a través de la interfaz de usuario
- Mediante el uso de una vía de acceso a un archivo
- Mediante el uso de una vía de acceso a un directorio
- Importar un objeto de 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
Para ver un ejemplo de cómo añadir un modelo mediante programación utilizando el cliente Python, consulte este cuaderno:
Para ver un ejemplo de cómo añadir un modelo mediante programación utilizando la API REST, consulte este cuaderno:
Formas disponibles de importar modelos, por tipo de entorno
Esta tabla enumera las formas disponibles para importar modelos a watsonx.ai Runtime, por tipo de framework.
Opción import | Spark MLlib | Scikit-learn | XGBoost | TensorFlow | PyTorch |
---|---|---|---|---|---|
Importación de un objeto de modelo | ✓ | ✓ | ✓ | ||
Importación de un modelo utilizando una vía de acceso a un archivo | ✓ | ✓ | ✓ | ✓ | |
Importación de un modelo utilizando una vía de acceso a un directorio | ✓ | ✓ | ✓ | ✓ |
Adición de un modelo utilizando la interfaz de usuario
Si desea importar un modelo en el formato PMML, puede importar directamente el archivo .xml
del modelo.
Para importar un modelo utilizando la interfaz de usuario:
- En la pestaña Activos de su espacio en watsonx.ai Runtime, haga clic en Importar activos.
- Seleccione
Local file
y, a continuación, seleccione Modelo. - Seleccione el archivo de modelo que desea importar y pulse Importar.
El mecanismo de importación selecciona automáticamente un tipo de modelo coincidente y una especificación de software basándose en la serie de versión del archivo .xml
.
Importación de un objeto de modelo
Este método de importación está soportado por un número limitado de infraestructuras ML. Para obtener más información, consulte maneras disponibles de importar modelos, por tipo de entorno.
Para importar un objeto de modelo:
- Si el modelo se encuentra en una ubicación remota, siga Descarga de un modelo almacenado en una ubicación remota.
- Almacene el objeto modelo en su repositorio watsonx.ai Runtime. Para obtener más información, consulte Almacenamiento del modelo en el repositorio watsonx.ai Runtime.
Importación de un modelo utilizando una vía de acceso a un archivo
Este método de importación está soportado por un número limitado de infraestructuras ML. Para obtener más información, consulte maneras disponibles de importar modelos, por tipo de entorno.
Para importar un modelo utilizando una vía de acceso a un archivo:
Si el 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 archivo de 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
Utilice la ruta del archivo guardado para almacenar el archivo de modelo en su repositorio watsonx.ai Runtime. Para obtener más información, consulte Almacenamiento del modelo en el repositorio watsonx.ai Runtime.
Importación de un modelo utilizando una vía de acceso a un directorio
Este método de importación está soportado por un número limitado de infraestructuras ML. Para obtener más información, consulte maneras disponibles de importar modelos, por tipo de entorno.
Para importar un modelo utilizando una vía de acceso 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, Tensorflowy PyTorch , el archivo de 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
Utilice la ruta del directorio para almacenar el archivo de modelo en su repositorio watsonx.ai Runtime. Para obtener más información, consulte Almacenamiento del modelo en el repositorio watsonx.ai Runtime.
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 watsonx.ai Runtime, consulte Frameworks compatibles.
Modelos guardados en formato PMML
- El único tipo de despliegue disponible para los modelos que se importan de PMML es el despliegue en línea.
- El archivo PMML debe tener la extensión de archivo
.xml
. - No se pueden utilizar modelos PMML en un flujo de secuencias de SPSS.
- El archivo PMML no debe contener un prólogo. En función de la biblioteca que esté utilizando al guardar el modelo, se puede añadir un prólogo al principio del archivo de forma predeterminada. 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.
En función de la biblioteca que esté utilizando al guardar el modelo, se puede añadir un prólogo al principio del archivo de forma predeterminada, como en este ejemplo:
::::::::::::::
spark-mllib-lr-model-pmml.xml
::::::::::::::
Debe eliminar ese prólogo antes de poder importar el archivo PMML a watsonx.ai Runtime.
Modelos Spark MLlib
- Sólo están disponibles los modelos de clasificación y regresión.
- Los transformadores personalizados, las funciones definidas por el usuario y las clases no están disponibles.
Scikit-modelos de aprendizaje
.pkl
y.pickle
son los formatos de importación disponibles.- Para serializar o decapitar el modelo, utilice el paquete
joblib
. - Sólo están disponibles los modelos de clasificación y regresión.
- El tipo de entrada de nombre de datos de Pandas para la API de
predict()
no está disponible. - El único tipo de despliegue disponible para los modelos scikit-learn es el despliegue en línea.
Modelos XGBoost
.pkl
y.pickle
son los formatos de importación disponibles.- Para serializar o decapitar el modelo, utilice el paquete
joblib
. - Sólo están disponibles los modelos de clasificación y regresión.
- El tipo de entrada de nombre de datos de Pandas para la API de
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 , utilice 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 pueda ser importado a watsonx.ai Runtime, debe ser exportado 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 watsonx.ai Runtime
Utilice este código para almacenar su modelo en su repositorio watsonx.ai Runtime:
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:
En función de la infraestructura de modelo utilizada,
<your model>
puede ser el objeto de modelo real, una vía de acceso completa a un archivo de modelo guardado o una vía de acceso a un directorio donde se encuentra el archivo de modelo. Para obtener más información, consulte maneras disponibles de importar modelos, por tipo de entorno.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=True
y establezca 'opset_version
' en 9 (los despliegues en tiempo de ejecuciónwatsonx.ai 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)
Tema padre: Activos en espacios de despliegue