华为云AI开发平台ModelArts导入模型_云淘科技

导入模型功能包括:

初始化已存在的模型,根据模型ID生成模型对象。
创建模型。模型对象的属性,请参见查询模型详情。

示例模型文件

以PyTorch为例,编写模型文件。PyTorch模型包结构可参考模型包规范介绍。

OBS桶/目录名
├── resnet
│   ├── model 必选:固定子目录名称,用于放置模型相关文件
│   │  ├──<>  可选:用户自有的Python包,在模型推理代码中可以直接引用
│   │  ├──mnist_mlp.pt 必选,pytorch模型保存文件,保存为“state_dict”,存有权重变量等信息。
│   │  ├──config.json 必选:模型配置文件,文件名称固定为config.json,只允许放置一个
│   │  ├──customize_service.py 必选:模型推理代码,文件名称固定为customize_service.py,只允许放置一个,customize_service.py依赖的文件可以直接放model目录下

示例代码

在ModelArts notebook平台,Session鉴权无需输入鉴权参数。其它平台的Session鉴权请参见Session鉴权。

1
2
3
4
5
from modelarts.session import Session
from modelarts.model import Model
from modelarts.config.model_config import ServiceConfig, Params, Dependencies, Packages

session = Session()

方式1:初始化已存在模型

1
model_instance = Model(session, model_id="your_model_id")

方式2:创建模型

基于预置镜像和OBS路径创建模型

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
model_location = "/your_obs_bucket/model_path"            # 修改为真实的模型文件OBS路径 
execution_code = "/your_obs_bucket/model_path/customize_service.py"
runtime = "python3.7"

model_instance = Model(
                        session,
                        model_name="input_model_name",    # (可选)模型名称
                        model_version="1.0.0",            # (可选)模型版本
                        source_location=model_location,   # 模型文件所在的OBS路径,如:"/your_obs_bucket/model_path"
                        model_type="PyTorch",             # 模型类型
                        execution_code=execution_code,    # (可选)存放执行脚本的OBS路径,如:"/your_obs_bucket/model_path/customize_service.py"
                        runtime=runtime                  # (可选)支持的运行环境
                       )

dependencies会覆盖样例中config.json的相关内容,上述无需使用dependencies,dependencies格式样例可参考下方格式定义。

dependencies参数组的定义格式

SDK提供了Dependencies类对其定义,dependencies为list,list中的元组对象是Dependencies。

定义代码如下:

1
2
3
4
5
6
dependencies = []
dependency1 = Dependencies(
      installer="pip",                     # 安装方式,目前支持pip
      packages=packages                   # 依赖包集合, 定义格式参考下文关于packages的定义
)
dependencies.append(dependency1)

package参数组的定义格式

SDK提供了Packages类对其定义,packages为list,list中的元组对象是Packages。

定义代码如下:

1
2
3
4
5
6
7
packages = []
package1 = Packages(
     package_name="package_name",               # 包名
     package_version="version",                 # 包版本号
     restraint="EXACT"
)  
packages.append(package1)

dependencies参数组的创建样例:

dependencies = []
packages = [{
    "package_name": "numpy",
    "package_version": "1.15.0",
    "restraint": "EXACT"
    }, {
        "package_name": "h5py",
        "package_version": "2.8.0",
        "restraint": "EXACT"
    }]
dependency = Dependencies(installer="pip", packages=packages)
dependencies.append(dependency)

基于自定义镜像创建模型

适用于推理服务的脚本已经内置在自定义镜像中,镜像启动时会自动拉起服务的场景。

from modelarts.session import Session
from modelarts.model import Model

session = Session()
image_path = "custom_image_path"
model_instance = Model(
                        session, 
                        model_name="your_model_name",               # 模型名称
                        model_version="0.1.0",                      # 模型版本
                        source_location=image_path,                 # 模型文件路径
                        model_type="Image"                         # 模型类型
                      )

参数说明

表1 初始化模型场景参数说明

参数

是否必选

参数类型

描述

session

Object

会话对象,初始化方法参考Session鉴权。

model_id

String

模型ID。

表2 创建模型场景参数说明

参数

是否必选

参数类型

描述

session

Object

会话对象,初始化方法见Session鉴权。

model_name

String

模型名称,名称只能字母,中文开头,为字母、数字、下划线、中文或者中划线组成的合法字符,支持1-64个字符。若未输入该参数,系统会自动生成模型name。

model_version

String

模型版本,格式需为“数值.数值.数值”,其中数值为1-2位正整数。版本不可以出现以0开头的版本号形式,如“01.01.01”等。

