导入模型
导入模型功能包括:
- 初始化已存在的模型,根据模型ID生成模型对象。
- 创建模型。模型对象的属性,请参见查询模型详情。
示例模型文件
以PyTorch为例,编写模型文件。PyTorch模型包结构可参考模型包规范介绍。
OBS桶/目录名 ├── resnet │ ├── model 必选:固定子目录名称,用于放置模型相关文件 │ │ ├──<<自定义Python包>> 可选:用户自有的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)
- dependencies参数组的定义格式
- 基于自定义镜像创建模型
适用于推理服务的脚本已经内置在自定义镜像中,镜像启动时会自动拉起服务的场景。
from modelarts.session import Session from modelarts.model import Model session = Session() image_path = "custom_image_path" # 自定义镜像的swr路径 model_instance = Model( session, model_name="your_model_name", # 模型名称 model_version="0.1.0", # 模型版本 source_location="image_path", # 模型文件路径 model_type="Image" # 模型类型 )
- 基于预置镜像和OBS路径创建模型
参数说明
参数 |
是否必选 |
参数类型 |
描述 |
---|---|---|---|
session |
是 |
Object |
会话对象,初始化方法参考Session鉴权。 |
model_id |
是 |
String |
模型ID。 |
参数 |
是否必选 |
参数类型 |
描述 |
---|---|---|---|
session |
是 |
Object |
会话对象,初始化方法见Session鉴权。 |
model_name |
否 |
String |
模型名称,名称只能字母,中文开头,为字母、数字、下划线、中文或者中划线组成的合法字符,支持1-64个字符。若未输入该参数,系统会自动生成模型name。 |
model_version |
是 |
String |
模型版本,格式需为“数值.数值.数值”,其中数值为1-2位正整数。版本不可以出现以0开头的版本号形式,如“01.01.01”等。 |
publish |
否 |
Bool |
是否发布模型。可选值:
|
source_location_type |
否 |
String |
模型位置类型。可选值:
|
source_location |
是 |
String |
模型文件所在路径,指定到模型文件的父目录。
|
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字段读取所配置的推理接口信息。 |
参数 |
是否必选 |
参数类型 |
描述 |
---|---|---|---|
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个字符,默认为空。 |
参数 |
是否必选 |
参数类型 |
描述 |
---|---|---|---|
installer |
是 |
String |
安装方式,当前只支持“pip”。 |
packages |
是 |
package结构数组 |
依赖包集合。 |
参数 |
是否必选 |
参数类型 |
描述 |
---|---|---|---|
package_name |
是 |
String |
依赖包名称。 |
package_version |
否 |
String |
依赖包版本。 |
restraint |
否 |
String |
版本过滤条件,当且仅当package_version存在时必填。取值为:
|
参数 |
是否必选 |
参数类型 |
描述 |
---|---|---|---|
model_instance |
是 |
Model对象 |
模型对象,可以调用本章节模型管理的所有接口。 |
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" ) |