华为云用户手册

  • DIS使用流程简介 DIS的使用流程如下: 步骤1:开通DIS通道 用户使用DIS前需要先开通DIS通道。 步骤2:准备DIS应用开发环境 用户开发DIS应用程序前,首先需要安装 应用开发工具 。然后获取SDK和样例工程,并导入到用户的开发环境中。 步骤3:发送数据到DIS 基于数据上传业务开发应用程序,并运行程序,实现数据上传功能。数据上传过程中可在Console控制台查看数据上传通道相关信息。 步骤4:从DIS获取数据 基于数据下载业务开发应用程序,并运行程序,实现数据下载功能。 父主题: 入门
  • 自动创建委托 用户创建DIS通道,选择将数据转储到 对象存储服务 (Object Storage Service,简称OBS)、 MapReduce服务 MRS )集群、 数据仓库 服务(Data Warehouse Service,简称DWS)或 数据湖探索 (Data Lake Insight,简称 DLI )中,需要通过创建 IAM 委托授权DIS服务去访问用户的OBS、MRS、DWS或DLI资源。 使用账号首次进入界面添加转储任务时,系统会自动弹出创建委托界面。 单击 “同意授权”则平台会自动创建委托。 委托授权成功后,隶属于该账号下的IAM子用户也可添加转储任务。 父主题: 入门
  • 操作步骤 使用PuTTY工具(或其他终端工具)远程登录Logstash服务器。 进入到Logstash的安装目录。 cd ${ LOG STASH_HOME} 上传“dis-logstash-plugins-X.X.X.zip”安装包到此目录下。 解压安装包。 unzip dis-logstash-plugins-X.X.X.zip 进入安装包解压后的目录。 cd logstash-plugins 运行安装程序,需要指定Logstash的安装目录。 bash install.sh –p ${LOGSTASH_HOME} 安装完成后,显示类似如下内容,表示安装成功。 Install dis-logstash-plugins successfully.
  • 安装logstash-input-dis 使用PuTTY工具(或其他终端工具)远程登录Logstash服务器。 进入到Logstash的安装目录。 cd ${LOGSTASH_HOME} 执行安装命令。 bin/logstash-plugin install logstash-input-dis 安装完成后,显示类似如下内容,表示安装成功。 Validating logstash-input-disInstalling logstash-input-disInstallation successful
  • 安装logstash-output-dis 使用PuTTY工具(或其他终端工具)远程登录Logstash服务器。 进入到Logstash的安装目录。 cd ${LOGSTASH_HOME} 执行安装命令。 bin/logstash-plugin install logstash-output-dis 安装完成后,显示类似如下内容,表示安装成功。 Validating logstash-output-disInstalling logstash-output-disInstallation successful
  • 源数据类型JSON/ CS V 表1 转储相关配置参数 参数 说明 取值 任务名称 用户创建转储任务时,需要指定转储任务名称,同一通道的转储任务名称不可重复。任务名称由英文字母、数字、中划线和下划线组成。长度为1~64个字符。 - DWS集群 存储该通道数据的DWS集群名称。 单击“选择”,在“选择DWS集群”窗口选择一个集群。 此配置项仅支持选择,不可手动输入。 - DWS数据库 存储该通道数据的DWS数据库名称。 手动输入,不可配置为空。 - 数据库模式 一个数据库包含一个或多个命名的模式,模式又包含表。模式还包含其他命名的对象,包括数据类型、函数,以及操作符。同一个对象名可以在不同的模式里使用而不会导致冲突。 - DWS数据表 存储该通道数据的DWS数据库模式下的数据表。 - 数据分隔符 用户数据的字段分隔符,根据此分隔符分隔用户数据插入DWS数据表的相应列。 取值范围:不可为空 - 偏移量 最新:最大偏移量,即获取最新的有效数据。 最早:最小偏移量,即读取最早的有效数据。 最新 数据转储周期 根据用户配置的时间,周期性的将数据导入目的地(OBS,MRS,DLI,DWS),若某个时间段内无数据,则此时间段不会生成打包文件。 取值范围:30~900。 单位:秒。 默认配置为300秒。 - 用户名 DWS集群的用户名。 - 密码 DWS集群的密码。 - KMS密钥 集群的数据库加密密钥。 - 数据临时桶 用户数据先临时存储在OBS桶中,再转储到指定的转储服务,转储完成后临时桶中的数据会被清除。 - 数据临时目录 需要转储的数据临时存储在OBS桶下此配置项配置的目录中,转储完成后临时目录中的数据会被清除。 配置为空时,数据直接存储在OBS桶内。 - 容错选项 通过单击或来关闭或开启容错选项开关。 fill_missing_fields 当数据导入时,若数据源文件中一行的最后一个字段缺失的处理方式。 取值范围:true/on,false/off。缺省值为false/off。 参数为true/on,当数据导入时,若数据源文件中一行数据的最后一个字段缺失,则把最后一个字段的值设置为NULL,不报错。 参数为false/off,如果最后一个字段缺失会显示如下错误信息。 ignore_extra_data 数据源文件中的字段比外表定义列数多时,是否忽略多出的列。该参数只在数据导入过程中使用。 取值范围:true/on,false/off。缺省值为false/off。 参数为true/on,若数据源文件比外表定义列数多,则忽略行尾多出来的列。 参数为false/off,若数据源文件比外表定义列数多,会显示如下错误信息。 说明: 如果行尾换行符丢失,使两行变成一行时,设置此参数为true将导致后一行数据被忽略掉。 compatible_illegal_chars 导入非法字符容错参数。此语法仅对READ ONLY的外表有效。 取值范围:true/on,false/off。缺省值为false/off。 参数为true/on,则导入时遇到非法字符进行容错处理,非法字符转换后入库,不报错,不中断导入。 参数为false/off,导入时遇到非法字符进行报错,中断导入。 须知: Windows平台下OBS若按照文本格式读取数据文件,遇到0x1A会作为EOF符号结束数据读入造成解析错误,这是Windows平台的实现约束。由于OBS不支持BINARY形式读取,可将相应数据文件交由Linux平台下的OBS读取。 说明: 导入非法字符容错规则如下: (1)对于'\0',容错后转换为空格; (2)对于其他非法字符,容错后转换为问号; (3)若compatible_illegal_chars为true/on标识导入时对于非法字符进行容错处理,则若NULL、DELIMITER、QUOTE、ESCAPE设置为空格或问号则会通过如"illegal chars conversion may confuse COPY escape 0x20"等报错信息提示用户修改可能引起混淆的参数以避免导入错误。 PER NODE REJECT LIMIT 'value' 指定本次数据导入过程中每个DN实例上允许出现的数据格式错误的数量,如果有一个DN实例上的错误数量大于设定值,本次导入失败,报错退出。 取值范围:整型值,unlimited(无限),缺省值为0,有错误信息立即返回。 说明: 此语法指定的是单个节点的错误容忍度。 数据格式错误是指缺少或者多出字段值,数据类型错误或者编码错误。对于非数据格式错误,一旦发生就将导致整个数据扫描失败。 -
  • Linux服务器上安装DIS Agent 使用PuTTY工具登录日志所在服务器,即检查依赖的服务器。 将获取DIS Agent包中获取的“dis-agent-X.X.X.zip”安装包上传到“/opt”文件夹中。 解压“dis-agent-X.X.X.zip”压缩包。 unzip dis-agent-X.X.X.zip 进入“dis-agent-X.X.X”文件夹。 cd dis-agent-X.X.X
  • 操作步骤 使用PuTTY工具(或其他终端工具)远程登录Flume服务器。 进入到Flume的安装目录。 cd ${FLUME_HOME} 上传“dis-flume-plugin-X.X.X.zip”安装包到此目录下。 解压安装包。 unzip dis-flume-plugin-X.X.X.zip 进入安装包解压后的目录。 cd dis-flume-plugin 运行安装程序。 bash install.sh DIS Flume Plugin安装在“${FLUME_HOME}/plugin.d/dis-flume-plugin”目录下,安装完成后,显示类似如下内容,表示安装成功。 Install dis-flume-plugin successfully.
  • 验证DIS Source 使用PuTTY工具远程登录Flume所在服务器。 确认已配置好包含dis source的配置文件 可基于Flume自带的flume-conf.properties.template修改,文件样例如下所示: agent.sources = dissourceagent.channels = memoryChannelagent.sinks = loggerSink# 定义 Source (使用dis source,从DIS读取数据)agent.sources.dissource.channels = memoryChannelagent.sources.dissource.type = com.cloud.dis.adapter.flume.source.DISSource agent.sources.dissource.streams = YOU_DIS_STREAM_NAMEagent.sources.dissource.ak = YOU_AC CES S_KEY_IDagent.sources.dissource.sk = YOU_SECRET_KEY_IDagent.sources.dissource.region = YOU_Regionagent.sources.dissource.projectId = YOU_PROJECT_IDagent.sources.dissource.endpoint = https://dis.${region}.cloud.comagent.sources.dissource.group.id = YOU_APP_NAME# 定义 Channelagent.channels.memoryChannel.type = memoryagent.channels.memoryChannel.capacity = 10000# 定义 Sink (使用logger sink,输出到控制台)agent.sinks.loggerSink.type = loggeragent.sinks.loggerSink.channel = memoryChannel 启动Flume程序,启动命令请参考Apache Flume官网指导。 如果从Flume安装目录启动,示例命令如下所示: bin/flume-ng agent --conf-file conf/flume-conf.properties.template --name agent --conf conf/ -Dflume.root.logger=INFO,console 其中bin/flume-ng agent表示启动Flume Agent;--conf-file 为用户编写的配置文件路径; --name 为配置文件中agent的名称, --conf 为Flume自带的conf/路径 启动之后查看日志,若日志中有类似“source disSource started.”内容,表示DIS Source正常启动,其中“disSource”是用户配置的source名称。 检查DIS Source下载数据是否正常。 向source指向的通道上传数据,如果flume没有报错且sink端能正常获取到数据,表示下载正常。 如果使用步骤 2中示例的配置,则从DIS获取的数据会输出到控制台上,其内容显示为字节数组格式。 登录DIS控制台,等待2分钟后,查看表1中“streams”配置的通道的监控。如果显示有数据下载(蓝色线条),表示DIS Source运行成功。
  • 验证DIS Sink 使用PuTTY工具远程登录Flume所在服务器。 确认已配置好包含dis sink的配置文件 可基于Flume自带的flume-conf.properties.template修改,文件样例如下所示: agent.sources = execagent.channels = memoryChannelagent.sinks = dissink# 定义 Source (使用exec source,监控/tmp/dis.txt文件)agent.sources.exec.type = execagent.sources.exec.command = tail -F /tmp/dis.txtagent.sources.exec.shell = /bin/bash -cagent.sources.exec.channels = memoryChannel# 定义 Channelagent.channels.memoryChannel.type = memoryagent.channels.memoryChannel.capacity = 10000# 定义 Sink (使用dis sink,输出到dis通道)agent.sinks.dissink.channel = memoryChannelagent.sinks.dissink.type = com.cloud.dis.adapter.flume.sink.DISSinkagent.sinks.dissink.streamName = YOU_DIS_STREAM_NAMEagent.sinks.dissink.ak = YOU_ACCESS_KEY_IDagent.sinks.dissink.sk = YOU_SECRET_KEY_IDagent.sinks.dissink.region = YOU_Regionagent.sinks.dissink.projectId = YOU_PROJECT_IDagent.sinks.dissink.endpoint = https://dis.${region}.myhuaweicloud.comagent.sinks.dissink.resultLogLevel = INFO 启动Flume程序,启动命令请参考Apache Flume官网指导。 如果从Flume安装目录启动,示例命令如下所示 bin/flume-ng agent --conf-file conf/flume-conf.properties.template --name agent --conf conf/ -Dflume.root.logger=INFO,console 其中bin/flume-ng agent表示启动Flume Agent;--conf-file 为用户编写的配置文件路径; --name 为配置文件中agent的名称, --conf 为Flume自带的conf/路径。 查看日志,若日志中有类似“Dis flume sink [dissink] start.”内容,表示DIS Sink正常启动,其中“dissink”是用户配置的sink名称。 检查DIS Sink上传数据是否正常。 向Flume的source端输入数据,在DIS Sink的resultLogLevel级别不为OFF且不低于log4j配置的值,查看日志输出类似如下结果,表示DIS Sink上传数据正常。 CurrentPut 5 events[success 5 / failed 0] spend 131 ms. 如果使用步骤 2中示例的配置,您可创建/tmp/dis.txt文件,并在此文件中追加内容。则启动Flume之后,追加的每行内容会被Flume读取并通过dis sink插件发动到DIS通道中。 登录DIS控制台,等待2分钟后,查看表2中“streamName”配置的通道的监控。如果显示有数据上传(绿色线条),表示DIS Sink运行成功。
  • 配置DIS Source 表1 DIS Source配置项说明 配置项 是否必填 说明 默认值 channels 是 Flume channel的名称。 请根据实际情况配置 type 是 Source的类型。 com.cloud.dis.adapter.flume.source.DISSource streams 是 指定在DIS服务上创建的通道名称。 与DIS控制台“购买接入通道”时配置的“通道名称”取值一致。 ak 是 用户的Access Key。 获取方式请参见检查认证信息。 请根据实际情况配置 sk 是 用户的Secret Key。 获取方式请参见检查认证信息。 请根据实际情况配置 region 是 将数据上传到指定Region的DIS服务。 请根据实际情况配置 projectId 是 用户所属区域的项目ID。 获取方式请参见检查认证信息。 请根据实际情况配置 endpoint 是 DIS对应Region的数据接口地址。 请根据实际情况配置 group.id 是 DIS App名称,用于标识一个消费组,由英文字符、数字、-、_组成。 请根据实际情况配置
  • 编辑资产详情 资产发布成功后,发布者可以进入详情页修改该资产的名称、描述,让资产更吸引人。也可以修改资产的可见性。 编辑Notebook介绍 在Notebook详情页,单击“项目介绍”。 在基础设置中设置“许可证”、“语言”、“框架”、“任务类型”和“硬件资源”等信息。 单击“确定”。 编辑设置 基本设置 单击右侧的,可以更改Notebook名称和描述。 编辑完成之后单击“确定”。 关联资产 在输入框中输入资产ID后,单击“关联”即可关联其他资产,更方便其他使用者进行查找。算法可以关联数据集资产。 选择“关联资产”,在输入框中输入待关联资产的ID,单击“关联”。 在弹出的“资产信息”页面,单击“确定”即可关联资产。 可见范围设置 您可以选择更改您的资产可见性,可选择“公开”或“私密”(私密状态下,也可以选择“仅自己可见”或“指定成员可见”)。 在编辑资产详情时,请勿输入涉政、迷信、违禁等相关敏感词汇。
  • 编辑镜像介绍 资产发布上架后,准确、完整的资产介绍有助于提升资产的排序位置和访问量,能更好的支撑用户使用该资产。 在镜像详情页,选择“镜像介绍”页签,单击右侧“编辑介绍”。 编辑镜像基础设置和镜像描述。 表1 镜像介绍的参数说明 参数名称 说明 基础设置 中文名称 显示镜像的名称,不可编辑。 README.md - 资产的README内容,支持添加资产的简介、使用场景、使用方法等信息。 编辑完成后,单击“确认”保存修改。
  • 管理镜像文件 预览文件 在镜像详情页,选择“镜像文件”页签。单击文件名称即可在线预览文件内容。 仅支持预览大小不超过10MB、格式为文本类或图片类的文件。 下载文件 在镜像详情页,选择“镜像文件”页签。单击操作列的“下载”,选择保存路径单击“确认”,即可下载文件到本地。 删除文件 在镜像详情页,选择“镜像文件”页签。单击操作列的“删除”,确认后即可将已经托管的文件从AI Gallery仓库中删除。 文件删除后不可恢复,请谨慎操作。
  • 入驻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(旧版)
  • 搜索资产 在各类资产模块页面,通过如下几种搜索方式可以提高资产的查找效率,快速找到适合的算法、模型、数据集、镜像、Workflow等资产。 图1 搜索资产 表1 快速搜索方式 区域 类型 搜索方式 支持的AI资产 1 搜索华为云官方资产 在页面单击“官方”,筛选出所有的华为云官方资产,该类资产均可免费使用。 Notebook、算法、模型 2 搜索精选商品 在页面单击“精选”,筛选出所有被标记为精选的资产。 Notebook、数据、算法、模型、Workflow 3 按标签搜索 在页面单击“所有标签”,选择标签,单击“确定”,筛选出相关资产。 Notebook、数据、算法、镜像、模型、Workflow 4 按排序方式搜索 在页面的排序列表选择排序方式,调整资产排序方式快速查找所需资产。 Notebook、数据、算法、镜像、模型、Workflow 5 搜索商用资产 在页面单击“商用”,筛选出所有的商业售卖资产。 算法、模型
  • 使用流程 本节主要介绍在AI Gallery中管理资产的整体流程。 在AI Gallery中,需要先将本地数据上传到AI Gallery仓库,创建AI Gallery模型、AI Gallery数据集、AI应用等资产,具体可参见托管模型到AI Gallery、托管数据集到AI Gallery、发布本地AI应用到AI Gallery。 资产创建完成后,需要将资产进行发布操作,具体可参见发布模型到AI Gallery、发布数据集到AI Gallery。对于支持部署为AI应用的AI Gallery模型,可将此模型部署为AI应用,具体可参见将AI Gallery中的模型部署为AI应用。 发布后的资产,可通过微调大师训练模型和在线推理服务部署模型,具体可参见使用AI Gallery微调大师训练模型、使用AI Gallery在线推理服务部署模型。
  • 准备工作 获取“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. │╰─────────────────────────────────────────────────────────────────────╯ 具体支持如下使用场景: 上传单个文件 上传多个文件 上传单个文件到指定仓库目录 上传整个文件夹
  • 上传模型文件 在模型详情页,选择“模型文件”页签。 单击“添加文件”,进入上传文件页面,选择本地的数据文件单击“点击上传”或拖动文件,单击“确认上传”启动上传。 上传单个超过5GB的文件时,请使用Gallery CLI工具。CLI工具的获取和使用请参见Gallery CLI配置工具指南。 文件合集大小不超过50GB。 文件上传完成前,请不要刷新或关闭上传页面,防止意外终止上传任务,导致数据缺失。 当模型的“任务类型”是除“文本问答”和“文本生成”之外的类型(即自定义模型)时,上传的模型文件要满足自定义模型规范,否则该模型无法正常使用AI Gallery工具链服务(微调大师和在线推理服务)。 当托管的是自定义镜像时,上传的模型文件要满足自定义镜像规范,否则该镜像无法正常使用AI Gallery工具链服务(微调大师和在线推理服务)。 当文件状态变成“上传成功”表示数据文件成功上传至AI Gallery仓库进行托管。单击“完成”返回模型文件页面。 图1 上传成功 文件上传过程中请耐心等待,不要关闭当前上传页面,关闭页面会中断上传进程。
  • 功能说明 支持本地文件托管至AI Gallery仓库且支持多个文件同时上传。 单个仓库的容量上限为50GB。 支持管理托管的资产文件,例如在线预览、下载、删除文件。 只支持预览大小不超过10MB、格式为文本类或图片类的文件。 支持编辑资产介绍。每个资产介绍可分为基础设置和使用描述。 基础设置部分包含了该资产所有重要的结构化元数据信息。选择填入的信息将会变成该模型资产的标签,并且自动同步在模型描述部分,保存到“README.md”文件里。 模型描述部分是一个可在线编辑、预览的Markdown文件,里面包含该模型的简介、能力描述、训练情况、引用等信息。编辑内容会自动保存在“README.md”文件里。 更新后的“README.md”文件自动存放在数据集详情页的“文件版本”页签或者是模型详情页的“模型文件”页签。
  • 创建模型资产 登录AI Gallery,单击右上角“我的Gallery”进入我的Gallery页面。 单击左上方“创建资产”,选择“模型”。 在“创建模型”弹窗中配置参数,单击“创建”。 表1 创建模型 参数名称 说明 英文名称 必填项,模型的英文名称。 如果没有填写“中文名称”,则资产发布后,在模型页签上会显示该“英文名称”。 中文名称 模型的中文名称。 如果填写了“中文名称”,则资产发布后,在模型页签上会显示该“中文名称”。 许可证 模型资产遵循的使用协议,根据业务需求选择合适的许可证类型。 描述 填写资产简介,模型发布后将作为副标题显示在模型页签上,方便用户快速了解资产。 支持0~90个字符,请勿在描述中输入涉政、迷信、违禁等相关敏感词,否则发布审核无法通过。 创建完成后,跳转至模型详情页。
  • “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_PA RAM S 配置的训练超参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 jsonimport osfrom datasets import load_datasetfrom transformers import AutoImageProcessorfrom torchvision.transforms import RandomResizedCrop, Compose, Normalize, ToTensor, RandomHorizontalFlipimport numpy as npfrom transformers import AutoModelForImageClassification, TrainingArguments, Trainerfrom transformers import DefaultDataCollatorfrom 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 = Nonedef _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 resultsdef 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 examplesdef 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提供了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
  • “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": "用于指定线性热身占总训练步骤的比例" } ] } ]}
  • 自定义模型规范(推理) 当托管自定义模型到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。 模型基础设置里的“任务类型”选择除“文本问答”和“文本生成”之外的类型。 上传模型文件时需要确认待上传的文件是否满足自定义模型规范。如果模型要支持训练,则需要满足自定义模型规范(训练);如果模型要支持推理,则需要满足自定义模型规范(推理)。 发布模型到AI Gallery。 使用AI Gallery微调大师训练模型或使用AI Gallery在线推理服务部署模型。 如果进行模型微调,则“训练任务类型”选择“自定义”。 如果部署为推理服务,则“推理任务类型”选择“自定义”
  • 自定义模型规范(训练) 当托管自定义模型到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)。
  • 管理AI应用可见范围 创建AI应用时,默认“可见范围”是“私密”,且“仅自己可见”。创建完成后,支持修改可见范围。 “公开”:表示公开资产,所有用户都可以查看该资产。 当选择公开AI应用,系统会自动提交资产公开申请,审核通过之前资产还是私密状态,审核通过后就会变成公开状态。 “私密”:表示仅部分用户可见。 “仅自己可见”:默认状态,表示仅AI应用创建者可见该资产。 “指定用户”:表示AI应用创建者和指定的用户可见该资产。 当指定用户可见时,保存可见用户名单后即可生效。
  • 删除AI应用 当AI应用不再使用时,支持删除,释放AI Gallery仓库的存储空间。 在AI应用详情页,选择“设置”页签。 确认AI应用状态是否为“运行中”。 是,则在“运行资源设置”处,单击“暂停”,停止AI应用再执行下一步。 否,则执行下一步。 在“删除AI应用”处,单击“删除AI应用”按钮,确认后AI应用将被删除。 删除操作不可撤销,执行此操作后该AI应用及相关文件将被永久删除,请谨慎操作。
共100000条
提示

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