:original_name: modelarts_03_0076.html
.. _modelarts_03_0076:
Importing a Model
=================
Function
--------
You can use the API to import a model.
Ensure that the execution code and model have been uploaded to OBS. By default, the models generated by a training job are stored in OBS.
URI
---
POST /v1/{project_id}/models
:ref:`Table 1 ` describes the required parameters.
.. _modelarts_03_0076__en-us_topic_0130147365_table16518993181628:
.. table:: **Table 1** Parameters
+------------+-----------+--------+--------------------------------------------------------------------------------------------------------------------+
| Parameter | Mandatory | Type | Description |
+============+===========+========+====================================================================================================================+
| project_id | Yes | String | Project ID. For details about how to obtain the project ID, see :ref:`Obtaining a Project ID `. |
+------------+-----------+--------+--------------------------------------------------------------------------------------------------------------------+
Request Body
------------
:ref:`Table 2 ` describes the request parameters.
.. _modelarts_03_0076__en-us_topic_0130147365_table24514577587:
.. table:: **Table 2** Parameters
+--------------------+-----------+----------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| Parameter | Mandatory | Type | Description |
+====================+===========+======================+=================================================================================================================================================================================================================================================================================================================================================================================================================================================+
| model_name | Yes | String | Model name. Enter 1 to 64 characters. Only letters, digits, hyphens (-), and underscores (_) are allowed. |
+--------------------+-----------+----------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| model_version | Yes | String | Model version in the format of *Digit.Digit.Digit*. The value range of the digits is [1, 99]. Note that no part of the version number can start with 0. For example, **01.01.01** is not allowed. |
+--------------------+-----------+----------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| source_location | Yes | String | OBS path where the model is located or the SWR image location |
+--------------------+-----------+----------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| source_job_id | No | String | ID of the source training job. If the model is generated from a training job, input this parameter for source tracing. If the model is imported from a third-party meta model, leave this parameter blank. By default, this parameter is left blank. |
+--------------------+-----------+----------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| source_job_version | No | String | Version of the source training job. If the model is generated from a training job, input this parameter for source tracing. If the model is imported from a third-party meta model, leave this parameter blank. By default, this parameter is left blank. |
+--------------------+-----------+----------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| source_type | No | String | Model source type. The value can only be **auto**, which indicates ExeML models (model download is not supported). If a model is deployed through a training job, this parameter is left blank by default. |
+--------------------+-----------+----------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| model_type | Yes | String | Model type. The value can be **TensorFlow**, **MXNet**, **Caffe**, **Spark_MLlib**, **Scikit_Learn**, **XGBoost**, **Image**, **PyTorch**, or **Template**, which is read from the configuration file. |
+--------------------+-----------+----------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| runtime | No | String | For details about **runtime** options, see **Model Management** > **Importing a Model** > **Importing a Meta Model from OBS** in *ModelArts User Guide*. |
+--------------------+-----------+----------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| description | No | String | Model remarks. The value contains a maximum of 100 characters and cannot contain the following special characters and more: ``&!'\"<>=`` |
+--------------------+-----------+----------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| model_algorithm | No | String | Model algorithm. If the algorithm is read from the configuration file, this parameter can be left blank. For example, the value can be **predict_analysis**, **object_detection**, or **image_classification**. The value must start with a letter and contain no more than 36 characters. Chinese characters and special characters ``(&!'\"<>=)`` are not allowed. |
+--------------------+-----------+----------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| execution_code | No | String | OBS path for storing the execution code. By default, this parameter is left blank. The name of the execution code file is fixed to **customize_service.py**. The inference code file must be stored in the **model** directory. If this parameter is left blank, the system can automatically identify the inference code in the **model** directory. |
+--------------------+-----------+----------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| input_params | No | **params** array | Collection of input parameters of a model. By default, this parameter is left blank. For details, see :ref:`Table 3 `. If the collection of input parameters is read from **apis** in the configuration file, you only need to provide the **initial_config** field and do not need to set **input_params**. **input_params** is optional when the **initial_config** field exists. |
+--------------------+-----------+----------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| output_params | No | **params** array | Collection of output parameters of a model. By default, this parameter is left blank. For details, see :ref:`Table 3 `. If the collection of output parameters is read from **apis** in the configuration file, you only need to provide the **initial_config** field and do not need to set **output_params**. |
+--------------------+-----------+----------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| dependencies | No | **dependency** array | Package required for inference code and model. By default, this parameter is left blank. If the package is read from the configuration file, this parameter can be left blank. :ref:`Table 4 ` shows the dependency structure. |
+--------------------+-----------+----------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| model_metrics | No | String | Model precision, which is read from the configuration file |
+--------------------+-----------+----------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| apis | No | **apis** array | All **apis** input and output parameters of the model. If the parameters are read from the configuration file, this parameter can be left blank. For details, see :ref:`Table 10 `. |
+--------------------+-----------+----------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| initial_config | No | String | Character string converted from the final model configuration file. It is recommended that the **initial_config** file be used to provide information about the fields such as **apis**, **dependencies**, **input_params**, and **output_params**. |
+--------------------+-----------+----------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| workspace_id | No | String | ID of the workspace to which a service belongs. The default value is **0**, indicating the default workspace. |
+--------------------+-----------+----------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| model_docs | No | **doc** array | List of model description documents. A maximum of three documents are supported. For details, see :ref:`Table 7 `. |
+--------------------+-----------+----------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| install_type | No | String array | Deployment type. Only lowercase letters are supported. The value can be **real-time**, or **batch**. Default value: [**real-time**, **batch**] |
+--------------------+-----------+----------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| template | No | Template object | Template configuration items. This parameter is mandatory when **model_type** is set to **Template**. For details, see :ref:`Table 8 `. |
+--------------------+-----------+----------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
.. _modelarts_03_0076__en-us_topic_0130147365_table01082501075:
.. table:: **Table 3** **params** parameters
+------------+-----------+--------+--------------------------------------------------------------------------------------------------------------------------------------------------------+
| Parameter | Mandatory | Type | Description |
+============+===========+========+========================================================================================================================================================+
| url | Yes | String | API URL |
+------------+-----------+--------+--------------------------------------------------------------------------------------------------------------------------------------------------------+
| method | Yes | String | Request method. Possible values are **post** and **get**. |
+------------+-----------+--------+--------------------------------------------------------------------------------------------------------------------------------------------------------+
| protocol | Yes | String | Request protocol |
+------------+-----------+--------+--------------------------------------------------------------------------------------------------------------------------------------------------------+
| param_name | Yes | String | Parameter name. It is recommended that the parameter name contain a maximum of 64 characters. |
+------------+-----------+--------+--------------------------------------------------------------------------------------------------------------------------------------------------------+
| param_type | Yes | String | Parameter type. The value can be **int**, **string**, **float**, **timestamp**, **date**, or **file**. |
+------------+-----------+--------+--------------------------------------------------------------------------------------------------------------------------------------------------------+
| min | No | Number | This parameter is optional when **param_type** is set to **int** or **float**. By default, this parameter is left blank. |
+------------+-----------+--------+--------------------------------------------------------------------------------------------------------------------------------------------------------+
| max | No | Number | This parameter is optional when **param_type** is set to **int** or **float**. By default, this parameter is left blank. |
+------------+-----------+--------+--------------------------------------------------------------------------------------------------------------------------------------------------------+
| param_desc | No | String | Parameter description. It is recommended that the parameter description contain a maximum of 100 characters. By default, this parameter is left blank. |
+------------+-----------+--------+--------------------------------------------------------------------------------------------------------------------------------------------------------+
.. _modelarts_03_0076__en-us_topic_0130147365_table649013511785:
.. table:: **Table 4** **dependency** parameters
+-----------+-----------+-------------------+--------------------------------------------------------------------------------------------------------------------------------------+
| Parameter | Mandatory | Type | Description |
+===========+===========+===================+======================================================================================================================================+
| installer | Yes | String | Installation mode. Only **pip** is supported. |
+-----------+-----------+-------------------+--------------------------------------------------------------------------------------------------------------------------------------+
| packages | Yes | **package** array | Collection of dependency packages. For details, see :ref:`Table 5 `. |
+-----------+-----------+-------------------+--------------------------------------------------------------------------------------------------------------------------------------+
.. _modelarts_03_0076__en-us_topic_0130147365_table137621937181116:
.. table:: **Table 5** **package** parameters
+-----------------+-----------+--------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| Parameter | Mandatory | Type | Description |
+=================+===========+========+========================================================================================================================================================================================+
| package_name | Yes | String | Name of a dependency package. Ensure that the package name is correct and exists. Chinese characters and special characters ``(&!'"<>=)`` are not allowed. |
+-----------------+-----------+--------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| package_version | No | String | Version of a dependency package. If this parameter is left blank, the latest version is installed by default. Chinese characters and special characters ``(&!'"<>=)`` are not allowed. |
+-----------------+-----------+--------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| restraint | No | String | Version restriction. The value can be **EXACT**, **ATLEAST**, or **ATMOST**. This parameter is mandatory only when **package_version** exists. |
+-----------------+-----------+--------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
.. table:: **Table 6** **metric** parameters
========= ========= ====== ===========
Parameter Mandatory Type Description
========= ========= ====== ===========
f1 No Double F1 score
recall No Double Recall
precision No Double Precision
accuracy No Double Accuracy
========= ========= ====== ===========
.. _modelarts_03_0076__en-us_topic_0130147365_table9739172671118:
.. table:: **Table 7** **doc** parameters
+-----------+-----------+--------+----------------------------------------------------------------------------------------------------------------------------------------------+
| Parameter | Mandatory | Type | Description |
+===========+===========+========+==============================================================================================================================================+
| doc_name | Yes | String | Document name, which must start with a letter. Enter 1 to 48 characters. Only letters, digits, hyphens (-), and underscores (_) are allowed. |
+-----------+-----------+--------+----------------------------------------------------------------------------------------------------------------------------------------------+
| doc_url | Yes | String | HTTP(S) link of the document |
+-----------+-----------+--------+----------------------------------------------------------------------------------------------------------------------------------------------+
.. _modelarts_03_0076__en-us_topic_0130147365_table89901124131016:
.. table:: **Table 8** **Template** parameters
+-----------------+-----------+---------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| Parameter | Mandatory | Type | Description |
+=================+===========+=================================+====================================================================================================================================================================================+
| infer_format | No | String | Input and output mode. When this parameter is used, the input and output mode built in the template does not take effect. |
+-----------------+-----------+---------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| template_id | Yes | String | ID of the used template. The template has a built-in input and output mode. |
+-----------------+-----------+---------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| template_inputs | Yes | Array of TemplateInputs objects | Template input configuration, specifying the source path for configuring a model. For details, see :ref:`Table 9 `. |
+-----------------+-----------+---------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
.. _modelarts_03_0076__en-us_topic_0130147365_table12364181131310:
.. table:: **Table 9** **template_inputs** parameters
+-----------+-----------+--------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| Parameter | Mandatory | Type | Description |
+===========+===========+========+=========================================================================================================================================================================================================================================================================================================================================+
| input | Yes | String | Template input path, which can be an OBS file path or OBS directory path. When you use a template with multiple input items to create a model, if the target paths **input_properties** specified in the template are the same, the OBS directory or OBS file name entered here must be unique to prevent files from being overwritten. |
+-----------+-----------+--------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| input_id | Yes | String | Input item ID, which is obtained from the template details. |
+-----------+-----------+--------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
.. _modelarts_03_0076__en-us_topic_0130147365_table53974919117:
.. table:: **Table 10** **apis** parameters
+---------------+-----------+--------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------+
| Parameter | Mandatory | Type | Description |
+===============+===========+========+=================================================================================================================================================================+
| input_params | No | Object | Input parameters in **apis**, described in JSON Schema format. For details, see :ref:`Table 11 `. |
+---------------+-----------+--------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------+
| method | No | String | Request method. The options are **POST** and **GET**. |
+---------------+-----------+--------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------+
| output_params | No | Object | Output parameters in **apis**, described in JSON Schema format. For details, see :ref:`Table 12 `. |
+---------------+-----------+--------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------+
| protocol | No | String | Request protocol. |
+---------------+-----------+--------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------+
| url | No | String | Inference request URL. |
+---------------+-----------+--------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------+
.. _modelarts_03_0076__en-us_topic_0130147365_table116145629:
.. table:: **Table 11** **InputParams** parameters
+------------+-----------+--------------------+-----------------------------------------------------------------------------------------------------------------------------------+
| Parameter | Mandatory | Type | Description |
+============+===========+====================+===================================================================================================================================+
| properties | No | Map | Properties of an object element in JSON Schema. You can set parameters, including the parameter name and type, in **properties**. |
+------------+-----------+--------------------+-----------------------------------------------------------------------------------------------------------------------------------+
| type | No | String | Type in JSON Schema, which can be **object**. |
+------------+-----------+--------------------+-----------------------------------------------------------------------------------------------------------------------------------+
.. _modelarts_03_0076__en-us_topic_0130147365_table890117461320:
.. table:: **Table 12** **OutputParams** parameters
+------------+-----------+--------------------+-----------------------------------------------------------------------------------------------------------------------------------+
| Parameter | Mandatory | Type | Description |
+============+===========+====================+===================================================================================================================================+
| properties | No | Map | Properties of an object element in JSON Schema. You can set parameters, including the parameter name and type, in **properties**. |
+------------+-----------+--------------------+-----------------------------------------------------------------------------------------------------------------------------------+
| type | No | String | Type in JSON Schema, which can be **object**. |
+------------+-----------+--------------------+-----------------------------------------------------------------------------------------------------------------------------------+
Response Body
-------------
:ref:`Table 13 ` describes the response parameters.
.. _modelarts_03_0076__en-us_topic_0130147365_table88391251102419:
.. table:: **Table 13** Parameters
========= ====== ===========
Parameter Type Description
========= ====== ===========
model_id String Model ID
========= ====== ===========
Samples
-------
The following shows how to import a model whose name is **mnist**, version is **1.0.0**, and type is **TensorFlow**. The model file comes from an OBS bucket.
- Sample request
.. code-block:: text
POST https://endpoint/v1/{project_id}/models
{
"model_name": "mnist",
"model_version": "1.0.0",
"source_location": "https://models.obs.xxxx.com/mnist",
"source_job_id": "55",
"source_job_version": "V100",
"model_type": "TensorFlow",
"runtime": "python2.7",
"description": "mnist model",
"execution_code": "https://testmodel.obs.xxxx.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"
}
}
}
}
]
}
- Sample response
.. code-block::
{
"model_id": "10eb0091-887f-4839-9929-cbc884f1e20e"
}
Status Code
-----------
For details about the status code, see :ref:`Table 1 `.
Error Codes
-----------
See :ref:`Error Codes `.