更新时间:2024-11-08 GMT+08:00

模型调试

训练完成后,可先在开发环境Notebook中创建本地模型,在开发环境Notebook调试完成后再部署到推理服务上。

只支持使用ModelArts Notebook部署本地服务。

示例代码

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

  1. 将自定义的推理文件和模型配置文件保存在训练生成的模型文件目录下。如训练生成的模型保存在“/home/ma-user/work/tensorflow_mlp_mnist_local_mode/train/model/”中,则推理文件“customize_service.py”和模型配置文件“config.json”也保存在该目录中。
  2. 创建模型运行的conda虚拟环境。

    1
    2
    3
    4
    5
    6
    7
    from modelarts.environment import Environment
    from modelarts.environment.conda_env import CondaDependencies
    
    env = Environment("tensorflow_mlp_mnist")
    cd = CondaDependencies.create(pip_packages=["tensorflow==1.13.1", "Pillow>=8.0.1"],
                                  conda_packages=["python=3.6.2"])
    env.conda = cd
    

  3. 创建本地模型。

     1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    11
    12
    13
    14
    from modelarts.session import Session
    from modelarts.model import Model
    
    session = Session()
    src_local_path = "/home/ma-user/work/tensorflow_mlp_mnist_local_mode/train/"
    model = Model(session,
                  publish=False,
                  source_location_type="LOCAL_SOURCE",         # 模型文件位置类型,
                  source_location=src_local_path + 'model',    # 模型文件位置
                  environment=env,
                  model_version='1.0.1',
                  model_type='TensorFlow',                     # 模型使用的AI框架
                  model_algorithm="image_classification",
                  model_name="tensorflow_mlp_mnist_local_infer")
    

    本地模型创建好后,可部署为本地服务。

  4. 本地模型创建完,可以调用接口发布模型。

    1
    model.publish_model(obs_location=obs_location)
    

    指定参数“obs_location”后,会将本地的模型文件上传到该目录下。参数可省略,示例如下:

    1
    model.publish_model()
    

    此时模型文件会上传到默认OBS桶以当前时间戳结尾的目录中。该目录会在命令执行后打印出来,示例如下:

    1
    Successfully upload file /home/ma-user/work/tensorflow_mlp_mnist_local_mode/train/model to OBS modelarts-cn-north-4-08aae033/model-0107-224502
    

参数说明

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

参数

是否必选

参数类型

描述

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版本等。请参见表2

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字段读取所配置的推理接口信息。

表2 Environment参数说明

参数

是否必选

类型

说明

name

String

环境名称。

conda

CondaDependencies

conda环境,具体请参见表3

表3 CondaDependencies参数说明

参数

是否必选

类型

说明

channels

List

python包的下载源。

pip_packages

List

conda虚拟环境需要使用的python包,如tensorflow,pillow等。

conda_packages

List

conda虚拟环境需要使用的conda包,如指定python版本。

表4 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个字符,默认为空。

表5 dependency结构

参数

是否必选

参数类型

描述

installer

String

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

packages

package结构数组

依赖包集合。

表6 package结构

参数

是否必选

参数类型

描述

package_name

String

依赖包名称。

package_version

String

依赖包版本。

restraint

String

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

  • EXACT:等于给定版本
  • ATLEAST:不小于给定版本
  • ATMOST:不大于给定版本
表7 创建模型返回参数说明

参数

参数类型

描述

model

Model对象

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