华为云用户手册

  • URI GET /v2/{project_id}/workflows/overview 表1 路径参数 参数 是否必选 参数类型 描述 project_id 是 String 用户项目ID。获取方法请参见获取项目ID和名称。 表2 Query参数 参数 是否必选 参数类型 描述 workspace_id 否 String 工作空间ID,用于过滤具体工作空间下的条目。 search_type 否 String 过滤方式。可选值如下: equal表示精确匹配。 contain表示模糊匹配。 具体过滤的字段,由各个接口额外定义参数。例如Workflow支持按照名称(name)进行过滤,则相应的过滤字段为name。name=workflow&search_type=contain表示查询名称中含有Workflow字样的所有工作流。 name 否 String 工作流名称。填写1-64位,仅包含英文、数字、下划线(_)和中划线(-),并且以英文开头的名称。 description 否 String 工作流描述信息。
  • 响应示例 状态码: 201 OK { "name" : "graph-test-has-condition-step", "description" : "", "workspace_id" : "0", "steps" : [ { "name" : "condition_step_test", "title" : "condition_step_test", "description" : "", "type" : "condition", "conditions" : [ { "type" : "==", "left" : "$ref/parameters/is_true", "right" : true } ], "if_then_steps" : [ "training_job1" ], "else_then_steps" : [ "training_job2" ], "policy" : { } }, { "name" : "training_job1", "title" : "labeling", "description" : "", "type" : "job", "inputs" : [ { "name" : "data_url", "type" : "obs", "data" : "$ref/data/a2ff296da618452daa8243399f06db8e" } ], "outputs" : [ { "name" : "train_url", "type" : "obs", "config" : { "obs_url" : "/test-lh/test-metrics/" } }, { "name" : "service-link", "type" : "service_content", "config" : { "config_file" : "$ref/parameters/service_config1" } } ], "properties" : { "algorithm" : { "id" : "21ef85a8-5e40-4618-95ee-aa48ec224b43", "parameters" : [ ] }, "kind" : "job", "metadata" : { "name" : "workflow-b0b9fa4c06254b2ebb0e48ba1f7a916c" }, "spec" : { "resource" : { "flavor_id" : "$ref/parameters/train_spec", "node_count" : 1, "policy" : "regular" } } }, "depend_steps" : [ "condition_step_test" ], "policy" : { } }, { "name" : "training_job2", "title" : "labeling", "description" : "", "type" : "job", "inputs" : [ { "name" : "data_url", "type" : "obs", "data" : "$ref/data/f78e46676a454ccdacb9907f589f8d67" } ], "outputs" : [ { "name" : "train_url", "type" : "obs", "config" : { "obs_url" : "/test-lh/test-metrics/" } }, { "name" : "service-link", "type" : "service_content", "config" : { "config_file" : "$ref/parameters/service_config2" } } ], "properties" : { "algorithm" : { "id" : "21ef85a8-5e40-4618-95ee-aa48ec224b43", "parameters" : [ ] }, "kind" : "job", "metadata" : { "name" : "workflow-4a4317eb49ad4370bd087e6b726d84cf" }, "spec" : { "resource" : { "flavor_id" : "$ref/parameters/train_spec", "node_count" : 1, "policy" : "regular" } } }, "depend_steps" : [ "condition_step_test" ], "policy" : { } }, { "name" : "training_job3", "title" : "labeling", "description" : "", "type" : "job", "inputs" : [ { "name" : "data_url", "type" : "obs", "data" : "$ref/data/dee65054c96b4bf3b7ac98c0709f9ae0" } ], "outputs" : [ { "name" : "train_url", "type" : "obs", "config" : { "obs_url" : "/test-lh/test-metrics/" } }, { "name" : "service-link", "type" : "service_content", "config" : { "config_file" : "$ref/parameters/service_config3" } } ], "properties" : { "algorithm" : { "id" : "21ef85a8-5e40-4618-95ee-aa48ec224b43", "parameters" : [ ] }, "kind" : "job", "metadata" : { "name" : "workflow-3039303b3ae14f3e9eed416ba6361b1f" }, "spec" : { "resource" : { "flavor_id" : "$ref/parameters/train_spec", "node_count" : 1, "policy" : "regular" } } }, "depend_steps" : [ "training_job1", "training_job2" ], "policy" : { } } ], "labels" : [ "subgraph" ], "data" : [ { "name" : "a2ff296da618452daa8243399f06db8e", "type" : "obs", "value" : { "obs_url" : "/test-lh/test-metrics/" }, "used_steps" : [ "training_job1" ] }, { "name" : "f78e46676a454ccdacb9907f589f8d67", "type" : "obs", "value" : { "obs_url" : "/test-lh/test-metrics/" }, "used_steps" : [ "training_job2" ] }, { "name" : "dee65054c96b4bf3b7ac98c0709f9ae0", "type" : "obs", "value" : { "obs_url" : "/test-lh/test-metrics/" }, "used_steps" : [ "training_job3" ] } ], "parameters" : [ { "name" : "is_true", "type" : "bool", "delay" : true, "value" : true, "used_steps" : [ "condition_step_test" ] }, { "name" : "train_spec", "type" : "str", "format" : "flavor", "description" : "training specificaiton", "default" : "modelarts.vm.cpu.8u", "used_steps" : [ "training_job1", "training_job2", "training_job3" ] }, { "name" : "service_config1", "type" : "str", "default" : "/test-lh/test-metrics/metrics.json", "used_steps" : [ "training_job1" ] }, { "name" : "service_config2", "type" : "str", "default" : "/test-lh/test-metrics/metrics.json", "used_steps" : [ "training_job2" ] }, { "name" : "service_config3", "type" : "str", "default" : "/test-lh/test-metrics/metrics.json", "used_steps" : [ "training_job3" ] } ] }
  • 请求示例 创建Workflow工作流。设置工作流名称为“graph-test-has-condition-step”。 POST https://{endpoint}/v2/{project_id}/workflows { "name" : "graph-test-has-condition-step", "description" : "", "workspace_id" : "0", "steps" : [ { "name" : "condition_step_test", "title" : "condition_step_test", "description" : "", "type" : "condition", "conditions" : [ { "type" : "==", "left" : "$ref/parameters/is_true", "right" : true } ], "if_then_steps" : [ "training_job1" ], "else_then_steps" : [ "training_job2" ], "policy" : { } }, { "name" : "training_job1", "title" : "labeling", "description" : "", "type" : "job", "inputs" : [ { "name" : "data_url", "type" : "obs", "data" : "$ref/data/a2ff296da618452daa8243399f06db8e" } ], "outputs" : [ { "name" : "train_url", "type" : "obs", "config" : { "obs_url" : "/test-lh/test-metrics/" } }, { "name" : "service-link", "type" : "service_content", "config" : { "config_file" : "$ref/parameters/service_config1" } } ], "properties" : { "algorithm" : { "id" : "21ef85a8-5e40-4618-95ee-aa48ec224b43", "parameters" : [ ] }, "kind" : "job", "metadata" : { "name" : "workflow-b0b9fa4c06254b2ebb0e48ba1f7a916c" }, "spec" : { "resource" : { "flavor_id" : "$ref/parameters/train_spec", "node_count" : 1, "policy" : "regular" } } }, "depend_steps" : [ "condition_step_test" ], "policy" : { } }, { "name" : "training_job2", "title" : "labeling", "description" : "", "type" : "job", "inputs" : [ { "name" : "data_url", "type" : "obs", "data" : "$ref/data/f78e46676a454ccdacb9907f589f8d67" } ], "outputs" : [ { "name" : "train_url", "type" : "obs", "config" : { "obs_url" : "/test-lh/test-metrics/" } }, { "name" : "service-link", "type" : "service_content", "config" : { "config_file" : "$ref/parameters/service_config2" } } ], "properties" : { "algorithm" : { "id" : "21ef85a8-5e40-4618-95ee-aa48ec224b43", "parameters" : [ ] }, "kind" : "job", "metadata" : { "name" : "workflow-4a4317eb49ad4370bd087e6b726d84cf" }, "spec" : { "resource" : { "flavor_id" : "$ref/parameters/train_spec", "node_count" : 1, "policy" : "regular" } } }, "depend_steps" : [ "condition_step_test" ], "policy" : { } }, { "name" : "training_job3", "title" : "labeling", "description" : "", "type" : "job", "inputs" : [ { "name" : "data_url", "type" : "obs", "data" : "$ref/data/dee65054c96b4bf3b7ac98c0709f9ae0" } ], "outputs" : [ { "name" : "train_url", "type" : "obs", "config" : { "obs_url" : "/test-lh/test-metrics/" } }, { "name" : "service-link", "type" : "service_content", "config" : { "config_file" : "$ref/parameters/service_config3" } } ], "properties" : { "algorithm" : { "id" : "21ef85a8-5e40-4618-95ee-aa48ec224b43", "parameters" : [ ] }, "kind" : "job", "metadata" : { "name" : "workflow-3039303b3ae14f3e9eed416ba6361b1f" }, "spec" : { "resource" : { "flavor_id" : "$ref/parameters/train_spec", "node_count" : 1, "policy" : "regular" } } }, "depend_steps" : [ "training_job1", "training_job2" ], "policy" : { } } ], "labels" : [ "subgraph" ], "data" : [ { "name" : "a2ff296da618452daa8243399f06db8e", "type" : "obs", "value" : { "obs_url" : "/test-lh/test-metrics/" }, "used_steps" : [ "training_job1" ] }, { "name" : "f78e46676a454ccdacb9907f589f8d67", "type" : "obs", "value" : { "obs_url" : "/test-lh/test-metrics/" }, "used_steps" : [ "training_job2" ] }, { "name" : "dee65054c96b4bf3b7ac98c0709f9ae0", "type" : "obs", "value" : { "obs_url" : "/test-lh/test-metrics/" }, "used_steps" : [ "training_job3" ] } ], "parameters" : [ { "name" : "is_true", "type" : "bool", "delay" : true, "value" : true, "used_steps" : [ "condition_step_test" ] }, { "name" : "train_spec", "type" : "str", "format" : "flavor", "description" : "training specification", "default" : "modelarts.vm.cpu.8u", "used_steps" : [ "training_job1", "training_job2", "training_job3" ] }, { "name" : "service_config1", "type" : "str", "default" : "/test-lh/test-metrics/metrics.json", "used_steps" : [ "training_job1" ] }, { "name" : "service_config2", "type" : "str", "default" : "/test-lh/test-metrics/metrics.json", "used_steps" : [ "training_job2" ] }, { "name" : "service_config3", "type" : "str", "default" : "/test-lh/test-metrics/metrics.json", "used_steps" : [ "training_job3" ] } ] }
  • 响应示例 状态码: 201 OK { "created_at" : "2022-11-01T21:36:04.264564372+08:00", "name" : "execution-065", "execution_id" : "46c682b6-0310-4774-9c8e-62d7fb7e0b55", "description" : "", "workspace_id" : "0", "workflow_id" : "f1642618-43eb-4ab1-a0b1-9cc584182c60", "workflow_name" : "workflow_model_service_no_modify_xiahou_copy", "steps_execution" : null, "duration" : 0, "data_requirements" : [ { "name" : "model_input", "type" : "obs", "conditions" : [ { "attribute" : "object_type", "operator" : "equal", "value" : "directory" } ], "value" : { "object_type" : [ "DIRECTORY" ], "obs_url" : "/test-crq/train_output/" }, "used_steps" : [ "model_step" ] }, { "name" : "service_model", "type" : "model_list", "delay" : true, "conditions" : [ { "attribute" : "model_name", "operator" : "equal", "value" : "lh-xh" } ], "used_steps" : [ "service_step" ] } ], "parameters" : [ { "name" : "schedule_d5sm", "type" : "int", "format" : "schedule", "description" : "Set how long the deployed service will stop in hours, where -1 means the service will always run", "delay" : true, "used_steps" : [ "service_step" ] } ], "policies" : { } }
  • 请求示例 创建训练作业标签。设置TMS标签的key/value为“111”和“k3”,TMS标签的key/value为"k3"和“v2”。 POST https://endpoint/v2/{project_id }/trainJob/{training_job_id}/tags/create { "tags" : [ { "key" : "111", "value" : "v2" }, { "key" : "k3", "value" : "v2" } ] }
  • 示例代码 在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="618222c4-dc2f-4cfe-bc49-72b075b7552f") job_info = estimator.get_job_info() print(job_info) 方式二:根据创建训练作业生成的训练作业对象查询。 job_info = job_instance.get_job_info() print(job_info)
  • 参数说明 表1 Estimator请求参数说明 参数 是否必选 参数类型 描述 session 是 Object 会话对象,初始化方法请参考Session鉴权。 job_id 是 String 训练作业的id,可通过创建训练作业生成的训练作业对象查询,如"job_instance.job_id",或从查询训练作业列表的响应中获得。 表2 get_job_info返回参数说明 参数 参数类型 描述 kind String 训练作业类型。默认使用job。 枚举值: job:训练作业 hetero_job:异构作业 autosearch_job:自动搜索作业 mrs_job:mrs作业 edge_job:边缘作业 metadata JobMetadata object 训练作业元信息。 status Status object 训练作业状态信息。创建作业无需填写。 algorithm JobAlgorithmResponse object 训练作业算法。目前支持三种形式: id只取算法的id; subscription_id+item_version_id取算法的订阅id和版本id; code_dir+boot_file取训练作业的代码目录和启动文件。 tasks Array of TaskResponse objects 异构训练作业的任务列表。 spec spec object 训练作业规格参数。
  • 示例代码 通过Manifest路径来解析获取Manifest的信息。 from modelarts.session import Session from modelarts.dataset.format.manifest import Manifest path = "obs://your-obs-bucket/manifest/V001.manifest" session = Session() manifest_info= Manifest.parse_manifest(path,session=session)
  • 文档导读 本文档指导您如何安装和配置开发环境、如何通过调用ModelArts SDK提供的接口函数进行二次开发。 章节 内容 SDK简介 简要介绍ModelArts SDK的概念。 快速开始 介绍如何使用ModelArts SDK进行二次开发。 (可选)本地安装ModelArts SDK 介绍如何在本地安装ModelArts SDK。 (可选)Session鉴权 Session模块的主要作用是实现与公有云资源的鉴权,并初始化ModelArts SDK Client、OBS Client。 OBS管理概述 ModelArts SDK支持对OBS的SDK接口进行调用,包括创建OBS桶,上传/下载文件和文件夹,删除OBS对象和桶。 ModelArts SDK具体操作管理请参见如下章节: 数据管理 训练管理 模型管理 服务管理 介绍使用ModelArts SDK进行的常用操作。
  • 示例代码 在ModelArts notebook平台,Session鉴权无需输入鉴权参数。其它平台的Session鉴权请参见Session鉴权。 方式1:已部署为在线服务predictor的初始化 1 2 3 4 5 from modelarts.session import Session from modelarts.model import Predictor session = Session() predictor_instance = Predictor(session, service_id="your_service_id") 方式2:部署在线服务predictor 部署服务到公共资源池 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 from modelarts.session import Session from modelarts.model import Model from modelarts.config.model_config import ServiceConfig, TransformerConfig, Schedule session = Session() model_instance = Model(session, model_id='your_model_id') vpc_id = None # (可选)在线服务实例部署的虚拟私有云ID,默认为空 subnet_network_id = None # (可选)子网的网络ID,默认为空 security_group_id = None # (可选)安全组,默认为空 configs = [ServiceConfig(model_id=model_instance.model_id, weight="100", instance_count=1, specification="modelarts.vm.cpu.2u")] # 参考表3中specification字段 predictor_instance = model_instance.deploy_predictor( service_name="service_predictor_name", infer_type="real-time", vpc_id=vpc_id, subnet_network_id=subnet_network_id, security_group_id=security_group_id, configs=configs, # predictor配置参数, 参考下文configs参数格式说明 schedule = [Schedule(op_type='stop', time_unit='HOURS', duration=1)] # (可选)设置在线服务运行时间 ) 参数“model_id”代表将部署成在线服务的模型。“model_id”可以通过查询模型列表或者ModelArts管理控制台获取。 部署服务到专属资源池 from modelarts.config.model_config import ServiceConfig configs = [ServiceConfig(model_id=model_instance.model_id, weight="100", instance_count=1, specification="modelarts.vm.cpu.2u")] predictor_instance = model_instance.deploy_predictor( service_name="your_service_name", infer_type="real-time", configs=configs, cluster_id="your dedicated pool id" ) configs参数格式说明:SDK提供了ServiceConfig类对其定义,configs为list,list中的元组对象是ServiceConfig。定义代码如下: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 configs = [] envs = {"model_name":"mxnet-model-1", "load_epoch":"0"} service_config1 = ServiceConfig( model_id="model_id1", # model_id1和model_id2必须是同一个模型的不同版本对应的model_id weight="70", specification="modelarts.vm.cpu.2u", # 参考表3中specification字段 instance_count=2, envs=envs) # (可选)设置环境变量的值,如:envs = {"model_name":"mxnet-model-1", "load_epoch":"0"} service_config2 = ServiceConfig( model_id='model_id2', weight="30", specification="modelarts.vm.cpu.2u", # 参考表3中specification字段 instance_count=2, envs=envs) # (可选)设置环境变量的值,如:envs = {"model_name":"mxnet-model-1", "load_epoch":"0"} configs.append(service_config1) configs.append(service_config2) 方式3:部署批量服务transformer 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 from modelarts.session import Session from modelarts.model import Model from modelarts.config.model_config import TransformerConfig session = Session() model_instance = Model(session, model_id='your_model_id') vpc_id = None # (可选)批量服务实例部署的虚拟私有云ID,默认为空 subnet_network_id = None # (可选)子网的网络ID,默认为空 security_group_id = None # (可选)安全组,默认为空 transformer = model_instance.deploy_transformer( service_name="service_transformer_name", infer_type="batch", vpc_id=vpc_id, subnet_network_id=subnet_network_id, security_group_id=security_group_id, configs=configs # transformer配置参数, 参考下文configs参数格式说明 ) configs参数格式说明:SDK提供了TransformerConfig类对其定义,configs都是list,list中的元组对象是TransformerConfig。定义代码如下: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 configs = [] mapping_rule = None # (可选)输入参数与csv数据的映射关系 mapping_type= "file" # file或者csv envs = {"model_name":"mxnet-model-1", "load_epoch":"0"} transformer_config1 = TransformerConfig( model_id="model_id", specification="modelarts.vm.cpu.2u", # 参考表3中specification字段 instance_count=2, src_path="/shp-cn4/sdk-demo/", # 批量任务输入数据的OBS路径,如:"/your_obs_bucket/src_path" dest_path="/shp-cn4/data-out/", # 批量任务输出结果的OBS路径,如:"/your_obs_bucket/dest_path" req_uri="/", mapping_type=mapping_type, mapping_rule=mapping_rule, envs=envs) # (可选)设置环境变量的值,如:envs = {"model_name":"mxnet-model-1", "load_epoch":"0"} configs.append(transformer_config1)
  • 本地安装ModelArts SDK步骤 在本地安装ModelArts SDK,具体的配置步骤如下: 步骤一:下载ModelArts SDK 步骤二:配置运行环境 步骤三:安装ModelArts SDK ModelArts SDK支持安装在Windows和Linux操作系统中。 如果在Windows上安装ModelArts SDK时出现报错,可参见FAQ:Windows上安装ModelArts SDK报错处理报错。
  • 修订记录 发布日期 修订记录 2024-05-28 下线旧版训练管理相关内容。 2023-11-17 优化内容,(可选)Session鉴权。 2023-09-27 优化内容,SDK简介。 新增快速开始。 2023-02-23 新增使用SDK调测单机训练作业、使用SDK调测多机分布式训练作业。 2022-11-24 优化内容,SDK简介。 2022-11-01 新增文件传输(推荐)。 2022-10-28 优化内容,导入模型、部署在线服务。 2022-03-29 新增训练管理(推荐)的SDK参考: 训练管理 2021-11-18 优化内容,(可选)本地安装ModelArts SDK。 2021-08-30 新增Manifest管理的SDK参考: Manifest管理 2021-07-30 新增数据管理SDK参考: 数据管理 2021-01-15 新增SDK参考: 模型调试 2020-12-14 下线开发环境相关接口。 下线老版OBS管理的相关接口,建议使用新版的OBS管理接口。 针对config.json认证模式,即将下线,更改相应描述。 2020-04-10 新增: OBS管理:新增OBS相关操作指导功能。 2019-08-13 模型管理的dependency结构中不再支持conda安装器。更新如下接口: 导入模型 查询模型详情 2019-08-08 新增: 训练管理: 新增功能本地训练功能。 模型管理: 新增获取模型对象列表功能。 服务管理:新增部署本地服务和本地推理功能。 OBS管理: 新增获取OBS Client功能。 刷新: Session鉴权:优化Session鉴权内容。 2019-04-23 新增V1.1.1版本SDK,刷新SDK简介和(可选)本地安装ModelArts SDK内容,其他操作与V1.1.0一致。 2019-03-20 新增v1.1.0版本的SDK,主要包含Session鉴权、OBS操作、作业管理、模型管理、服务管理 。 2019-02-21 新增在线服务模型推理。 2018-11-21 优化和修改训练作业部分描述。 2018-11-06 第一次正式发布。
  • 示例代码 账号与用户的概念介绍,请参见IAM基本概念。获取您的账号、用户名等信息,请参见获取用户名、用户ID、项目名称、项目ID。 使用账号认证 “username”填写您的账号名。 1 2 from modelarts.session import Session session = Session(username='***', password='***', region_name='***', project_id='***') 如果您的华为云账号已经升级为华为账号,则账号认证方式将不可用,请创建一个IAM用户,使用IAM用户认证。 使用IAM用户认证 “account”填写您的账号名,“username”填写您的IAM用户名。 1 2 from modelarts.session import Session session = Session(account='***', username='***', password='***', region_name='***', project_id='***')
  • 用户名密码认证模式 本地安装完成ModelArts SDK后,可通过用户名密码认证模式进行Session鉴权。示例代码如下: 使用账号认证 “username”填写您的账号名。 1 2 3 4 5 6 7 from modelarts.session import Session # 认证用的password硬编码到代码中或者明文存储都有很大的安全风险,建议在配置文件或者环境变量中密文存放,使用时解密,确保安全; # 本示例以password保存在环境变量中来实现身份验证为例,运行本示例前请先在本地环境中设置环境变量HUAWEICLOUD_SDK_PASSWORD。 __PASSWORD = os.environ["HUAWEICLOUD_SDK_PASSWORD"] # 如果进行了加密还需要进行解密操作 session = Session(username='***', password=__PASSWORD, region_name='***', project_id='***') 使用IAM用户认证 “account”填写您的账号名,“username”填写您的IAM用户名。 1 2 3 4 5 6 7 from modelarts.session import Session # 认证用的password硬编码到代码中或者明文存储都有很大的安全风险,建议在配置文件或者环境变量中密文存放,使用时解密,确保安全; # 本示例以password保存在环境变量中来实现身份验证为例,运行本示例前请先在本地环境中设置环境变量HUAWEICLOUD_SDK_PASSWORD。 __PASSWORD = os.environ["HUAWEICLOUD_SDK_PASSWORD"] # 如果进行了加密还需要进行解密操作 session = Session(account='***', username='***', password=__PASSWORD, region_name='***', project_id='***') 账号与用户的概念介绍,请参见IAM基本概念。获取您的账号、用户名等信息,请参见获取用户名、用户ID、项目名称、项目ID。 如果您的华为云账号已经升级为华为账号,则账号认证方式将不可用,请创建一个IAM用户,使用IAM用户认证。
  • Session鉴权概述 Session模块的主要作用是实现与公有云资源的鉴权,并初始化ModelArts SDK Client、OBS Client。当成功建立Session后,您可以直接调用ModelArts的SDK接口。 ModelArts开发环境Notebook不需要Session鉴权,可以直接使用。示例代码如下: 1 2 from modelarts.session import Session session = Session() 本地PC使用ModelArts SDK时,需要进行Session鉴权。鉴权方式可参考如下认证方式,选择其中一种方式进行认证即可。 用户名密码认证模式: 支持OBS管理、数据管理、训练管理、模型管理、服务管理的鉴权。 用户AK-SK认证模式: 支持OBS管理、数据管理、训练管理、模型管理、服务管理的鉴权。
  • 服务管理概述 服务管理,包括将已创建成功的模型部署为在线服务或本地服务。可以实现在线预测、本地预测、服务详情查询、查看服务日志等功能。 这里的在线服务包括“predictor”和“transformer”两类,都包括下文描述的功能,本章节以“predictor”服务为例进行说明。 本章节的示例代码都是在ModelArts Notebook中实现的,如果在其它开发环境使用,需要进行Session鉴权,请参见Session鉴权。 父主题: 服务管理
  • 示例代码 在ModelArts Notebook平台,Session鉴权无需输入鉴权参数。其它平台的Session鉴权请参见Session鉴权。 场景1:查询当前用户所有模型 1 2 3 4 5 6 from modelarts.session import Session from modelarts.model import Model session = Session() model_list = Model.get_model_list(session) print(model_list) 场景2:按照检索条件查询当前用户模型 1 2 3 4 5 6 from modelarts.session import Session from modelarts.model import Model session = Session() model_list = Model.get_model_list(session, model_status="published", model_name="digit", order="desc") print(model_list)
  • 参数说明 表1 查询检索参数说明 参数 是否必选 参数类型 说明 model_name 否 String 模型名称,可支持模糊匹配。 model_version 否 String 模型版本。 model_status 否 String 模型状态,可根据模型的“publishing”、“published”、“failed”三种状态执行查询。 description 否 String 描述信息,可支持模糊匹配。 offset 否 Integer 指定要查询页的索引,默认为“0”。 limit 否 Integer 指定每一页返回的最大条目数,默认为“280”。 sort_by 否 String 指定排序字段,可选“create_at”、“model_version”、“model_size”,默认是可选“create_at”。 order 否 String 排序方式,可选“asc”或“desc”,代表递增排序及递减排序,默认是“desc”。 workspace_id 否 String 工作空间ID,默认为“0”。 表2 get_model_list打印参数说明 参数 参数类型 描述 total_count Integer 不分页的情况下,符合查询条件的总模型数量。 count Integer 模型数量。 models model结构数组 模型元数据信息。
  • 示例代码 在ModelArts Notebook平台,Session鉴权无需输入鉴权参数。其它平台的Session鉴权请参见Session鉴权。 from modelarts.session import Session from modelarts.estimatorV2 import Estimator session = Session() job_list = Estimator.get_job_list(session=session, offset=10, limit=5, sort_by="create_time", order="asc", filters=[{"key": "name", "operator": "like", "value": ["trainjob"]}]) print(job_list)
  • 参数说明 表1 部署predictor参数说明 参数 是否必选 参数类型 描述 description 否 String 服务描述,不超过100个字符,不设置此参数时,表示不更新。 status 否 String 服务状态,可设置状态为running或stopped来启动、停止服务,不设置此参数则不修改状态。status不可跟configs同时修改,同时存在则只修改status。 configs 否 包括predictor configs结构和transformer configs 服务配置,不设置此参数时,表示不更新。关于configs如何生成,请参见部署在线服务。 更新服务配置时,存在以下约束: 参数status指定的目标状态不允许和当前服务状态相同。 当前服务状态是deploying(部署中)、stopping(停止中)、deleteing(删除中)时,不允许参数status设置成running(启动)或设置参数configs(服务配置)。 当前服务状态是waiting(排队中)时,不允许参数status设置成running(启动)。 当前服务状态是concerning(告警)时,不允许参数status设置成running(启动)。
  • 示例代码 在ModelArts notebook平台,Session鉴权无需输入鉴权参数;其它平台的Session鉴权请参考Session鉴权。 方式1:根据部署在线服务生成的服务对象进行更新服务配置 1 2 3 4 5 6 7 8 9 10 from modelarts.session import Session from modelarts.model import Predictor from modelarts.config.model_config import ServiceConfig session = Session() predictor_instance = Predictor(session, service_id="your_service_id") configs = [ServiceConfig(weight="100", instance_count=1, specification="modelarts.vm.cpu.2u",model_id="your_model_id")] service_config = predictor_instance.update_service_config(description="description", status="running", configs=configs) 方式2:根据查询服务对象列表返回的服务对象进行更新服务配置 1 2 3 4 5 6 7 8 9 10 11 from modelarts.session import Session from modelarts.model import Predictor from modelarts.config.model_config import ServiceConfig session = Session() predictor_object_list = Predictor.get_service_object_list(session) predictor_instance = predictor_object_list[0] configs = [ServiceConfig(weight="100", instance_count=1, specification="modelarts.vm.cpu.2u",model_id="your_model_id")] predictor_config = predictor_instance.update_service_config(description="description", status="running", configs=configs)
  • 示例代码 在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鉴权。 方式一:根据指定的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()
  • 示例代码 在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" # 模型类型 )
  • 修订记录 发布日期 修订记录 2024-06-07 第二十一次正式发布。 新增:使用自定义安全组时,如何配置安全组规则? 2024-01-02 第二十次正式发布。 新增: Windows云桌面如何开启RDP? 2023-11-23 第十九次正式发布。 新增: 云桌面如何开启IPv6? 2023-09-11 第十八次正式发布。 新增: 云桌面最多支持创建多少个私有镜像? 如何开启/关闭云桌面的应急模式? 2023-08-23 第十七次正式发布。 新增: 购买云桌面后如何为企业项目迁入/迁出资源? 云桌面安装火绒杀毒管理员桌面转镜像失败如何处理? 2022-12-08 第十六次正式发布。 新增: 终端绑定问题 2022-11-11 第十五次正式发布。 修改: 优化云桌面支持使用私有镜像购买桌面吗?中镜像描述。 2022-11-03 第十四次正式发布。 新增: 云桌面如何进行备份恢复? 登录时提示受策略限制无法登录该如何处理? 2022-09-23 第十三次正式发布。 新增: 云桌面中可以登录淘宝网吗? 云桌面中可以访问手机淘宝吗? 修改: 修改云桌面支持哪种操作系统?中UOS操作系统版本。 2022-09-19 第十二次正式发布。 新增: 导入策略提示名称重复如何处理? 重建系统盘后Windows桌面的数据盘消失了怎么办? 2022-09-06 第十一次正式发布。 新增: 如何使终端用户可使用网络打印机? 云桌面管理控制台中提示“服务被锁定,请取消服务后重新开户”或“购买桌面、创建用户、创建策略、开通互联网”的按钮已置灰,无法使用怎么办? 云桌面中无法使用网络打印机怎么办? 2022-08-10 第十次正式发布。 修改: 优化云桌面屏幕无法适配怎么办?中PC显示器分辨率调节描述。 2022-08-08 第九次正式发布。 新增: 无法通过多因素验证怎么办? 2022-07-15 第八次正式发布。 新增: 如何通过其他云服务页面开通互联网? 2022-07-04 第七次正式发布。 新增: 云桌面无法访问互联网怎么办? 2022-07-01 第六次正式发布。 修改: 如何使终端用户可使用本地打印机?优化策略配置。 如何配置云桌面访问公网?优化参考链接。 如何配置云桌面访问企业内网?优化参考链接。 如何控制云桌面与本地存储设备之间的文件复制?优化操作描述。 云桌面无法连接外网怎么办?优化关闭代理描述。 云桌面中无法使用本地打印机怎么办?优化处理步骤。 无法在云桌面与本地存储设备之间复制文件怎么办?增加用户操作描述。 2022-04-29 第五次正式发布。 修改: 忘记帐户密码怎么办?优化操作描述。 2022-04-12 第四次正式发布。 新增: 如何启用AD服务器的LDAPS服务? 如何导出已启用LDAPS的AD服务器的根证书? 2022-03-30 第三次正式发布。 修改: 云桌面是如何计费的?优化套餐类型描述。 如下章节中增加Windows操作系统描述。 云桌面支持哪种操作系统? 云桌面是否支持个性化设置? 哪些软件禁止卸载? 哪些文件禁止删除? 哪些命令禁止执行? 2022-02-28 第二次正式发布。 新增: 如何扩容UOS磁盘容量至新增磁盘分区? 如何扩容UOS磁盘容量至已有磁盘分区? 2022-01-05 第一次正式发布。
  • 云桌面管理控制台中提示“服务被锁定,请取消服务后重新开户”或“购买桌面、创建用户、创建策略、开通互联网”的按钮已置灰,无法使用怎么办? 管理员开通服务后,在当前项目(无子项目)或者子项目中不存在桌面的天数已超过14天,系统自动锁定服务状态,从而导致“购买桌面、创建用户、创建策略、开通互联网”的按钮无法使用。管理员可根据提示取消服务后重新开户或在“租户配置”页面单击“重新激活”,激活服务状态后,即可使用“购买桌面、创建用户、创建策略、开通互联网”功能。 父主题: 管理员常见问题
  • 操作步骤 登录CAE控制台。 在左侧导航栏中选择“组件列表”。 选择待操作组件,在“操作”列“更多”下拉框单击“编辑”。 参考下表重新设置组件信息。 参数 类别 说明 组件名称 - 新建组件的名称。 版本号 - 组件的版本号。 格式为:A.B.C或者A.B.C.D。A、B、C、D为自然数,例如:1.0.0或者1.0.0.0。 实例规格 - 选择实例规格,例如:0.5core、1GiB;1core、1GiB;1core、2GiB;2core、4GiB等。 实例数量 - 实例数量默认为2,最少为1,最大值为99。 代码源 源码仓库 选择源码来源。本服务支持识别CodeArts、GitHub、GitCode、GitLab、Gitee和Bitbucket来源的代码。 将代码信息补充完整。 授权信息:从下拉框中选择对应的源码授权信息。如果您是首次使用该功能,在下拉框右侧单击“新建授权”,填写“授权名称”和选择“授权方式”,单击“确认”完成授权。单击“授权列表”可查看当前已创建的授权信息,选中列表前方复选框,可对已授权源码进行“重新授权”或“删除”。 用户名/组织:选择源码对应的用户名称或组织,用于当前项目的代码管理。 仓库名称:用于当前项目下各个模块代码的管理。 分支:选择对应的分支,用于开发对代码的管理。 语言/运行时:从下拉框中选择源码对应的语言格式。 自定义构建:构建命令可根据业务需要选择“使用默认命令或脚本”或“使用自定义命令”。 说明: 不同源码来源新建授权时授权方式不同,请按照实际情况进行选择。 使用默认命令或脚本:优先执行代码根目录下的build.sh,不存在则按照所选语言的通用方法构建,如Java:mvn clean package。 使用自定义命令:根据所选语言自定义构建命令;或修改build.sh文件后选择使用默认命令或脚本。 Dockerfile:组件来源是“源码仓库”时,根据业务需要设置。支持“自定义”和“系统默认”。 说明: 仅当“运行时”选择java时,可选择“系统默认”。 Dockerfile地址:当“Dockerfile”选择“自定义”时可设置。 “Dockerfile地址”即Dockerfile文件相对于项目的根目录(./)所在的目录,Dockerfile文件用于镜像构建。 Docker程序通过读取Dockerfile文件生成定制的镜像。 dockerfile地址只能包含字母、数字及.-_/且字符长度在1~255范围内的内容。 如果文件名为Dockerfile,允许只填写目录地址,但目录地址必须以/结尾。 制品文件名:当“Dockerfile”选择“系统默认”时可设置。 maven构建生成多个jar包时,选取指定的jar包运行,以".jar"结尾,支持模糊匹配,如:demo-1.0.jar,demo*.jar 镜像 用户可以通过“客户端上传镜像”和“页面上传镜像”两种方式上传镜像包。 在“我的镜像”、“开源镜像”或者“共享镜像”中选择已上传的镜像包部署。可通过镜像名称搜索镜像。 我的镜像:用户自定义上传的镜像包 开源镜像:容器镜像服务SWR中提供的开源镜像 共享镜像:不同账号之间共享的镜像包 (可选)用户还可以通过单击“代码源”右侧链接,前往容器镜像服务SWR控制台对镜像进行更多管理操作。 说明: 选择“页面上传镜像”时,单次仅支持添加1个镜像压缩包,文件大小(含解压后)不得超过2GB,支持tar、tar.gz格式,仅支持上传1.11.2及以上容器引擎客户端版本制作的镜像压缩包,制作过程详见制作镜像压缩包。 如需上传大于 2GB的文件,请使用“客户端上传镜像”。 软件包 选择软件包位置“CodeArts件发布库”或“OBS对象存储选择”。 从“CodeArts软件发布库”选择对应软件包时,需要提前将软件包上传至软件发布库,相关操作请参考上传软件包。 从“OBS对象存储选择”中选择对应软件包时,需要先将软件包上传至OBS对象存储桶内,具体操作请参考上传对象。 语言/运行时:从下拉框中选择软件包对应的语言格式。 构建方式:根据业务需要选择“系统默认”或“自定义Dockerfile”。 使用“系统默认”:根据语言/运行时使用默认Dockerfile构建。 使用“自定义Dockerfile”:根据所选语言自定义Dockerfile内容构建。 单击“完成编辑”。
  • 软件仓库概述 AppStage运维中心支持对软件包、部署包、镜像包、SQL包等进行集中管理,用于升级变更服务的虚拟机。软件仓库不同软件包的说明如表1所示。 同时支持将镜像仓SWR(SoftWare Repository for Container)进行统一管理,可以绑定使用镜像仓中的镜像用于服务的容器升级变更,具体操作请参见管理SWR。 如果使用houp的操作系统镜像发布文件,具体的发布信息可以在“发布管理”页面查看。 表1 包类型说明 包类型 说明 传包方式 使用方式 打包规范 软件包 应用软件包,可使用虚拟机部署和容器部署,一般用于虚拟机部署,包括软件包(虚拟机部署使用)、测试用例包、函数包(函数部署使用)。 使用开发中心推包/上传软件包 在IaC代码中定义需要使用的软件包,通过IaC变更完成应用部署。 软件包 部署包 用户部署虚拟机时使用的脚本包(playbook文件)。 运维中心发布/使用开发中心推包/上传部署包 使用部署包创建模板,根据模板创建虚拟机部署的变更任务,实现使用部署脚本完成软件的自动化部署。 部署包 镜像包 用户容器部署时使用的Docker的容器镜像包。 使用开发中心推包 在IaC代码中定义需要使用的镜像包,通过IaC变更完成容器化部署。 镜像包 SQL包 执行SQL变更的DDL、DML数据库脚本。 使用开发中心推包/上传SQL包 在WiseDBA中使用SQL包进行SQL变更,对数据库或数据库数据进行增删改查的操作。 SQL包 IaC 3.0包 描述IaC 3.0变更的执行过程及资源配置信息。 使用开发中心推包/上传IaC 3.0包 在变更环境时选择IaC包,完成资源配置及环境变更。 IaC 3.0包 Terraform包 描述Terraform引擎变更的执行过程及资源配置信息。 使用开发中心推包 在Terraform引擎的实例列表中使用代码包创建变更计划,完成资源配置及环境变更。 Terraform包 OS镜像包 操作系统镜像发布,普通用户一般不需要使用。 - - - 父主题: 软件仓库
  • 操作须知 将主机纳管至VMS,需要完成如下操作: 步骤一:刷新未纳管主机:首先需要刷新未纳管主机,将华为云其他主机同步至未纳管主机列表中。 步骤二:安装OpsAgent:纳管前需要为主机安装OpsAgent。 步骤三:分配主机:纳管主机需要将主机分配到对应的服务及环境下,完成主机纳管。 主机分配当天密码管理定时任务会自动修改主机账号的密码,密码有效期为90天,到期自动修改。如果不想密码被修改,需要在纳管主机前配置密码白名单规则。如果没有配置密码白名单规则,密码管理任务会检查密码有效期,并在密码过期前20天修改密码。 绑定已规划的业务账号(可选):主机纳管后需要为主机绑定已规划的业务账号,如果纳管前主机上已有业务账号,分配主机时会自动绑定该业务账号,不需要再单独绑定。 重置密码(可选):可以选择手动重置主机的root账号和所有业务账号的密码,将密码托管给AppStage平台。
  • 步骤二:安装OpsAgent 在“未纳管主机”页面,单击“部署OpsAgent”。 安装方式选择“远程安装”或“手动安装”。 手动安装:首次安装OpsAgent时,必须使用手动安装方式。 填写基本信息,OpsAgent基本信息参数说明如表1所示。 表1 OpsAgent基本信息参数说明 参数名称 参数说明 租户账号 选择租户账号,为租户VPC下的主机安装OpsAgent。 归属Region 选择租户VPC所属的Region。 OpsAgent版本 选择需要安装的OpsAgent的版本号。 VPC 选择虚拟私有云VPC,为该VPC下的主机安装OpsAgent。 说明: 可选VPC为已纳管VPC,如无可选VPC,请完成VPC纳管。 接入方式 当前支持“直接接入(内网)”的接入方式,为华为云主机接入安装OpsAgent。 单击LINUX命令后的,复制安装命令。 使用root账号远程登录主机后,执行安装命令安装OpsAgent。 安装完成后,未纳管主机列表中,该主机的OpsAgent状态为“在线”。 远程安装:选择虚拟私有云下已经安装了OpsAgent的主机作为安装机,安装机将作为中间桥梁安装OpsAgent到同虚拟私有云下的其他主机。 填写基本信息,OpsAgent基本信息参数说明如表1所示。 选择安装机,选择一台已安装OpsAgent的主机作为安装机。 添加主机,选择需要安装OpsAgent的主机所在行“操作”列的“编辑”,输入主机root密码后单击“确定”,然后在列表中勾选该主机。 单击“确定”,安装机将作为执行机为主机安装OpsAgent。
共100000条