华为云用户手册

  • 插件介绍 在Agent开发平台中,插件是大模型能力的重要扩展。通过模块化方式,插件能够为大模型提供更多专业技能和复杂任务处理能力,使其在多样化的实际场景中更加高效地满足用户需求。 通过插件接入,用户可以为应用赋予大模型本身不具备的能力。插件提供丰富的外部服务接口,当任务执行时,模型会根据提示词感知适用的插件,并自动调用它们,从外部服务中获取结果并返回。这样的设计使得Agent能够智能处理复杂任务,甚至跨领域解决问题,实现对复杂问题的自动化处理。 Agent开发平台支持两种类型的插件: 预置插件:平台为开发者和用户提供了预置插件,直接可用,无需额外开发。例如,平台提供的“Python解释器插件”能够根据用户输入的问题自动生成Python代码,并执行该代码获取结果。此插件为Agent提供了强大的计算、数据处理和分析功能,用户只需将其添加到应用中,即可扩展功能。 自定义插件:为了满足更个性化的需求,平台允许开发者创建自定义插件,支持将API通过配置方式快速创建为插件,并供Agent调用。这样,开发者可以根据特定需求为应用增加专属功能。 父主题: 插件开发与配置
  • 工作流节点 工作流节点,实现工作流嵌套工作流的效果。 在一个工作流中,你可以将另一个工作流作为其中的一个步骤或节点,实现复杂任务的封装。例如将常用的、标准化的任务处理流程封装为不同的子工作流,并在主工作流的不同分支内调用这些子工作流执行对应的操作。工作流嵌套可实现复杂任务的模块化拆分和处理,使工作流编排逻辑更加灵活、清晰、更易于管理。 工作流节点配置步骤如下: 拖动左侧“工作流”节点至画布中,单击该节点以打开节点配置页面。 参照表1 工作流节点配置说明,完成工作流节点的配置。 表1 工作流节点配置说明 配置类型 参数名称 参数说明 参数配置 输入参数 工作流节点的输入结构取决于子工作流定义的输入结构,不支持自定义设置 在工作流节点中你需要为输入参数指定数据来源,支持设置为固定值或引用上游节点的输出参数。 输出参数 工作流节点的输出结构取决于子工作流定义的输出结构,不支持自定义设置。 response_content为工作流固定输出参数 图1 工作流节点配置示例-子工作流 图2 工作流节点配置示例-工作流节点(输入和输出对应子工作流的输入和输出) 节点配置完成后,单击“确定”。 连接工作流节点和其他节点。 父主题: 工作流节点配置参考
  • 消息节点 消息节点可提供中间过程的消息输出能力,通过定义一段文本内容,在工作流执行过程中向用户发送该消息。 通常情况下,工作流会在执行完毕后通过结束节点输出最终的执行结果。当开发者想要在工作流执行过程中输出中间节点的结果,可以使用该节点。 消息节点为可选节点,若无需配置,可跳过该步骤。 消息节点配置步骤如下: 拖动左侧“消息”节点至画布中,单击该节点以打开节点配置页面。 参照表1,完成消息节点的配置。 表1 消息节点配置说明 配置类型 参数名称 参数说明 配置示例(按场景写) 参数配置 输入参数 参数名称:只允许输入字母、数字、下划线,且不能以数字开头。 类型、值:支持“引用”和“输入”两种类型。 引用:支持用户选择工作流中已包含的前置节点的输出变量值。 输入:支持用户自定义取值。 在工作流运行到该节点时,如果想要向用户发送包含前置节点输入或输出参数的指定消息,可使用引用方式配置参数;如果想要向用户发送固定内容的指定消息,可使用输入方式配置参数。 指定回复 - 可撰写指定的回复信息,并支持以{{参数名称}}的形式插入变量。回复信息将在工作流执行到该节点时发送给用户。 例如想要在工作流执行过程中向用户发送前置知识检索节点的输出参数"content",就可以添加输入参数"rep_out",引用该"content",并在指定回复中撰写:{{rep_out}}即可。 图1 消息节点配置示例 节点配置完成后,单击“确定”。 连接消息节点和其他节点。 父主题: 工作流节点配置参考
  • 加工任务生成数据集 加工任务详情页面增加生成数据集相关提示。 当加工任务执行结束且没有生成数据集时,页面提供生成数据集按钮。 图1 生成数据集按钮 当任务无生成数据集且处理生成数据集中状态时,提供刷新按钮。 图2 刷新按钮 当加工任务最新一次执行任务成功,且没有生成最新数据集时,页面提示:任务数据已经刷新,如果要保存最新结果,请单击生成加工数据集。 图3 任务数据已经刷新,如果要保存最新结果,请单击生成加工数据集 父主题: 加工数据集
  • 转换算子说明 转换算子构建包括:①YML配置文件 ②实现功能的python脚本TAR包 ①YML文件示例: ### python算子示例 id: FormatConvert2 name: 自定义算子格式转化 description: 自定义算子格式转化 author: Huawei Cloud Technology Co., Ltd. tags: language: - zh - en format: - CS V - TIF category: 数据转换 modal: - IMAGE runtime: cpu-arch: - X86 resources: - cpu: 1 memory: 4096 environment: python entrypoint: process.py auto-data-loading: false # 是否需要自动加载数据 arguments: - key: operateType name: 操作类型 type: ENUM #单选 items: - name: 物体检测 value: object_detection - name: 图像分类 value: image_classification required: true visible: true default: object_detection """ return "parquet" ②TAR包: 假设算子包名称为operator-package.tar,算子包解压后目录结构: +---operator-package | +--- program_package # python算子目录 | | +---dependency | | | +---requirements.txt #需求说明,可选 | | +--- install.sh # 安装脚本,可选 | | +--- process.py # 算子代码,必填 实现格式转换功能的process.py文件 import PIL.Image import PIL.ImageOps import numpy as np import ast import os import pandas as pd import xml.etree.ElementTree as ET from xml.dom import minidom import PIL import moxing as mox import ma_utils as utils logger = utils.FileLogger.get_logger() import argparse arg_parser = argparse.ArgumentParser() arg_parser.add_argument("--operateType", type=str, required=True, help="") arg_parser.add_argument("--input_obs_path", type=str, required=True, help="") arg_parser.add_argument("--output_obs_path", type=str, required=True, help="") def prettify_xml(elem): rough_string = ET.tostring(elem, 'utf-8') reparsed = minidom.parseString(rough_string) return reparsed.toprettyxml(indent=" ") def create_pascal_voc_xml(folder, filename, path, width, height, depth, objects, deu, db, dp, ls, lv, lse, lc, srct, srrt, src, srr, rct, rrt, rc, rr, dest__engine_uuid=None): annotation = ET.Element('annotation') # 目的端引擎uuid dest__engine_uuid = ET.SubElement(annotation, 'DEST_ENGINE_UUID') dest__engine_uuid.text = deu # 目的端桶(逻辑分区) dest__engine_uuid = ET.SubElement(annotation, 'DEST_BUCKET') dest__engine_uuid.text = db # 目的端路径 dest_path = ET.SubElement(annotation, 'DEST_PATH') dest_path.text = folder # 文件名称 filename_element = ET.SubElement(annotation, 'FILE_NAME') filename_element.text = filename # 标签组全路径 dest_path = ET.SubElement(annotation, 'DEST_PATH') dest_path.text = dp # 标签组全路径 label_value = ET.SubElement(annotation, 'LABEL_VALUE') label_value.text = lv # 标签形状 点 / 线 / 矩形(两点) / 矩形(bbox) / 矩形(中心点) / 多边形 / 轮廓 label_shape = ET.SubElement(annotation, 'LABEL_SHAPE') label_shape.text = ls # 标签形状 点 / 线 / 矩形(两点) / 矩形(bbox) / 矩形(中心点) / 多边形 / 轮廓 label_coordinate = ET.SubElement(annotation, 'LABEL_COORDINATE') label_coordinate.text = lc # 源端记录创建时间 rec_time = ET.SubElement(annotation, 'SOURCE_REC_CREATE_TIME') rec_time.text = srct # 源端记录修改时间 rec_rev_time = ET.SubElement(annotation, 'SOURCE_REC_REVISE_TIME') rec_rev_time.text = srrt # 源端记录创建人 rec_ctor = ET.SubElement(annotation, 'SOURCE_REC_CREATOR') rec_ctor.text = src # 源端记录修改人 rec_r_ctor = ET.SubElement(annotation, 'SOURCE_REC_REVISOR') rec_r_ctor.text = srr # 源端记录创建时间 d_cd_time = ET.SubElement(annotation, 'REC_CREATE_TIME') d_cd_time.text = rct # 记录修改时间 r_time = ET.SubElement(annotation, 'REC_REVISE_TIME') r_time.text = rrt # 记录创建人 rec_c = ET.SubElement(annotation, 'REC_CREATOR') rec_c.text = rc # 记录修改人 recd_time = ET.SubElement(annotation, 'REC_REVISOR') recd_time.text = rr tree = ET.ElementTree(annotation) return tree def create_pascal_voc_xml1(folder, filename, path, width, height, depth, objects): annotation = ET.Element('annotation') folder_element = ET.SubElement(annotation, 'folder') folder_element.text = folder filename_element = ET.SubElement(annotation, 'filename') filename_element.text = filename path_element = ET.SubElement(annotation, 'path') path_element.text = path source = ET.SubElement(annotation, 'source') database = ET.SubElement(source, 'database') database.text = 'Unknown' size = ET.SubElement(annotation, 'size') width_element = ET.SubElement(size, 'width') width_element.text = str(width) height_element = ET.SubElement(size, 'height') height_element.text = str(height) depth_element = ET.SubElement(size, 'depth') depth_element.text = str(depth) segmented = ET.SubElement(annotation, 'segmented') segmented.text = '0' for obj in objects: obj_element = ET.SubElement(annotation, 'object') name_element = ET.SubElement(obj_element, 'name') name_element.text = obj['name'] pose = ET.SubElement(obj_element, 'pose') pose.text = 'Unspecified' truncated = ET.SubElement(obj_element, 'truncated') truncated.text = '0' difficult = ET.SubElement(obj_element, 'difficult') difficult.text = '0' bndbox = ET.SubElement(obj_element, 'bndbox') xmin = ET.SubElement(bndbox, 'xmin') xmin.text = str(obj['xmin']) ymin = ET.SubElement(bndbox, 'ymin') ymin.text = str(obj['ymin']) xmax = ET.SubElement(bndbox, 'xmax') xmax.text = str(obj['xmax']) ymax = ET.SubElement(bndbox, 'ymax') ymax.text = str(obj['ymax']) tree = ET.ElementTree(annotation) return tree def get_value(row, name): value = '' if pd.isna(row[name]) else str(row[name]) return value def copy_local_to_obs(local_file_path, obs_file_path): mox.file.copy(local_file_path, obs_file_path) def csv_to_pascal_voc(args, csv_file, local_tif_file_path_dict, local_output_file_dir): operate_type = getattr(args, 'operateType', 'object_detection') logger.info(operate_type) df = pd.read_csv(csv_file) grouped = df.groupby('FILE_NAME') for filename, group in grouped: if local_tif_file_path_dict.get(filename, None): if operate_type == 'object_detection': objects = [] for _, row in group.iterrows(): bndbox = ast.literal_eval(row['LABEL_COORDINATE']) label = row['LABEL_VALUE'] obj = { 'name': label, 'xmin': bndbox[0], 'ymin': bndbox[1], 'xmax': bndbox[2], 'ymax': bndbox[3] } objects.append(obj) width, height, depth = 0, 0, 0 folder = os.path.join(row['DEST_BUCKET'], row['DEST_PATH']) path = os.path.join(folder, filename) # real_path = os.path.join(test_root, path) with PIL.Image.open(local_tif_file_path_dict.get(filename)) as img: width, height = img.size depth = len(img.getbands()) tree = create_pascal_voc_xml1(folder, filename, path, width, height, depth, objects) pretty_xml = prettify_xml(tree.getroot()) local_output_xml_file_path = os.path.join(local_output_file_dir, os.path.splitext(filename)[0] + '.xml') with open(local_output_xml_file_path, 'w', encoding='utf-8') as f: f.write(pretty_xml) fname = replacetype(filename,'1') copy_local_to_obs(local_output_xml_file_path,os.path.join(args.output_obs_path, fname)) copy_local_to_obs(local_tif_file_path_dict.get(filename), os.path.join(args.output_obs_path, filename)) elif operate_type == 'image_classification': for _, row in group.iterrows(): logger.info(f'-------------循环row--') lv = get_value(row, 'LABEL_VALUE') txtstr = create_pascal_voc_txt(lv) fname = replacetype(filename,'2') local_output_txt_file_path = os.path.join(local_output_file_dir, fname) with open(local_output_txt_file_path, 'w', encoding='utf-8') as f: f.write(txtstr) copy_local_to_obs(local_output_txt_file_path, os.path.join(args.output_obs_path, fname)) copy_local_to_obs(local_tif_file_path_dict.get(filename), os.path.join(args.output_obs_path, filename)) def replacetype(filename,type): if type == '1': filename = filename.replace('.jpg', '.xml') filename = filename.replace('.bmp', '.xml') filename = filename.replace('.jpeg', '.xml') filename = filename.replace('.png', '.xml') filename = filename.replace('.JPG', '.xml') filename = filename.replace('.BMP', '.xml') filename = filename.replace('.JPEG', '.xml') filename = filename.replace('.PNG', '.xml') elif type == '2': filename = filename.replace('.jpg', '.txt') filename = filename.replace('.bmp', '.txt') filename = filename.replace('.jpeg', '.txt') filename = filename.replace('.png', '.txt') filename = filename.replace('.JPG', '.txt') filename = filename.replace('.BMP', '.txt') filename = filename.replace('.JPEG', '.txt') filename = filename.replace('.PNG', '.txt') return filename def create_pascal_voc_txt(lv): # tree='DEST_ENGINE_UUID:'+deu+'\n'+'DEST_BUCKET:'+db # txttree = 'DEST_ENGINE_UUID:' + deu + '\n' + 'DEST_BUCKET:' + db + '\n' + 'DEST_PATH:' + dp + '\n' + 'LABEL_SET:' + ls + '\n' + 'LABEL_VALUE:' + lv + '\n' + 'LABEL_SHAPE:' + lse + '\n' + 'LABEL_COORDINATE:' + lc + '\n' + 'S#OURCE_REC_CREATE_TIME:' + srct + '\n' + 'SOURCE_REC_REVISE_TIME:' + srrt + '\n' + 'SOURCE_REC_CREATOR:' + src + '\n' + 'SOURCE_REC_REVISOR:' + srr + '\n' + 'REC_CREATE_TIME:' + rct + '\n' + 'REC_REVISE_TIME:' + rrt + '\n' + 'RE#C_CREATOR:' + rc + '\n' + 'REC_REVISOR:' + rr txttree = lv return txttree class Process: def __init__(self, args): # 创建本地目录用以存储从obs传入的文件 self.local_input_file_dir = r'/tmp/obs_input/' os.makedirs(self.local_input_file_dir, exist_ok=True) # 创建本地目录用以存储处理后的文件,从而传输到obs self.local_output_file_dir = r'/tmp/obs_output/' os.makedirs(self.local_output_file_dir, exist_ok=True) # 设置参数,针对算子控制参数,设置默认值 self.args = args self.input_obs_path=args.obs_input_path self.output_obs_path=args.obs_output_path self.args.input_obs_path=args.obs_input_path self.args.output_obs_path=args.obs_output_path logger.info(f'-------算子执行--------') def __call__(self, input): # 获取obs路径下的文件名 file_name_list = mox.file.list_directory(self.args.input_obs_path, recursive=False) file_path_dict = {file_name: os.path.join(self.args.input_obs_path, file_name) for file_name in file_name_list} # 对每个文件进行处理 local_tif_file_path_dict, local_csv_file_path = {}, '' for file_name, obs_file_path in file_path_dict.items(): # 将文件从obs复制到本地 # if file_name.endswith('.jpg'): # local_tif_file_path = os.path.join(self.local_input_file_dir, file_name) # logger.info(f'---------------4'+local_tif_file_path) # local_tif_file_path_dict[file_name] = local_tif_file_path # mox.file.copy(obs_file_path, local_tif_file_path) # else: # local_csv_file_path = os.path.join(self.local_input_file_dir, file_name) # logger.info(f'---------------5'+local_csv_file_path) # mox.file.copy(obs_file_path, local_csv_file_path) if file_name.endswith('.csv'): local_csv_file_path = os.path.join(self.local_input_file_dir, file_name) mox.file.copy(obs_file_path, local_csv_file_path) else: local_tif_file_path = os.path.join(self.local_input_file_dir, file_name) local_tif_file_path_dict[file_name] = local_tif_file_path mox.file.copy(obs_file_path, local_tif_file_path) csv_to_pascal_voc(self.args, local_csv_file_path, local_tif_file_path_dict, self.local_output_file_dir) 父主题: 数据集格式转换
  • Agent节点配置说明 Agent节点提供了使用大模型的能力以及大模型工具调用的能力,可在节点中配置已部署的模型,用户可以通过编写Prompt、绑定插件让模型处理相应任务。 Agent节点为可选节点,若无需配置,可跳过该步骤。 Agent节点配置步骤如下: 拖动左侧“Agent”节点至画布中,单击该节点以打开节点配置页面。 参照表1,完成变量输入节点的配置。 表1 Agent节点配置说明 配置类型 参数名称 参数说明 模型配置 模型选择 选择执行此节点的模型,支持设置模型在此节点中的生成多样性等参数配置,使模型效果更符合你的预期。 核采样 模型在输出时会从概率最高的词汇开始选择,直到这些词汇的总概率累积达到核采样值,核采样值可以限制模型选择这些高概率的词汇,从而控制输出内容的多样性。建议不要与温度同时调整。 温度 用于控制生成结果的随机性。调高温度,会使得模型的输出更具多样性和创新性;降低温度,会使输出内容更加遵循指令要求,但同时也会减少模型输出的多样性。 参数配置 输入参数 参数名称:只允许输入字母、数字、下划线,且不能以数字开头。 类型、值:支持“引用”和“输入”两种类型。 引用:支持用户选择工作流中已包含的前置节点的输出变量值和全局配置中的记忆变量。 输入:支持用户自定义取值。 插件 可绑定手动创建的插件或预制插件,当模型识别到需要调用工具来完成任务时,会根据用户的输入提取参数完成插件调用,并总结插件执行结果。 系统提示词 配置输入给大模型的系统提示词,用于指导模型更好的完成任务。配置提示词时,支持使用{{variable}}格式引用当前节点输入参数中已定义好的参数。最终替换后的内容会传递给模型。 输出参数 输出参数为Agent节点最后一轮的输出。 终止条件 最大迭代轮次 该参数用于设置与模型的最大交互次数,超过最大回复轮数还没有提取到参数则跳出Agent节点。 插件执行成功 该参数开启后可绑定插件,当执行该插件成功后跳出Agent节点。 识别到用户有退出意图 该参数开启后识别到用户输入有退出意向时,跳出Agent节点。 图1 Agent节点配置示例 节点配置完成后,单击“确定”。 连接Agent节点和其他节点。 父主题: 工作流节点配置参考
  • 构建医学NLP大模型数据集流程 在ModelArts Studio大模型开发平台中,使用数据工程构建盘古NLP大模型数据集流程见表3。 表3 盘古医学NLP大模型数据集构建流程 流程 子流程 说明 操作指导 导入数据至盘古平台 创建导入任务 将存储在OBS服务中的数据导入至平台统一管理,用于后续加工或发布操作。 导入数据至盘古平台 加工文本类数据集 加工文本类数据集 通过专用的加工算子对数据进行预处理,确保数据符合模型训练的标准和业务需求。不同类型的数据集使用专门设计的算子,例如去除噪声、冗余信息等,提升数据质量。 加工文本类数据集 合成文本类数据集 利用预置或自定义的数据指令对原始数据进行处理,并根据设定的轮数生成新数据。该过程能够在一定程度上扩展数据集,增强训练模型的多样性和泛化能力。 合成文本类数据集 标注文本类数据集 为无标签数据集添加准确的标签,确保模型训练所需的高质量数据。平台支持人工标注和AI预标注两种方式,用户可根据需求选择合适的标注方式。数据标注的质量直接影响模型的训练效果和精度。 标注文本类数据集 配比文本类数据集 数据配比是将多个数据集按特定比例组合的过程。通过合理的配比,确保数据集的多样性、平衡性和代表性,避免因数据分布不均而引发的问题。 配比文本类数据集 发布文本类数据集 评估文本类数据集 平台预置了多种数据类型的基础评估标准,包括NLP、视频和图片数据,用户可根据需求选择预置标准或自定义评估标准,从而精确优化数据质量,确保数据满足高标准,提升模型性能。 评估文本类数据集 发布文本类数据集 发布流通是将单个数据集发布为特定格式的“发布数据集”,用于后续模型训练等操作。 平台支持发布的数据集格式为标准格式、盘古格式。 标准格式:平台默认的格式。 盘古格式:训练盘古大模型时,需要发布为该格式。当前仅文本类、图片类数据集支持发布为盘古格式。 发布文本类数据集
  • 训练医学NLP大模型所需数据量 使用数据工程构建盘古NLP大模型数据集进行模型训练时,所需数据量见表2。 表2 构建医学NLP大模型所需数据量 模型规格 训练类型 推荐数据量 最小数据量(数据条数) 单场景推荐训练数据量 单条数据Token长度限制 N1 微调 - 1000条/每场景 ≥ 1万条/每场景 32K N2 微调 - 1000条/每场景 ≥ 1万条/每场景 32K N4 微调 - 1000条/每场景 ≥ 1万条/每场景 4K版本:4096 32K版本:32768 预训练 4GB(等价10亿Tokens) - - 4K版本:4096 32K版本:32768 DPO强化学习 5万 ~ 15万条 1000条 -
  • 医学NLP大模型支持接入的数据集类型 盘古NLP大模型仅支持接入文本类数据集,数据集文件内容包括:预训练文本、单轮问答、多轮问答、带人设单轮问答、带人设多轮问答等,不同训练方式所需要使用的数据见表1,该数据集格式要求请参见文本类数据集格式要求。 表1 训练医学NLP大模型数据集类型要求 基模型 训练场景 数据集类型 数据集内容 文件格式 NLP 预训练 文本 预训练文本 jsonl 微调 文本 单轮问答 jsonl、csv 文本 多轮问答 jsonl 文本 单轮问答(人设) jsonl、csv 文本 多轮问答(人设) jsonl 强化学习(DPO) 文本 偏好优化DPO jsonl
  • 科学计算大模型训练类型选择建议 目前,全球中期天气要素模型提供训练功能和推理功能,降水模型仅提供推理功能。 全球中期天气要素预测模型的训练类型选择建议: 全球中期天气要素预测模型的训练支持预训练、微调两种操作,如果直接使用平台预置的中期天气要素预测模型不满足您的使用要求时,可以进行预训练或微调。预训练、微调操作的适用场景如下: 预训练:训练用于添加新的高空层次、高空变量或表面变量。如果您需要在现有模型中引入新要素,需要使用训练(重新训练模型)。在重训配置参数时,您可以选择新要素进行训练。请注意,所选的数据集必须包含您想要添加的新要素。此外,您还可以通过训练更改所有的模型参数,以优化模型性能。 微调:微调是将新数据应用于已有模型的过程。它适用于不改变模型结构参数和引入新要素的情况。如果您有新的观测数据,可以使用微调来更新模型的权重,以适应新数据。 中期海洋智能预测模型的训练类型选择建议: 中期海洋智能预测模型的训练支持预训练、微调两种操作,如果直接使用平台预置的区域中期海洋智能预测模型不满足您的使用要求时,可以进行预训练或微调。预训练、微调操作的适用场景如下: 预训练:可以在重新指定深海变量、海表变量、以及深海层深、时间分辨率、水平分辨率以及区域范围,适用于想自定义自己的区域模型的场景,需预先准备好区域高精度数据。 微调:在已有模型的基础上添加新数据,它适用于不改变模型结构参数和引入新要素的情况,添加最新数据的场景。 区域大气污染物预测模型的训练类型选择建议: 区域大气污染物预测模型的训练支持预训练、微调两种操作,如果直接使用平台预置的区域大气污染物预测模型不满足您的使用要求时,可以进行预训练或微调。预训练、微调操作的适用场景如下: 预训练:可以在重新指定大气污染物要素、以及时间分辨率、水平分辨率以及区域范围,适用于想自定义自己的区域模型的场景,需预先准备好区域高精度数据。 微调:在已有模型的基础上添加新数据,它适用于不改变模型结构参数和引入新要素的情况,添加最新数据的场景。
  • 科学计算大模型训练流程介绍 科学计算大模型的训练主要分为两个阶段:预训练与微调。 预训练阶段:预训练是模型学习基础知识的过程,基于大规模通用数据集进行。例如,在区域海洋要素预测中,可以重新定义深海变量、海表变量,调整深度层、时间分辨率、水平分辨率以及区域范围,以适配自定义区域的模型场景。此阶段需预先准备区域的高精度数据。 微调阶段:在预训练模型的基础上,微调利用特定领域的数据进一步优化模型,使其更好地满足实际任务需求。例如,区域海洋要素预测的微调是在已有模型上添加最新数据,不改变模型结构参数或引入新要素,以适应数据更新需求。 在实际流程中,通过设定训练指标对模型进行监控,以确保效果符合预期。在微调后,评估用户模型,并进行最终优化,确认其满足业务需求后,进行部署和调用,以便实际应用。
  • 科学计算大模型选择建议 科学计算大模型支持训练的模型类型有:全球中期天气要素模型、区域中期海洋智能预测模型。 全球中期天气要素预测模型选择建议: 科学计算大模型的全球中期天气要素预测模型,可以对未来一段时间的天气进行预测,具备以下优势: 高时间精度:全球中期天气要素预测模型可以预测未来1、3、6、24小时的天气情况,降水模型可预测未来6小时的降水情况。高时间精度对于农业、交通、能源等领域的决策和规划非常重要。 全球覆盖:全球中期天气要素预测模型和降水模型能够在全球范围内进行预测,不仅仅局限于某个地区。它的分辨率相当于赤道附近每个点约25公里*25公里的空间。 数据驱动:全球中期天气要素预测模型和降水模型使用历史天气数据来训练模型,从而提高预测的准确性。这意味着它可以直接利用过去的观测数据,而不仅仅依赖于数值模型。 全球中期天气要素预测模型、降水模型信息见表 全球中期天气要素预测模型信息表。 表1 全球中期天气要素预测模型信息表 模型 预报层次 预报高空变量 预报表面变量 时间分辨率 水平分辨率 区域范围 全球中期天气要素预测模型 13层(1000hpa,925hpa,850hpa,700hpa,600hpa,500hpa,400hpa,300hpa,250hpa,200hpa,150hpa,100hpa,50hpa) T:温度 Q:比湿 Z:重力位势 U:U风 V:V风 MLSP:海平面气压 U10:10米U风,经度方向 V10:10米V风,纬度方向 T2M:2米温度 1、3、6、24小时 0.25°*0.25° 全球 支持训练的模型清单见表 中期天气要素预测模型的类型,您可根据具体使用场景选择合适的模型。例如天气基础要素预测,需要时间分辨率为1小时的场景下,您可以选择Pangu-AI4S-Global-Weather-v1.1.0-1h模型。 表2 中期天气要素预测模型 模型名称 模型版本及时间分辨率 说明 Pangu-AI4S-Global-Weather v1.1.2-1h 2025年3月发布的版本,用于天气基础要素预测,时间分辨率为1小时,1个训练单元起训及1个实例部署。 Pangu-AI4S-Global-Weather v1.2.2-3h 2025年3月发布的版本,用于天气基础要素预测,时间分辨率为3小时,1个训练单元起训及1个实例部署。 Pangu-AI4S-Global-Weather v1.3.2-6h 2025年3月发布的版本,用于天气基础要素预测,时间分辨率为6小时,1个训练单元起训及1个实例部署。 Pangu-AI4S-Global-Weather v1.4.2-24h 2025年3月发布的版本,用于天气基础要素预测,时间分辨率为24小时,1个训练单元起训及1个实例部署。 中期海洋智能预测模型选择建议: 科学计算大模型的中期海洋智能预测模型,可以对未来一段时间海洋要素进行预测。可为海上防灾减灾,指导合理开发和保护渔业等方面有着重要作用。中期海洋智能预报可以训练的模型为区域海洋要素模型,信息见表3。 表3 中期海洋智能预测模型信息 模型 深海层深 预报深海变量 预报海表变量 时间分辨率 水平分辨率 区域范围 区域海洋要素模型 0m,6m,10m,20m,30m,50m,70m,100m,125m,150m,200m,250m,300m,400m,500m T:海温(℃) S:海盐(PSU) U:海流经向速率 (ms-1) V:海流纬向速率 (ms-1) MLSP:海平面气压 U10:10米U风,经度方向 V10:10米V风,纬度方向 T2M:2米温度 SSH:海表高度(m) 24h 0.25°*0.25° 特定区域 支持训练的模型清单见表4,您可根据具体使用场景选择合适的模型。例如区域海洋基础要素预测场景下,您可以选择Pangu-AI4S-Regional-Ocean-v1.1.0-24h模型。 表4 区域中期海洋智能预测模型的类型 模型名称 模型版本及时间分辨率 说明 Pangu-AI4S-Regional-Ocean v1.1.2-24h 2025年3月发布的版本,用于区域海洋基础要素预测,1个训练单元起训及1个实例部署。 区域大气污染物预测模型选择建议: 科学计算大模型的区域大气污染物预测模型,可以对特定区域未来一段时间污染物浓度进行预测,在城市大气污染治理、环境治理方面具有重要作用。信息见表5。 表5 区域大气污染物预测模型信息 模型 预报污染物变量 时间分辨率 水平分辨率 区域范围 区域大气污染物要素模型 PM10、PM2.5、NO₂、O₃、SO₂、CO 1h 0.0625°*0.0625° 特定区域 支持训练的模型清单见表6,您可根据具体使用场景选择合适的模型。 表6 区域大气污染物预测模型的类型 模型名称 模型版本及时间分辨率 说明 Pangu-AI4S-Regional-Pollution v1.1.2-1h 2025年3月发布的版本,用于区域污染物基础要素预测,1个训练单元起训及1个实例部署。
  • MCP服务介绍 MCP(Model Context Protocol,模型上下文协议) 是由 Anthropic 推出的一种开放标准,旨在统一大型语言模型(LLM)与外部数据源和工具之间的通信协议。 MCP 的主要目的在于解决当前 AI 模型因数据孤岛限制而无法充分发挥潜力的难题,MCP 使得 AI 应用能够安全地访问和操作本地及远程数据,为 AI 应用提供了连接万物的接口。 父主题: MCP服务开发与配置
  • 预测大模型评测指标说明 表1 预测大模型评测指标说明 模型类型 模型场景 评测指标(自动评测) 指标说明 预测大模型 回归 拟合度 预测值对真实值变动的解释程度,越接近于1,说明模型对真实值的拟合越好。 平均绝对误差 预测值与真实值之间差异的平均绝对值。它衡量了模型预测的平均偏差程度,值越小表示模型的预测越准确。 均方根误差 预测值与真实值之间差异的平方和的平均值的平方根。它与MAE类似,但对大误差给予更高的惩罚。 RMS E在一定程度上反映了模型预测的波动程度,值越小表示模型的预测越准确。 分类、异常检测 拟合度 查准率和查全率之间的平衡点,即F1分数。 准确率 预测正确的样本比例。 精确率 预测为正的样本中,实际为正的比率。 召回率 实际为正的样本,预测为正的比率。
  • 查看模型训练状态 在模型训练列表中查看训练任务的状态,各状态说明详见表 训练状态说明。 表1 训练状态说明 训练状态 训练状态含义 初始化 模型训练任务正在进行初始化配置,准备开始训练。 排队中 模型训练任务正在排队,请稍等。 运行中 模型正在训练中,训练过程尚未结束。 停止中 模型训练正在停止中。 已停止 模型训练已被用户手动停止。 失败 模型训练过程中出现错误,需查看日志定位训练失败原因。 已完成 模型训练已完成。
  • 查看训练指标 对于训练状态为“已完成”的任务,单击任务名称,可在“训练结果”页面查看训练指标,模型的训练指标介绍请参见表2 训练指标说明。 图1 查看训练指标 表2 训练指标说明 模型 训练指标 指标说明 NLP大模型 训练损失值 训练损失值是一种衡量模型预测结果和真实结果之间的差距的指标,通常情况下越小越好。 一般来说,一个正常的Loss曲线应该是单调递减的,即随着训练的进行,Loss值不断减小,直到收敛到一个较小的值。
  • 查看模型训练状态 模型启动训练后,模型的训练任务状态请在“模型训练”页面进行查看。单击任务名称可以进入详情页查看训练指标、训练任务详情和训练日志。 表1 训练状态说明 训练状态 训练状态含义 初始化 模型训练任务正在进行初始化配置,准备开始训练。 排队中 模型训练任务正在排队,请稍等。 运行中 模型正在训练中,训练过程尚未结束。 停止中 模型训练正在停止中。 已停止 模型训练已被用户手动停止。 失败 模型训练过程中出现错误,需查看日志定位训练失败原因。 已完成 模型训练已完成。
  • 获取训练日志 单击训练任务名称,可以在“日志”页面查看训练过程中产生的日志。 对于训练异常或失败的任务可以通过训练日志定位训练失败的原因。 训练日志可以按照不同的节点(训练阶段)进行筛选查看。分布式训练时,任务被分配到多个工作节点上进行并行处理,每个工作节点负责处理一部分数据或执行特定的计算任务。日志也可以按照不同的工作节点(如worker-0表示第一个工作节点)进行筛选查看。 图2 获取训练日志
  • 查看训练指标 对于训练状态为“已完成”的任务,单击任务名称,可在“训练结果”页面查看训练指标,模型的训练指标介绍请参见表2。 图1 查看训练指标 表2 训练指标说明 模型 训练指标 指标说明 三方大模型 训练损失值(Training Loss) 训练损失值是一种衡量模型预测结果和真实结果之间的差距的指标,通常情况下越小越好。 一般来说,一个正常的Loss曲线应该是单调递减的,即随着训练的进行,Loss值不断减小,直到收敛到一个较小的值。
  • 高级意图模式 当意图分支比较多(100+)时,建议使用高级模式; 在独立的页面配置意图分支信息,通过选择子工作流的交互方式完成业务配置。 配置步骤: 配置意图包。 单击平台左侧菜单 “意图管理” 新建意图包。 在意图包中添加意图分类,分类信息包含名称和示例。 图2 配置意图包 拖动左侧“意图识别”节点至画布中,单击该节点以打开节点配置页面。切换为 “高级模式”。 参照意图模式配置说明,完成配置。 表2 意图识别节点配置说明 配置类型 参数名称 参数说明 模型配置 模型选择 用于配置进行意图识别的大模型,可选择平台已部署的任一模型。 温度 用于控制生成结果的随机性。调高温度,会使得模型的输出更具多样性和创新性;降低温度,会使输出内容更加遵循指令要求,但同时也会减少模型输出的多样性。 核采样 模型在输出时会从概率最高的词汇开始选择,直到这些词汇的总概率累积达到核采样值,核采样值可以限制模型选择这些高概率的词汇,从而控制输出内容的多样性。建议不要与温度同时调整。 参数配置 输入参数 参数名称:默认名称input,为固定值,不可编辑。 类型、值:支持“引用”和“输入”两种类型。 引用:支持用户选择工作流中已包含的前置节点的输出变量值。 输入:支持用户自定义取值。 意图配置 意图包 选择前面已经配置的意图包。 高级配置 提示词 高级可选配置项,提供进阶开发者修改提示词,如果不配置将会使用系统默认值。提示词的撰写可能影响到意图识别节点的准确性。 记忆 选择是否打开记忆功能,默认关闭。若开启记忆,可记录多轮对话的内容。 图3 意图识别节点配置示例 节点配置完成后,单击“确定”。 单击意图动作节点,配置分支对应的处理逻辑。 图4 配置处理逻辑 配置子工作流的输入参数。 图5 配置输入参数 单击确定,完成意图动作节点配置。 连接意图动作节点和其他节点。
  • 循环节点 循环节点提供了循环执行节点的能力,可在循环体内配置需要循环的节点,用户可以通过在循环体内编排节点多次执行处理任务。 循环是一种常见的控制机制,用于重复执行一系列任务,直到满足某个条件为止。工作流提供循环节点,当需要重复执行一些操作,或循环处理一组数据 时,可以使用循环节点实现。 循环节点为可选节点,若无需配置,可跳过该步骤。 循环节点配置步骤如下: 拖动左侧“循环”节点至画布中,拖动其他需要循环执行的节点到循环体画布内部并编排(循环内执行需从循环输入节点开始,输出连接到循环输出节点,暂不支持交互式节点)。 参照表1,完成循环节点的配置。 表1 循环节点配置说明 配置类型 参数名称 参数说明 循环类型配置 使用数组循环 使用数组循环类似编程语言中的 for 语法结构。遍历循环用于遍历一个已知的序列,对序列中的每个元素执行一系列相同的步骤。 使用数组循环时,需要指定 arr_loop_var 的值,此参数仅支持引用上游节点的输出,且必须为数组格式。使用数组循环模式下执行循环节点时,循环的次数取决于循环数组引用的数组长度。 使用数组循环时,循环节点会遍历数组中的每个元素,每次循环都会将当前循环到的元素赋值给内置变量。内置变量仅限循环节点内部使用。目前支持的内置变量如下: item:数组元素,即当前循环到的数组元素。 index:数组索引,index+1 为当前循环的轮次。 指定循环次数 指定循环次数模式通常用于批量、顺序处理数据的场景,需要同时设置循环次数。 循环次数默认为 5 次,支持设置为 1~1000 次。 使用参考: 回合制游戏,3局2胜可将循环次数设置为3。 网络爬虫爬取前1000个商品信息,循环次数设置为1000。 变量配置 循环数组 此参数只有在使用数组循环时支持配置,名称固定为 arr_loop_var,仅支持引用上游节点输出。 中间变量 循环节点支持设置中间变量,此变量可作用于每一次循环。中间变量通常和循环体中的设置变量节点搭配使用,在每次循环结束后为中间变量设置一个新的值,并在下次循环中使用新值。 参数名称:只允许输入字母、数字、下划线,且不能以数字开头。 类型、值:支持“引用”和“输入”两种类型。 引用:支持用户选择工作流中已包含的前置节点的输出变量值。 输入:支持用户自定义取值。 输出参数 循环节点的输出参数可设置为循环体的执行结果集合,表示当数组中所有元素运行完毕之后,将所有循环的运行结果打包输出给下游。也支持设置为中间变量的取值。 图1 循环节点配置示例 节点配置完成后,单击“确定”。 连接循环节点和其他节点。 父主题: 工作流节点配置参考
  • 统计NLP大模型调用信息 针对调用的大模型,平台提供了统一的管理功能。 登录ModelArts Studio大模型开发平台,在“我的空间”模块,单击进入所需空间。 图1 我的空间 单击左侧导航栏“调用统计”,选择“NLP”页签。 选择当前调用的NLP大模型,可以按照不同时间跨度查看当前模型的调用总数、调用失败的次数、调用的总Tokens数、以及输入输出的Tokens数等基本信息。 此外,该功能还提供了可视化界面,可额外查看响应时长以及安全护栏拦截次数。 对于已经接入API Key方式鉴权的模型,可以直接在“应用接入”页面,单击操作列“调用统计”按钮跳转至“调用统计”功能页查看调用信息。 图2 调用统计 父主题: 调用NLP大模型
  • 结束节点 结束节点是工作流的最终节点,用于返回工作流运行后的结果。结束节点支持配置两种参数:输入参数和输出参数,分别对应两种返回方式,文本返回和变量返回。 结束节点的参数配置说明如下: 输入参数:输入参数支持引用和输入两种类型,输入参数需要在指定回复的文本框中以{{variable_name}}的形式进行插入才能返回。 指定回复:您可以在文本框中编辑指定的回复内容,支持在文本中以{{variable_name}}的形式插入输入参数返回或直接返回输入参数。工作流的最终运行结果将按照指定回复中的内容返回。指定回复中不能插入输出参数。 输出参数:输出参数将以变量形式返回,支持引用和输入两种类型。工作流运行结束后会以 JSON 格式返回所有输出参数,适用于子工作流的场景。如果工作流直接绑定了智能体,对话中触发了工作流时,大模型会自动总结 JSON 格式的内容,并以自然语言回复用户。输出参数不能在指定回复中引用。
  • 开始节点 开始节点是一个工作流的起始节点,用于设定启动工作流所需的输入参数。开始节点只有输入参数,没有输出等其他参数。开始节点中默认有一个输入参数query,表示用户在本轮对话中输入的原始内容。你也可以按需添加其他参数,用于下游节点的输入。 开始节点参数配置说明如下: 数据类型:开始节点支持配置String、Number、Boolean、Object、File、Array多种类型的输入参数,其中Object类型参数最多支持3层嵌套。 参数描述:参数的描述信息,帮助模型理解传入参数的含义。将工作流绑定到智能体中使用时,模型会自动分析用户的Query,将Query中表达的信息填入对应的参数中。 是否必选: 参数是否必选。若未指定必选参数,工作流无法执行。将工作流绑定到智能体中使用时,如果用户Query中缺少必选参数,则不会触发工作流调用。 参数默认值:您可以设置输入参数的默认值,默认值将会回显到试运行界面的输入框中,其中Object类型参数的默认值需输入Json数据,后台会校验Json数据和参数定义的一致性后赋值。示例如下图所示。
  • 构建科学计算大模型数据集流程 在ModelArts Studio大模型开发平台中,使用数据工程创建盘古科学计算大模型数据集流程见表2。 表2 盘古科学计算大模型数据集构建流程 流程 子流程 说明 操作指导 导入数据至盘古平台 创建导入任务 将存储在OBS服务中的数据导入至平台统一管理,用于后续加工或发布操作。 导入数据至盘古平台 加工气象类数据集 加工气象类数据集 通过专用的加工算子对数据进行预处理,确保数据符合模型训练的标准和业务需求。不同类型的数据集使用专门设计的算子,例如去除噪声、冗余信息等,提升数据质量。 加工气象类数据集 发布气象类数据集 发布气象类数据集 数据发布是将单个数据集发布为特定格式的“发布数据集”,用于后续模型训练等操作。 发布气象类数据集
  • 构建Deepseek大模型数据集流程 在ModelArts Studio平台中,使用数据工程构建三方大模型数据集流程见表1。 表1 三方大模型数据集构建流程 流程 子流程 说明 操作指导 导入数据至盘古平台 创建导入任务 将存储在OBS服务或本地的数据导入至平台统一管理,用于后续加工或发布操作。 说明: 执行导入操作时,数据集类型需要选择“单轮问答数据”。 导入数据至盘古平台 加工其他类数据集 加工其他类数据集 通过自定义加工算子对数据进行预处理,确保数据符合模型训练的标准和业务需求。 加工其他类数据集 发布其他类数据集 发布其他类数据集 数据发布是将单个数据集发布为特定格式的“发布数据集”,用于后续模型训练等操作。 发布其他类数据集
  • 统计CV大模型调用信息 模型推理接口除了使用Token认证鉴权进行调用外,也支持使用API Key鉴权进行调用。对于API Key鉴权产生的调用信息,可以使用平台的“调用统计”功能对调用量信息、时延信息进行统计。 登录ModelArts Studio平台,在“我的空间”模块,单击进入所需空间。 图1 我的空间 单击左侧导航栏“调用统计”。 选择当前调用的CV大模型,可以按照不同时间跨度查看当前模型调用信息。 父主题: 调用CV大模型
  • 预置应用分类 通用场景 适用于跨行业的通用AI能力,如智能问答、文档总结等。 医疗场景 数字病历生成-诊疗建议:根据患者医学记录(对话、病情描述等)生成初步诊断建议。 数字病历生成-主诉病史:自动提取患者主诉、现病史、既往史等信息。 数字病历生成-查体:基于医学记录(对话、检查单等)生成查体报告。 金融场景 智能坐席助手-工单总结:自动总结电话/客服对话,避免用户重复描述问题。 金融坐席助手-前情摘要总结:优化坐席转接流程,快速生成对话摘要。 金融坐席助手-活动推荐话术:基于银行业务活动,智能生成营销话术。 政务场景 政务公文摘要:快速生成公文核心摘要,提高办公效率。 公文标签生成:自动提取公文关键标签,便于分类检索。 外部应用(第三方AI能力) 盘古大脑知识问答助手:提供意图识别、纠错改写、知识增强问答等智能对话能力。 知网·AI学术研究助手:结合大模型与知网资源,支持科研检索、研读、创作全流程。 知网·AI智能写作:辅助撰写调研报告、技术方案、工作总结等文档。 知网·政知通智能辅政系统:提供公文生成、政策比对、决策辅助等功能。 知网·律境法律大模型:支持法律问答、智慧办案、合规审查等法律AI应用。
  • 设置plog日志 登录承载租户账户后,在左侧菜单页选择平台配置模块,并切换至运维配置页签。 点击添加按钮,在添加弹窗中将模块设置为训练,名称(config_key)设置为plog_level。 设置项目ID,其默认状态下是defalut,此默认状态表示为所有的项目设置plog日志级别,该字段支持填写项目id为其单独设置plog日志级别。 设置资源池,该项选择全局,表示为所有资源池设置plog日志级别;选择单个后,需要输入资源池ID,用于对资源池单独设置plog日志级别。 上述设置完成后,设置plog日志级别,详细说明参考获取训练日志。 完成设置后,查看plog日志并基于日志内容排查训练问题参考 表6 设置plog日志 参数类别 参数名称 说明 高级设置 plog日志 开启后plog日志功能,会记录模型训练过程中的执行过程、状态、错误等信息,盘古技术支持人员可通过plog日志定位模型训练问题。训练任务开始后可以在承载租户的OBS桶中查看。plog日志分级如下: DEBUG:记录模型训练过程中代码的执行流、变量状态、参数的变化等。 INFO:记录模型训练过程中的运行信息,通常包括一些重要的状态变化、执行的关键步骤、模型训练进度等。 WARNING:记录模型训练过程中的告警信息,可用于识别潜在的问题或异常情况。 ERROR:记录模型训练过程中的执行错误信息。
  • NLP大模型评测指标说明 NLP大模型支持自动评测与人工评测,各指标说明如表1、表2、表3。 表1 NLP大模型自动评测指标说明-不使用预置评测集 评测指标(自动评测-不使用评测模板) 指标说明 F1_SCORE 精准率和召回率的调和平均数,数值越高,表明模型性能越好。 BLEU-1 模型生成句子与实际句子在单字层面的匹配度,数值越高,表明模型性能越好。 BLEU-2 模型生成句子与实际句子在词组层面的匹配度,数值越高,表明模型性能越好。 BLEU-4 模型生成结果和实际句子的加权平均精确率,数值越高,表明模型性能越好。 ROUGE-1 模型生成句子与实际句子在单个词的相似度,数值越高,表明模型性能越好。 ROUGE-2 模型生成句子与实际句子在两个词的相似度,数值越高,表明模型性能越好。 ROUGE-L 模型生成句子与实际句子在最长公共子序列的相似度,数值越高,表明模型性能越好。 PRECISION 问答匹配的精确度,模型生成句子与实际句子相比的精确程度,数值越高,表明模型性能越好。 表2 NLP大模型自动评测指标说明-使用预置评测集 评测指标(自动评测-使用评测模板) 指标说明 评测得分 每个数据集上的得分为模型在当前数据集上的通过率;评测能力项中若有多个数据集则按照数据量的大小计算通过率的加权平均数。 综合能力 综合能力是计算所有数据集通过率的加权平均数。 表3 NLP大模型人工评测指标说明 评测指标(人工评测) 指标说明 准确性 模型生成答案正确且无事实性错误。 average 模型生成句子与实际句子基于评估指标得到的评分后,统计平均得分。 goodcase 模型生成句子与实际句子基于评估指标得到的评分后,统计得分为5分的占比。 badcase 模型生成句子与实际句子基于评估指标得到的评分后,统计得分1分以下的占比。 用户自定义的指标 由用户定义的指标,如有用性、逻辑性、安全性等。
共100000条
提示

您即将访问非华为云网站,请注意账号财产安全