模型包规范介绍

为了更方便用户使用和清晰的获取文档帮助,《AI工程师用户指南》按照AI开发流程调整拆分为多本文档,在一级导航中呈现,并从用户使用场景对各模块文档进行了优化。“模型包规范”的内容已拆分至《推理部署》,《AI工程师用户指南》里的“模型包规范介绍”已下线。
在AI应用管理创建AI应用时,如果是从OBS中导入元模型,则需要符合一定的模型包规范。

模型包规范适用于单模型场景,若是多模型场景(例如含有多个模型文件)推荐使用自定义镜像方式。
模型包里面必需包含“model”文件夹,“model”文件夹下面放置模型文件,模型配置文件,模型推理代码文件。
- 模型文件:在不同模型包结构中模型文件的要求不同,具体请参见模型包结构示例。
- 模型配置文件:模型配置文件必需存在,文件名固定为“config.json”,有且只有一个,模型配置文件编写请参见模型配置文件编写说明。
- 模型推理代码文件:模型推理代码文件是必选的。文件名固定为“customize_service.py”,此文件有且只能有一个,模型推理代码编写请参见模型推理代码编写说明。
- customize_service.py依赖的py文件可以直接放model目录下,推荐采用相对导入方式导入自定义包。
- customize_service.py依赖的其他文件可以直接放model目录下,需要采用绝对路径方式访问。绝对路径获取请参考绝对路径如何获取。
ModelArts针对多种引擎提供了样例及其示例代码,您可以参考样例编写您的配置文件和推理代码,详情请参见ModelArts样例列表。ModelArts也提供了常用AI引擎对应的自定义脚本示例,请参见自定义脚本代码示例。
模型包结构示例
- TensorFlow模型包结构
OBS桶/目录名 |── ocr | ├── model 必选: 固定子目录名称,用于放置模型相关文件 | │ ├── <<自定义python包>> 可选:用户自有的Python包,在模型推理代码中可以直接引用 | │ ├── saved_model.pb 必选: protocol buffer格式文件,包含该模型的图描述 | │ ├── variables 对*.pb模型主文件而言必选;固定子目录名称,包含模型的权重偏差等信息 | │ │ ├── variables.index 必选 | │ │ ├── variables.data-00000-of-00001 必选 | │ ├──config.json 必选:模型配置文件,文件名称固定为config.json, 只允许放置一个 | │ ├──customize_service.py 必选:模型推理代码,文件名称固定为customize_service.py, 只允许放置一个,customize_service.py依赖的文件可以直接放model目录下
- MXNet模型包结构
OBS桶/目录名 |── resnet | ├── model 必选: 固定子目录名称,用于放置模型相关文件 | │ ├── <<自定义python包>> 可选:用户自有的Python包,在模型推理代码中可以直接引用 | │ ├── resnet-50-symbol.json 必选,模型定义文件,包含模型的神经网络描述 | │ ├── resnet-50-0000.params 必选;模型变量参数文件,包含参数和权重信息 | │ ├──config.json 必选:模型配置文件,文件名称固定为config.json, 只允许放置一个 | │ ├──customize_service.py 必选:模型推理代码,文件名称固定为customize_service.py, 只允许放置一个,customize_service.py依赖的文件可以直接放model目录下
- Image模型包结构
OBS桶/目录名 |── resnet | ├── model 必选: 固定子目录名称,用于放置模型相关文件 | │ ├──config.json 必选:模型配置文件(需要配置swr镜像地址),文件名称固定为config.json, 只允许放置一个
- pyspark模型包结构
OBS桶/目录名 |── resnet | ├── model 必选: 固定子目录名称,用于放置模型相关文件 | │ ├── <<自定义Python包>> 可选:用户自有的Python包,在模型推理代码中可以直接引用 | │ ├── spark_model 必选: 模型文件夹,包含pyspark保存的模型内容 | │ ├──config.json 必选:模型配置文件,文件名称固定为config.json, 只允许放置一个 | │ ├──customize_service.py 必选:模型推理代码,文件名称固定为customize_service.py, 只允许放置一个,customize_service.py依赖的文件可以直接放model目录下
- PyTorch模型包结构
OBS桶/目录名 |── resnet | ├── model 必选: 固定子目录名称,用于放置模型相关文件 | │ ├── <<自定义Python包>> 可选:用户自有的Python包,在模型推理代码中可以直接引用 | │ ├── resnet50.pth 必选,pytorch模型保存文件,保存为“state_dict”,存有权重变量等信息。 | │ ├──config.json 必选:模型配置文件,文件名称固定为config.json, 只允许放置一个 | │ ├──customize_service.py 必选:模型推理代码,文件名称固定为customize_service.py, 只允许放置一个,customize_service.py依赖的文件可以直接放model目录下
- Caffe模型包结构
用户发布该模型时只需要指定到“resnet”目录
OBS桶/目录名 |── resnet | |── model 必选: 固定子目录名称,用于放置模型相关文件 | | |── <<自定义python包>> 可选:用户自有的Python包,在模型推理代码中可以直接引用 | | |── deploy.prototxt 必选,caffe模型保存文件,存有模型网络结构等信息 | | |── resnet.caffemodel 必选,caffe模型保存文件,存有权重变量等信息 | | |── config.json 必选:模型配置文件,文件名称固定为config.json, 只允许放置一个 | | |── customize_service.py 必选:模型推理代码,文件名称固定为customize_service.py, 只允许放置一个,customize_service.py依赖的文件可以直接放model目录下
- XGBoost模型包结构
用户发布该模型时只需要指定到“resnet”目录
OBS桶/目录名 |── resnet | |── model 必选: 固定子目录名称,用于放置模型相关文件 | | |── <<自定义python包>> 可选:用户自有的Python包,在模型推理代码中可以直接引用 | | |── *.m必选: 模型文件,命名以.m结尾 | | |── config.json 必选:模型配置文件,文件名称固定为config.json, 只允许放置一个 | | |── customize_service.py 必选:模型推理代码,文件名称固定为customize_service.py, 只允许放置一个,customize_service.py依赖的文件可以直接放model目录下
- Scikit_Learn模型包结构
用户发布该模型时只需要指定到“resnet”目录
OBS桶/目录名 |── resnet | |── model 必选: 固定子目录名称,用于放置模型相关文件 | | |── <<自定义python包>> 可选:用户自有的Python包,在模型推理代码中可以直接引用 | | |── *.m必选: 模型文件,命名以.m结尾 | | |── config.json 必选:模型配置文件,文件名称固定为config.json, 只允许放置一个 | | |── customize_service.py 必选:模型推理代码,文件名称固定为customize_service.py, 只允许放置一个,customize_service.py依赖的文件可以直接放model目录下