:original_name: modelarts_23_0091.html
.. _modelarts_23_0091:
Model Package Specifications
============================
When you import models in **Model Management**, if the meta model is imported from OBS or a container image, the model package must meet the following specifications:
- The model package must contain the **model** directory. The **model** directory stores the model file, model configuration file, and model inference code.
- The model configuration file must exist and its name is fixed to **config.json**. There exists only one model configuration file. For details about how to compile the model configuration file, see :ref:`Specifications for Compiling the Model Configuration File `.
- The model inference code file is optional. If this file is required, the file name is fixed to **customize_service.py**. There must be one and only one such file. For details about how to compile the model inference code, see :ref:`Specifications for Compiling Model Inference Code `.
.. note::
- The **.py** file on which **customize_service.py** depends can be directly stored in the **model** directory. Use the Python import mode to import the custom package.
- The other files on which **customize_service.py** depends can be stored in the **model** directory. You must use absolute paths to access these files. For more details, see :ref:`Obtaining an Absolute Path `.
ModelArts also provides custom script examples of common AI engines. For details, see :ref:`Examples of Custom Scripts `.
Model Package Example
---------------------
- Structure of the TensorFlow-based model package
When publishing the model, you only need to specify the **ocr** directory.
.. code-block::
OBS bucket/directory name
|── ocr
| ├── model (Mandatory) Name of a fixed subdirectory, which is used to store model-related files
| │ ├── <> (Optional) User's Python package, which can be directly referenced in the model inference code
| │ ├── saved_model.pb (Mandatory) Protocol buffer file, which contains the diagram description of the model
| │ ├── variables Name of a fixed sub-directory, which contains the weight and deviation rate of the model. It is mandatory for the main file of the *.pb model.
| │ │ ├── variables.index Mandatory
| │ │ ├── variables.data-00000-of-00001 Mandatory
| │ ├──config.json (Mandatory) Model configuration file. The file name is fixed to config.json. Only one model configuration file is supported.
| │ ├──customize_service.py (Optional) Model inference code. The file name is fixed to customize_service.py. Only one model inference code file exists. The files on which customize_service.py depends can be directly stored in the model directory.
- Structure of the MXNet-based model package
When publishing the model, you only need to specify the **resnet** directory.
.. code-block::
OBS bucket/directory name
|── resnet
| ├── model (Mandatory) Name of a fixed subdirectory, which is used to store model-related files
| │ ├── <> (Optional) User's Python package, which can be directly referenced in the model inference code
| │ ├── resnet-50-symbol.json (Mandatory) Model definition file, which contains the neural network description of the model
| │ ├── resnet-50-0000.params (Mandatory) Model variable parameter file, which contains parameter and weight information
| │ ├──config.json (Mandatory) Model configuration file. The file name is fixed to config.json. Only one model configuration file is supported.
| │ ├──customize_service.py (Optional) Model inference code. The file name is fixed to customize_service.py. Only one model inference code file exists. The files on which customize_service.py depends can be directly stored in the model directory.
- Structure of the Image-based model package
When publishing the model, you only need to specify the **resnet** directory.
.. code-block::
OBS bucket/directory name
|── resnet
| ├── model (Mandatory) Name of a fixed subdirectory, which is used to store model-related files
| │ ├──config.json (Mandatory) Model configuration file (the address of the SWR image must be configured). The file name is fixed to config.json. Only one model configuration file is supported.
- Structure of the PySpark-based model package
When publishing the model, you only need to specify the **resnet** directory.
.. code-block::
OBS bucket/directory name
|── resnet
| ├── model (Mandatory) Name of a fixed subdirectory, which is used to store model-related files
| │ ├── <> (Optional) User's Python package, which can be directly referenced in the model inference code
| │ ├── spark_model (Mandatory) Model directory, which contains the model content saved by PySpark
| │ ├──config.json (Mandatory) Model configuration file. The file name is fixed to config.json. Only one model configuration file is supported.
| │ ├──customize_service.py (Optional) Model inference code. The file name is fixed to customize_service.py. Only one model inference code file exists. The files on which customize_service.py depends can be directly stored in the model directory.
- Structure of the PyTorch-based model package
When publishing the model, you only need to specify the **resnet** directory.
.. code-block::
OBS bucket/directory name
|── resnet
| ├── model (Mandatory) Name of a fixed subdirectory, which is used to store model-related files
| │ ├── <> (Optional) User's Python package, which can be directly referenced in the model inference code
| │ ├── resnet50.pth (Mandatory) PyTorch model file, which contains variable and weight information and is saved as state_dict
| │ ├──config.json (Mandatory) Model configuration file. The file name is fixed to config.json. Only one model configuration file is supported.
| │ ├──customize_service.py (Optional) Model inference code. The file name is fixed to customize_service.py. Only one model inference code file exists. The files on which customize_service.py depends can be directly stored in the model directory.
- Structure of the Caffe-based model package
When publishing the model, you only need to specify the **resnet** directory.
.. code-block::
OBS bucket/directory name
|── resnet
| |── model (Mandatory) Name of a fixed subdirectory, which is used to store model-related files
| | |── <> (Optional) User's Python package, which can be directly referenced in the model inference code
| | |── deploy.prototxt (Mandatory) Caffe model file, which contains information such as the model network structure
| | |── resnet.caffemodel (Mandatory) Caffe model file, which contains variable and weight information
| | |── config.json (Mandatory) Model configuration file. The file name is fixed to config.json. Only one model configuration file is supported.
| | |── customize_service.py (Optional) Model inference code. The file name is fixed to customize_service.py. Only one model inference code file exists. The files on which customize_service.py depends can be directly stored in the model directory.
- Structure of the XGBoost-based model package
When publishing the model, you only need to specify the **resnet** directory.
.. code-block::
OBS bucket/directory name
|── resnet
| |── model (Mandatory) Name of a fixed subdirectory, which is used to store model-related files
| | |── <> (Optional) User's Python package, which can be directly referenced in the model inference code
| | |── *.m (Mandatory): Model file whose extension name is .m
| | |── config.json (Mandatory) Model configuration file. The file name is fixed to config.json. Only one model configuration file is supported.
| | |── customize_service.py (Optional) Model inference code. The file name is fixed to customize_service.py. Only one model inference code file exists. The files on which customize_service.py depends can be directly stored in the model directory.
- Structure of the Scikit_Learn-based model package
When publishing the model, you only need to specify the **resnet** directory.
.. code-block::
OBS bucket/directory name
|── resnet
| |── model (Mandatory) Name of a fixed subdirectory, which is used to store model-related files
| | |── <> (Optional) User's Python package, which can be directly referenced in the model inference code
| | |── *.m (Mandatory): Model file whose extension name is .m
| | |── config.json (Mandatory) Model configuration file. The file name is fixed to config.json. Only one model configuration file is supported.
| | |── customize_service.py (Optional) Model inference code. The file name is fixed to customize_service.py. Only one model inference code file exists. The files on which customize_service.py depends can be directly stored in the model directory.