华为云用户手册

  • 请求示例 创建算法。设置算法名称为“TestModelArtsalgorithm”,描述为“This is a ModelArts algorithm”。 POST https://endpoint/v2/{project_id}/algorithms { "metadata" : { "name" : "TestModelArtsalgorithm", "description" : "This is a ModelArts algorithm" }, "job_config" : { "code_dir" : "/algo-test/pytorch/work1/code/", "boot_file" : "/algo-test/pytorch/work1/code/test-pytorch.py", "parameters" : [ { "name" : "test-parameter", "value" : "10", "constraint" : { "type" : "String", "editable" : true, "required" : false, "sensitive" : false, "valid_type" : "None", "valid_range" : [ ] } } ], "parameters_customization" : true, "inputs" : [ { "name" : "data_url", "description" : "data source." } ], "outputs" : [ { "name" : "train_url", "description" : "model output." } ], "engine" : { "engine_name" : "PyTorch", "engine_version" : "PyTorch-1.3.0-python3.6" } } }
  • 响应示例 状态码: 201 ok { "metadata" : { "id" : "2e5451fe-913f-4492-821a-2981031382f7", "name" : "TestModelArtsalgorithm", "description" : "This is a ModelArts algorithm", "create_time" : 1636600721742, "workspace_id" : "0", "ai_project" : "default-ai-project", "user_name" : "", "domain_id" : "xxxxxxxxxxxxxxxxxxxxxxxxxx", "source" : "custom", "api_version" : "", "is_valid" : true, "state" : "", "size" : 4791, "tags" : null, "attr_list" : null, "version_num" : 0, "update_time" : 0 }, "job_config" : { "code_dir" : "/algo-test/pytorch/work1/code/", "boot_file" : "/algo-test/pytorch/work1/code/test-pytorch.py", "command" : "", "parameters" : [ { "name" : "test-parameter", "description" : "", "i18n_description" : null, "value" : "10", "constraint" : { "type" : "String", "editable" : true, "required" : false, "sensitive" : false, "valid_type" : "None", "valid_range" : [ ] } } ], "parameters_customization" : true, "inputs" : [ { "name" : "data_url", "description" : "name to translate" } ], "outputs" : [ { "name" : "train_url", "description" : "name to translate" } ], "engine" : { "engine_id" : "pytorch-cp36-1.3.0", "engine_name" : "PyTorch", "engine_version" : "PyTorch-1.3.0-python3.6" }, "code_tree" : { "name" : "code/", "children" : [ { "name" : "test-pytorch.py" } ] } }, "resource_requirements" : null, "advanced_config" : { } }
  • 请求示例 如下以修改uuid为3faf5c03-aaa1-4cbe-879d-24b05d997347的训练作业为例。修改成功后再调用查询训练作业接口即可看到description已被修改。 PUT https://endpoint/v2/{project_id}/training-jobs/3faf5c03-aaa1-4cbe-879d-24b05d997347 { "description" : "hahaha" }
  • 响应示例 状态码: 201 ok { "metadata" : { "id" : "2e5451fe-913f-4492-821a-2981031382f7", "name" : "TestModelArtsalgorithm", "description" : "This is a ModelArts algorithm modified", "create_time" : 1636600721742, "workspace_id" : "0", "ai_project" : "default-ai-project", "user_name" : "", "domain_id" : "xxxxxxxxxxxxxxxxxxxxxxxxxx", "source" : "custom", "api_version" : "", "is_valid" : true, "state" : "", "size" : 4791, "tags" : null, "attr_list" : null, "version_num" : 0, "update_time" : 0 }, "job_config" : { "code_dir" : "/algo-test/pytorch/work1/code/", "boot_file" : "/algo-test/pytorch/work1/code/test-pytorch.py", "command" : "", "parameters" : [ { "name" : "test-parameter", "description" : "", "i18n_description" : null, "value" : "10", "constraint" : { "type" : "String", "editable" : true, "required" : false, "sensitive" : false, "valid_type" : "None", "valid_range" : [ ] } } ], "parameters_customization" : true, "inputs" : [ { "name" : "data_url", "description" : "name to translate" } ], "outputs" : [ { "name" : "train_url", "description" : "name to translate" } ], "engine" : { "engine_id" : "pytorch-cp36-1.3.0", "engine_name" : "PyTorch", "engine_version" : "PyTorch-1.3.0-python3.6" }, "code_tree" : { "name" : "code/", "children" : [ { "name" : "test-pytorch.py" } ] } }, "resource_requirements" : null, "advanced_config" : { } }
  • 请求示例 如下以修改uuid为2e5451fe-913f-4492-821a-2981031382f7的算法为例。 PUT https://endpoint/v2/{project_id}/algorithms/2e5451fe-913f-4492-821a-2981031382f7 { "metadata" : { "name" : "TestModelArtsalgorithm", "description" : "This is a ModelArts algorithm modified" }, "job_config" : { "code_dir" : "/algo-test/pytorch/work1/code/", "boot_file" : "/algo-test/pytorch/work1/code/test-pytorch.py", "parameters" : [ { "name" : "test-parameter", "value" : "10", "constraint" : { "type" : "String", "editable" : true, "required" : false, "sensitive" : false, "valid_type" : "None", "valid_range" : [ ] } } ], "parameters_customization" : true, "inputs" : [ { "name" : "data_url", "description" : "data source." } ], "outputs" : [ { "name" : "train_url", "description" : "model output." } ], "engine" : { "engine_name" : "PyTorch", "engine_version" : "PyTorch-1.3.0-python3.6" } } }
  • 响应参数 状态码: 200 表2 响应Body参数 参数 参数类型 描述 category String 存储类型。可选值为OBS。 id String 动态挂载实例ID。 mount_path String 在Notebook实例中挂载的路径。 status String 动态挂载OBS状态。枚举值如下: MOUNTING:挂载中 MOUNT_FAILED:挂载失败 MOUNTED:已挂载 UNMOUNTING:卸载中 UNMOUNT_FAILED:卸载失败 UNMOUNTED:卸载完成 uri String OBS对象路径。
  • URI DELETE /v1/{project_id}/notebooks/{instance_id}/storage/{storage_id} 表1 路径参数 参数 是否必选 参数类型 描述 instance_id 是 String Notebook实例ID,可通过调用查询Notebook实例列表接口获取。 project_id 是 String 用户项目ID,获取方法请参见获取项目ID和名称。 storage_id 是 String OBS存储ID。
  • 响应参数 状态码: 200 表3 响应Body参数 参数 参数类型 描述 error_code String 操作失败的错误码。 error_msg String 操作失败的错误信息。 results Array of BatchResponse objects 批量删除标注团队成员的结果。 success Boolean 操作是否执行成功。可选值如下: true:执行成功 false:执行失败 表4 BatchResponse 参数 参数类型 描述 error_code String 操作失败的错误码。 error_msg String 操作失败的错误信息。 success Boolean 操作是否执行成功。可选值如下: true:执行成功 false:执行失败
  • 响应参数 状态码: 400 表5 响应Body参数 参数 参数类型 描述 error_code String ModelArts错误码。 error_msg String 具体错误信息。 状态码: 401 表6 响应Body参数 参数 参数类型 描述 error_code String ModelArts错误码。 error_msg String 具体错误信息。 状态码: 403 表7 响应Body参数 参数 参数类型 描述 error_code String ModelArts错误码。 error_msg String 具体错误信息。 状态码: 404 表8 响应Body参数 参数 参数类型 描述 error_code String ModelArts错误码。 error_msg String 具体错误信息。
  • 请求参数 表2 请求Header参数 参数 是否必选 参数类型 描述 Content-Type 是 String 该字段内容填为“application/json;charset=utf8。 X-Auth-Token 是 String 用户Token。通过调用 IAM 服务获取用户Token接口获取(响应消息头中X-Subject-Token的值)。 表3 请求Body参数 参数 是否必选 参数类型 描述 tags 是 Array of TmsTagForDelete objects 要删除的标签列表。 表4 TmsTagForDelete 参数 是否必选 参数类型 描述 key 是 String TMS标签的key。 value 否 String TMS标签的value,非必填。
  • 响应参数 状态码: 400 表5 响应Body参数 参数 参数类型 描述 error_code String ModelArts错误码。 error_msg String 具体错误信息。 状态码: 401 表6 响应Body参数 参数 参数类型 描述 error_code String ModelArts错误码。 error_msg String 具体错误信息。 状态码: 403 表7 响应Body参数 参数 参数类型 描述 error_code String ModelArts错误码。 error_msg String 具体错误信息。 状态码: 404 表8 响应Body参数 参数 参数类型 描述 error_code String ModelArts错误码。 error_msg String 具体错误信息。
  • 请求参数 表2 请求Header参数 参数 是否必选 参数类型 描述 Content-Type 是 String 该字段内容填为“application/json;charset=utf8。 X-Auth-Token 是 String 用户Token。通过调用IAM服务获取用户Token接口获取(响应消息头中X-Subject-Token的值)。 表3 请求Body参数 参数 是否必选 参数类型 描述 tags 是 Array of TmsTag objects TMS标签列表。 表4 TmsTag 参数 是否必选 参数类型 描述 key 是 String TMS标签的key。长度不能超过128个字符,首尾不能有空格,不能以_sys_开头。 value 是 String TMS标签的value。长度不能超过255个字符。
  • 请求示例 为指定服务添加标签。设置TMS标签的key为“test”和“model_version”,TMS标签的value为“service-gpu”和“0.1”。 https://{endpoint}/v1/{project_id}/services/a55eba18-1ebf-4e9a-8229-d2d3b593a3dc/tags/create { "tags" : [ { "key" : "test", "value" : "service-gpu" }, { "key" : "model_version", "value" : "0.1" } ] }
  • 响应示例 状态码: 200 OK { "resource_id" : "XGrRZuCV1qmMxnsmD5u", "create_time" : "2020-11-23 11:08:20", "progress" : 10.0, "status" : 1, "message" : "Start to export annotations. Export task id is jMZGm2SBp4Ymr2wrhAK", "code" : "ModelArts.4902", "elapsed_time" : 0, "result" : { "total_sample_count" : 49, "annotated_sample_count" : 30 }, "export_type" : 0, "config" : { "ambiguity" : false, "worker_server_num" : 0, "collect_sample" : false, "algorithm_type" : "fast", "image_brightness" : false, "image_colorfulness" : false } }
  • 请求参数 表2 请求Header参数 参数 是否必选 参数类型 描述 X-Auth-Token 是 String 用户token。 表3 请求Body参数 参数 是否必选 参数类型 描述 apps 是 Array of Apps objects app列表。 workspace_id 否 String 工作空间ID。获取方法请参见查询工作空间列表。未创建工作空间时默认值为“0”,存在创建并使用的工作空间,以实际取值为准。 表4 Apps 参数 是否必选 参数类型 描述 app_id 否 String APP的编号,可通过查询APP列表获取。
  • 响应参数 状态码: 200 表5 响应Header参数 参数 参数类型 描述 X-Request-Id String 链路追踪编号 表6 响应Body参数 参数 参数类型 描述 auth_result Array of AppAuthResultInfo objects 授权结果列表。 表7 AppAuthResultInfo 参数 参数类型 描述 api_id String API的编号。 app_id String APP的编号,可通过查询APP列表获取。 auth_id String 授权编号,授权失败时为空。 reason String 授权或者取消授权失败原因,授权成功时为空。 success Boolean 授权或者取消授权是否成功。 状态码: 401 表8 响应Header参数 参数 参数类型 描述 X-Request-Id String 链路追踪编号 表9 响应Body参数 参数 参数类型 描述 error_code String ModelArts错误码。 error_msg String 具体错误信息。 状态码: 403 表10 响应Header参数 参数 参数类型 描述 X-Request-Id String 链路追踪编号 表11 响应Body参数 参数 参数类型 描述 error_code String ModelArts错误码。 error_msg String 具体错误信息。 状态码: 404 表12 响应Header参数 参数 参数类型 描述 X-Request-Id String 链路追踪编号 表13 响应Body参数 参数 参数类型 描述 error_code String ModelArts错误码。 error_msg String 具体错误信息。 状态码: 500 表14 响应Header参数 参数 参数类型 描述 X-Request-Id String 链路追踪编号 表15 响应Body参数 参数 参数类型 描述 error_code String ModelArts错误码。 error_msg String 具体错误信息。
  • URI POST /v1/{project_id}/services/{service_id}/app-auth-apis/{api_id}/app-auth-api 表1 路径参数 参数 是否必选 参数类型 描述 project_id 是 String 用户项目ID。获取方法请参见获取项目ID和名称。 service_id 是 String API所属的服务ID。 api_id 是 String API编号。
  • 响应参数 状态码: 200 表3 响应Body参数 参数 参数类型 描述 category String 存储类型。可选值为OBS。 id String 动态挂载实例ID。 mount_path String 在Notebook实例中挂载的路径。 status String 动态挂载OBS状态。枚举值如下: MOUNTING:挂载中 MOUNT_FAILED:挂载失败 MOUNTED:已挂载 UNMOUNTING:卸载中 UNMOUNT_FAILED:卸载失败 UNMOUNTED:卸载完成 uri String OBS对象路径。
  • URI GET /v1/{project_id}/app-auth/apps/{app_name}/exists 表1 路径参数 参数 是否必选 参数类型 描述 app_name 是 String app名称。 project_id 是 String 用户项目ID。获取方法请参见获取项目ID和名称。 表2 Query参数 参数 是否必选 参数类型 描述 workspace_id 否 String 工作空间ID。获取方法请参见查询工作空间列表。未创建工作空间时默认值为“0”,存在创建并使用的工作空间,以实际取值为准。
  • 响应参数 状态码: 200 表4 响应Body参数 参数 参数类型 描述 exists Boolean APP是否存在。 状态码: 401 表5 响应Body参数 参数 参数类型 描述 error_code String ModelArts错误码。 error_msg String 具体错误信息。 状态码: 403 表6 响应Body参数 参数 参数类型 描述 error_code String ModelArts错误码。 error_msg String 具体错误信息。 状态码: 404 表7 响应Body参数 参数 参数类型 描述 error_code String ModelArts错误码。 error_msg String 具体错误信息。
  • URI POST /v2/{project_id}/datasets/{dataset_id}/workforce-tasks/{workforce_task_id}/acceptance/batch-comment 表1 路径参数 参数 是否必选 参数类型 描述 dataset_id 是 String 数据集ID。 project_id 是 String 用户项目ID。获取方法请参见获取项目ID和名称。 workforce_task_id 是 String 标注任务ID。
  • 请求示例 提交验收任务的样本评审意见。设置是否通过为“true”,评审分数为“A”。 { "comments" : [ { "worker_id" : "8c15ad080d3eabad14037b4eb00d6a6f", "sample_id" : "09ac49d5b06385849c8769fdcf0f6d60", "accept" : true, "comment" : "", "score" : "A" } ] }
  • 示例代码 在ModelArts notebook平台,Session鉴权无需输入鉴权参数。其它平台的Session鉴权请参见Session鉴权。 TensorFlow1.8本地推理示例代码 需要在环境中配置“tensorflow_model_server”,可调用SDK接口快速配置,请参考如下示例代码。 CPU环境,调用Model.configure_tf_infer_environ(device_type="CPU")完成配置,环境中只需配置运行一次。 GPU环境,调用Model.configure_tf_infer_environ(device_type="GPU")完成配置,环境中只需配置运行一次。 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 from modelarts.session import Session from modelarts.model import Model from modelarts.config.model_config import ServiceConfig session = Session() # GPU环境推理配置 Model.configure_tf_infer_environ(device_type="GPU") # CPU环境推理配置 #Model.configure_tf_infer_environ(device_type="CPU") 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) configs = [ServiceConfig(model_id=model_instance.get_model_id(), weight="100", instance_count=1, specification="local")] predictor_instance = model_instance.deploy_predictor(configs=configs) if predictor_instance is not None: predict_result = predictor_instance.predict(data="your_raw_data_or_data_path", data_type="your_data_type") # 本地推理预测,data支持raw data或者文件路径,data_type支持'json'、'files'或者'images' print(predict_result)
  • 示例代码 在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" # 自定义镜像的swr路径 model_instance = Model( session, model_name="your_model_name", # 模型名称 model_version="0.1.0", # 模型版本 source_location="image_path", # 模型文件路径 model_type="Image" # 模型类型 )
  • 示例代码 在ModelArts Notebook平台,Session鉴权无需输入鉴权参数。其它平台的Session鉴权请参见Session鉴权。 from modelarts.session import Session session = Session() # 1. 上传本地文件至OBS session.obs.copy(src_path='/home/ma-user/file1.txt', dst_path='obs://bucket-name/dir1/file1.txt') # 2. 下载OBS文件至本地 session.obs.copy(src_path='obs://bucket-name/dir1/file1.txt', dst_path='/home/ma-user/file1.txt') # 3. 上传本地文件夹至OBS session.obs.copy(src_path='/home/ma-user', dst_path='obs://bucket-name/dir1', keep_last_dir=True) # 4. 下载OBS文件夹至本地 session.obs.copy(src_path='obs://bucket-name/dir1', dst_path='/home/ma-user', keep_last_dir=True) 表1 请求参数说明 参数 是否必选 参数类型 描述 session 是 Object 会话对象。 src_path 是 String 源文件或源文件夹路径,当源路径为OBS路径时,必须以obs://作为路径前缀。 dst_path 是 String 目的文件或目的文件夹路径,当目的路径为OBS路径时,必须以obs://作为路径前缀。 keep_last_dir 否 Boolean 默认为True,复制文件夹时是否将源文件夹最后一级目录复制至目的文件夹下,仅对文件夹复制有效。 表2 失败相应说明 参数 参数类型 描述 error_code String 调用失败时的错误码。调用成功时无此字段。 error_msg String 调用失败时的错误信息。调用成功时无此字段。
  • 示例代码 在ModelArts notebook平台,Session鉴权无需输入鉴权参数。其它平台的Session鉴权请参见Session鉴权。 from modelarts.session import Session from modelarts.estimatorV2 import Estimator session = Session() info = Estimator.get_framework_list(session=session) print(info)
  • 示例代码 在ModelArts notebook平台,Session鉴权无需输入鉴权参数。其它平台的Session鉴权请参见Session鉴权。 from modelarts.session import Session from modelarts.estimatorV2 import Estimator session = Session() info = Estimator.get_train_instance_types(session=session) print(info)
  • 示例代码 在ModelArts notebook平台,Session鉴权无需输入鉴权参数。其它平台的Session鉴权请参见Session鉴权。 方式一:根据指定的job_id查询。 from modelarts.session import Session from modelarts.estimatorV2 import Estimator session = Session() estimator = Estimator(session=session, job_id="your job id") info = estimator.get_job_metrics() print(info) 方式二:根据创建训练作业生成的训练作业对象查询。 info = job_instance.get_job_metrics(task_id="worker-0") print(info)
  • 示例代码 在ModelArts notebook平台,Session鉴权无需输入鉴权参数。其它平台的Session鉴权请参见Session鉴权。 方式一:根据指定的job_id查询。 from modelarts.session import Session from modelarts.estimatorV2 import Estimator session = Session() estimator = Estimator(session=session, job_id="your job id") info = estimator.get_job_log() print(info) 方式二:根据创建训练作业生成的训练作业对象查询。 log = job_instance.get_job_log(task_id="worker-0") print(log)
  • 示例代码 在ModelArts notebook平台,Session鉴权无需输入鉴权参数。其它平台的Session鉴权请参见Session鉴权。 方式一:根据指定的job_id终止。 from modelarts.session import Session from modelarts.estimatorV2 import Estimator session = Session() info = Estimator.control_job_by_id(session=session, job_id="your job id") print(info) 方式二:根据创建训练作业生成的训练作业对象终止。 job_instance.control_job()
共100000条