华为云用户手册

  • 免费体验 AI全流程开发 如下免费使用的教程,以使用预置算法创建训练作业为例,其他类型的训练作业,操作步骤类似,不再赘述。在开始使用如下端到端流程前,请参考准备工作,完成账号注册、全局配置等操作。本文重点指导用户如何免费使用,如需学习详细操作步骤,可参见快速入门。 登录ModelArts管理控制台。 参考下载数据集,下载一个“图像分类”类型的数据集。 参考使用已有算法训练模型,上传一个可应用于图像分类的算法,如“ResNet_v1_50”算法,并创建训练作业。 在“规格”右侧的下拉框中,选择带有“限时免费”标识的规格,用于免费体验。然后单击“下一步”,根据界面提示完成训练作业的创建。选用免费规格时,其对应的计算节点个数,仅支持使用1个节点,无法修改。 等待训练作业运行结束,当训练作业的状态变为“运行成功”时,表示模型训练完成。 参考从训练中选择元模型,将训练后得到的模型导入ModelArts进行管理。 参考部署为在线服务,将导入的模型部署为在线服务。 在“计算节点规格”中,选择带有“免费规格”标识的规格,部署在线服务。 在服务管理列表中,使用免费规格创建的服务,名称右侧带“免费”标识,等待服务部署完成,当状态变为“运行中”时,表示服务已部署完成。 您可以单击服务名称进入服务详情页面,在“调用指南”查看服务的URL接口,或者进入“预测”页签,上传一张图片,进行预测识别。 使用免费规格的服务,将在1个小时后自动停止,如果您还需要使用此服务,可在“在线服务”页面,单击“启动”,系统将使用之前选择的免费规格启动服务。 图2 使用免费规格运行的服务
  • 免费规格声明(部署上线) 免费规格用于使用体验,部署的服务会在1小时后自动停止。如果您还需要使用免费规格继续运行,可重新启动服务,可再运行1小时,1小时后仍然会自动停止。72小时内没有再次启动,会释放资源,请注意文件备份。 免费规格的资源是有限的,当使用人数较多时,会出现长时间的排队。如果希望获得更佳的体验,请选择付费规格。 使用“部署上线”功能时,可用的免费规格有2种,1个免费CPU规格,1个免费GPU规格。但是两种规格不能同时在一个服务中使用。 同一个账号下,任意一种免费规格只能在1个服务中使用免费规格。如果一个部署上线已使用了一种免费规格,不管是运行中还是停止状态,其他部署上线任务都无法再使用这个免费规格。 只有部署为“在线服务”时,支持使用免费规格。“批量服务”和“边缘服务”暂时无法使用免费规格进行体验。 使用免费规格的服务,可以通过修改操作,将资源规格修改为收费的规格,也可以修改为另一种免费规格。但是已经在使用收费规格的服务,无法修改为免费规格。 仅在“华北-北京四”区域提供了免费规格,请注意您使用的区域。
  • 使用场景 在AI全流程开发过程中,分为如下几个步骤: 准备数据:ModelArts官方发布在AI Gallery的数据集。 算法开发或预置算法:ModelArts官方发布在AI Gallery的算法,均可免费使用。如果您自己在本地开发算法,则不涉及费用。 模型训练:在创建训练作业时,可选择免费规格,完成模型训练。 导入模型:ModelArts提供的模型导入及管理功能,不收费。 部署上线:将导入的模型部署为在线服务时,可选择免费规格的资源,将模型部署为服务。 针对之前的ModelArts,如果您想端到端体验AI全流程开发,在“模型训练”和“部署上线”时,都需要付费体验。当前ModelArts提供免费规格后,整个AI开发过程,可端到端免费体验。 图1 AI全流程开发过程中的免费规格 由于免费规格仅针对ModelArts服务,在使用过程中,需使用OBS存储数据或模型时,会根据OBS计费规则进行计费。
  • 免费规格声明(模型训练) 免费规格用于使用体验,训练作业会在1小时后自动停止,因此建议设置最大训练时长为1小时。 限时免费的规格,性能有限,如果您的数据量较大,或者训练时长会超过1小时,建议选择收费的计算规格用于模型训练。 免费规格的资源是有限的,当使用人数较多时,会出现长时间的排队。如果希望获得更佳的体验,请选择付费规格。 训练作业功能,仅提供了GPU类型的免费规格。 同一个账号只能在一个训练作业中使用免费规格。等训练作业结束后,其他训练作业可重新使用免费规格。 仅在“华北-北京四”区域提供了免费规格,请注意您使用的区域。
  • 免费规格声明(部署上线) 免费规格仅用于使用体验,部署的服务会在1小时后自动停止(不包括模型发布时间)。如果您还需要使用免费规格继续运行,可重新启动服务,可再运行1小时,1小时后仍然会自动停止。 免费规格的资源是有限的,当使用人数较多时,会出现长时间的排队。如果希望获得更佳的体验,建议选择付费规格。 任意一种免费规格只能在1个服务中使用免费规格。如果已存在一个Workflow工作流部署上线使用了免费规格,不管是运行中还是停止状态,其他部署上线任务都无法再使用这个免费规格。 仅在“华北-北京四”区域提供了免费规格,请注意您使用的区域。
  • 免费规格声明(模型训练) Workflow训练免费规格用于使用体验,训练作业会在1小时后自动停止(不包括模型发布时间),因此建议设置最大训练时长为1小时。 限时免费的规格,性能有限,如果您的数据量较大,或者训练时长会超过1小时,建议选择收费的计算规格用于模型训练。 免费规格的资源是有限的,当使用人数较多时,会出现长时间的排队。如果希望获得更佳的体验,请选择付费规格。 只能在1个训练作业中使用免费规格。等训练作业结束后,其他训练作业可重新使用免费规格。 仅在“华北-北京四”区域提供了免费规格,请注意您使用的区域。
  • 使用说明 ModelArts在Notebook、Workflow、自动学习、全流程开发(推理、训练)中提供了免费的资源可供您免费体验AI开发,具体可参见: 免费体验CodeLab 免费体验Workflow 免费体验自动学习 免费体验AI全流程开发 在使用ModelArts进行开发时,在模型训练和模型部署上线阶段,会用到计算资源,具体可参见按需付费使用。 ModelArts提供了更具优惠的套餐包,您可以根据需要,选购不同规格的套餐包,具体可参见购买套餐包。
  • Workflow 在Workflow的“模型训练”和“服务部署”阶段,可选择不同规格的资源进行训练和部署。Workflow也提供了 消息通知 的功能,可在事件发生时发送消息通知。 模型训练-资源配置:选择不同规格的资源,产生的费用不同,具体费用以控制台为准。 服务部署:选择不同规格的资源,产生的费用不同,具体费用以控制台为准。 消息通知:开启消息通知时,会产生费用,具体费用以消息通知服务的计费为准。 Workflow的总费用 = 训练使用资源产生的费用 + 服务部署使用资源产生的费用 + 开启消息通知产生的费用
  • 自动学习(新版) 在自动学习(新版)的“模型训练”和“部署上线”阶段,可选择不同规格的资源。自动学习(新版)也提供了消息通知的功能,可在事件发生时发送消息通知。 模型训练:在创建项目时,选择不同的训练规格,产生的费用不同,具体费用以控制台为准。 服务部署:项目创建成功后,在部署服务时,选择不同规格的资源池,产生的费用不同,具体费用以控制台为准。 消息通知:开启消息通知时,会产生费用,具体费用以消息通知服务的计费为准。 图1 开启消息通知 自动学习(新版)的总费用 = 训练规格使用资源产生的费用 + 部署服务使用资源产生的费用 + 开启消息通知产生的费用
  • OBS简介 对象存储服务 OBS是一个基于对象的海量存储服务,为客户提供海量、安全、高可靠、低成本的数据存储能力。对象存储服务OBS的基本组成是桶和对象。桶是OBS中存储对象的容器,每个桶都有自己的存储类别、访问权限、所属区域等属性,用户在互联网上通过桶的访问 域名 来定位桶。对象是OBS中数据存储的基本单位。 对ModelArts来说,OBS服务是一个数据存储中心,因为ModelArts本身目前没有数据存储的功能。AI开发过程中的输入数据、输出数据、中间缓存数据都可以在OBS桶中进行存储、读取。 因此,在使用ModelArts之前您需要创建一个OBS桶,然后在OBS桶中创建文件夹用于存放数据。
  • 操作步骤 登录OBS管理控制台,在桶列表页面右上角单击“创建桶”,创建OBS桶。例如,创建名称为“c-flowers”的OBS桶。 图1 创建桶 创建桶的区域需要与ModelArts所在的区域一致。例如:当前ModelArts在华北-北京一区域,在对象存储服务创建桶时,请选择华北-北京一。如何查看OBS桶与ModelArts的所处区域,请参见查看OBS桶与ModelArts是否在同一区域。 请勿开启桶加密,ModelArts不支持加密的OBS桶,会导致ModelArts读取OBS中的数据失败。 在桶列表页面,单击桶名称,进入该桶的概览页面。 图2 桶列表 单击左侧导航的“对象”,在对象页面单击新建文件夹,创建OBS文件夹。例如,在已创建的OBS桶“c-flowers”中新建一个文件夹“flowers”。具体请参见新建文件夹章节。 图3 新建文件夹
  • 购买套餐包 套餐包的资源均为公共资源,如果您需要专属资源,可在ModelArts管理控制台中购买专属资源池,具体可参见创建专属资源池。 已购买套餐包不支持退订,购买前请确认。 登录ModelArts管理控制台,在页面右侧单击“购买套餐包”,进入“购买套餐包”页面。 在“购买套餐包”页面,您可以在“AI开发”选择不同规格的套餐包。 根据业务需求选择套餐包,单击“加入购物车”,可以选择多个规格套餐包,在页面右侧的资源包清单中会列出购买的所有套餐包费用明细,单击“立即购买”。 进入规格确认页面,规格确认无误后,单击“去支付”,然后在支付页面完成付款,付款成功后即完成套餐包的购买。
  • 删除授权 为了更好的管理您的授权,您可以删除某一 IAM 用户的授权,也可批量清空所有用户的授权。 删除某一用户的授权 在“全局配置”页面,展示当前账号下为其IAM用户配置的授权列表,针对某一用户,您可以单击“操作”列的“删除”,输入“DELETE”后单击“确认”,可删除此用户的授权。删除生效后,此用户将无法继续使用ModelArts的相关功能。 批量清空所有授权 在“全局配置”页面,单击授权列表上方的“清空授权”,输入“DELETE”后单击“确认”,可删除当前账号下的所有授权。删除生效后,此账号及其所有IAM子用户将无法继续使用ModelArts的相关功能。
  • 修改授权权限范围 在查看授权详情时,如果想要修改授权范围,可以在权限详情页单击“去IAM修改委托权限”。 图6 去IAM修改委托权限 进入IAM控制台的委托页面。找到对应的委托信息,修改该委托的基本信息,主要是持续时间。“持续时间”可以选择永久、1天,或者自定义天数,例如30天。 图7 手动创建的委托 在授权记录页面单击“授权”,勾选要配置的策略,单击下一步设置最小授权范围,单击“确定”,完成授权修改。 设置最小授权范围时,可以选择指定的区域,也可以选择所有区域,即不设置范围。
  • 常见问题 首次使用ModelArts如何配置授权? 直接选择“新增委托”中的“普通用户”权限即可,普通用户包括用户使用ModelArts完成AI开发的所有必要功能权限,如数据的访问、训练任务的创建和管理等。一般用户选择此项即可。 访问密钥授权哪去了? 全局配置中使用密钥委托授权功能已下线,对于之前使用访问密钥授权的老用户,建议修改为委托授权方式。在全局配置页面,一键“清空授权”,然后再使用委托授权完成授权配置。 如何获取访问密钥AK/SK? 如果在其他功能(例如PyCharmtoolKit/VSCode登录,访问在线服务等)中使用到访问密钥AK/SK认证,获取AK/SK方式请参考如何获取访问密钥章节。 如何删除已有委托列表下面的委托名称? 图8 已有委托 需要前往 统一身份认证 服务IAM控制台的委托页面删除。 图9 统一身份认证 进入ModelArts控制台的某个页面时,为什么会提示权限不足? 图10 页面提示权限不足 可能原因是用户委托权限配置不足或模块能力升级,需要更新授权信息。根据界面操作提示追加授权即可。 为什么专属资源池需要增加CCE、BMS、IMS、DEW相关授权? 专属资源池能力升级,新上线ModelArts Lite功能,这项功能需要用户授权允许ModelArts访问云容器引擎服务CCE、裸金属服务BMS、 镜像服务 IMS和密钥管理服务DEW。当用户未使用ModelArts Lite功能时,可以不增加CCE、BMS、IMS、DEW授权,也不影响原有专属资源池的使用。 目前ModelArts Lite功能是“受邀开通”状态,作为企业用户您可以咨询您对口的技术支持开通或提工单咨询。
  • 约束与限制 华为云账号 只有华为云账号可以使用委托授权,可以为当前账号授权,也可以为当前账号下的所有IAM用户授权。 多个IAM用户或账号,可使用同一个委托。 一个账号下,最多可创建50个委托。 对于首次使用ModelArts的新用户,请直接新增委托即可。一般用户新增普通用户权限即可满足使用要求。如果有精细化权限管理的需求,可以自定义权限按需设置。 IAM用户 如果已获得委托授权,则可以在全局配置页面中查看到已获得的委托授权信息。 如果未获得委托授权,当打开“访问授权”页面时,ModelArts会提醒您当前用户未配置授权,需联系此IAM用户的管理员账号进行委托授权。
  • 场景描述 ModelArts与其他服务类似,对外暴露的每个功能,都通过IAM的权限来进行控制。比如,用户(此处指IAM子用户,而非租户)希望在ModelArts创建训练作业,则该用户必须拥有 "modelarts:trainJob:create" 的权限才可以完成操作(无论界面操作还是API调用)。 而ModelArts还有一个特殊的地方在于,为了完成AI计算的各种操作,AI平台在任务执行过程中需要访问用户的其他服务,典型的就是训练过程中,需要访问OBS读取用户的训练数据。在这个过程中,就出现了ModelArts“代表”用户去访问其他云服务的情形。从安全角度出发,ModelArts代表用户访问任何云服务之前,均需要先获得用户的授权,而这个动作就是一个“委托”的过程。用户授权ModelArts再代表自己访问特定的云服务,以完成其在ModelArts平台上执行的AI计算任务。 ModelArts提供了一键式自动授权功能,用户可以在ModelArts的全局配置功能中,快速完成委托授权,由ModelArts为用户自动创建委托并配置到ModelArts服务中。 一键式自动授权方式为保证使用业务过程中有足够的权限,基于依赖服务的预置系统策略指定授权范围,创建的委托的权限比较大,基本覆盖了依赖服务的全部权限。如果您需要对委托授权的权限范围进行精确控制,请使用定制化委托授权。更多权限控制的内容请参见权限管理章节。 本章节主要介绍一键式自动授权方式。一键式自动授权方式支持给IAM子用户、联邦用户(虚拟IAM用户)、委托用户和所有用户授权。
  • 使用场景 自动学习项目分为“数据标注”、“模型训练”和“部署上线”。针对“数据标注”步骤,ModelArts服务并不会产生费用,针对“模型训练”和“部署上线”步骤,不管是训练还是部署,都需要使用计算资源,需要根据您选择的资源进行计费。当前,ModelArts推出了限时免费的计算规格,让您免费体验自动学习功能。 图1 自动学习提供的免费规格 自动学习训练免费规格资源不包含OBS存储资源费用。存储在OBS的数据,按您使用的OBS规格进行计费。
  • 免费规格声明(部署上线) 免费规格仅用于使用体验,部署的服务会在1小时后自动停止(不包括模型发布时间)。如果您还需要使用免费规格继续运行,可重新启动服务,可再运行1小时,1小时后仍然会自动停止。 免费规格的资源是有限的,当使用人数较多时,会出现长时间的排队。如果希望获得更佳的体验,建议选择付费规格。 使用“部署上线”功能时,可用的免费规格有“自动学习免费规格(CPU)”或“自动学习免费规格(GPU)”。 任意一种免费规格只能在1个服务中使用免费规格。如果一个自动学习项目下的部署上线已使用了一种免费规格,不管是运行中还是停止状态,其他部署上线任务都无法再使用这个免费规格。 仅在“华北-北京四”区域提供了免费规格,请注意您使用的区域。
  • 免费规格声明(模型训练) 自动学习训练免费规格用于使用体验,训练作业会在1小时后自动停止(不包括模型发布时间),因此建议设置最大训练时长为1小时。 限时免费的规格,性能有限,如果您的数据量较大,或者训练时长会超过1小时,建议选择收费的计算规格用于模型训练。 免费规格的资源是有限的,当使用人数较多时,会出现长时间的排队。如果希望获得更佳的体验,请选择付费规格。 只能在1个训练作业中使用免费规格。等训练作业结束后,其他训练作业可重新使用免费规格。 仅在“华北-北京四”区域提供了免费规格,请注意您使用的区域。
  • 套餐包简介 ModelArts服务支持购买套餐包,根据用户选择使用的资源不同进行收费。您可以根据业务需求选择使用不同规格的套餐包。 ModelArts提供了AI全流程开发的套餐包,面向有AI基础的开发者,提供机器学习和深度学习的算法开发及部署全功能,包含数据处理、模型开发、模型训练、模型管理和部署上线流程。涉及计费项包含:模型开发环境(Notebook)、模型训练(训练作业)、部署上线(在线服务)。 父主题: 购买套餐包
  • 使用限制 套餐包在购买和使用时的限制如下: 套餐包和购买时选定的区域绑定,套餐包只能使用于购买时选定的区域,且只能用于公共资源池,专属资源池不可用。当前只有部分区域可选,具体以控制台为准。 计费时将优先使用套餐包的额度,超出额度部分将以当月累计使用量所在的阶梯价计费。套餐包的额度为购买日起有效期内的可用资源数。套餐包的有效时长具体以控制台为准。 已购买套餐包不支持退订,购买前请确认。 已购买套餐包是按需套餐包,其资源为公共资源。 用户按照业务来规划时长与数量,最终用户买到的是:总时长 = 购买数量 * 购买时长。在实际使用过程中,会对时长产生扣除;扣除时长 = 所有任务消耗时长的总和,每个任务消耗的时长 = 单任务节点个数 * 任务运行时间。 父主题: 购买套餐包
  • Step2 使用数据集测试动态benchmark 切换到benchmark虚拟环境测试,命令如下。动态benchmark验证是在benchmark虚拟环境中操作。 conda activate benchmark 执行脚本benchmark_serving.py测试动态benchmark。具体操作命令如下,可以根据参数说明修改参数。 cd benchmark_tools python benchmark_serving.py --backend tgi --host 127.0.0.1 --port 8085 --dataset custom_dataset.json --dataset-type custom \ --tokenizer /path/to/tokenizer --request-rate 0.01 1 2 4 8 10 20 --num-prompts 10 1000 1000 1000 1000 1000 1000 \ --max-tokens 4096 --max-prompt-tokens 3768 --benchmark-csv benchmark_serving.csv --backend:服务类型,如"tgi",vllm","mindspore" --host:服务IP地址,如127.0.0.1 --port:服务端口 --dataset:数据集路径 --dataset-type:支持三种 "alpaca","sharegpt","custom"。custom为自定义数据集。 --tokenizer:tokenizer路径,可以是huggingface的权重路径 --request-rate:请求频率,支持多个,如 0.1 1 2。实际测试时,会根据request-rate为均值的指数分布来发送请求以模拟真实业务场景。 --num-prompts:某个频率下请求数,支持多个,如 10 100 100,数量需和--request-rate的数量对应 --max-tokens:输入+输出限制的最大长度,模型启动参数--max-input-length值需要大于该值 --max-prompt-tokens:输入限制的最大长度,推理时最大输入tokens数量,模型启动参数--max-total-tokens值需要大于该值,tokenizer建议带tokenizer.json的FastTokenizer --benchmark-csv:结果保存路径,如benchmark_serving.csv 脚本运行完后,测试结果保存在benchmark_serving.csv中,示例如下图所示。 图1 动态benchmark测试结果
  • Step1 获取数据集 动态benchmark需要使用数据集进行测试,可以使用公开数据集,例如Alpaca、ShareGPT。也可以根据业务实际情况,使用generate_dataset.py脚本生成和业务数据分布接近的数据集。 公开数据集下载地址: ShareGPT: https://huggingface.co/datasets/anon8231489123/ShareGPT_Vicuna_unfiltered/resolve/main/ShareGPT_V3_unfiltered_cleaned_split.json Alpaca: https://github.com/tatsu-lab/stanford_alpaca/blob/main/alpaca_data.json 使用generate_dataset.py脚本生成数据集方法: generate_dataset.py脚本通过指定输入输出长度的均值和标准差,生成一定数量的正态分布的数据。具体操作命令如下,可以根据参数说明修改参数。 cd benchmark_tools python generate_dataset.py --dataset custom_dataset.json --tokenizer /path/to/tokenizer \ --min-input 100 --max-input 3600 --avg-input 1800 --std-input 500 \ --min-output 40 --max-output 256 --avg-output 160 --std-output 30 --num-requests 1000 generate_dataset.py脚本执行参数说明如下: --dataset:数据集保存路径,如custom_dataset.json --tokenizer:tokenizer路径,可以是HuggingFace的权重路径 --min-input:输入tokens最小长度,可以根据实际需求设置。 --max-input:输入tokens最大长度,可以根据实际需求设置。 --avg-input:输入tokens长度平均值,可以根据实际需求设置。 --std-input:输入tokens长度方差,可以根据实际需求设置。 --min-output:最小输出tokens长度,可以根据实际需求设置。 --max-output:最大输出tokens长度,可以根据实际需求设置。 --avg-output:输出tokens长度平均值,可以根据实际需求设置。 --std-output:输出tokens长度标准差,可以根据实际需求设置。 --num-requests:输出数据集的数量,可以根据实际需求设置。
  • SFT全参微调超参配置 本章节介绍SFT全参微调前的超参配置,可以根据实际需要修改。 SFT全参微调脚本sft-llama2-13b.sh,存放在AscendCloud-3rdLLM-6.3.902/llm_train/AscendSpeed/scripts/llama2目录下。训练前,可以根据实际需要修改超参配置。 微调任务配置,操作同预训练配置类似,不同点为RUN_TYPE类型不同,以及输入输出路径的配置的不同。 表1 SFT全参微调超参配置 参数 值 参数说明 DATA_PATH /home/ma-user/ws/datasets/alpaca/llama2-13b/alpaca-ft 必填。训练时指定的输入数据路径。一般为数据地址/处理后的数据前缀名, 不加文件类型后缀。 TOKENIZER_PATH /home/ma-user/ws/tokenizers/llama2-13b-hf 必填。tokenizer保存地址。 SAVE_PATH $PWD/ckpt 中间保存结果,包含训练日志。 SAVE_CKPT_PATH ${SAVE_PATH}/ckpt-llama2-13b-sft 必填。训练ckpt保存地址。 MODEL_PATH /home/ma-user/ws/weight/llama2-13b-ckpt 必填。加载的权重文件路径。取值二选一: (推荐)上一步SFT全参微调权重转换章节中将HuggingFace格式转化为AscendSpeed格式的权重文件。 预训练完成后保存的权重文件,即预训练超参配置中的SAVE_CKPT_PATH值。如果使用此权重文件,需要将权重文件的名称改为release,将latest_checkpointed_iteration.txt的内容文件内容改为release,具体参考1和5.3-2。 MASTER_ADDR=${1:-localhost} localhost 主节点IP地址,默认为localhost。 多机多卡训练时需指定主节点IP地址。 MODEL_TYPE 13B 模型加载类型。 TRAIN_ITERS 2000 训练迭代周期。根据实际需要修改。 MBS 4 流水线并行中一个micro batch所处理的样本量。在流水线并行中,为了减少气泡时间,会将一个step的数据切分成多个micro batch。 非必填,默认值4。 GBS 64 训练中所有机器一个step所处理的样本量。影响每一次训练迭代的时长。建议单机64,双机128。 TP 8 张量并行。 PP 1 流水线并行。 seq_length 4096 要处理的最大序列长度,默认值2048,建议改为4096。 RUN_TYPE sft 训练脚本类型:pretrain、sft、loral。此处填写sft,表示SFT全参微调。 父主题: SFT全参微调
  • 静态benchmark验证操作 切换到benchmark虚拟环境测试,命令如下。静态benchmark验证是在benchmark虚拟环境中操作。 conda activate benchmark 运行静态benchmark验证脚本benchmark_parallel.py,具体操作命令如下,可以根据参数说明修改参数。 cd benchmark_tools python benchmark_parallel.py --backend tgi --host 127.0.0.1 --port 8085 --tokenizer /path/to/tokenizer --epochs 5 \ --parallel-num 1 4 8 16 32 --prompt-tokens 1024 2048 --output-tokens 128 256 --benchmark-csv benchmark_parallel.csv 参数说明 --backend:服务类型,支持tgi、vllm、mindspore等。本文档使用的推理接口是tgi。 --host:服务IP地址,如127.0.0.1。 --port:服务端口,和推理服务端口8085。 --tokenizer:tokenizer路径,HuggingFace的权重路径。 --epochs:测试轮数,默认取值为5 --parallel-num:每轮并发数,支持多个,如 1 4 8 16 32。 --prompt-tokens:输入长度,支持多个,如 128 128 2048 2048,数量需和--output-tokens的数量对应。 --output-tokens:输出长度,支持多个,如 128 2048 128 2048,数量需和--prompt-tokens的数量对应。 --benchmark-csv:结果保存路径,如benchmark_parallel.csv。 脚本运行完成后,测试结果保存在benchmark_parallel.csv中,示例如下图所示。 图1 静态benchmark测试结果
  • Alpaca数据处理 数据预处理脚本preprocess_data.py存放在代码包的“llm_train\AscendSpeed\ModelLink\”目录中,脚本具体内容如下。 cd /home/ma-user/ws/AscendCloud-3rdLLM-6.3.902/llm_train/AscendSpeed/ModelLink python tools/preprocess_data.py \ --input ${path}/train-00000-of-00001-a09b74b3ef9c3b56.parquet \ --output-prefix ${path}/alpaca/llama2-13B/alpaca \ --tokenizer-type PretrainedFromHF \ --tokenizer-name-or-path ${path}/tokenizers/llama2-13b-hf \ --tokenizer-not-use-fast \ --json-keys text 参数说明: - input:数据集的存放路径,本案例中${path}的路径为/home/ma-user/ws/datasets 。 - output-prefix:处理后的数据集保存路径+数据集名称前缀(例如: alpaca) - tokenizer-type:tokenizer的类型,可选项有['BertWordPieceLowerCase','BertWordPieceCase','GPT2BPETokenizer','PretrainedFromHF'],一般为PretrainedFromHF。 - tokenizer-name-or-path:tokenizer的存放路径 - json-keys: space separate listed of keys to extract from json,默认使用text,不需要修改。 数据预处理后输出的训练数据如下: alpaca_text_document.bin alpaca_text_document.idx 训练的时指定的数据路径为${path}/alpaca/llama2-13B/alpaca_text_document, 不加文件类型后缀。
  • 自定义数据 如果是用户自己准备的数据集,可以使用Ascendspeed代码仓中的转换工具将json格式数据集转换为训练中使用的.idx + .bin格式。 #示例: #1.将准备好的json格式数据集存放于/home/ma-user/ws/datasets/data目录下: data.json #2.运行转换脚本 cd /home/ma-user/ws/llm_train/AscendSpeed/ModelLink/ python tools/preprocess_data.py --input data.json \ #需要转换的数据集路径 --output-prefix datasets/data \ #转换后存放的数据集路径 --tokenizer-type PretrainedFromHF \ --tokenizer-name-or-path llama2-13b-hf \ --tokenizer-not-use-fast \ --json-keys text #3.执行完成后在 datasets文件夹中可以得到 data_text_document.idx 与data_text_document.bin 两个文件
  • 断点续训练操作过程 llama2-13b的断点续训脚本retrain-llama2-13b.sh,存放在“AscendCloud-3rdLLM-6.3.902/llm_train/AscendSpeed/scripts/llama2”目录下。 执行命令如下,进入AscendSpeed代码目录。 cd .. #退出当前目录 cd /home/ma-user/ws/AscendCloud-3rdLLM-6.3.902/llm_train/AscendSpeed/ #进入/home/ma-user/ws/AscendCloud-3rdLLM-6.3.902/llm_train/AscendSpeed/目录 执行如下命令修改Llama2-13b的断点续训练脚本。 vim scripts/llama2/retrain-llama2-13b.sh 断点续训练参数配置如下: # data args PWD=`pwd` datasets_PATH=/home/ma-user/ws/datasets/alpaca/llama2-13B/alpaca_text_document #训练数据输入路径,不加文件类型后缀 TOKENIZER_PATH=/home/ma-user/ws/tokenizers #TOKENIZER存放路径 SAVE_PATH=$PWD/ckpt #训练过程文件保存路径,包括日志 SAVE_CKPT_PATH=${SAVE_PATH}/ckpt-llama2-13b #训练ckpt保存地址 MODEL_PATH=${SAVE_PATH}/ckpt-llama2-13b #预训练后的模型生成路径,断点续训时必须要有此参数。 # megatron args TP=8 PP=1 SEED=1234 RUN_TYPE=retrain #表示脚本运行类型是断点续训 . .scripts/llama2/llama2.sh 修改完后,保存退出。 :wq 在AscendSpeed代码目录下执行断点续训练脚本。 bash scripts/llama2/retrain-llama2-13b.sh 图1 保存的ckpt 可以参考查看日志和性能操作,查看断点续训练日志和性能。
  • Step3 启动容器镜像 启动容器镜像前请先按照参数说明修改${}中的参数。可以根据实际需要增加修改参数。启动容器命令如下。 container_work_dir="/home/ma-user/ws" # 容器内挂载的目录 work_dir="/home/ma-user/ws" # 宿主机挂载目录,存放了代码、数据、权重 container_name="ascendspeed" # 启动的容器名称 image_name="${container_name} " # 启动的镜像ID docker run -itd \ --device=/dev/davinci0 \ --device=/dev/davinci1 \ --device=/dev/davinci2 \ --device=/dev/davinci3 \ --device=/dev/davinci4 \ --device=/dev/davinci5 \ --device=/dev/davinci6 \ --device=/dev/davinci7 \ --device=/dev/davinci_manager \ --device=/dev/devmm_svm \ --device=/dev/hisi_hdc \ -v /usr/local/sbin/npu-smi:/usr/local/sbin/npu-smi \ -v /usr/local/dcmi:/usr/local/dcmi \ -v /usr/local/Ascend/driver:/usr/local/Ascend/driver \ --cpus 192 \ --memory 1000g \ --shm-size 200g \ --net=host \ -v ${work_dir}:${container_work_dir} \ --name ${container_name} \ $image_name \ /bin/bash 参数说明: --name ${container_name} 容器名称,进入容器时会用到,此处可以自己定义一个容器名称,例如ascendspeed。 -v ${work_dir}:${container_work_dir} 代表需要在容器中挂载宿主机的目录。宿主机和容器使用不同的文件系统。work_dir为宿主机中工作目录,目录下存放着训练所需代码、数据等文件。container_work_dir为要挂载到的容器中的目录。为方便两个地址可以相同。 容器不能挂载/home/ma-user目录,此目录为ma-user用户家目录。 driver及npu-smi需同时挂载至容器。 ${image_name} 为docker镜像的ID,在宿主机上可通过docker images查询得到。 通过容器名称进入容器中。 docker exec -it ${container_name} bash 启动容器时默认用户为ma-user用户。如果需要切换到root用户可以执行以下命令: sudo su source /home/ma-user/.bashrc 如果继续使用ma-user,在使用其他属组如root用户上传的数据和文件时,可能会存在权限不足的问题,因此需要执行如下命令统一文件属主。 sudo chown -R ma-user:ma-group ${container_work_dir} # ${container_work_dir}:/home/ma-user/ws 容器内挂载的目录 例如: sudo chown -R ma-user:ma-group /home/ma-user/ws 安装pip源。 #进入scriptsscripts目录 cd /home/ma-user/ws/xxxend/llm_train/AscendSpeed/scripts #执行安装命令 pip install -r requirements.txt
共100000条