publish

Bool

是否发布模型。可选值:

True: 发布模型。(默认值)
False: 不发布模型,创建本地模型,可用来调试相关代码。

source_location_type

String

模型位置类型。可选值:

OBS_SOURCE:source_location为OBS路径。(默认值)
LOCAL_SOURCE:source_location为本地路径。

source_location

String

模型文件所在路径,指定到模型文件的父目录。

当source_location_type为OBS_SOURCE时,模型文件所在路径为OBS路径,格式为“/obs_bucketname/…/model_file_parent_dir/”。
当source_location_type为LOCAL_SOURCE时,模型文件所在路径为本地路径,格式为“/local_path/…/model_file_parent_dir/”。

environment

Environment实例

描述模型正常运行需要的环境,如使用的python版本、tensorflow版本等。

Environment实例的示例请参见示例代码。

source_job_id

String

来源训练作业的ID,模型是从训练作业产生的可填写,用于溯源;如模型是从第三方元模型导入,则为空,默认值为空。

source_job_version

String

来源训练作业的版本,模型是从训练作业产生的可填写,用于溯源;如模型是从第三方元模型导入,则为空,默认值为空。

source_type

String

模型来源的类型,当前仅可取值auto,用于区分通过自动学习部署过来的模型(不提供模型下载功能);用户通过训练作业部署的模型不设置此值。默认值为空。

model_type

String

模型类型,取值为:TensorFlow/MXNet/Spark_MLlib/Scikit_Learn/XGBoost/MindSpore/Image/PyTorch。

model_algorithm

String

模型算法,表示模型的算法实现类型,如果已在模型配置文件中配置,则可不填。如:predict_analysis、object_detection 、image_classification。

description

String

模型描述信息,不超过100个字符,且不能包含特殊字符!=&’”。

execution_code

String

存放执行脚本的OBS路径,若模型没有输出“customize_service.py”则需要通过该参数指定。推理脚本必须放于模型所在路径(请参见“source_location”参数)的model目录下,名称固定为:“customize_service.py”。

runtime

String

支持的运行环境。如果使用了model_type参数,则需要填该参数。不同引擎对应的runtime可参见支持的常用引擎及其Runtime。

input_params

params结构数组

模型推理输入参数列表,默认为空。如果已在模型配置文件中配置apis信息时,则可不填,后台自动从配置文件的apis字段中读取输入参数信息。

output_params

params结构数组

模型推理输出参数列表,默认为空。如果已在模型配置文件中配置apis信息时,则可不填,后台自动从配置文件的apis字段中读取输出参数信息。

dependencies

dependency结构数组

运行代码及模型需安装的依赖包,默认为空。如果已在模型配置文件中配置dependencies信息时,则可不填,后台自动从配置文件的dependencies字段中读取需要安装的依赖包。

apis

String

模型提供的推理接口列表,默认为空。如果已在模型配置文件中配置apis信息时,则可不填,后台自动从配置文件中的apis字段读取所配置的推理接口信息。

表3 params结构

参数

是否必选

参数类型

描述

url

String

模型推理接口的请求路径。

param_name

String

参数名,不超过64个字符。

param_type

String

JSON Schema基本参数类型,有string、object、array、boolean、number、integer。

min

Double

当param_type为int或float时,可选填,默认为空。

max

Double

当param_type为int或float时,可选填,默认为空。

param_desc

String

参数描述,不超过100个字符,默认为空。

表4 dependency结构

参数

是否必选

参数类型

描述

installer

String

安装方式,当前只支持“pip”。

packages

package结构数组

依赖包集合。

表5 package结构

参数

是否必选

参数类型

描述

package_name

String

依赖包名称。

package_version

String

依赖包版本。

restraint

String

版本过滤条件,当且仅当package_version存在时必填。取值为:

EXACT:等于给定版本
ATLEAST:不小于给定版本
ATMOST:不大于给定版本

表6 create_model返回参数说明

参数

是否必选

参数类型

描述

model_instance

Model对象

模型对象,可以调用本章节模型管理的所有接口。

给出MXNet实现手写数字识别项目中模型创建实例:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
from modelarts.session import Session
from modelarts.model import Model

session = Session()
model_instance = Model(session,
                       model_name="digit_recognition",
                       model_version="1.0.0",
                       source_location=model_location,
                       model_type="MXNet",
                       model_algorithm="image_classification"
                       )

父主题: 模型管理

同意关联代理商云淘科技,购买华为云产品更优惠(QQ 78315851)

内容没看懂? 不太想学习?想快速解决? 有偿解决: 联系专家