华为云用户手册

  • 常用方式 InputStorage(路径拼接) 该对象主要用于帮助用户统一管理输入的目录,使用示例如下: import modelarts.workflow as wf storage = wf.data.InputStorage(name="storage_name", title="title_info", description="description_info") # name字段必填,title, description可选填 input_data = wf.data.OBSPath(obs_path = storage.join("directory_path")) # 注意,如果是目录则最后需要加"/",例如:storage.join("/input/data/") 工作流运行时,如果storage对象配置的根路径为"/root/",则最后得到的路径为"/root/directory_path" OutputStorage(目录创建) 该对象主要用于帮助用户统一管理输出的目录,保证工作流每次执行输出到新目录,使用示例如下: import modelarts.workflow as wf storage = wf.data.OutputStorage(name="storage_name", title="title_info", description="description_info") # name字段必填,title, description可选填 output_path = wf.data.OBSOutputConfig(obs_path = storage.join("directory_path")) # 注意,只能创建目录,不能创建文件 。 工作流运行时,如果storage对象配置的根路径为"/root/",则系统自动创建相对目录,最后得到的路径为"/root/执行ID/directory_path" 父主题: 统一存储
  • 基于未标注数据创建数据集 数据准备:存储在OBS文件夹中的未标注的数据。 from modelarts import workflow as wf # 通过CreateDatasetStep将存储在OBS中的数据创建成一个新版数据集 # 定义数据集输出路径参数 dataset_output_path = wf.Placeholder(name="dataset_output_path", placeholder_type=wf.PlaceholderType.STR, placeholder_format="obs") # 定义数据集名称参数 dataset_name = wf.Placeholder(name="dataset_name", placeholder_type=wf.PlaceholderType.STR) create_dataset = wf.steps.CreateDatasetStep( name="create_dataset",# 数据集创建节点的名称,命名规范(只能包含英文字母、数字、下划线(_)、中划线(-),并且只能以英文字母开头,长度限制为64字符),一个Workflow里的两个step名称不能重复 title="数据集创建", # 标题信息,不填默认使用name值 inputs=wf.steps.CreateDatasetInput(name="input_name", data=wf.data.OBSPlaceholder(name="obs_placeholder_name", object_type="directory")),# CreateDatasetStep的输入,数据在运行时进行配置;data字段也可使用wf.data.OBSPath(obs_path="fake_obs_path")对象表示 outputs=wf.steps.CreateDatasetOutput(name="output_name", config=wf.data.OBSOutputConfig(obs_path=dataset_output_path)),# CreateDatasetStep的输出 properties=wf.steps.DatasetProperties( dataset_name=dataset_name, # 该名称对应的数据集如果不存在,则创建新的数据集;如果已存在,则直接使用该名称对应的数据集 data_type=wf.data.DataTypeEnum.IMAGE, # 数据集对应的数据类型, 示例为图像 ) ) # 注意dataset_name这个参数配置的数据集名称需要用户自行确认在该账号下未被他人使用,否则会导致期望的数据集未被创建,而后续节点错误使用了他人创建的数据集 workflow = wf.Workflow( name="create-dataset-demo", desc="this is a demo workflow", steps=[create_dataset] )
  • 基于已标注数据创建数据集,并导入标注信息 数据准备:存储在OBS文件夹中的已标注数据。 OBS目录导入已标注数据的规范:可参见OBS目录导入数据规范说明。 from modelarts import workflow as wf # 通过CreateDatasetStep将存储在OBS中的数据创建成一个新版数据集 # 定义数据集输出路径参数 dataset_output_path = wf.Placeholder(name="dataset_placeholder_name", placeholder_type=wf.PlaceholderType.STR, placeholder_format="obs") # 定义数据集名称参数 dataset_name = wf.Placeholder(name="dataset_placeholder_name", placeholder_type=wf.PlaceholderType.STR) create_dataset = wf.steps.CreateDatasetStep( name="create_dataset",# 数据集创建节点的名称,命名规范(只能包含英文字母、数字、下划线(_)、中划线(-),并且只能以英文字母开头,长度限制为64字符),一个Workflow里的两个step名称不能重复 title="数据集创建", # 标题信息,不填默认使用name值 inputs=wf.steps.CreateDatasetInput(name="input_name", data=wf.data.OBSPlaceholder(name="obs_placeholder_name", object_type="directory")),# CreateDatasetStep的输入,数据在运行时进行配置;data字段也可使用wf.data.OBSPath(obs_path="fake_obs_path")对象表示 outputs=wf.steps.CreateDatasetOutput(name="output_name", config=wf.data.OBSOutputConfig(obs_path=dataset_output_path)),# CreateDatasetStep的输出 properties=wf.steps.DatasetProperties( dataset_name=dataset_name, # 该名称对应的数据集如果不存在,则创建新的数据集;如果已存在,则直接使用该名称对应的数据集 data_type=wf.data.DataTypeEnum.IMAGE, # 数据集对应的数据类型, 示例为图像 import_config=wf.steps.ImportConfig( annotation_format_config=[ wf.steps.AnnotationFormatConfig( format_name=wf.steps.AnnotationFormatEnum.MA_IMAGE_CLASSIFICATION_V1, # 已标注数据的标注格式 scene=wf.data.LabelTaskTypeEnum.IMAGE_CLASSIFICATION) # 标注的场景类型 ] ) ) ) # 注意dataset_name这个参数配置的数据集名称需要用户自行确认在该账号下未被他人使用,否则会导致期望的数据集未被创建,而后续节点错误使用了他人创建的数据集 workflow = wf.Workflow( name="create-dataset-demo", desc="this is a demo workflow", steps=[create_dataset] )
  • 重试/停止/继续运行节点 重试 当单个节点运行失败时,用户可以通过重试按钮重新执行当前节点,无需重新启动工作流。在当前节点的运行状况页面,单击“重试”。在重试之前您也可以前往全局配置页面修改配置,节点重试启动后新修改的配置信息可以在当前执行中立即生效。 停止 单击指定节点查看详情,可以对运行中的节点进行停止操作。 继续运行 对于单个节点中设置了需要运行中配置的参数时,节点运行会处于“等待操作”状态,用户完成相关数据的配置后,可单击“继续运行”按钮并确认继续执行当前节点。 父主题: 如何使用Workflow
  • 使用本地IDE远程连接Notebook准备环境 使用本地IDE如PyCharm开发工作流,您只需专注于本地代码开发即可。PyCharm连接Notbook操作请参见配置本地IDE(PyCharm ToolKit连接)或配置本地IDE(PyCharm手动连接)。 在本地IDE的终端运行如下命令进行环境准备。Python版本要求:3.7.x rm modelarts*.whl wget -N https://cn-north-4-training-test.obs.cn-north-4.myhuaweicloud.com/workflow-apps/v1.0.2/modelarts-1.4.19-py2.py3-none-any.whl wget -N https://cn-north-4-training-test.obs.cn-north-4.myhuaweicloud.com/workflow-apps/v1.0.2/modelarts_workflow-1.0.2-py2.py3-none-any.whl pip uninstall -y modelarts modelarts-workflow pip install modelarts-1.4.19-py2.py3-none-any.whl pip install modelarts_workflow-1.0.2-py2.py3-none-any.whl 使用本地IDE进行开发时,配置好PyCharm环境后,在代码中还需要使用AK-SK认证模式,示例代码如下。 from modelarts.session import Session # 认证用的ak和sk硬编码到代码中或者明文存储都有很大的安全风险,建议在配置文件或者环境变量中密文存放,使用时解密,确保安全; # 本示例以ak和sk保存在环境变量中来实现身份验证为例,运行本示例前请先在本地环境中设置环境变量HUAWEICLOUD_SDK_AK和HUAWEICLOUD_SDK_SK。 __AK = os.environ["HUAWEICLOUD_SDK_AK"] __SK = os.environ["HUAWEICLOUD_SDK_SK"] # 如果进行了加密还需要进行解密操作 session = Session(access_key=__AK-, secret_key=__SK, project_id='***', region_name='***')
  • 发布运行态并执行 该方式支持用户直接在SDK侧发布并运行工作流,节省了前往控制台进行配置运行的操作,对Workflow代码改造如下。 from modelarts import workflow as wf # 定义统一存储对象管理输出目录 output_storage = wf.data.OutputStorage(name="output_storage", description="输出目录统一配置", default="**") # 数据集对象 dataset = wf.data.DatasetPlaceholder(name="input_data", default=wf.data.Dataset(dataset_name="**", version_name="**")) # 创建训练作业 job_step = wf.steps.JobStep( name="training_job", title="图像分类训练", algorithm=wf.AIGalleryAlgorithm( subscription_id="**", # 图像分类算法的订阅ID,自行前往算法管理页面进行查看,可选参数,此处以订阅算法举例 item_version_id="10.0.0", # 订阅算法的版本号,可选参数,此处以订阅算法举例 parameters=[ wf.AlgorithmParameters(name="task_type", value="image_classification_v2"), wf.AlgorithmParameters(name="model_name", value="resnet_v1_50"), wf.AlgorithmParameters(name="do_train", value="True"), wf.AlgorithmParameters(name="do_eval_along_train", value="True"), wf.AlgorithmParameters(name="variable_update", value="horovod"), wf.AlgorithmParameters(name="learning_rate_strategy", value=wf.Placeholder(name="learning_rate_strategy", placeholder_type=wf.PlaceholderType.STR, default="0.002", description="训练的学习率策略(10:0.001,20:0.0001代表0-10个epoch学习率0.001,10-20epoch学习率0.0001),如果不指定epoch, 会根据验证精度情况自动调整学习率,并当精度没有明显提升时,训练停止")), wf.AlgorithmParameters(name="batch_size", value=wf.Placeholder(name="batch_size", placeholder_type=wf.PlaceholderType.INT, default=64, description="每步训练的图片数量(单卡)")), wf.AlgorithmParameters(name="eval_batch_size", value=wf.Placeholder(name="eval_batch_size", placeholder_type=wf.PlaceholderType.INT, default=64, description="每步验证的图片数量(单卡)")), wf.AlgorithmParameters(name="evaluate_every_n_epochs", value=wf.Placeholder(name="evaluate_every_n_epochs", placeholder_type=wf.PlaceholderType.FLOAT, default=1.0, description="每训练n个epoch做一次验证")), wf.AlgorithmParameters(name="save_model_secs", value=wf.Placeholder(name="save_model_secs", placeholder_type=wf.PlaceholderType.INT, default=60, description="保存模型的频率(单位:s)")), wf.AlgorithmParameters(name="save_summary_steps", value=wf.Placeholder(name="save_summary_steps", placeholder_type=wf.PlaceholderType.INT, default=10, description="保存summary的频率(单位:步)")), wf.AlgorithmParameters(name="log_every_n_steps", value=wf.Placeholder(name="log_every_n_steps", placeholder_type=wf.PlaceholderType.INT, default=10, description="打印日志的频率(单位:步)")), wf.AlgorithmParameters(name="do_data_cleaning", value=wf.Placeholder(name="do_data_cleaning", placeholder_type=wf.PlaceholderType.STR, default="True", description="是否进行数据清洗, 数据格式异常会导致训练失败,建议开启,保证训练稳定性。数据量过大时,数据清洗可能耗时较久,可自行线下清洗(支持BMP.JPEG,PNG格式, RGB三通道)。建议用JPEG格式数据")), wf.AlgorithmParameters(name="use_fp16", value=wf.Placeholder(name="use_fp16", placeholder_type=wf.PlaceholderType.STR, default="True", description="是否使用混合精度, 混合精度可以加速训练,但是可能会造成一点精度损失,如果对精度无极严格的要求,建议开启")), wf.AlgorithmParameters(name="xla_compile", value=wf.Placeholder(name="xla_compile", placeholder_type=wf.PlaceholderType.STR, default="True", description="是否开启xla编译,加速训练,默认启用")), wf.AlgorithmParameters(name="data_format", value=wf.Placeholder(name="data_format", placeholder_type=wf.PlaceholderType.ENUM, default="NCHW", enum_list=["NCHW", "NHWC"], description="输入数据类型,NHWC表示channel在最后,NCHW表channel在最前,默认值NCHW(速度有提升)")), wf.AlgorithmParameters(name="best_model", value=wf.Placeholder(name="best_model", placeholder_type=wf.PlaceholderType.STR, default="True", description="是否在训练过程中保存并使用精度最高的模型,而不是最新的模型。默认值True,保存最优模型。在一定误差范围内,最优模型会保存最新的高精度模型")), wf.AlgorithmParameters(name="jpeg_preprocess", value=wf.Placeholder(name="jpeg_preprocess", placeholder_type=wf.PlaceholderType.STR, default="True", description="是否使用jpeg预处理加速算子(仅支持jpeg格式数据),可加速数据读取,提升性能,默认启用。如果数据格式不是jpeg格式,开启数据清洗功能即可使用")) ] ), inputs=[wf.steps.JobInput(name="data_url", data=dataset)], outputs=[wf.steps.JobOutput(name="train_url", obs_config=wf.data.OBSOutputConfig(obs_path=output_storage.join("/train_output/")))], spec=wf.steps.JobSpec( resource=wf.steps.JobResource( flavor=wf.Placeholder( name="training_flavor", placeholder_type=wf.PlaceholderType.JSON, description="训练资源规格", default={"flavor_id": "**"} ) ) ) ) # 构建工作流对象 workflow = wf.Workflow( name="image-classification-ResNeSt", desc="this is a image classification workflow", steps=[job_step], storages=[output_storage] ) 用户需要完成上述代码中**部分的配置,主要涉及以下三项。 统一存储:output_storage对象的default值,需填写一个已存在的OBS路径,路径格式为:/OBS桶名称/文件夹路径/。 数据集对象:使用准备数据集章节下载的数据集即可,填写相应的数据集名称以及版本号。 训练资源规格:配置计算资源。必须配置GPU类型的资源,可使用免费规格(modelarts.p3.large.public.free)。 配置项修改完成后执行如下代码。 workflow.release_and_run() 执行完成后可前往ModelArts管理控制台,在总览页中选择Workflow,查看工作流的运行情况。 父主题: 开发第一条Workflow
  • 发布运行态 工作流调试完成后,可以进行固化保存,调用Workflow对象的release()方法发布到运行态进行配置执行(在管理控制台Workflow页面配置)。 执行如下命令: workflow.release() 上述命令执行完成后,如果日志打印显示发布成功,则可前往ModelArts的Workflow页面中查看新发布的工作流,工作流相关的配置执行操作可参考如何使用Workflow。 基于release()方法,提供了release_and_run()方法,支持用户在开发态发布并运行工作流,节省了前往console配置执行的操作。 使用该方法时需要注意以下几个事项: Workflow中所有出现占位符相关的配置对象时,均需要设置默认值,或者直接使用固定的数据对象 方法的执行依赖于Workflow对象的名称:当该名称的工作流不存在时,则创建新工作流并创建新执行;当该名称的工作流已存在时,则更新存在的工作流并基于新的工作流结构创建新的执行 workflow.release_and_run() 父主题: 发布Workflow
  • 调试Workflow Workflow编写完成后,可以在开发态进行调试,当前支持run以及debug两种调试模式。假设某工作流对象Workflow有label_step、release_step、 job_step、 model_step、service_step五个节点,调试过程如下: 使用run模式 运行全部节点 workflow.run(steps=[label_step, release_step, job_step, model_step, service_step], experiment_id="实验记录ID") 指定运行job_step,model_step,service_step(部分运行时需要自行保证数据依赖的正确性) workflow.run(steps=[job_step, model_step, service_step], experiment_id="实验记录ID") 使用debug模式 debug模式只能在Notebook环境中使用,并且需要配合Workflow的next方法来一起使用,示例如下: 启动debug模式。 workflow.debug(steps=[label_step, release_step, job_step, model_step, service_step], experiment_id="实验记录ID") 执行第一个节点。 workflow.next() 此时出现两种情况: 该节点运行需要的数据已经准备好,则直接启动运行。 该节点数据未准备好,则打印日志信息提醒用户按照指示给该节点设置数据,设置数据有两种方式: 对于单个的参数类型数据: workflow.set_placeholder("参数名称", 参数值) 对于数据对象: workflow.set_data(数据对象的名称, 数据对象) # 示例:设置数据集对象 workflow.set_data("对象名称", Dataset(dataset_name="数据集名称", version_name="数据集版本名称")) 当上一个节点执行完成后,继续调用Workflow.next()启动后续节点,重复操作直至节点全部运行完成。 在开发态调试工作流时,系统只会监控运行状态并打印相关日志信息,涉及到每个节点的详细运行状况需用户自行前往ModelArts管理控制台的相应服务处进行查看。 父主题: 如何开发Workflow
  • 使用案例 from modelarts import workflow as wf condition_equal = wf.steps.Condition(condition_type=wf.steps.ConditionTypeEnum.EQ, left=wf.Placeholder(name="is_true", placeholder_type=wf.PlaceholderType.BOOL), right=True) condition_step = wf.steps.ConditionStep( name="condition_step", conditions=[condition_equal], if_then_steps=["training_job_1"], else_then_steps=["training_job_2"], ) # 构建一个OutputStorage对象,对训练输出目录做统一管理 storage = wf.data.OutputStorage(name="storage_name", title="title_info", description="description_info") # name字段必填,title, description可选填 # 定义输入的OBS对象 obs_data = wf.data.OBSPlaceholder(name="obs_placeholder_name", object_type="directory") # 通过JobStep来定义一个训练节点,并将训练结果输出到OBS job_step_1 = wf.steps.JobStep( name="training_job_1", # 训练节点的名称,命名规范(只能包含英文字母、数字、下划线(_)、中划线(-),并且只能以英文字母开头,长度限制为64字符),一个Workflow里的两个step名称不能重复 title="图像分类训练", # 标题信息,不填默认使用name algorithm=wf.AIGalleryAlgorithm( subscription_id="subscription_id", # 算法订阅ID item_version_id="item_version_id", # 算法订阅版本ID,也可直接填写版本号 parameters=[] ), # 训练使用的算法对象,示例中使用AIGallery订阅的算法;部分算法超参的值如果无需修改,则在parameters字段中可以不填写,系统自动填充相关超参值 inputs=wf.steps.JobInput(name="data_url", data=obs_data), # JobStep的输入在运行时配置;data字段也可使用data=wf.data.OBSPath(obs_path="fake_obs_path")表示 outputs=wf.steps.JobOutput(name="train_url", obs_config=wf.data.OBSOutputConfig(obs_path=storage.join("directory_path"))), # JobStep的输出 spec=wf.steps.JobSpec( resource=wf.steps.JobResource( flavor=wf.Placeholder(name="train_flavor", placeholder_type=wf.PlaceholderType.JSON, description="训练资源规格") ) ), # 训练资源规格信息 depend_steps=[condition_step] ) # 通过JobStep来定义一个训练节点,并将训练结果输出到OBS job_step_2 = wf.steps.JobStep( name="training_job_2", # 训练节点的名称,命名规范(只能包含英文字母、数字、下划线(_)、中划线(-),并且只能以英文字母开头,长度限制为64字符),一个Workflow里的两个step名称不能重复 title="图像分类训练", # 标题信息,不填默认使用name algorithm=wf.AIGalleryAlgorithm( subscription_id="subscription_id", # 算法订阅ID item_version_id="item_version_id", # 算法订阅版本ID,也可直接填写版本号 parameters=[] ), # 训练使用的算法对象,示例中使用AIGallery订阅的算法;部分算法超参的值如果无需修改,则在parameters字段中可以不填写,系统自动填充相关超参值 inputs=wf.steps.JobInput(name="data_url", data=obs_data), # JobStep的输入在运行时配置;data字段也可使用data=wf.data.OBSPath(obs_path="fake_obs_path")表示 outputs=wf.steps.JobOutput(name="train_url", obs_config=wf.data.OBSOutputConfig(obs_path=storage.join("directory_path"))), # JobStep的输出 spec=wf.steps.JobSpec( resource=wf.steps.JobResource( flavor=wf.Placeholder(name="train_flavor", placeholder_type=wf.PlaceholderType.JSON, description="训练资源规格") ) ), # 训练资源规格信息 depend_steps=[condition_step] ) # 定义模型名称参数 model_name = wf.Placeholder(name="placeholder_name", placeholder_type=wf.PlaceholderType.STR) model_step = wf.steps.ModelStep( name="model_registration", # 模型注册节点的名称,命名规范(只能包含英文字母、数字、下划线(_)、中划线(-),并且只能以英文字母开头,长度限制为64字符),一个Workflow里的两个step名称不能重复 title="模型注册", # 标题信息 inputs=wf.steps.ModelInput(name='model_input', data=wf.data.DataConsumptionSelector(data_list=[job_step_1.outputs["train_url"].as_input(), job_step_2.outputs["train_url"].as_input()])), # 选择job_step_1或者job_step_2的输出作为输入 outputs=wf.steps.ModelOutput(name='model_output', model_config=wf.steps.ModelConfig(model_name=model_name, model_type="TensorFlow")), # ModelStep的输出 depend_steps=[job_step_1, job_step_2] # 依赖的作业类型节点对象 )# job_step是wf.steps.JobStep的 实例对象,train_url是wf.steps.JobOutput的name字段值 workflow = wf.Workflow(name="data-select-demo", desc="this is a test workflow", steps=[condition_step, job_step_1, job_step_2, model_step], storages=storage ) 案例中的Workflow存在两个并行分支,并且同时只有一条分支会执行,由condition_step的相关配置决定。model_step的输入来源为job_step_1或者job_step_2的输出,当job_step_1节点所在分支执行,job_step_2节点所在分支跳过时,model_step节点执行时自动获取job_step_1的输出作为输入,反之自动获取job_step_2的输出作为输入。
  • Data 数据对象用于节点的输入,主要可分为以下三种类型: 真实的数据对象,在工作流构建时直接指定: Dataset:用于定义已有的数据集,常用于数据标注,模型训练等场景 LabelTask: 用于定义已有的标注任务,常用于数据标注,数据集版本发布等场景 OBSPath:用于定义指定的OBS路径,常用于模型训练,数据集导入,模型导入等场景 ServiceData:用于定义一个已有的服务,只用于服务更新的场景 SWRImage:用于定义已有的SWR路径,常用于模型注册场景 GalleryModel:用于定义从gallery订阅的模型,常用于模型注册场景 占位符式的数据对象,在工作流运行时指定: DatasetPlaceholder:用于定义在运行时需要确定的数据集,对应Dataset对象,常用于数据标注,模型训练等场景 LabelTaskPlaceholder:用于定义在运行时需要确定的标注任务,对应LabelTask对象,常用于数据标注,数据集版本发布等场景 OBSPlaceholder:用于定义在运行时需要确定的OBS路径,对应OBSPath对象,常用于模型训练,数据集导入,模型导入等场景 ServiceUpdatePlaceholder:用于定义在运行时需要确定的已有服务,对应ServiceData对象,只用于服务更新的场景 SWRImagePlaceholder:用于定义在运行时需要确定的SWR路径,对应SWRImage对象,常用于模型注册场景 ServiceInputPlaceholder:用于定义在运行时需要确定服务部署所需的模型相关信息,只用于服务部署及服务更新场景 DataSelector:支持多种数据类型的选择,当前仅支持在JobStep节点中使用(仅支持选择OBS或者数据集) 数据选择对象: DataConsumptionSelector:用于在多个依赖节点的输出中选择一个有效输出作为数据输入,常用于存在条件分支的场景中(在构建工作流时未能确定数据输入来源为哪个依赖节点的输出,需根据依赖节点的实际执行情况进行自动选择) 表1 Dataset 属性 描述 是否必填 数据类型 dataset_name 数据集名称 是 str version_name 数据集版本名称 否 str 示例: example = Dataset(dataset_name = "**", version_name = "**") # 通过ModelArts的数据集,获取对应的数据集名称及相应的版本名称。 当Dataset对象作为节点的输入时,需根据业务需要自行决定是否填写version_name字段(比如LabelingStep、ReleaseDatasetStep不需要填写,JobStep必须填写)。 表2 LabelTask 属性 描述 是否必填 数据类型 dataset_name 数据集名称 是 str task_name 标注任务名称 是 str 示例: example = LabelTask(dataset_name = "**", task_name = "**") # 通过ModelArts的新版数据集,获取对应的数据集名称及相应的标注任务名称 表3 OBSPath 属性 描述 是否必填 数据类型 obs_path OBS路径 是 str,Storage 示例: example = OBSPath(obs_path = "**") # 通过对象存储服务,获取已存在的OBS路径值 表4 ServiceData 属性 描述 是否必填 数据类型 service_id 服务的ID 是 str 示例: example = ServiceData(service_id = "**") # 通过ModelArts的在线服务,获取对应服务的服务ID,描述指定的在线服务。用于服务更新的场景。 表5 SWRImage 属性 描述 是否必填 数据类型 swr_path 容器镜像的SWR路径 是 str 示例: example = SWRImage(swr_path = "**") # 容器镜像地址,用于模型注册节点的输入 表6 GalleryModel 属性 描述 是否必填 数据类型 subscription_id 订阅模型的订阅ID 是 str version_num 订阅模型的版本号 是 str 示例: example = GalleryModel(subscription_id="**", version_num="**") # 订阅的模型对象,用于模型注册节点的输入 表7 DatasetPlaceholder 属性 描述 是否必填 数据类型 name 名称 是 str data_type 数据类型 否 DataTypeEnum delay 标志数据对象是否在节点运行时配置,默认为False 否 bool default 数据对象的默认值 否 Dataset 示例: example = DatasetPlaceholder(name = "**", data_type = DataTypeEnum.IMAGE_CLASSIFICATION) # 数据集对象的占位符形式,可以通过指定data_type限制数据集的数据类型 表8 OBSPlaceholder 属性 描述 是否必填 数据类型 name 名称 是 str object_type 表示OBS对象类型,仅支持"file"或者"directory" 是 str delay 标志数据对象是否在节点运行时配置,默认为False 否 bool default 数据对象的默认值 否 OBSPath 示例: example = OBSPlaceholder(name = "**", object_type = "directory" ) # OBS对象的占位符形式,object_type只支持两种类型, "file" 以及 "directory" 表9 LabelTaskPlaceholder 属性 描述 是否必填 数据类型 name 名称 是 str task_type 表示标注任务的类型 否 LabelTaskTypeEnum delay 标志数据对象是否在节点运行时配置,默认为False 否 bool 示例: example = LabelTaskPlaceholder(name = "**") # LabelTask对象的占位符形式 表10 ServiceUpdatePlaceholder 属性 描述 是否必填 数据类型 name 名称 是 str delay 标志数据对象是否在节点运行时配置,默认为False 否 bool 示例: example = ServiceUpdatePlaceholder(name = "**") # ServiceData对象的占位符形式,用于服务更新节点的输入 表11 SWRImagePlaceholder 属性 描述 是否必填 数据类型 name 名称 是 str delay 标志数据对象是否在节点运行时配置,默认为False 否 bool 示例: example = SWRImagePlaceholder(name = "**" ) # SWRImage对象的占位符形式,用于模型注册节点的输入 表12 ServiceInputPlaceholder 属性 描述 是否必填 数据类型 name 名称 是 str model_name 模型名称 是 str或者Placeholder model_version 模型版本 否 str envs 环境变量 否 dict delay 服务部署相关信息是否在节点运行时配置,默认为True 否 bool 示例: example = ServiceInputPlaceholder(name = "**" , model_name = "model_name") # 用于服务部署或者服务更新节点的输入 表13 DataSelector 属性 描述 是否必填 数据类型 name 名称 是 str data_type_list 支持的数据类型列表,当前仅支持obs、dataset 是 list delay 标志数据对象是否在节点运行时配置,默认为False 否 bool 示例: example = DataSelector(name = "**" ,data_type_list=["obs", "dataset"]) # 用于作业类型节点的输入 表14 DataConsumptionSelector 属性 描述 是否必填 数据类型 data_list 依赖节点的输出数据对象列表 是 list 示例: example = DataConsumptionSelector(data_list=[step1.outputs["step1_output_name"].as_input(), step2.outputs["step2_output_name"].as_input()]) # 从step1以及step2中选择有效输出作为输入,当step1跳过无输出,step2执行有输出时,将step2的有效输出作为输入(需保证data_list中同时只有一个有效输出) 父主题: 核心概念
  • 其他操作 您可以在“会议用户”界面用户列表所在行的右侧单击“修改”进行编辑,也可以单击“移除”移除用户,还可以单击“更多”重置用户密码、停用/启用该用户的账号。 图6 管理用户 您可以勾选“通讯录排序号”查看已设置序号的用户。 图7 查看用户的通讯录排序号 您可以单击“导出”查看用户数据,如下图所示。 图8 导出用户信息 您还可以在“会议用户”界面,单击“待定”,来查看未接受邀请的用户,并进行重新发送邀请、删除的操作。 图9 管理待定用户
  • 1080P超高清视频 1080P超高清视频功能暂未开放,如需体验请发送邮件至“hcmeeting@huaweicloud.com”或联系华为销售申请开通。 开启企业配置后,企业下的用户在会议管理平台创建会议时,可开启该次会议的1080P超高清视频。详细操作请参考立即/预约会议。 当主持人创建开启了“1080P超高清视频”的会议,在硬件设备满足的情况下,Windows客户端与会者入会后可发送和接收1080P超高清视频。详细操作请参考1080P超高清视频。 企业管理员单击“1080P超高清视频”右侧的开关即可启用功能。
  • 企业资源 企业管理员概览页呈现了本企业全局的资源使用情况,如图1所示,具体见表1。 表1 企业全局资源使用情况 资源名称 资源使用情况 会议并发方数(个) 已使用/已购买的并发与会方数 云会议室(个) 已使用/已购买的云会议室数 用户账号数(个) 已使用/已购买的用户数 IdeaHub接入账号(个) 已使用/已购买的智能协作大屏(IdeaHub)接入账号 华为终端接入账号-1080P(个) 已使用/已购买的1080P硬件终端接入账号数 华为终端接入账号-720P(个) 已使用/已购买的720P硬件终端接入账号数 第三方硬终端接入账号(个) 已使用/已购买的第三方硬件终端接入账号数 SmartRooms接入账号(个) 已使用/已购买的SmartRooms接入账号数 智慧屏TV接入账号(个) 已使用/已购买的智慧屏TV接入账号 直播端口(个) 已使用/已购买的直播端口数 录播空间(GB) 已使用/已购买的录播空间 图1 管理员首页
  • 配置Touch接入终端 使用Touch对终端进行配置前需要先将Touch接入终端,接入方式包括TOUCH口连接、交换机网口连接和Wi-Fi连接。 TOUCH口连接 将Touch接入终端的TOUCH口,如图1所示。 图1 TOUCH口连接 TOUCH口具有供电功能,使用TOUCH口连接时,不需要再接入Type-C线缆和电源适配器。 打开Touch,Touch会检测版本与终端版本是否一致。如果不一致,Touch自动升级。 交换机网口连接 将Touch接入交换机的网口,如图2所示,通过Type-C线缆连接电源适配器供电。 图2 交换机网口连接 打开Touch,缺省进入连接向导界面,单击“有线连接”,如图3所示。 图3 选择有线连接 单击左上角的“简体中文”,可切换界面语言。 在“选择会场”列表中选择或者手动输入需要接入终端的IP地址,单击“确定”,如图4所示。 “选择会场”列表中会显示网络中可以接入的终端设备。 IP地址请从终端LCD显示屏上获取。 图4 有线连接 输入用户名和密码,单击“连接”。 连接成功后,Touch会检测版本是否与终端版本一致。如果不一致,Touch自动升级。 缺省用户名为“api”,缺省密码为“Change_Me”。 Wi-Fi连接 将Touch接入终端或同一网络的Wi-Fi热点,如图5所示。 图5 Wi-Fi连接 打开Touch,缺省进入连接向导界面,单击“Wi-Fi连接”,如图6所示。 图6 选择Wi-Fi连接 单击左上角的“简体中文”,可切换界面语言。 选择需要接入的Wi-Fi热点,单击“下一页”。 输入终端IP地址、用户名和密码,单击“连接”。 连接成功后,Touch会检测版本是否与终端版本一致。如果不一致,Touch自动升级。 IP地址请从终端LCD显示屏上获取,缺省用户名为“api”,缺省密码为“Change_Me”。
  • 其他操作 激活、配置专业会议终端 快速配置CloudLink Board:可通过触控屏快速配置、通过Web界面快速配置或通过Touch快速配置。 快速配置CloudLink Box/CloudLink Bar:可通过Web界面快速配置或通过Touch快速配置。 快速配置TE10/TE20。 快速配置TE30/40/50/60。 快速配置DP300。 您可以在“专业会议终端”界面终端列表所在行的右侧单击编辑硬件终端、也可以单击删除硬件终端,也可以单击重置激活码、停用/启用该硬件终端的账号。 您也可以单击“导出”查看终端数据及设备型号。
  • 会前操作 完成配对后,可在移动端的控制器对SmartRooms进行加入会议、发起会议等会前操作。 加入会议 从会议日程入会:在会议日程中单击“加入”进入会议。 受邀入会:收到会议邀请时单击按钮入会。 使用会议号和密码入会:从主持人或其他与会者获取会议号和密码,单击“加入会议”,输入会议号和密码入会。 发起会议:单击“发起会议”可创建会议。 共享投屏:单击“共享投屏”可根据引导进行投屏。 图4 SmartRooms控制器会前操作
  • 会控操作 完成配对后,可在移动端的控制器对SmartRooms进行音视频设置、投屏、切换会中视图等会控操作。 音视频设置 单击“静音”或“开启视频”按钮,可开启或关闭麦克风、摄像头。 滑动音量条可调整扬声器的音量。 共享:单击“共享”可根据引导进行投屏。 与会者:单击“与会者”可查看与会者列表。 邀请:单击“邀请”打开会议信息弹窗,可扫码分享会议信息、获取会议号和密码邀请他人入会。 视图:单击“视图”,可将会中视图切换为演讲者视图、画中画视图或画廊视图等。 主持人控制:单击“主持人控制”打开弹窗,可开启等候室、允许解除静音、设置视频权限等。 离开:单击“离开”,若SmartRooms是会议主持人,可选择离开会议或结束会议;若SmartRooms是与会者,可选择离开会议。 图5 SmartRooms控制器会控操作
  • 智能运维概述 CSS服务提供智能运维功能,支持检测集群潜在风险,并给出风险处理的建议。 当前Elasticsearch集群和OpenSearch集群均支持智能运维功能。 智能运维支持以下功能: 启动检测任务 使用智能运维功能首先需要启动检测任务。 查看集群风险项 启动检测任务后,系统会开始诊断集群,可在智能运维列表查看集群存在的风险项详情。 删除检测任务 当您已处理完检测任务中所发现的风险项,不在需要历史所创建的检测任务,可删除检测任务。 父主题: 智能运维
  • 操作步骤 登录云搜索服务管理控制台。 在集群管理页面,单击需要进行智能运维的集群名称,跳转至该集群基本信息页面。 选择“智能运维”。 在智能运维列表页面,单击左上角的“启动检测”。 在对话框中填写检测任务的基本信息,单击“确定”。 表1 检测任务基本信息说明 参数 说明 名称 检测任务的名称。 描述 检测任务的简短描述。 SMN主题 如果勾选“任务完成后发送SMN告警”,可选择当前账号已创建的SMN主题。 如果未创建SMN主题,请先前往SMN服务创建主题。 告警灵敏度 如果勾选“任务完成后发送SMN告警”,可选择告警灵敏度。 检测到的风险项存在大于等于此风险敏感度的条目,则发送SMN告警消息,消息内容则包含所有风险项。 创建检测任务后,可在智能运维列表查看新创建的检测任务。
  • 响应示例 状态码: 200 OK { "entities" : [ { "mention" : "李娜", "offset" : 0, "entity_id" : "6939670486880563336", "entity_title" : "李娜(流行歌手、佛门女弟子)" }, { "mention" : "青藏高原", "offset" : 4, "entity_id" : "8654144631589645401", "entity_title" : "青藏高原(李娜演唱歌曲)" } ] } 状态码: 400 Bad Request { "error_code" : "KGP.2007", "error_msg" : "kg not found" } 状态码: 403 Forbidden { "error_code" : "KGP.0004", "error_msg" : "Auth failed" }
  • URI POST /v1/{project_id}/kg/kg-instances/{kg_id}/apps/entity-linking 表1 路径参数 参数 是否必选 参数类型 描述 kg_id 是 String 知识图谱ID。在KG服务控制台“我的图谱”页面,单击图谱名称,进入图谱详情页左上角获取知识图谱ID。 project_id 是 String 用户项目ID。获取方法请参见获取项目ID。
  • 响应参数 状态码: 200 表3 响应Body参数 参数 参数类型 描述 entities Array of EntityLinkingRespEntityMention objects 实体链接结果。 表4 EntityLinkingRespEntityMention 参数 参数类型 描述 entity_id String 链接到的图谱节点对应的实体id。 entity_title String 链接到的图谱节点对应的实体名称。 mention String 实体名称。 offset Integer 实体文本在待分析文本中的起始位置。
  • 请求示例 分析识别文本为 "李娜唱的青藏高原真好听"的实体 https://nlp-ext.cn-north-4.myhuaweicloud.com/v1/1604d8170cd84440a81281e5a3a04f8b/kg/kg-instances/6cdcea01-bac0-48f6-acb5-9385ea3e24ad/apps/entity-linking { "text" : "李娜唱的青藏高原真好听" }
  • 基本概念 账号 用户注册华为云时的账号,账号对其所拥有的资源及云服务具有完全的访问权限,可以重置用户密码、分配用户权限等。由于账号是付费主体,为了确保账号安全,建议您不要直接使用账号进行日常管理工作,而是创建用户并使用他们进行日常管理工作。 用户 由账号在IAM中创建的用户,是云服务的使用人员,具有身份凭证(密码和访问密钥)。 在我的凭证下,您可以查看账号ID和用户ID。通常在调用API的鉴权过程中,您需要用到账号、用户和密码等信息。 区域 指云资源所在的物理位置,同一区域内可用区间内网互通,不同区域间内网不互通。通过在不同地区创建云资源,可以将应用程序设计的更接近特定客户的要求,或满足不同地区的法律或其他要求。 可用区 一个可用区是一个或多个物理数据中心的集合,有独立的风火水电,AZ内逻辑上再将计算、网络、存储等资源划分成多个集群。一个Region中的多个AZ间通过高速光纤相连,以满足用户跨AZ构建高可用性系统的需求。 项目 华为云的区域默认对应一个项目,这个项目由系统预置,用来隔离物理区域间的资源(计算资源、存储资源和网络资源),以默认项目为单位进行授权,用户可以访问您账号中该区域的所有资源。如果您希望进行更加精细的权限控制,可以在区域默认的项目中创建子项目,并在子项目中购买资源,然后以子项目为单位进行授权,使得用户仅能访问特定子项目中资源,使得资源的权限控制更加精确。 图1 项目隔离模型 同样在我的凭证下,您可以查看项目ID。 企业项目 企业项目是项目的升级版,针对企业不同项目间资源的分组和管理,是逻辑隔离。企业项目中可以包含多个区域的资源,且项目中的资源可以迁入迁出。 关于企业项目ID的获取及企业项目特性的详细信息,请参见《企业管理服务用户指南》。 父主题: 使用前必读
  • 响应示例 状态码: 200 OK { "answer" : "小明的身高是175cm。", "session_id" : "b22ce1e7-72e6-4846-86e5-65f66a882989", "frame" : [ { "formatted_question" : "[小明]的[身高]", "match_type" : "SYS_TEMPLATE", "template_id" : "77396e46-6eec-49bb-bb84-84faa4229090", "template_name" : "xx实体的xx属性", "template_score" : 1.0, "query" : "g.V('6155801785020056890').valueMap('name', '身高').path()", "result" : { "vertices" : [ { "id" : "6155801785020056890", "label" : "人物" } ], "runtime" : 0.007594787999999999, "results" : [ { "name" : [ "小明" ], "身高" : [ "175cm" ] } ] }, "answer" : "小明的身高是175cm。" } ] } 状态码: 400 Bad Request { "error_code" : "KGP.2007", "error_msg" : "kg not found" } 状态码: 403 Forbidden { "error_code" : "KGP.0004", "error_msg" : "Auth failed" }
  • URI POST /v1/{project_id}/kg/kg-instances/{kg_id}/apps/kbqa/converse 表1 路径参数 参数 是否必选 参数类型 描述 kg_id 是 String 知识图谱ID。在KG服务控制台“我的图谱”页面,单击图谱名称,进入图谱详情页左上角获取知识图谱ID。 project_id 是 String 用户项目ID。获取方法请参见获取项目ID。
  • 请求示例 进行KBQA会话,询问小明的身高 https://nlp-ext.cn-north-4.myhuaweicloud.com/v1/1604d8170cd84440a81281e5a3a04f8b/kg/kg-instances/6cdcea01-bac0-48f6-acb5-9385ea3e24ad/apps/kbqa/converse { "session_id" : "b22ce1e7-72e6-4846-86e5-65f66a882989", "query" : "小明的身高" }
  • 响应示例 状态码: 200 OK { "data" : { "vertices" : [ { "id" : "9070097808196707553", "label" : "电影", "properties" : { "上映时间" : [ "1958年1月16日" ], "name" : [ "保卫和平" ], "票房" : [ "39.04亿" ] } } ], "runtime" : 0.02850004 } } 状态码: 400 Bad Request { "error_code" : "KGP.2003", "error_msg" : "Gremlin query return error" } 状态码: 403 Forbidden { "error_code" : "KGP.0004", "error_msg" : "Auth failed" } 状态码: 500 Internal Server Error { "error_code" : "KGP.9001", "error_msg" : "Internal server error." }
  • URI GET /v1/{project_id}/kg/kg-instances/{kg_id}/entities/{entity_id}/adjacent-entities 表1 路径参数 参数 是否必选 参数类型 描述 entity_id 是 String 实体ID。 kg_id 是 String 知识图谱ID。在KG服务控制台“我的图谱”页面,单击图谱名称,进入图谱详情页左上角获取知识图谱ID。 project_id 是 String 用户项目ID。获取方法请参见获取项目ID。 表2 Query参数 参数 是否必选 参数类型 描述 label 否 String 具有一跳关系的实体类型。默认为空,即查询有一跳关系的所有类型的实体。 说明: N跳关系说明:如果从一个实体A出发,经过N条关系(不论方向),能够到达实体B,则实体A、B之间是N跳关系。 特别地,如果两个实体之间是一跳关系,说明两个实体之间通过一条关系直接相连。 limit 否 Integer 最大返回结果条数,默认为10,最大为100。 最小值:0 最大值:100 缺省值:10 offset 否 Integer 翻页偏移量,默认为0。 最小值:0 最大值:100 缺省值:0 relation_name 否 String 需要查询的关系名称。默认为空,即查询所有一跳关系。
  • 请求示例 查询关联实体,最多返回两条结果 https://nlp-ext.cn-north-4.myhuaweicloud.com/v1/1604d8170cd84440a81281e5a3a04f8b/kg/kg-instances/6cdcea01-bac0-48f6-acb5-9385ea3e24ad/entities/8039469283414000536/adjacent-entities?offset=0&limit=2
共100000条