Importación de un modelo
Función
Puedes usar la API para importar un modelo.
Asegúrese de que el código de ejecución y el modelo se han cargado en OBS. De forma predeterminada, los modelos generados por un trabajo de entrenamiento se almacenan en OBS.
URI
POST /v1/{project_id}/models
Parámetro |
Obligatorio |
Tipo |
Descripción |
---|---|---|---|
project_id |
Sí |
String |
ID del proyecto. Para obtener más información sobre cómo obtener un ID de proyecto, consulte Obtención de un ID y un nombre de proyecto. |
Cuerpo de la solicitud
Parámetro |
Obligatorio |
Tipo |
Descripción |
---|---|---|---|
model_name |
Sí |
String |
Nombre del modelo. Introduzca de 1 a 64 caracteres. Solo se permiten letras, dígitos, guiones medios (-) y guiones bajos (_). |
model_version |
Sí |
String |
Versión del modelo en el formato de Digit.Digit.Digit. El rango de valores de los dígitos es [1, 99]. Tenga en cuenta que ninguna parte del número de versión puede comenzar con 0. Por ejemplo, 01.01.01 no está permitido. |
source_location |
Sí |
String |
Ruta OBS donde se encuentra el modelo o la ubicación de la imagen de SWR |
source_job_id |
No |
String |
ID del trabajo de entrenamiento de origen. Si el modelo se genera a partir de un trabajo de entrenamiento, introduzca este parámetro para el seguimiento de origen. Si el modelo se importa desde un metamodelo de terceros, deje este parámetro en blanco. De forma predeterminada, este parámetro se deja en blanco. |
source_job_version |
No |
String |
Versión del trabajo de entrenamiento de origen. Si el modelo se genera a partir de un trabajo de entrenamiento, introduzca este parámetro para el seguimiento de origen. Si el modelo se importa desde un metamodelo de terceros, deje este parámetro en blanco. De forma predeterminada, este parámetro se deja en blanco. |
source_type |
No |
String |
Tipo de origen del modelo. El valor solo puede ser auto, lo que indica modelos ExeML (la descarga del modelo no es compatible).If a model is deployed through a training job, this parameter is left blank by default. |
model_type |
Sí |
String |
Tipo de modelo. El valor puede ser TensorFlow, MXNet, Caffe, Spark_MLlib, Scikit_Learn, XGBoost, Image, PyTorch, o Template, que se lee desde el archivo de configuración. |
runtime |
No |
String |
Entorno de tiempo de ejecución del modelo. Las opciones de runtime varían dependiendo del valor especificado para model_type. |
description |
No |
String |
Observaciones de modelo. El valor contiene un máximo de 100 caracteres y no puede contener los siguientes caracteres especiales ni más: &!'\<>= |
model_algorithm |
No |
String |
Algoritmo de modelo. Si el algoritmo se lee desde el archivo de configuración, este parámetro se puede dejar en blanco. Por ejemplo, el valor puede ser predict_analysis, object_detection o image_classification. El valor debe comenzar con una letra y no contener más de 36 caracteres. Los caracteres chinos y los caracteres especiales (&!'\"<>=) no están permitidos. |
execution_code |
No |
String |
Ruta OBS para almacenar el código de ejecución. De forma predeterminada, este parámetro se deja en blanco. El nombre del archivo de código de ejecución se fija en customize_service.py. El archivo de código de inferencia debe almacenarse en el directorio de model. Si este parámetro se deja en blanco, el sistema puede identificar automáticamente el código de inferencia en el directorio del model. |
input_params |
No |
params array |
Recopilación de parámetros de entrada de un modelo. De forma predeterminada, este parámetro se deja en blanco. Para más detalles, consulte Tabla 3. Si la colección de parámetros de entrada se lee de apis en el archivo de configuración, solo necesita proporcionar el campo initial_config y no necesita establecer input_params. input_params es opcional cuando existe el campo initial_config. |
output_params |
No |
Matriz params |
Recopilación de parámetros de salida de un modelo. De forma predeterminada, este parámetro se deja en blanco. Para más detalles, consulte Tabla 3. Si la colección de parámetros de salida se lee de apis en el archivo de configuración, solo tiene que proporcionar el campo initial_config y no necesita establecer output_params. |
dependencies |
No |
dependency array |
Paquete requerido para el código y el modelo de inferencia. De forma predeterminada, este parámetro se deja en blanco. Si el paquete se lee en el archivo de configuración, este parámetro se puede dejar en blanco. Tabla 4 muestra la estructura de dependencias. |
model_metrics |
No |
String |
Precisión del modelo, que se lee desde el archivo de configuración |
apis |
No |
Matriz apis |
Todos los parámetros de entrada y salida apis del modelo. Si los parámetros se leen del archivo de configuración, este parámetro se puede dejar en blanco. Para más detalles, consulte Tabla 10. |
initial_config |
No |
String |
Cadena de caracteres convertida desde el archivo de configuración del modelo final. Se recomienda utilizar el archivo initial_config para proporcionar información sobre los campos como apis, dependencies, input_params, y output_params. |
workspace_id |
No |
String |
ID del espacio de trabajo al que pertenece un servicio. El valor predeterminado es 0, que indica el espacio de trabajo predeterminado. |
model_docs |
No |
doc array |
Lista de documentos de descripción del modelo. Se admite un máximo de tres documentos. Para más detalles, consulte Tabla 7. |
install_type |
No |
String array |
Tipo de implementación. Solo se admiten letras minúsculas. El valor puede ser real-time, o batch. Valor predeterminado: [real-time, batch] |
template |
No |
Template object |
Elementos de configuración de plantilla. Este parámetro es obligatorio cuando model_type se establece en Template. Para más detalles, consulte Tabla 8. |
Parámetro |
Obligatorio |
Tipo |
Descripción |
---|---|---|---|
url |
Sí |
String |
URL de la API |
method |
Sí |
String |
Método de solicitud. Los valores posibles son post y get. |
protocol |
Sí |
String |
Solicitud de protocolo |
param_name |
Sí |
String |
Nombre del parámetro. Se recomienda que el nombre del parámetro contenga un máximo de 64 caracteres. |
param_type |
Sí |
String |
Tipo de parámetro. El valor puede ser int, string, float, timestamp, date, o file. |
min |
No |
Number |
Este parámetro es opcional cuando param_type se establece en int o float. De forma predeterminada, este parámetro se deja en blanco. |
max |
No |
Number |
Este parámetro es opcional cuando param_type se establece en int o float. De forma predeterminada, este parámetro se deja en blanco. |
param_desc |
No |
String |
Descripción del parámetro. Se recomienda que la descripción del parámetro contenga un máximo de 100 caracteres. De forma predeterminada, este parámetro se deja en blanco. |
Parámetro |
Obligatorio |
Tipo |
Descripción |
---|---|---|---|
installer |
Sí |
String |
Modo de instalación. Solo se admite pip. |
packages |
Sí |
package array |
Colección de paquetes de dependencias. Para más detalles, consulte Tabla 5. |
Parámetro |
Obligatorio |
Tipo |
Descripción |
---|---|---|---|
package_name |
Sí |
String |
Nombre de un paquete de dependencias. Asegúrese de que el nombre del paquete es correcto y existe. Los caracteres chinos y los caracteres especiales (&!'"<>=) no están permitidos. |
package_version |
No |
String |
Versión de un paquete de dependencias. Si este parámetro se deja en blanco, la última versión se instala de forma predeterminada. Los caracteres chinos y los caracteres especiales (&!'"<>=) no están permitidos. |
restraint |
No |
String |
Restricción de versión. El valor puede ser EXACT, ATLEAST, o ATMOST. Este parámetro es obligatorio solo cuando existe package_version. |
Parámetro |
Obligatorio |
Tipo |
Descripción |
---|---|---|---|
f1 |
No |
Double |
Puntuación de F1 |
recall |
No |
Double |
Revocar |
precision |
No |
Double |
Precisión |
accuracy |
No |
Double |
Precisión |
Parámetro |
Obligatorio |
Tipo |
Descripción |
---|---|---|---|
doc_name |
Sí |
String |
Nombre del documento, que debe comenzar con una letra. Introduzca de 1 a 48 caracteres. Solo se permiten letras, dígitos, guiones medios (-) y guiones bajos (_). |
doc_url |
Sí |
String |
Enlace HTTP(S) del documento |
Parámetro |
Obligatorio |
Tipo |
Descripción |
---|---|---|---|
infer_format |
No |
String |
Modo de entrada y salida. Cuando se utiliza este parámetro, el modo de entrada y salida incorporado en la plantilla no tiene efecto. |
template_id |
Sí |
String |
ID de la plantilla utilizada. La plantilla tiene un modo de entrada y salida incorporado. |
template_inputs |
Sí |
Array of TemplateInputs objects |
Configuración de entrada de plantilla, especificando la ruta de origen para configurar un modelo. Para más detalles, consulte Tabla 9. |
Parámetro |
Obligatorio |
Tipo |
Descripción |
---|---|---|---|
input |
Sí |
String |
Ruta de entrada de plantilla, que puede ser una ruta de archivo OBS o una ruta de directorio OBS. Cuando se utiliza una plantilla con varios elementos de entrada para crear un plantilla, si las rutas de destino input_properties especificadas en la plantilla son las mismas, el directorio OBS o el nombre de archivo OBS introducido aquí deben ser únicos para evitar que los archivos se sobrescriban. |
input_id |
Sí |
String |
ID de elemento de entrada, que se obtiene de los detalles de la plantilla. |
Parámetro |
Obligatorio |
Tipo |
Descripción |
---|---|---|---|
input_params |
No |
Object |
Parámetros de entrada en apis, descritos en formato de esquema JSON. Para más detalles, consulte Tabla 11. |
method |
No |
String |
Método de solicitud. Las opciones son POST y GET. |
output_params |
No |
Object |
Parámetros de salida en apis, descritos en formato de esquema JSON. Para más detalles, consulte Tabla 12. |
protocol |
No |
String |
Solicite el protocolo. |
url |
No |
String |
URL de solicitud de inferencia. |
Parámetro |
Obligatorio |
Tipo |
Descripción |
---|---|---|---|
properties |
No |
Map<String,Object> |
Propiedades de un elemento de objeto en el esquema JSON. Puede establecer parámetros, incluidos el nombre y el tipo de parámetro, en properties. |
type |
No |
String |
Escriba el esquema JSON, que puede ser object. |
Parámetro |
Obligatorio |
Tipo |
Descripción |
---|---|---|---|
properties |
No |
Map<String,Object> |
Propiedades de un elemento de objeto en el esquema JSON. Puede establecer parámetros, incluidos el nombre y el tipo de parámetro, en properties. |
type |
No |
String |
Escriba el esquema JSON, que puede ser object. |
Cuerpo de respuesta
Muestras
A continuación se muestra cómo importar un modelo cuyo nombre es mnist, versión 1.0.0 y tipo TensorFlow. El archivo de modelo proviene de un bucket OBS.
- Modelo de solicitud
POST https://endpoint/v1/{project_id}/models { "model_name": "mnist", "model_version": "1.0.0", "source_location": "https://models.obs.ap-southeast-1.myhuaweicloud.com/mnist", "source_job_id": "55", "source_job_version": "V100", "model_type": "TensorFlow", "runtime": "python2.7", "description": "mnist model", "execution_code": "https://testmodel.obs.ap-southeast-1.myhuaweicloud.com/customize_service.py", "input_params": [ { "url": "/v1/xxx/image", "protocol": "http", "method": "post", "param_name": "image_url", "param_type": "string", "min": 0, "max": 9, "param_desc": "http://test/test.jpeg" } ], "output_params": [ { "url": "/v1/xxx/image", "protocol": "http", "method": "post", "param_name": "face_location", "param_type": "box", "param_desc": "face_location param value description" } ], "dependencies": [ { "installer": "pip", "packages": [ { "package_name": "numpy", "package_version": "1.5.0", "restraint": "ATLEAST" } ] } ], "model_algorithm": "object_detection", "model_metrics":"{\"f1\":0.52381,\"recall\":0.666667,\"precision\":0.466667,\"accuracy\":0.625}", "apis": [ { "url": "/v1/xxx/image", "protocol": "http", "method": "post", "input_params": { "type": "object", "properties": { "image_url": { "type": "string" } } }, "output_params": { "type": "object", "properties": { "face_location": { "type": "box" } } } } ], }
- Modelo de respuesta
{ "model_id": "10eb0091-887f-4839-9929-cbc884f1e20e" }
Código de estado
Para obtener más información sobre el código de estado, consulte Tabla 1.