华为云用户手册

  • 使用本地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='***')
  • 编写Workflow 基于图像分类算法,构建包含训练单节点的Workflow。 确保安装开发环境完成后,在ModelArts的Notebook环境中,通过JupyterLab输入如下示例代码。 from modelarts import workflow as wf # 定义统一存储对象管理输出目录 output_storage = wf.data.OutputStorage(name="output_storage", description="输出目录统一配置") # 数据集对象 dataset = wf.data.DatasetPlaceholder(name="input_data") # 创建训练作业 job_step = wf.steps.JobStep( name="training_job", title="图像分类训练", algorithm=wf.AIGalleryAlgorithm( subscription_id="***", # 图像分类算法的订阅ID,自行前往算法管理页面进行查看,可选参数,此处以订阅算法举例 item_version_id="10.0.0", # 订阅算法的版本号,该示例为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="训练资源规格" ) ) ) ) # 构建工作流对象 workflow = wf.Workflow( name="image-classification-ResNeSt", desc="this is a image classification workflow", steps=[job_step], storages=[output_storage] ) # 工作流默认创建在default工作空间下,可以通过以下方式指定工作流归属的空间 # workflow = wf.Workflow( # name="image-classification-ResNeSt", # desc="this is a image classification workflow", # steps=[job_step], # storages=[output_storage], # workspace=wf.resource.Workspace(workspace_id="***") # ) # 其中workspace_id可前往ModelArts的工作空间服务中进行查看 上述代码示例在云上Notebook环境中可直接调试运行,如果需要在本地IDE中使用,则需要补充相关的session鉴权内容,代码示例修改如下: from modelarts import workflow as wf 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='***') # 根据账号的相关信息进行修改 # 定义统一存储对象管理输出目录 output_storage = wf.data.OutputStorage(name="output_storage", description="输出目录统一配置") # 数据集对象 dataset = wf.data.DatasetPlaceholder(name="input_data") # 创建训练作业 job_step = wf.steps.JobStep( name="training_job", title="图像分类训练", algorithm=wf.AIGalleryAlgorithm( subscription_id="***", # 图像分类算法的订阅ID,自行前往算法管理页面进行查看 item_version_id="10.0.0", # 订阅算法的版本号,该示例为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="训练资源规格" ) ) ) ) # 构建工作流对象 workflow = wf.Workflow( name="image-classification-ResNeSt", desc="this is a image classification workflow", steps=[job_step], session=session, # 补充鉴权对象 storages=[output_storage] ) # 工作流默认创建在default工作空间下,可以通过以下方式指定工作流归属的空间 # workflow = wf.Workflow( # name="image-classification-ResNeSt", # desc="this is a image classification workflow", # steps=[job_step], # session=session, # 补充鉴权对象 # storages=[output_storage], # workspace=wf.resource.Workspace(workspace_id="***") # ) # 其中workspace_id可前往ModelArts页面的工作空间服务中进行查看 父主题: 开发第一条Workflow
  • 发布运行态并执行 该方式支持用户直接在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进行音视频设置、投屏、切换会中视图等会控操作。 音视频设置 单击“静音”或“开启视频”按钮,可开启或关闭麦克风、摄像头。 滑动音量条可调整扬声器的音量。 共享:单击“共享”可根据引导进行投屏。 与会者:单击“与会者”可查看与会者列表。 邀请:单击“邀请”打开会议信息弹窗,可扫码分享会议信息、获取会议号和密码邀请他人入会。 视图:单击“视图”,可将会中视图切换为演讲者视图、画中画视图或画廊视图等。 主持人控制:单击“主持人控制”打开弹窗,可开启等候室、允许解除静音、设置视频权限等。 离开:单击“离开”,若SmartRooms是会议主持人,可选择离开会议或结束会议;若SmartRooms是与会者,可选择离开会议。 图5 SmartRooms控制器会控操作
  • 会前操作 完成配对后,可在移动端的控制器对SmartRooms进行加入会议、发起会议等会前操作。 加入会议 从会议日程入会:在会议日程中单击“加入”进入会议。 受邀入会:收到会议邀请时单击按钮入会。 使用会议号和密码入会:从主持人或其他与会者获取会议号和密码,单击“加入会议”,输入会议号和密码入会。 发起会议:单击“发起会议”可创建会议。 共享投屏:单击“共享投屏”可根据引导进行投屏。 图4 SmartRooms控制器会前操作
  • 背景信息 自定义词库使用的分词器包括IK分词器和同义词分词器。 IK分词器配备主词词库和停词词库;同义词分词器配备同义词词库。配置自定义词库需要提前准备词库文件并上传至OBS,详情请见上传词库文件至OBS。 其中,IK分词器包含ik_max_word和ik_smart分词策略。同义词分词器使用的是ik_synonym分词策略。 ik_max_word:会将文本做最细粒度的拆分,比如会将“昨夜西风吹折千林梢”拆分为“昨夜西风,昨夜,西风,吹折千林梢,吹折,千林梢,千,林,折千林,千林,吹”,会穷尽各种可能的分词组合。 ik_smart:会做最粗粒度的拆分,比如会将“昨夜西风吹折千林梢”拆分为“昨夜西风,吹折千林梢”。
  • 上传词库文件至OBS 配置自定义词库需要提前将词库上传至OBS桶。 按表1要求准备词库文件。 表1 词库说明 词库类型 概述 文件要求 主词词库 主词为用户希望进行分词的特殊词语,如上文场景中的“智能手机”和“喜大普奔”。主词库则是这些特殊词语的集合。 UTF-8无BOM格式编码的文本文件,且文件中每一行为一个分词。如果涉及单词,必须改成小写字母。主词库文件最大支持100M。 停词词库 停词为用户不希望进行分词或者关注的词语,如“的”、“什么”、“怎么”等。停词词库是停词词语的集合。 UTF-8无BOM格式编码的文本文件,且文件中每一行为一个分词。停词词库文件最大支持80M。 同义词词库 同义词为意义相同的一组词语,如“开心”和“高兴”。同义词词库是同义词词语的集合。 UTF-8无BOM格式编码的文本文件,且文件中每一行为一组同义词,同义词之间用英文逗号隔开。同义词词库文件最大支持80MB。 上传词库文件至OBS桶,详细操作步骤请参见上传文件。上传的OBS桶必须和集群所在“区域”相同。
  • 约束限制 缩容操作仅支持修改“节点数量”,不支持修改“节点规格”和“节点存储容量”。修改“节点规格”请执行变更规格操作。修改“节点存储容量”请执行扩容操作。 缩容什么节点类型的“节点数量”,缩容完成后只生效新该节点类型的“节点数量”,其他节点类型的“节点数量”保持不变。 要确保缩容之后的磁盘使用量小于80%,且集群每个节点类型中每个AZ的节点数至少为1。 缩容过程会涉及数据迁移,将要下线的节点数据迁移到其他节点上,数据迁移的超时阈值为5小时。当超过5小时数据还未迁移完成,那么缩容会失败。建议在集群数据量较大的情况下,分多次进行缩容。 如果集群没有启用Master节点,缩容后剩余的数据节点个数(包含冷数据节点和其他类型节点)须大于之前的一半,并大于索引的最大副本个数。 关于有Master节点的集群,每次缩容的Master节点个数要小于当前Master节点总数的一半,缩容后的Master节点个数必须是奇数且不小于3。 两个节点的集群暂不支持缩容,可使用单节点重新创建集群,使用备份与恢复迁移集群数据至新集群中。 当集群包含的节点类型不同时,缩容的节点数量区间会有区别,具体情况请参考表1。 表1 不同节点类型的节点数量说明 集群包含的节点类型 节点数量的取值范围 ess ess:1~32 ess、ess-master ess:1~200 ess-master:3~9的奇数 ess、ess-client ess:1~32 ess-client:1~32 ess、ess-cold ess:1~32 ess-cold:1~32 ess、ess-master、ess-client ess:1~200 ess-master:3~9的奇数 ess-client:1~32 ess、ess-master、ess-cold ess:1~200 ess-master:3~9的奇数 ess-cold:1~32 ess、ess-client、ess-cold ess:1~32 ess-client:1~32 ess-cold:1~32 ess、ess-master、ess-client、ess-cold ess:1~200 ess-master:3~9的奇数 ess-client:1~32 ess-cold:1~32 四种节点类型的说明: ess:默认节点类型,即创建集群时必选的数据节点类型,其他3种节点类型都是基于业务需要可选的类型。 ess-master:Master节点 ess-client:Client节点 ess-cold:冷数据节点
  • 配置自定义词库 在 云搜索服务 管理控制台,在左侧菜单栏选择对应的集群类型,进入集群管理页面。 在“集群管理”页面,单击需要配置自定义词库的集群名称,进入集群基本信息页面。 选择“自定义词库”。 在“自定义词库”页面,您可以单击开关来开启或关闭自定义词库功能。 OBS桶:主词库、停词词库和同义词词库文件存储的OBS桶位置。如果当前没有可用OBS桶,您可以单击“创建桶”进行创建,并将词库导入OBS桶中,详细操作步骤请参见创建桶。创建的OBS桶必须和集群所在“区域”相同。 主词词库对象:主词词库文件必须是UTF-8无BOM格式编码的文本文件,且文件中每一行为一个分词。如果涉及单词,必须改成小写字母。主词库文件最大支持100M。 停词词库对象:停词词库文件必须是UTF-8无BOM格式编码的文本文件,且文件中每一行为一个分词。停词词库文件最大支持80M。 同义词词库对象:同义词词库文件必须是UTF-8无BOM格式编码的文本文件,且文件中每一行为一组同义词,同义词之间用英文逗号隔开。同义词词库文件最大支持80MB。 图1 配置自定义词库 单击“保存”,在“确认”对话框中,单击“确定”。词库信息在下方呈现,此时词库状态为“更新中”。请耐心等待1分钟左右,当词库配置完成后,词库状态变更为“成功”,此时,配置的词库信息已在此集群中生效。
  • 背景信息 自定义词库使用的分词器包括IK分词器和同义词分词器。 IK分词器配备主词词库和停词词库;同义词分词器配备同义词词库。配置自定义词库需要提前准备词库文件并上传至OBS,详情请见上传词库文件至OBS。 其中,IK分词器包含ik_max_word和ik_smart分词策略。同义词分词器使用的是ik_synonym分词策略。 ik_max_word:会将文本做最细粒度的拆分,比如会将“昨夜西风吹折千林梢”拆分为“昨夜西风,昨夜,西风,吹折千林梢,吹折,千林梢,千,林,折千林,千林,吹”,会穷尽各种可能的分词组合。 ik_smart:会做最粗粒度的拆分,比如会将“昨夜西风吹折千林梢”拆分为“昨夜西风,吹折千林梢”。
  • 上传词库文件至OBS 配置自定义词库需要提前将词库上传至OBS桶。 按表1要求准备词库文件。 表1 词库说明 词库类型 概述 文件要求 主词词库 主词为用户希望进行分词的特殊词语,如上文场景中的“智能手机”和“喜大普奔”。主词库则是这些特殊词语的集合。 UTF-8无BOM格式编码的文本文件,且文件中每一行为一个分词。如果涉及单词,必须改成小写字母。主词库文件最大支持100M。 停词词库 停词为用户不希望进行分词或者关注的词语,如“的”、“什么”、“怎么”等。停词词库是停词词语的集合。 UTF-8无BOM格式编码的文本文件,且文件中每一行为一个分词。停词词库文件最大支持80M。 同义词词库 同义词为意义相同的一组词语,如“开心”和“高兴”。同义词词库是同义词词语的集合。 UTF-8无BOM格式编码的文本文件,且文件中每一行为一组同义词,同义词之间用英文逗号隔开。同义词词库文件最大支持80MB。 上传词库文件至OBS桶,详细操作步骤请参见上传文件。上传的OBS桶必须和集群所在“区域”相同。
  • 约束限制 缩容操作仅支持修改“节点数量”,不支持修改“节点规格”和“节点存储容量”。 缩容什么节点类型的“节点数量”,缩容完成后只生效新该节点类型的“节点数量”,其他节点类型的“节点数量”保持不变。 要确保缩容之后的磁盘使用量小于80%,且集群每个节点类型中每个AZ的节点数至少为1。 缩容过程会涉及数据迁移,将要下线的节点数据迁移到其他节点上,数据迁移的超时阈值为5小时。当超过5小时数据还未迁移完成,那么缩容会失败。建议在集群数据量较大的情况下,分多次进行缩容。 当集群包含的节点类型不同时,缩容的节点数量区间会有区别,具体情况请参考表1。 表1 不同节点类型的节点数量说明 集群包含的节点类型 节点数量的取值范围 ess ess:1~32 ess、ess-master ess:1~200 ess-master:3~9的奇数 ess、ess-client ess:1~32 ess-client:1~32 ess、ess-cold ess:1~32 ess-cold:1~32 ess、ess-master、ess-client ess:1~200 ess-master:3~9的奇数 ess-client:1~32 ess、ess-master、ess-cold ess:1~200 ess-master:3~9的奇数 ess-cold:1~32 ess、ess-client、ess-cold ess:1~32 ess-client:1~32 ess-cold:1~32 ess、ess-master、ess-client、ess-cold ess:1~200 ess-master:3~9的奇数 ess-client:1~32 ess-cold:1~32 四种节点类型的说明: ess:默认节点类型,即创建集群时必选的数据节点类型,其他3种节点类型都是基于业务需要可选的类型。 ess-master:Master节点 ess-client:Client节点 ess-cold:冷数据节点
  • 约束限制 缩容操作仅支持修改“节点数量”,不支持修改“节点规格”和“节点存储容量”。修改“节点规格”请执行变更规格操作。修改“节点存储容量”请执行扩容操作。 缩容什么节点类型的“节点数量”,缩容完成后只生效新该节点类型的“节点数量”,其他节点类型的“节点数量”保持不变。 要确保缩容之后的磁盘使用量小于80%,且集群每个节点类型中每个AZ的节点数至少为1。 缩容过程会涉及数据迁移,将要下线的节点数据迁移到其他节点上,数据迁移的超时阈值为5小时。当超过5小时数据还未迁移完成,那么缩容会失败。建议在集群数据量较大的情况下,分多次进行缩容。 如果集群没有启用Master节点,缩容后剩余的数据节点个数(包含冷数据节点和其他类型节点)须大于之前的一半,并大于索引的最大副本个数。 关于有Master节点的集群,每次缩容的Master节点个数要小于当前Master节点总数的一半,缩容后的Master节点个数必须是奇数且不小于3。 两个节点的集群暂不支持缩容,可使用单节点重新创建集群,使用备份与恢复迁移集群数据至新集群中。 当集群包含的节点类型不同时,缩容的节点数量区间会有区别,具体情况请参考表1。 表1 不同节点类型的节点数量说明 集群包含的节点类型 节点数量的取值范围 ess ess:1~32 ess、ess-master ess:1~200 ess-master:3~9的奇数 ess、ess-client ess:1~32 ess-client:1~32 ess、ess-cold ess:1~32 ess-cold:1~32 ess、ess-master、ess-client ess:1~200 ess-master:3~9的奇数 ess-client:1~32 ess、ess-master、ess-cold ess:1~200 ess-master:3~9的奇数 ess-cold:1~32 ess、ess-client、ess-cold ess:1~32 ess-client:1~32 ess-cold:1~32 ess、ess-master、ess-client、ess-cold ess:1~200 ess-master:3~9的奇数 ess-client:1~32 ess-cold:1~32 四种节点类型的说明: ess:默认节点类型,即创建集群时必选的数据节点类型,其他3种节点类型都是基于业务需要可选的类型。 ess-master:Master节点 ess-client:Client节点 ess-cold:冷数据节点
  • 智能运维概述 CSS 服务提供智能运维功能,支持检测集群潜在风险,并给出风险处理的建议。 当前Elasticsearch集群和OpenSearch集群均支持智能运维功能。 智能运维支持以下功能: 启动检测任务 使用智能运维功能首先需要启动检测任务。 查看集群风险项 启动检测任务后,系统会开始诊断集群,可在智能运维列表查看集群存在的风险项详情。 删除检测任务 当您已处理完检测任务中所发现的风险项,不在需要历史所创建的检测任务,可删除检测任务。 父主题: 智能运维
  • 检测项 检测任务会从如下项目对集群进行检测,如存在风险,可在智能运维列表查看风险项。 检查当前时刻集群的健康状态,其中red表示有主分片未分配,yellow表示有副分片未分配,green表示所有分片均已分配。 检测集群节点数与AZ(可用区)数,判定Elasticsearch分布式集群的高可用性。 检测集群索引是否开启副本,未设置副本的索引在节点发生故障后可能导致索引不可用,本地盘集群未设置副本会有数据丢失的风险。 检测集群是否存在kibana索引冲突。 检测节点磁盘用量百分比,节点磁盘存储过大可能导致节点无法分配新索引分片并影响集群性能。 检测集群数据节点/冷数据节点的存储用量是否均衡,不均衡的存储用量分布可能导致集群负载不均,读写延迟增加。 连续5分钟检测当前集群是否有节点脱离或不可用。 检测节点分片数量是否过多,单节点分片数量过多会消耗大量节点资源,读写请求时延增加,集群元数据更新缓慢等。 检测所有分片大小,分片太大可能导致查询性能下降,节点内存消耗增加,影响扩缩容以及节点故障时分片的恢复速率等。 检测当前集群是否存在可升级的版本。 检测集群7天内是否有快照备份失败,或7天内无快照备份记录。
  • 操作步骤 登录 云搜索 服务管理控制台。 在集群管理页面,单击需要进行智能运维的集群名称,跳转至该集群基本信息页面。 选择“智能运维”。 在智能运维列表页面,单击左上角的“启动检测”。 在对话框中填写检测任务的基本信息,单击“确定”。 表1 检测任务基本信息说明 参数 说明 名称 检测任务的名称。 描述 检测任务的简短描述。 SMN 主题 如果勾选“任务完成后发送SMN告警”,可选择当前账号已创建的SMN主题。 如果未创建SMN主题,请先前往SMN服务创建主题。 告警灵敏度 如果勾选“任务完成后发送SMN告警”,可选择告警灵敏度。 检测到的风险项存在大于等于此风险敏感度的条目,则发送SMN告警消息,消息内容则包含所有风险项。 创建检测任务后,可在智能运维列表查看新创建的检测任务。
  • 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" : "李娜唱的青藏高原真好听" }
  • 响应示例 状态码: 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" }
  • 基本概念 账号 用户注册华为云时的账号,账号对其所拥有的资源及云服务具有完全的访问权限,可以重置用户密码、分配用户权限等。由于账号是付费主体,为了确保账号安全,建议您不要直接使用账号进行日常管理工作,而是创建用户并使用他们进行日常管理工作。 用户 由账号在 IAM 中创建的用户,是云服务的使用人员,具有身份凭证(密码和访问密钥)。 在我的凭证下,您可以查看账号ID和用户ID。通常在调用API的鉴权过程中,您需要用到账号、用户和密码等信息。 区域 指云资源所在的物理位置,同一区域内可用区间内网互通,不同区域间内网不互通。通过在不同地区创建云资源,可以将应用程序设计的更接近特定客户的要求,或满足不同地区的法律或其他要求。 可用区 一个可用区是一个或多个物理数据中心的集合,有独立的风火水电,AZ内逻辑上再将计算、网络、存储等资源划分成多个集群。一个Region中的多个AZ间通过高速光纤相连,以满足用户跨AZ构建高可用性系统的需求。 项目 华为云的区域默认对应一个项目,这个项目由系统预置,用来隔离物理区域间的资源(计算资源、存储资源和网络资源),以默认项目为单位进行授权,用户可以访问您账号中该区域的所有资源。如果您希望进行更加精细的权限控制,可以在区域默认的项目中创建子项目,并在子项目中购买资源,然后以子项目为单位进行授权,使得用户仅能访问特定子项目中资源,使得资源的权限控制更加精确。 图1 项目隔离模型 同样在我的凭证下,您可以查看项目ID。 企业项目 企业项目是项目的升级版,针对企业不同项目间资源的分组和管理,是逻辑隔离。企业项目中可以包含多个区域的资源,且项目中的资源可以迁入迁出。 关于企业项目ID的获取及企业项目特性的详细信息,请参见《企业管理服务用户指南》。 父主题: 使用前必读
共100000条