华为云用户手册

  • 概述 欢迎使用云监控服务(Cloud Eye)。云监控为用户提供一个针对弹性云服务器、带宽等资源的立体化监控平台。使您全面了解云上的资源使用情况、业务的运行状况,并及时收到异常告警做出反应,保证业务顺畅运行。 您可以使用本文档提供的API对指标、告警规则、监控数据进行相关操作,如查询指标列表、查询告警规则列表、创建告警规则、删除告警规则等。支持的全部操作请参见API概览。 在调用云监控服务API之前,请确保已经充分了解云监控服务相关概念,详细信息请参见“产品介绍”。 父主题: 使用前必读
  • API概览 通过使用云监控所提供的接口,您可以完整的使用云监控的所有功能。例如查询指标列表、创建告警规则等。 表1 接口说明 类型 子类型 API 说明 API V1 API版本号管理 查询API所有版本 查询云监控支持的API所有版本号。 查询API指定版本号 查询云监控API指定版本号。 指标管理 查询指标列表(ListMetrics) 查询系统当前可监控指标的列表。 告警规则管理 查询告警规则列表(ListAlarms) 查询系统当前告警规则列表。 查询单条告警规则信息(ShowAlarm) 根据告警ID查询告警规则信息。 启停告警规则(UpdateAlarmAction) 根据告警ID启动或停止一条告警规则。 删除告警规则(DeleteAlarm) 根据告警ID删除一条告警规则。 创建告警规则(CreateAlarm) 为系统当前的指标创建一条告警规则。 创建自定义告警模板(CreateAlarmTemplate) 创建自定义告警模板来添加一个或者多个指标的告警规则。 删除自定义告警模板(DeleteAlarmTemplate) 删除自定义告警模板。 查询告警历史(ListAlarmHistories) 根据告警ID查询告警历史。 查询自定义告警模板列表(ListAlarmTemplates) 查询自定义告警模板列表。 更新自定义告警模板(UpdateAlarmTemplate) 更新自定义告警模板。 修改告警规则(UpdateAlarm) 修改告警规则。 监控数据管理 查询监控数据(ShowMetricData) 查询指定时间范围指定指标的指定粒度的监控数据。 添加监控数据(CreateMetricData) 添加一条或多条指标监控数据。 批量查询监控数据(BatchListMetricData) 批量查询指定时间范围内指定指标的指定粒度的监控数据,目前最多支持10指标的批量查询。 查询主机配置数据(ShowEventData) 查询指定时间范围指定事件类型的主机配置数据,可以通过参数指定需要查询的数据维度。 配额管理 查询配额(ShowQuotas) 查询告警规则配额。 资源分组管理 查询资源分组下的资源(ShowResourceGroup) 查询资源分组下的资源。 创建资源分组(CreateResourceGroup) 创建资源分组。 更新资源分组(ShowResourceGroup) 更新资源分组。 删除资源分组(DeleteResourceGroup) 删除资源分组。 查询所有资源分组(ListResourceGroup) 查询所创建的所有资源分组。 事件监控 上报事件(CreateEvents) 通过该接口上报自定义事件。 查询事件监控列表(ListEvents) 查询事件列表,包括系统事件和自定义事件。 查询某一事件监控详情(ListEventDetail) 根据事件监控名称,查询该事件发生的详细信息。 API V2 告警规则 创建告警规则(CreateAlarmRules) 创建告警规则。 批量删除告警规则(BatchDeleteAlarmRules) 批量删除告警规则。 批量启停告警规则(BatchEnableAlarmRules) 批量启停告警规则。 查询告警规则列表(ListAlarmRules) 查询告警规则列表 告警资源 批量增加告警规则资源(AddAlarmRuleResources) 批量增加告警规则资源(资源分组类型的告警规则不支持)。 批量删除告警规则资源(DeleteAlarmRuleResources) 批量删除告警规则资源(资源分组类型的告警规则不支持)。 查询告警规则资源列表(ListAlarmRuleResources) 根据告警规则ID查询告警规则资源列表。 告警策略 修改告警规则策略(全量修改)(UpdateAlarmRulePolicies) 修改告警规则策略(全量修改)。 查询告警规则策略列表(ListAlarmRulePolicies) 根据告警规则ID查询策略列表。 告警通知 修改告警规则告警通知信息(UpdateAlarmNotifications) 修改告警规则告警通知信息。 告警记录 查询告警记录列表(ListAlarmHistories) 查询告警记录列表。 告警模板 创建自定义告警模板(CreateAlarmTemplate) 创建自定义告警模板。 批量删除自定义告警模板(BatchDeleteAlarmTemplates) 批量删除自定义告警模板。 修改自定义告警模板(UpdateAlarmTemplate) 修改自定义告警模板。 查询告警模板列表(ListAlarmTemplates) 查询告警模板列表。 查询告警模板详情(ShowAlarmTemplate) 查询告警模板详情。 告警模板关联告警规则 查询告警模板关联的告警规则列表(ListAlarmTemplateAssociationAlarms) 查询告警模板关联的告警规则列表。 资源分组 创建资源分组(CreateResourceGroup) 创建资源分组。 批量删除资源分组(BatchDeleteResourceGroups) 批量删除资源分组。 修改资源分组(UpdateResourceGroup) 修改资源分组。 查询指定资源分组详情(ShowResourceGroup) 查询指定资源分组详情。 查询资源分组列表(ListResourceGroups) 查询资源分组列表。 资源分组关联资源 自定义资源分组批量增加关联资源(BatchCreateResources) 给自定义资源分组,即类型为手动添加的资源分组,批量增加关联资源。 自定义资源分组批量删除关联资源(BatchDeleteResources) 给自定义资源分组,即类型为手动添加的资源分组,批量删除关联资源。 查询资源分组下指定服务类别特定维度的资源列表(ListResourceGroupsServicesResources) 查询资源分组下指定服务类别特定维度的资源列表。 一键告警 创建一键告警(CreateOneClickAlarm) 创建一键告警。 查询一键告警列表(ListOneClickAlarms) 查询一键告警列表。 查询一键告警关联告警规则列表(ListOneClickAlarmRules) 查询一键告警关联告警规则列表。 批量修改一键告警关联告警规则的启用状态(BatchUpdateOneClickAlarmsEnabledState) 批量修改一键告警关联告警规则的启用状态。 批量删除一键告警(BatchDeleteOneClickAlarms) 批量删除一键告警。 批量修改开启状态的一键告警关联告警规则的告警通知(UpdateOneClickAlarmNotifications) 批量修改开启状态的一键告警关联告警规则的告警通知。 批量修改一键告警关联告警规则策略的启用状态(BatchUpdateOneClickAlarmPoliciesEnabledState) 批量修改一键告警关联告警规则策略的启用状态。 告警通知屏蔽 批量设置告警通知屏蔽规则(BatchUpdateNotificationMasks) 批量设置告警通知屏蔽规则。 批量修改告警通知屏蔽规则的屏蔽时间(BatchUpdateNotificationMaskTime) 批量修改告警通知屏蔽规则的屏蔽时间。 修改告警通知屏蔽规则(UpdateNotificationMasks) 修改告警通知屏蔽规则。 批量删除告警通知屏蔽规则(BatchDeleteNotificationMasks) 批量删除告警通知屏蔽规则。 查询告警通知屏蔽列表(ListNotificationMasks) 查询告警通知屏蔽列表。 查询告警通知屏蔽资源列表(ListNotificationMaskResources) 查询告警通知屏蔽资源列表。 监控看板 创建/复制监控看板(CreateOneDashboard) 创建/复制监控看板。 查询监控看板列表(ListDashboardInfos) 查询监控看板列表。 修改监控看板(UpdateDashboard) 修改监控看板。 批量删除监控看板(DeleteDashboards) 批量删除监控看板。 监控视图 创建/复制/批量创建监控视图到指定的监控看板(CreateDashboardWidgets) 创建/复制/批量创建监控视图到指定的监控看板。 查询指定监控看板下的监控视图列表(ListDashboardWidgets) 查询指定监控看板下的监控视图列表。 查询指定监控视图信息(ShowWidget) 查询指定监控视图信息。 删除指定监控视图(DeleteOneWidget) 删除指定监控视图。 批量更新监控视图(BatchUpdateWidgets) 批量更新监控视图. 资源标签管理 查询CES指定项目指定资源类型标签列表(ListCesTargetProjectTags) 查询CES指定项目指定资源类型标签列表 指标管理 查询主机监控维度指标信息(ListAgentDimensionInfo) 根据ECS/BMS资源ID查询磁盘、挂载点、进程、显卡、RAID控制器维度指标信息。 API V3 插件状态查询 插件状态查询(ListAgentStatus) 插件状态查询,包括uniagent状态以及插件状态。 Agent任务相关接口 查询Agent任务列表(ListAgentInvocations) 查询Agent任务列表。 批量创建Agent任务(BatchCreateAgentInvocations) 批量创建Agent任务。
  • 告警规则管理接口授权项说明 权限 对应API接口 授权项 IAM项目 企业项目 查询告警规则列表,可以指定分页条件限制结果数量,可以指定排序规则。 GET /V1.0/{project_id}/alarms ces:alarms:list √ √ 根据告警ID查询告警规则信息。 GET /V1.0/{project_id}/alarms/{alarm_id} ces:alarms:get √ √ 启动或停止一条告警规则。 PUT /V1.0/{project_id}/alarms/{alarm_id}/action ces:alarmsOnOff:put √ √ 删除一条告警规则。 DELETE /V1.0/{project_id}/alarms/{alarm_id} ces:alarms:delete √ √ 创建一条告警规则。 POST /V1.0/{project_id}/alarms ces:alarms:create √ √ 父主题: 权限和授权项
  • 状态码 正常 返回值 说明 200 OK GET和PUT操作正常返回。 201 Created POST操作正常返回。 202 Accepted 请求已被接受。 204 No Content DELETE操作正常返回。 异常 返回值 说明 400 Bad Request 服务器未能处理请求。 401 Unauthorized 被请求的页面需要用户名和密码。 403 Forbidden 对被请求页面的访问被禁止。 404 Not Found 服务器无法找到被请求的页面。 405 Method Not Allowed 请求中指定的方法不被允许。 406 Not Acceptable 服务器生成的响应无法被客户端所接受。 407 Proxy Authentication Required 用户必须首先使用代理服务器进行验证,这样请求才会被处理。 408 Request Timeout 请求超出了服务器的等待时间。 409 Conflict 由于冲突,请求无法被完成。 500 Internal Server Error 请求未完成。服务异常。 501 Not Implemented 请求未完成。服务器不支持所请求的功能。 502 Bad Gateway 请求未完成。服务器从上游服务器收到一个无效的响应。 503 Service Unavailable 请求未完成。系统暂时异常。 504 Gateway Timeout 网关超时。 父主题: 公共参数
  • 响应参数 状态码: 201 表5 响应Body参数 参数 参数类型 描述 template_id String 告警模板的ID,以at开头,后跟字母、数字,长度最长为64 状态码: 400 表6 响应Body参数 参数 参数类型 描述 error_code String 请求异常内部业务状态码 最小长度:0 最大长度:256 error_msg String 请求异常信息 最小长度:0 最大长度:256 request_id String 请求ID 最小长度:0 最大长度:256 状态码: 401 表7 响应Body参数 参数 参数类型 描述 error_code String 请求异常内部业务状态码 最小长度:0 最大长度:256 error_msg String 请求异常信息 最小长度:0 最大长度:256 request_id String 请求ID 最小长度:0 最大长度:256 状态码: 403 表8 响应Body参数 参数 参数类型 描述 error_code String 请求异常内部业务状态码 最小长度:0 最大长度:256 error_msg String 请求异常信息 最小长度:0 最大长度:256 request_id String 请求ID 最小长度:0 最大长度:256 状态码: 500 表9 响应Body参数 参数 参数类型 描述 error_code String 请求异常内部业务状态码 最小长度:0 最大长度:256 error_msg String 请求异常信息 最小长度:0 最大长度:256 request_id String 请求ID 最小长度:0 最大长度:256
  • 核心基础类介绍 使用AI Gallery SDK构建自定义模型,需要了解2个核心基础类“PretrainedModel”和“PretrainedConfig”之间的交互。 “PretrainedConfig”:预训练模型的配置基类 提供模型配置的通用属性和两个主要方法,用于序列化和反序列化配置文件。 PretrainedConfig.from_pretrained(dir) # 从目录中加载序列化对象(本地或者是url),配置文件为dir/config.json PretrainedConfig.save_pretrained(dir) # 将配置实例序列化到dir/config.json “PretrainedModel”:预训练模型的基类 包含一个配置实例“config”,提供两个主要方法,用来加载和保存预训练模型。 # 1. 调用 init_weights() 来初始化所有模型权重 # 2. 从目录中(本地或者是url)中导入序列化的模型 # 3. 使用导入的模型权重覆盖所有初始化的权重 # 4. 调用 PretrainedConfig.from_pretrained(dir)来将配置设置到self.config中 PretrainedModel.from_pretrained(dir) # 将模型实例序列化到 dir/pytorch_model.bin 中 PretrainedModel.save_pretrained(dir) # 给定input_ids,生成 output_ids,在循环中调用 PretrainedModel.forward() 来做前向推理 PretrainedModel.generate()
  • 支持的模型结构框架 AI Gallery的Transformers库支持的开源模型结构框架如表1所示。 表1 支持的模型结构框架 模型结构 PyTorch MindSpore GPU 昇腾 Llama 支持 不支持 支持 支持 Bloom 支持 不支持 支持 不支持 Falcon 支持 不支持 支持 不支持 BERT 支持 不支持 支持 不支持 MPT 支持 不支持 支持 不支持 ChatGLM 支持 不支持 支持 支持
  • Transformers库介绍 AI Gallery使用的Transformers机器学习库是一个开源的基于Transformer模型结构提供的预训练语言库。Transformers库注重易用性,屏蔽了大量AI模型开发使用过程中的技术细节,并制定了统一合理的规范。使用者可以便捷地使用、下载模型。同时支持用户上传自己的预训练模型到在线模型资产仓库中,并发布上架给其他用户使用。AI Gallery在原有Transformers库的基础上,融入了对于昇腾硬件的适配与支持。对AI有使用诉求的企业、NLP领域开发者,可以借助这个库,便捷地使用昇腾算力进行自然语言理解(NLU)和自然语言生成(NLG)任务的SOTA模型开发与应用。
  • 我的Gallery介绍 登录AI Gallery,单击右上角“我的Gallery”进入我的Gallery页面,在“我的Gallery”页面可以查看个人资产、个人收藏、个人信息等内容。 表1 我的Gallery 分类 子类 功能说明 我的资产 模型 展示个人创建的模型,可以查看模型的发布时间、订阅量、收藏量等信息。 数据集 “我创建的数据集”:展示个人创建的数据集,可以查看数据集的发布时间、订阅量、收藏量等信息。 “我的下载”:可以查看个人下载的数据集信息(只有ModelArts发布的数据集支持下载)。单击下拉三角,可以查看数据集ID、目标区域等信息。 “我的订阅”:可以查看个人订阅的盘古数据集信息。 AI应用 展示个人创建的AI应用,可以查看AI应用的发布状态、发布时间、收藏量等信息。 示例 展示个人创建的Notebook示例,可以查看示例的发布时间、收藏量等信息。 AI说 展示个人发布的技术文章,可以查看文章浏览量、收藏量等信息。 删除AI说:鼠标悬浮在文章页签上,单击出现的删除按钮即可删除已发布的技术文章。 说明: 删除操作无法恢复,请谨慎操作。 我的收藏 模型 查看收藏的AI资产,单击资产页签可以跳转到资产详情页。 数据集 AI应用 示例 AI说 我的活动 - 展示个人参与的活动信息,可以查看活动名称、参与状态、活动状态等信息。 我的资源 云服务器 展示通过预申请算力创建的服务器列表。 申请管理 资产申请审核 展示了模型可用范围的申请单,模型所有者可以管理模型使用者的权限申请单。 我的算力预申请 展示了ModelArts Lite的算力预购申请列表。 个人信息 个人资料 查看个人基本信息,包括“帐号”、“头像”、“昵称”、“用户ID”、“邮箱”、“简介”等信息。 单击“头像”下方的“上传图片”,可以选择图片编辑新头像。 单击“昵称”后的按钮,可以编辑昵称。 单击“用户ID”后的按钮,可以快速复制ID。 单击“邮箱”后的按钮,可以修改邮箱地址。 单击“开启邮箱通知”的开关,可以选择是否启用邮箱通知。 单击“简介”处的按钮,可以编辑个人简介,最多支持500个字符。 说明: 请勿在个人资料中输入涉政、迷信、违禁等相关敏感词,否则修改无法生效。 父主题: AI Gallery(新版)
  • 修订记录 发布日期 修改说明 2024-04-01 支持自定义模型使用AI Gallery预置镜像部署推理服务。 更新任务类型的参数说明:托管模型资产 新增约束限制,更新操作指导:模型部署为推理服务 新增推理的自定义模型规范:自定义模型规范 支持自定义镜像进行模型微调和部署推理服务。 新增章节:自定义镜像规范 新增约束限制:托管模型资产、模型微调、模型部署为推理服务 支持托管盘古数据集。 新增“运行平台”等参数说明:托管数据集资产 新增介绍数据集的“我的订阅”页签:我的Gallery介绍 新增CLI工具不支持下载盘古数据集的约束:Gallery CLI配置工具介绍 支持查看模型微调和部署推理服务的指标效果。 新增查看训练效果的内容:模型微调 新增查看推理效果的内容:模型部署为推理服务 支持使用Gallery CLI配置工具上传单个超过5GB的文件。 新增上传文件说明:托管模型资产、托管数据集资产 新增本地安装指导:安装Gallery CLI配置工具 新增章节:使用Gallery CLI配置工具上传文件 2024-03-15 优化计算规格模块。 修改计算规格选择的操作指导:模型微调 更新计算规格选择参数:模型部署为AI应用 更新部署参数说明:模型部署为推理服务 更新欠费说明:计算规格说明 支持自定义模型使用AI Gallery预置镜像进行模型微调。 更新任务类型的参数说明:托管模型资产 新增约束限制,更新操作指导:模型微调 新增章节:自定义模型规范 2024-01-31 支持Gallery CLI配置工具。 新增章节:Gallery CLI配置工具指南 补充配置工具说明:购买ModelArts Lite的算力资源 2024-01-22 支持购买ModelArts Lite的算力资源。 新增章节:购买ModelArts Lite的算力资源 更新“申请管理”参数名:管理模型的可用范围、我的Gallery介绍 2024-01-19 支持体验盘古大模型解决方案。 新增章节:体验解决方案 支持使用AI Gallery SDK构建自定义模型。 新增章节:使用AI Gallery SDK构建自定义模型 2024-01-11 优化资产托管的操作指导。 新增章节:资产托管简介、托管模型资产 内容重构优化:托管数据集资产 2024-01-09 支持参加开发者活动。 新增章节:参加活动(活动) 增加“我的活动”说明:我的Gallery介绍 2023-12-21 支持付费资源。 新增章节:计算规格说明 更新计算规格说明:模型微调、模型部署为AI应用、模型部署为推理服务 支持管理模型的可用范围。 新增章节:管理模型的可用范围 更新可用范围说明:资产上架 增加“申请列表”说明:我的Gallery介绍 增加申请使用资产的操作:订阅免费模型 支持Readme联动。 增加资产介绍的操作指导资产托管 2023-9-30 第一次正式发布。 父主题: AI Gallery(新版)
  • 编辑模型介绍 资产发布上架后,准确、完整的资产介绍有助于提升资产的排序位置和访问量,能更好的支撑用户使用该资产。 在模型详情页,选择“模型介绍”页签,单击右侧“编辑”。 编辑模型基础设置和模型描述。 表2 模型介绍的参数说明 参数名称 说明 基础设置 模型名称 显示模型的名称,不可编辑。 许可证 模型遵循的使用许可协议,根据业务需求选择合适的许可证类型。 语言 选择使用模型时支持的输入输出语言。 框架 选择构建模型使用的AI开发框架。 任务类型 选择模型支持的任务类型,不同任务类型支持的AI Gallery工具链服务请参见表3。 文本问答:从给定文本中检索问题的答案,适用于从文档中搜索答案的场景。 文本生成:基于给定文本进行续写,生成新的文本。 其他类型:基于实际场景选择合适的任务类型。 说明: 如果模型的“任务类型”是除“文本问答”和“文本生成”之外的类型,则被定义为自定义模型。自定义模型必须要满足自定义模型规范,才支持使用AI Gallery工具链服务。 硬件资源 选择支持运行该模型的硬件类型。 最低可运行规格 设置能够运行该模型的最低计算规格。在AI Gallery工具链服务中使用该模型时,只能选取等同或高于该规格的算力资源进行任务下发。 是否支持分布式训练/推理 选择该模型资产是否支持在单机多卡的资源节点上进行并行训练或推理。 README.md - 资产的README内容,支持添加资产的简介、使用场景、使用方法等信息。 当托管的是自定义镜像时,填写的内容要满足自定义镜像规范,否则该镜像无法正常使用AI Gallery工具链服务(微调大师和在线推理服务)。 说明: 建议写清楚模型的使用方法,方便使用者更好的完成训练、推理任务。 表3 任务类型支持的AI Gallery工具链服务 任务类型 微调大师 在线推理服务 AI应用 文本问答/文本生成 支持 支持 支持 其他类型 支持 支持 不支持 编辑完成后,单击“确认”保存修改。
  • 管理模型文件 预览文件 在模型详情页,选择“模型文件”页签。单击文件名称即可在线预览文件内容。 仅支持预览大小不超过10MB、格式为文本类或图片类的文件。 下载文件 在模型详情页,选择“模型文件”页签。单击操作列的“下载”,即可下载文件到本地。 删除文件 在模型详情页,选择“模型文件”页签。单击操作列的“删除”,确认后即可将已经托管的文件从AI Gallery仓库中删除。 文件删除后不可恢复,请谨慎操作。
  • 创建模型资产 登录AI Gallery,单击右上角“我的Gallery”进入我的Gallery页面。 单击左上方“创建资产”,选择“模型”。 在“创建模型”弹窗中配置参数,单击“创建”。 表1 创建模型 参数名称 说明 模型英文名称 必填项,模型的英文名称。 如果没有填写“模型中文名称”,则资产发布后,在模型页签上会显示该“模型英文名称”。 模型中文名称 模型的中文名称。 如果填写了“模型中文名称”,则资产发布后,在模型页签上会显示该“模型中文名称”。 许可证 模型资产遵循的使用协议,根据业务需求选择合适的许可证类型。 描述 填写资产简介,模型发布后将作为副标题显示在模型页签上,方便用户快速了解资产。 支持0~90个字符,请勿在描述中输入涉政、迷信、违禁等相关敏感词,否则发布审核无法通过。 创建完成后,跳转至模型详情页。
  • 上传模型文件 在模型详情页,选择“模型文件”页签。 单击“添加文件”,进入上传文件页面,选择本地的数据文件单击“点击上传”或拖动文件,单击“确认上传”启动上传。 上传单个超过5GB的文件时,请使用Gallery CLI工具。CLI工具的获取和使用请参见Gallery CLI配置工具介绍。 文件合集大小不超过50GB。 文件上传完成前,请不要刷新或关闭上传页面,防止意外终止上传任务,导致数据缺失。 当模型的“任务类型”是除“文本问答”和“文本生成”之外的类型(即自定义模型)时,上传的模型文件要满足自定义模型规范,否则该模型无法正常使用AI Gallery工具链服务(微调大师和在线推理服务)。 当托管的是自定义镜像时,上传的模型文件要满足自定义镜像规范,否则该镜像无法正常使用AI Gallery工具链服务(微调大师和在线推理服务)。 当文件状态变成“上传成功”表示数据文件成功上传至AI Gallery仓库进行托管。单击“完成”返回模型文件页面。 图1 上传成功 文件上传过程中请耐心等待,不要关闭当前上传页面,关闭页面会中断上传进程。
  • 入驻AI Gallery 如果需要在AI Gallery中发布HiLens、报名实践活动或发布AI说,则需要先完成入驻AI Gallery。 如果没有入驻过AI Gallery,在报名实践活动或发布AI说时,将跳转至“欢迎入驻AI Gallery”页面。 在“欢迎入驻AI Gallery”页面,填写“昵称”和“邮箱”,并根据提示获取验证码。阅读并同意《华为云AI Gallery数字内容发布协议》和《华为云AI Gallery服务协议》后,单击“确定”完成入驻。 图1 入驻AI Gallery 注册完成后,您可以在AI Gallery中报名实践活动或发布技术文章(AI说)。 父主题: AI Gallery(旧版)
  • 准备工作 获取“repo_id”和待下载的文件名。 获取“repo_id” 在AI Gallery页面的资产详情页,单击复制完整的资产名称,如图1所示,获取到的信息即为“repo_id”。例如,复制出的信息为“ur5468675/test_cli_model1”,则该资产的“repo_id”为“ur5468675/test_cli_model1”。 图1 复制完整资产名称 如果资产详情页没有按钮,则表示该资产不支持使用Gallery CLI配置工具下载文件。 获取待下载的文件名 在AI Gallery页面的资产详情页,如果是模型资产,则选择“模型文件”页签,如果是数据集资产,则选择“文件版本”页签,获取“文件名称”。
  • 命令说明 登录Gallery CLI配置工具后,使用命令“gallery-cli download --help”可以获取Gallery CLI配置工具下载文件的帮助信息。 gallery-cli download --help 获得命令“gallery-cli download”可用选项的完整列表如下所示。 Usage: gallery-cli download [OPTIONS] REPO_ID [FILENAMES]... Download files from the AI Gallery ╭─ Arguments ───────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮ │ * repo_id TEXT ID of the repo to download from (e.g. `username/repo-name`). [required] │ │ filenames [FILENAMES]... Files to download (e.g. `config.json`,`data/metadata.jsonl`). │ ╰───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯ ╭─ Options ─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮ │ --include TEXT Glob patterns to match files to download. │ │ --exclude TEXT Glob patterns to exclude from files to download. │ │ --local-dir TEXT Specified local dir to store model or dataset │ │ --help Show this message and exit. │ ╰───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯ 具体支持如下使用场景: 下载单个文件 下载多个文件 下载文件到指定路径 下载单个AI Gallery仓库
  • 约束限制 Gallery CLI配置工具下载文件时依赖集群的公网访问权限,所以在使用CLI时要求集群配置NAT网关,具体操作请参见公网NAT网关。 只有托管到AI Gallery仓库的资产才支持使用Gallery CLI配置工具下载文件,如果在资产详情页有“复制完整资产名称”按钮即表示该资产支持使用Gallery CLI配置工具下载,如图1所示。 图1 复制完整资产名称 “运行平台”设置为“Pangu Studio”的数据集,不支持使用CLI工具下载。
  • 搜索资产 在各类资产模块页面,通过如下几种搜索方式可以提高资产的查找效率,快速找到适合的算法、模型、数据集、镜像、Workflow等资产。 图1 搜索资产 表1 快速搜索方式 区域 类型 搜索方式 支持的AI资产 1 搜索华为云官方资产 在页面单击“官方”,筛选出所有的华为云官方资产,该类资产均可免费使用。 Notebook、算法、模型 2 搜索精选商品 在页面单击“精选”,筛选出所有被标记为精选的资产。 Notebook、数据、算法、模型、Workflow 3 按标签搜索 在页面单击“所有标签”,选择标签,单击“确定”,筛选出相关资产。 Notebook、数据、算法、镜像、模型、Workflow 4 按排序方式搜索 在页面的排序列表选择排序方式,调整资产排序方式快速查找所需资产。 Notebook、数据、算法、镜像、模型、Workflow 5 搜索商用资产 在页面单击“商用”,筛选出所有的商业售卖资产。 算法、模型
  • “train_params.json”示例 表5 training_methods参数说明 参数名称 说明 name 自定义的训练方式。 hyperparameters 训练方式包含的超参。具体参数说明请参见表6。 表6 hyperparameters参数说明 参数名称 说明 name 超参的名称,只能包含英文、数字、下划线。 type 支持的超参类型,支持float、int、str或bool。 required 超参是否必选,支持true、false。必选不可删除,非必选可删除。 default 超参的默认值,如果无默认值,则填写空双引号。 help 超参的说明,不能超过20个字符。 { "training_methods": [ { "name": "全参微调", "hyperparameters": [ { "name": "lr", "type": "float", "required": true, "default": 0.001, "help": "学习率" }, { "name": "per_device_eval_batch_size", "type": "int", "required": false, "default": 32, "help": "批大小" }, { "name": "logging_steps", "type": "int", "required": false, "default": 24, "help": "每多少步记录一次步骤" }, { "name": "save_strategy", "type": "str", "required": true, "default": "epoch", "help": "训练过程中保存checkpoint的策略" }, { "name": "num_train_epochs", "type": "int", "required": true, "default": 20, "help": "训练的总epochs数" }, { "name": "warmup_ratio", "type": "float", "required": true, "default": 0.1, "help": "用于指定线性热身占总训练步骤的比例" } ] } ] }
  • “train.py”示例 表4 环境变量说明 变量名称 说明 示例 ENV_AG_MODEL_DIR 模型存放路径,AI Gallery的模型仓库地址,包含模型仓库的所有文件。 “/home/ma-user/.cache/gallery/model/ur12345--gpt2” ENV_AG_DATASET_DIR 数据集存放路径,AI Gallery的数据集仓库地址,包含数据集仓库的所有文件。 “/home/ma-user/.cache/gallery/dataset/ur12345--data_demo” ENV_AG_USER_PARAMS 配置的训练超参json字符串。创建训练任务时在算法配置页面设置的超参,用json字符串表示。 {"per_device_eval_batch_size":"32","lr":"0.001","logging_steps":"24"} ENV_AG_TRAIN_OUTPUT_DIR 训练产物文件存放路径。训练产物将被保存到该路径。训练任务结束后,由AI Gallery平台将该目录上传到新模型的仓库中。 “/home/ma-user/.cache/gallery/output” ENV_AG_USER_METRICS_LOG_PATH 训练数据的日志文件存放路径。训练过程中的迭代次数、LOSS和吞吐数据按照“迭代次数|loss|吞吐”格式记录在日志中,AI Gallery通过环境变量找到日志,从中获取实际数据绘制成“吞吐”和“训练LOSS”曲线,呈现在训练的“指标效果”中。具体请参见查看训练效果。 说明: 日志文件中的迭代次数、LOSS和吞吐数据必须按照“迭代次数|loss|吞吐”格式存放,否则AI Gallery会数据解析失败,导致“吞吐”和“训练LOSS”曲线异常。 “/var/logs/user_metrics.log” import json import os from datasets import load_dataset from transformers import AutoImageProcessor from torchvision.transforms import RandomResizedCrop, Compose, Normalize, ToTensor, RandomHorizontalFlip import numpy as np from transformers import AutoModelForImageClassification, TrainingArguments, Trainer from transformers import DefaultDataCollator from sklearn import metrics # 环境变量 # 工作目录 ENV_AG_WORK_DIR = 'ENV_AG_WORK_DIR' # 模型存放路径 ENV_AG_MODEL_DIR = 'ENV_AG_MODEL_DIR' # 数据集存放路径 ENV_AG_DATASET_DIR = 'ENV_AG_DATASET_DIR' # 配置的训练超参json字符串 ENV_AG_USER_PARAMS = 'ENV_AG_USER_PARAMS' # 训练产物存放路径 ENV_AG_TRAIN_OUTPUT_DIR = 'ENV_AG_TRAIN_OUTPUT_DIR' _transforms = None def _multi_class_classification_metrics(pred): raw_predictions, labels = pred predictions = np.argmax(raw_predictions, axis=1) results = { "f1_macro": metrics.f1_score(labels, predictions, average="macro"), "f1_micro": metrics.f1_score(labels, predictions, average="micro"), "f1_weighted": metrics.f1_score(labels, predictions, average="weighted"), "precision_macro": metrics.precision_score(labels, predictions, average="macro"), "precision_micro": metrics.precision_score(labels, predictions, average="micro"), "precision_weighted": metrics.precision_score(labels, predictions, average="weighted"), "recall_macro": metrics.recall_score(labels, predictions, average="macro"), "recall_micro": metrics.recall_score(labels, predictions, average="micro"), "recall_weighted": metrics.recall_score(labels, predictions, average="weighted"), "accuracy": metrics.accuracy_score(labels, predictions), } return results def parse_args(): """ 从AIGallery环境变量中获取用户配置的超参json """ return json.loads(os.getenv(ENV_AG_USER_PARAMS)) def _process_input_data(image_processor): # 加载数据集 dataset_path = os.getenv(ENV_AG_DATASET_DIR) dataset = load_dataset("imagefolder", data_dir=dataset_path) # 数据增强 normalize = Normalize(mean=image_processor.image_mean, std=image_processor.image_std) size = (image_processor.size["shortest_edge"] if "shortest_edge" in image_processor.size else ( image_processor.size["height"], image_processor.size["width"])) global _transforms _transforms = Compose([RandomResizedCrop(size), RandomHorizontalFlip(), ToTensor(), normalize]) ret = dataset.with_transform(_format_transforms) return ret # 转换函数 def _format_transforms(examples): examples["pixel_values"] = [_transforms(img.convert("RGB")) for img in examples["image"]] del examples["image"] return examples def train(user_args): print('Start to process dataset') model_path = os.getenv(ENV_AG_MODEL_DIR) image_processor = AutoImageProcessor.from_pretrained(model_path) dataset = _process_input_data(image_processor) print(f"Dataset: {dataset}") # label和id映射 classes = dataset["train"].features["label"].names label2id = {c: i for i, c in enumerate(classes)} id2label = {i: c for i, c in enumerate(classes)} print('Start to load model') # 加载模型 model = AutoModelForImageClassification.from_pretrained( model_path, num_labels=len(classes), id2label=id2label, label2id=label2id, ignore_mismatched_sizes=True ) print('Start to set training args') # 训练参数 training_args = TrainingArguments( output_dir=os.getenv(ENV_AG_TRAIN_OUTPUT_DIR), remove_unused_columns=False, evaluation_strategy="epoch", save_strategy=user_args['save_strategy'], learning_rate=float(user_args['lr']), save_total_limit=3, per_device_train_batch_size=32, gradient_accumulation_steps=1, per_device_eval_batch_size=int(user_args['per_device_eval_batch_size']), num_train_epochs=int(user_args['num_train_epochs']), warmup_ratio=float(user_args['warmup_ratio']), logging_steps=int(user_args['logging_steps']), load_best_model_at_end=True, metric_for_best_model="accuracy", push_to_hub=False, ) print('Start to train') # 训练参数 trainer = Trainer( model=model, args=training_args, data_collator=DefaultDataCollator(), train_dataset=dataset["train"], eval_dataset=dataset["test"], tokenizer=image_processor, compute_metrics=_multi_class_classification_metrics, ) # 开始训练 train_results = trainer.train() print('Start to save model') # 保存模型 trainer.save_model() trainer.log_metrics("train", train_results.metrics) trainer.save_metrics("train", train_results.metrics) trainer.save_state() print('Start to evaluate') # 在验证集上做准确性评估 eva_metrics = trainer.evaluate() trainer.log_metrics("eval", eva_metrics) trainer.save_metrics("eval", eva_metrics) print('All Done') if __name__ == '__main__': args = parse_args() train(args)
  • 自定义模型规范(推理) 当托管自定义模型到AI Gallery时,如果模型要支持AI Gallery的推理服务,则需要在“模型文件”添加gallery_inference文件夹,文件夹内容参考表2。 gallery_inference文件夹必须是一级目录直接上传,否则会被判定不符合自定义模型规范,无法使用模型微调。 如果自定义模型的模型文件不符合gallery_inference文件列表要求或文件内容为空,都将不能正常部署在线推理服务。 表2 gallery_inference文件列表 文件类型 文件说明 “inference.py” 必选文件,推理脚本文件,定义了自定义模型的推理处理方式,包含初始化推理(init)和输入输出(call函数)。代码示例请参见inference.py示例。 如果推理脚本里使用了其他脚本文件,则必须一起打包在gallery_inference文件夹里上传,否则会导致推理失败。 “requirements.txt” 非必选文件,环境配置文件,定义了项目依赖的python包。AI Gallery提供了基础镜像的依赖环境,如果要添加自定义依赖项,可通过requirements.txt文件实现。基础镜像包含python、PyTorch、cuda(GPU)、CANN(NPU)。
  • 自定义模型使用的预置镜像 AI Gallery提供了PyTorch基础镜像,镜像里已经安装好了运行任务所需的软件,供自定义模型直接使用,快速进行训练、推理。预置镜像的版本信息请参见表3。 表3 AI Gallery预置镜像列表 引擎类型 资源类型 版本名称 PyTorch NPU pytorch_2.0.1-cann_6.3.2-py_3.9-euler_2.10.7-aarch64 GPU pytorch_2.0.0-cuda_11.7-py_3.9.11-ubuntu_20.04-x86_64
  • 自定义模型的使用流程 托管模型资产 模型基础设置里的“任务类型”选择除“文本问答”和“文本生成”之外的类型。 上传模型文件时需要确认待上传的文件是否满足自定义模型规范。如果模型要支持训练,则需要满足自定义模型规范(训练);如果模型要支持推理,则需要满足自定义模型规范(推理)。 资产上架 模型微调或模型部署为推理服务 如果进行模型微调,则“训练任务类型”选择“自定义”。 如果部署为推理服务,则“推理任务类型”选择“自定义”
  • 自定义模型规范(训练) 当托管自定义模型到AI Gallery时,如果模型要支持AI Gallery的模型微调,则需要在“模型文件”添加gallery_train文件夹,文件夹内容参考表1。 gallery_train文件夹必须是一级目录直接上传,否则会被判定不符合自定义模型规范,无法使用模型微调。 如果自定义模型的模型文件不符合gallery_train文件列表要求或文件内容为空,都将不能正常进行模型微调。 表1 gallery_train文件列表 文件类型 文件说明 “train.py” 必选文件,训练脚本文件,定义了自定义模型的训练处理方式。代码示例请参见train.py示例。 如果训练脚本里使用了其他脚本文件,则必须一起打包在gallery_train文件夹里上传,否则会导致微调失败。 “train_params.json” 必选文件,训练参数文件,定义了模型训练的必要参数,例如训练方式、超参信息。该参数会显示在微调工作流的“作业设置”页面的算法配置和超参数设置里面。代码示例请参见train_params.json示例。 “dataset_readme.md” 必选文件,数据集要求说明,定义了模型训练时对数据集的要求,会显示在微调工作流的“准备数据”页面。 “requirements.txt” 非必选文件,环境配置文件,定义了项目依赖的python包。AI Gallery提供了基础镜像的依赖环境,如果要添加自定义依赖项,可通过requirements.txt文件实现。基础镜像包含python、PyTorch、cuda(GPU)、CANN(NPU)。
  • 准备工作 获取“repo_id”和待上传的文件名。 获取“repo_id” 在AI Gallery页面的资产详情页,单击复制完整的资产名称,如图1所示,获取到的信息即为“repo_id”。例如,复制出的信息为“ur5468675/test_cli_model1”,则该资产的“repo_id”为“ur5468675/test_cli_model1”。 图1 复制完整资产名称 获取待上传的文件名 获取待上传的文件在服务器的绝对路径。
  • 命令说明 登录Gallery CLI配置工具后,使用命令“gallery-cli upload --help”可以获取Gallery CLI配置工具上传文件的帮助信息。 gallery-cli upload --help 获得命令“gallery-cli upload”可用选项的完整列表如下所示。 Usage: gallery-cli upload [OPTIONS] REPO_ID [LOCAL_PATH] [PATH_IN_REPO] Upload File ╭─ Arguments ────────────────────────────────────────────────────────────────────────│ * repo_id TEXT ID of the repo to upload to (e.g. `username/repo-name`) [required] ││ local_path [LOCAL_PATH] Directory upload to repo [default: ./] ││ path_in_repo [PATH_IN_REPO] The repo path you want to upload (e.g. `dir1/dir2`) │╰─────────────────────────────────────────────────────────────────────╯ ╭─Options──────────────────────────────────────────────────────────────────╮│| --include TEXT Glob patterns to match files to download. ││ --exclude TEXT Glob patterns to exclude from files to download. ││ --help Show this message and exit. │╰─────────────────────────────────────────────────────────────────────╯ 具体支持如下使用场景: 上传单个文件 上传多个文件 上传单个文件到指定仓库目录 上传整个文件夹
  • “train_params.json”示例 表6 training_methods参数说明 参数名称 说明 name 自定义的训练方式。 hyperparameters 训练方式包含的超参。具体参数说明请参见表7。 表7 hyperparameters参数说明 参数名称 说明 name 超参的名称,只能包含英文、数字、下划线。 type 支持的超参类型,支持float、int、str或bool。 required 超参是否必选,支持true、false。必选不可删除,非必选可删除。 default 超参的默认值,如果无默认值,则填写空双引号。 help 超参的说明,不能超过20个字符。 { "training_methods": [ { "name": "全参微调", "hyperparameters": [ { "name": "lr", "type": "float", "required": true, "default": 0.001, "help": "学习率" }, { "name": "per_device_eval_batch_size", "type": "int", "required": false, "default": 32, "help": "批大小" }, { "name": "logging_steps", "type": "int", "required": false, "default": 24, "help": "每多少步记录一次步骤" }, { "name": "save_strategy", "type": "str", "required": true, "default": "epoch", "help": "训练过程中保存checkpoint的策略" }, { "name": "num_train_epochs", "type": "int", "required": true, "default": 20, "help": "训练的总epochs数" }, { "name": "warmup_ratio", "type": "float", "required": true, "default": 0.1, "help": "用于指定线性热身占总训练步骤的比例" } ] } ] }
  • “train.py”示例 表5 环境变量说明 变量名称 说明 示例 ENV_AG_MODEL_DIR 模型存放路径,AI Gallery的模型仓库地址,包含模型仓库的所有文件。 “/home/ma-user/.cache/gallery/model/ur12345--gpt2” ENV_AG_DATASET_DIR 数据集存放路径,AI Gallery的数据集仓库地址,包含数据集仓库的所有文件。 “/home/ma-user/.cache/gallery/dataset/ur12345--data_demo” ENV_AG_USER_PARAMS 配置的训练超参json字符串。创建训练任务时在算法配置页面设置的超参,用json字符串表示。 {"per_device_eval_batch_size":"32","lr":"0.001","logging_steps":"24"} ENV_AG_TRAIN_OUTPUT_DIR 训练产物文件存放路径。训练产物将被保存到该路径。训练任务结束后,由AI Gallery平台将该目录上传到新模型的仓库中。 “/home/ma-user/.cache/gallery/output” ENV_AG_USER_METRICS_LOG_PATH 训练数据的日志文件存放路径。训练过程中的迭代次数、LOSS和吞吐数据按照“迭代次数|loss|吞吐”格式记录在日志中,AI Gallery通过环境变量找到日志,从中获取实际数据绘制成“吞吐”和“训练LOSS”曲线,呈现在训练的“指标效果”中。具体请参见查看训练效果。 说明: 日志文件中的迭代次数、LOSS和吞吐数据必须按照“迭代次数|loss|吞吐”格式存放,否则AI Gallery会数据解析失败,导致“吞吐”和“训练LOSS”曲线异常。 “/var/logs/user_metrics.log” import json import os from datasets import load_dataset from transformers import AutoImageProcessor from torchvision.transforms import RandomResizedCrop, Compose, Normalize, ToTensor, RandomHorizontalFlip import numpy as np from transformers import AutoModelForImageClassification, TrainingArguments, Trainer from transformers import DefaultDataCollator from sklearn import metrics # 环境变量 # 工作目录 ENV_AG_WORK_DIR = 'ENV_AG_WORK_DIR' # 模型存放路径 ENV_AG_MODEL_DIR = 'ENV_AG_MODEL_DIR' # 数据集存放路径 ENV_AG_DATASET_DIR = 'ENV_AG_DATASET_DIR' # 配置的训练超参json字符串 ENV_AG_USER_PARAMS = 'ENV_AG_USER_PARAMS' # 训练产物存放路径 ENV_AG_TRAIN_OUTPUT_DIR = 'ENV_AG_TRAIN_OUTPUT_DIR' _transforms = None def _multi_class_classification_metrics(pred): raw_predictions, labels = pred predictions = np.argmax(raw_predictions, axis=1) results = { "f1_macro": metrics.f1_score(labels, predictions, average="macro"), "f1_micro": metrics.f1_score(labels, predictions, average="micro"), "f1_weighted": metrics.f1_score(labels, predictions, average="weighted"), "precision_macro": metrics.precision_score(labels, predictions, average="macro"), "precision_micro": metrics.precision_score(labels, predictions, average="micro"), "precision_weighted": metrics.precision_score(labels, predictions, average="weighted"), "recall_macro": metrics.recall_score(labels, predictions, average="macro"), "recall_micro": metrics.recall_score(labels, predictions, average="micro"), "recall_weighted": metrics.recall_score(labels, predictions, average="weighted"), "accuracy": metrics.accuracy_score(labels, predictions), } return results def parse_args(): """ 从AIGallery环境变量中获取用户配置的超参json """ return json.loads(os.getenv(ENV_AG_USER_PARAMS)) def _process_input_data(image_processor): # 加载数据集 dataset_path = os.getenv(ENV_AG_DATASET_DIR) dataset = load_dataset("imagefolder", data_dir=dataset_path) # 数据增强 normalize = Normalize(mean=image_processor.image_mean, std=image_processor.image_std) size = (image_processor.size["shortest_edge"] if "shortest_edge" in image_processor.size else ( image_processor.size["height"], image_processor.size["width"])) global _transforms _transforms = Compose([RandomResizedCrop(size), RandomHorizontalFlip(), ToTensor(), normalize]) ret = dataset.with_transform(_format_transforms) return ret # 转换函数 def _format_transforms(examples): examples["pixel_values"] = [_transforms(img.convert("RGB")) for img in examples["image"]] del examples["image"] return examples def train(user_args): print('Start to process dataset') model_path = os.getenv(ENV_AG_MODEL_DIR) image_processor = AutoImageProcessor.from_pretrained(model_path) dataset = _process_input_data(image_processor) print(f"Dataset: {dataset}") # label和id映射 classes = dataset["train"].features["label"].names label2id = {c: i for i, c in enumerate(classes)} id2label = {i: c for i, c in enumerate(classes)} print('Start to load model') # 加载模型 model = AutoModelForImageClassification.from_pretrained( model_path, num_labels=len(classes), id2label=id2label, label2id=label2id, ignore_mismatched_sizes=True ) print('Start to set training args') # 训练参数 training_args = TrainingArguments( output_dir=os.getenv(ENV_AG_TRAIN_OUTPUT_DIR), remove_unused_columns=False, evaluation_strategy="epoch", save_strategy=user_args['save_strategy'], learning_rate=float(user_args['lr']), save_total_limit=3, per_device_train_batch_size=32, gradient_accumulation_steps=1, per_device_eval_batch_size=int(user_args['per_device_eval_batch_size']), num_train_epochs=int(user_args['num_train_epochs']), warmup_ratio=float(user_args['warmup_ratio']), logging_steps=int(user_args['logging_steps']), load_best_model_at_end=True, metric_for_best_model="accuracy", push_to_hub=False, ) print('Start to train') # 训练参数 trainer = Trainer( model=model, args=training_args, data_collator=DefaultDataCollator(), train_dataset=dataset["train"], eval_dataset=dataset["test"], tokenizer=image_processor, compute_metrics=_multi_class_classification_metrics, ) # 开始训练 train_results = trainer.train() print('Start to save model') # 保存模型 trainer.save_model() trainer.log_metrics("train", train_results.metrics) trainer.save_metrics("train", train_results.metrics) trainer.save_state() print('Start to evaluate') # 在验证集上做准确性评估 eva_metrics = trainer.evaluate() trainer.log_metrics("eval", eva_metrics) trainer.save_metrics("eval", eva_metrics) print('All Done') if __name__ == '__main__': args = parse_args() train(args)
  • 自定义镜像的使用流程 托管自定义镜像,操作步骤请参考托管模型资产。 如果自定义镜像要支持训练,则需要满足自定义镜像规范(训练)。 如果自定义镜像要支持推理,则需要满足自定义镜像规范(推理)。 上架自定义镜像,操作步骤请参考资产上架。 在AI Gallery进行自定义镜像训练或推理。模型微调或模型部署为推理服务 如果使用自定义镜像进行训练,操作步骤可以参考模型微调,其中“训练任务类型”默认选择“自定义”,且不支持修改。 如果使用自定义镜像进行部署推理服务,操作步骤可以参考模型部署为推理服务,其中“推理任务类型”默认选择“自定义”,且不支持修改。
共100000条