更新时间:2022-11-24 GMT+08:00
分享

导入模型

导入模型功能包括:

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

示例代码

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

1
2
3
4
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="input your model id")
    
  • 方式2:创建模型
    • 基于预置镜像和OBS路径创建模型
       1
       2
       3
       4
       5
       6
       7
       8
       9
      10
      11
      12
      model_instance = Model(
                           session, 
                           model_name="input model name",              # 模型名称
                           model_version="1.0.0",                      # 模型版本
                           source_location=model_location,             # 模型文件路径
                           model_type="MXNet",                         # 模型类型
                           model_algorithm="image_classification",     # 模型算法                                   
                           execution_code="OBS_PATH",                        
                           input_params=input_params,                  # 参考input_params格式描述
                           output_params=output_params,                # 参考output_params格式描述                             
                           dependencies=dependencies,                  # 参考dependencies格式描述
                           apis=apis)
      
      • input_params和output_params参数组的定义格式

        SDK提供了Params类对输入输出参数组的定义。input_params和output_params为list,list中的元组对象是Params。

        以input_params为例说明:

        1
        2
        3
        4
        5
        6
        7
        8
        9
        input_params = []                                                # input_params是list, 可存多个Params对象
        input_params1 = Params( 
                                url='url',                               # url路径
                                param_name='param_name',                 # 参数名
                                param_type='param_type',                 # 参数类型
                                min='min',                                                     
                                max='max',                               
                                param_desc='param_desc')
        input_params.append(input_params)
        
      • dependencies参数组的定义格式

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

        定义代码如下:

        1
        2
        3
        4
        5
        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
        packages  = []
        package1 =  Packages( 
                              package_name="package_name",               # 包名
                              package_version="version",                 # 包版本号
                              restraint="restraint")  
        packages.append(package1)
        
    • 基于自定义镜像创建模型

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

      from modelarts.session import Session
      from modelarts.model import Model
      
      session = Session()
      image_path = "your custom image path"
      model_instance = Model(
                              session, 
                              model_name="your model name",               # 模型名称
                              model_version="0.1.0",                      # 模型版本
                              source_location=image_path,                 # 模型文件路径
                              model_type="Image",                         # 模型类型
                            )
    • 使用自定义镜像和OBS路径创建模型

      适用于推理服务脚本在OBS中,推理依赖的自定义镜像和推理脚本分离场景。

      from modelarts.session import Session
      from modelarts.model import Model
      
      session = Session()
      model_location = "/your bucket/model path/"
      image_path = "your custom image path"
      initial_config = dict(protocol="https", port="8080")
      model_instance = Model(
                              session, 
                              model_name="test_image_with_obs_sdk",       # 模型名称
                              runtime=image_path,                         # 自定义镜像路径
                              model_version="0.1.0",                      # 模型版本
                              source_location=model_location,             # 模型文件路径
                              model_type="Custom",                        # 模型类型
                              initial_config=initial_config)

参数说明

表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路径。推理脚本必须放于模型所在路径(请参见“source_location”参数)的model目录下,名称固定为:“customize_service.py”

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
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")
分享:

    相关文档

    相关产品