华为云用户手册

  • Step3 上传权重文件 上传安装依赖软件推理代码AscendCloud-3rdLLM-xxx.zip和算子包AscendCloud-OPP-xxx.zip到容器中,包获取路径请参见表1。 将权重文件上传到DevServer机器中。权重文件的格式要求为Huggface格式。开源权重文件获取地址请参见表3。 如果使用模型训练后的权重文件进行推理,模型训练及训练后的权重文件转换操作可以参考相关文档章节中提供的模型训练文档。
  • 步骤1:准备工作 注册华为账号 并开通华为云、实名认证 注册华为账号并开通华为云 进行实名认证 配置委托访问授权 ModelArts使用过程中涉及到OBS、SWR、IEF等服务交互,首次使用ModelArts需要用户配置委托授权,允许访问这些依赖服务。 使用华为云账号登录ModelArts管理控制台,在左侧导航栏单击“全局配置”,进入“全局配置”页面,单击“添加授权”。 在弹出的“访问授权”窗口中,授权对象类型选“所有用户”,委托选择选“新增委托”,权限配置选择“普通用户”,并勾选“我已经详细阅读并同意《ModelArts服务声明》”,然后单击“创建”。 完成配置后,在ModelArts控制台的全局配置列表,可查看到此账号的委托配置信息。
  • 步骤4:运行工作流 在自动学习的运行总览页面,会产生一条工作流。工作流会自动从数据标注节点开始,依次运行数据集版本发布、数据校验、物体检测、模型注册、服务部署等节点,直至工作流全部运行完成。您需要做的是: 在数据标注节点,待数据标注节点变为橘色即为“等待操作”状态,双击数据标注节点,打开数据标注节点的运行详情页面。前往实例详情页确认所有图片是否都标注完成,确认无误后,回到工作流页面单击“继续运行”。 在“确认是否继续允许”的弹窗中,单击“确定”,工作流会继续从数据标注节点依次运行到服务部署节点。该段时间不需要用户做任何操作。 当工作流运行到“服务部署”节点,“服务部署”节点会变成橙色,双击“服务部署”节点。在服务部署页签中,可以看到状态变为了“等待输入”。 需要选择填写以下两个参数,其他参数均为默认值,保持不变。 计算节点规格:根据您的实际需求选择相应的规格。 是否自动停止:为避免资源浪费,建议打开自动停止开关,根据您的实际需要,选择自动停止时间,也可以自定义自动停止的时间。 图3 选择计算节点规格 图4 设置自动停止 参数填写完毕之后,单击运行状况右边的“继续运行”,单击确认弹窗中的“确定”即可继续完成工作流的运行。
  • 步骤3:创建自动学习物体检测项目 确保数据集创建完成且可正常使用后,在ModelArts控制台,左侧导航栏选择“自动学习”默认进入新版自动学习页面,选择物体检测项目,单击“创建项目”。 进入“创建物体检测”页面后,填写相关参数。 计费模式:默认按需计费。 名称:自行创建项目名称。 描述:自行描述项目详情,例如口罩检测。 数据集:下拉选择已下载的数据集(步骤2中已成功导入的数据集,默认为下拉数据集列表中的第一个数据集)。 输出路径:选择步骤2的3中的数据集输出位置。 训练规格:根据您的实际需要选择对应的训练规格。 确认无误后单击右下角“创建项目”可自动跳转至自动学习的运行总览页面。
  • 启动训练脚本 请根据表1修改超参值后,再启动训练脚本。 单机启动 以Qwen-14B为例,单机训练启动样例命令如下。在/home/ma-user/ws/xxx-Ascend/llm_train/AscendSpeed/代码目录下。 MODEL_TYPE=14B RUN_TYPE=pretrain DATASET_PATH=/home/ma-user/ws/processed_for_ma_input/Qwen-14B/data/pretrain/alpaca_text_document TOKENIZER_PATH=/home/ma-user/ws/tokenizers/Qwen-14B TRAIN_ITERS=200 MBS=2 GBS=64 TP=8 PP=1 SEQ_LEN=4096 WORK_DIR=/home/ma-user/ws sh scripts/qwen/qwen.sh 其中 MODEL_TYPE 、RUN_TYPE、DATASET_PATH、TOKENIZER_PATH为必填,TRAIN_ITERS、MBS、GBS、TP、PP、SEQ_LEN为非必填,有默认值。 多机启动 以Qwen-14B为例,多台机器执行训练启动命令如下。多机启动需要在每个节点上执行,以双机为例。在/home/ma-user/ws/xxx-Ascend/llm_train/AscendSpeed/代码目录下执行。 #第一台节点 MASTER_ADDR=xx.xx.xx.xx NNODES=2 NODE_RANK=0 MODEL_TYPE=14B RUN_TYPE=pretrain DATASET_PATH=/home/ma-user/ws/processed_for_ma_input/Qwen-14B/data/pretrain/alpaca_text_document TOKENIZER_PATH=/home/ma-user/ws/tokenizers/Qwen-14B TRAIN_ITERS=200 MBS=2 GBS=64 TP=8 PP=1 SEQ_LEN=4096 WORK_DIR=/home/ma-user/ws sh scripts/qwen/qwen.sh ... ... # 第二台节点 MASTER_ADDR=xx.xx.xx.xx NNODES=2 NODE_RANK=1 MODEL_TYPE=14B RUN_TYPE=pretrain DATASET_PATH=/home/ma-user/ws/processed_for_ma_input/Qwen-14B/data/pretrain/alpaca_text_document TOKENIZER_PATH=/home/ma-user/ws/tokenizers/Qwen-14B TRAIN_ITERS=200 MBS=2 GBS=64 TP=8 PP=1 SEQ_LEN=4096 WORK_DIR=/home/ma-user/ws sh scripts/qwen/qwen.sh 以上命令多台机器执行时,只有${NODE_RANK}的节点ID值不同,其他参数都保持一致。 其中MASTER_ADDR、 NODE_RANK、 NODE_RANK、MODEL_TYPE 、RUN_TYPE、DATASET_PATH、TOKENIZER_PATH为必填,TRAIN_ITERS、MBS、GBS、TP、PP、WORK_DIR、SEQ_LEN为非必填,有默认值。 等待模型载入 执行训练启动命令后,等待模型载入,当出现“training”关键字时,表示开始训练。训练过程中,训练日志会在最后的Rank节点打印。 图1 等待模型载入 更多查看训练日志和性能操作,请参考查看日志和性能章节。 如果需要使用断点续训练能力,请参考断点续训练章节修改训练脚本。
  • 预训练超参配置 预训练脚本qwen.sh,存放在“xxx-Ascend/llm_train/AscendSpeed/scripts/qwen”目录下。训练前,需要根据实际需要配置超参。 表1 预训练超参配置 参数 示例值 参数说明 DATASET_PATH /home/ma-user/ws/processed_for_ma_input/Qwen-14B/data/pretrain/alpaca_text_document 必填。训练时指定的输入数据路径。一般为数据地址/处理后的数据前缀名,不加文件类型后缀。 请根据实际规划修改。 TOKENIZER_PATH /home/ma-user/ws/tokenizers/Qwen-14B 必填。加载tokenizer时,tokenizer存放地址。 请根据实际规划修改。 MODEL_TYPE 14B 必填。表示模型加载类型,根据实际填写7B、14B或72B。 TRAIN_ITERS 200 非必填。表示训练迭代周期,根据实际需要修改。 MBS 2 非必填。表示流水线并行中一个micro batch所处理的样本量。在流水线并行中,为了减少气泡时间,会将一个step的数据切分成多个micro batch。 该值与TP和PP以及模型大小相关,可根据实际情况进行调整。默认值为2。取值建议如下: Qwen-14B:2 Qwen-7B:2 Qwen-72B:1 GBS 64 非必填。表示训练中所有机器一个step所处理的样本量。影响每一次训练迭代的时长。 默认值为64。对于PP(流水线并行)值大于1的场景,增大GBS值吞吐性能会有提升。 TP 8 非必填。表示张量并行。默认值为8,取值建议: Qwen-14B:8 Qwen-7B:4 Qwen-72B:8 PP 1 非必填。表示流水线并行。默认值为1,取值建议: Qwen-14B:1 Qwen-7B:1 Qwen-72B:大于等于5,例如5机填写5,8机填8。 RUN_TYPE pretrain 必填。表示训练类型,根据实际训练任务类型选择。取值说明: pretrain:表示预训练 retrain:表示断点续训 sft:表示SFT微调训练 lora:表示LoRA微调训练 MASTER_ADDR localhost 多机必填。主节点IP地址,多台机器中需要指定一个节点IP为主节点IP。 一般指定第一个节点IP为主节点IP。 NNODES 1 多机必填。节点总数,如为双机,则写2。单机默认是1。 NODE_RANK 0 多机必填。节点序号,当前节点ID,一般从0开始,单机默认是0。以Qwen-72B 5机训练为例,节点ID依次为(0 1 2 3 4);一般ID为0的节点设置为主节点IP。 WORK_DIR /home/ma-user/ws 容器的工作目录。训练的权重文件保存在此路径下。非必填,默认值为:/home/ma-user/ws。 SEQ_LEN 4096 非必填。默认值为4096。
  • 方案概述 推理服务的端到端运维流程 算法开发阶段,先将业务AI数据存放到 对象存储服务 (OBS)中,接着通过ModelArts数据管理进行标注和版本管理,然后通过训练获得AI模型结果,最后通过开发环境构建AI应用镜像。 服务运维阶段,先利用镜像构建AI应用,接着部署AI应用为在线服务,然后可在 云监控服务 CES )中获得ModelArts推理在线服务的监控数据,最后可配置告警规则实现实时告警通知。 业务运行阶段,先将业务系统对接在线服务请求,然后进行业务逻辑处理和监控设置。 图1 推理服务的端到端运维流程图 整个运维过程会对服务请求失败和资源占用过高的场景进行监控,当超过阈值时发送告警通知。 图2 监控告警流程图 方案优势 通过端到端的服务运维配置,可方便地查看业务运行高低峰情况,并能够实时感知在线服务的健康状态。 约束限制 端到端服务运维只支持在线服务,因为推理的批量服务和边缘服务无CES监控数据,不支持完整的端到端服务运维设置。
  • Step1 在Notebook中修改训练超参配置 以llama2-13b LORA微调为例,执行脚本0_pl_lora_13b.sh 。 修改模型训练脚本中的超参配置,必须修改的参数如表1所示。其他超参均有默认值,可以参考表1按照实际需求修改。 表1 必须修改的训练超参配置 参数 示例值 参数说明 ORIGINAL_TRAIN_DATA_PATH /home/ma-user/work/training_data/alpaca_gpt4_data.json 必须修改。训练时指定的输入数据路径。请根据实际规划修改。 ORIGINAL_HF_WEIGHT /home/ma-user/work/model/llama-2-13b-chat-hf 必须修改。加载tokenizer与Hugging Face权重时,对应的存放地址。请根据实际规划修改。 对于ChatGLMv3-6B和Qwen系列模型,还需要手动修改tokenizer文件,具体请参见训练tokenizer文件说明。
  • Step2 创建LoRA微调训练任务 创建训练作业,并自定义名称、描述等信息。选择自定义算法,启动方式自定义,以及上传的镜像。训练脚本中会自动执行训练前的权重转换操作和数据处理操作。 图1 选择镜像 训练作业启动命令中输入: cd /home/ma-user/work/llm_train/AscendSpeed; sh ./scripts/install.sh; sh ./scripts/llama2/0_pl_lora_13b.sh
  • 委托授权 用户在使用ModelArts服务的过程中,为了简化用户的操作,ModelArts后台可以代替用户完成一些工作,如训练作业启动前自动下载用户OBS桶中的数据集到作业空间、自动转储训练作业日志到用户OBS桶中。 ModelArts服务不会保存用户的Token认证凭据,在后台异步作业中操作用户的资源(如OBS桶)前,需要用户通过 IAM 委托向ModelArts显式授权,ModelArts在需要时使用用户的委托获取临时认证凭据用于操作用户资源,见“添加授权”。 图1 委托授权 如图1所示,用户向ModelArts授权后,ModelArts使用委托授权的临时凭证访问和操作用户资源,协助用户自动化一些繁琐和耗时的操作。同时,委托凭证会同步到用户的作业中(Notebook实例和训练作业),客户在作业中可以使用委托凭证自行访问自己的资源。
  • 功能依赖 功能依赖策略项 您在使用ModelArts的过程中,需要和其他云服务交互,比如需要在提交训练作业时选择指定数据集OBS路径和日志存储OBS路径。因此管理员在为用户配置细粒度授权策略时,需要同时配置依赖的权限项,用户才能使用完整的功能。 如果您使用根用户(与账户同名的缺省子用户)使用ModelArts,根用户默认拥有所有权限,不再需要单独授权。 请用户确保当前用户具备委托授权中包含的依赖策略项权限。例如,用户给ModelArts的委托需要授权SWR Admin权限,需要保证用户本身具备SWR Admin权限。 表1 基本配置 业务场景 依赖的服务 依赖策略项 支持的功能 全局配置 IAM iam:users:listUsers 查询用户列表(仅管理员需要) 基本功能 IAM iam:tokens:assume 使用委托获取用户临时认证凭据(必需) 基本功能 BSS bss:balance:view 在ModelArts控制台创建资源后,页面展示账号当前余额 表2 管理工作空间 业务场景 依赖的服务 依赖策略项 支持的功能 工作空间 IAM iam:users:listUsers 按用户进行工作空间授权 ModelArts modelarts:*:delete* 删除工作空间时,同时清理空间内的资源 表3 管理开发环境Notebook 业务场景 依赖的服务 依赖策略项 支持的功能 开发环境实例生命周期管理 ModelArts modelarts:notebook:create modelarts:notebook:list modelarts:notebook:get modelarts:notebook:update modelarts:notebook:delete modelarts:notebook:start modelarts:notebook:stop modelarts:notebook:updateStopPolicy modelarts:image:delete modelarts:image:list modelarts:image:create modelarts:image:get modelarts:pool:list modelarts:tag:list modelarts:network:get 实例的启动、停止、创建、删除、更新等依赖的权限。 AOM aom:metric:get aom:metric:list aom:alarm:list 动态挂载存储配置 ModelArts modelarts:notebook:listMountedStorages modelarts:notebook:mountStorage modelarts:notebook:getMountedStorage modelarts:notebook:umountStorage 动态挂载存储配置。 OBS obs:bucket:ListAllMyBuckets obs:bucket:ListBucket 镜像管理 ModelArts modelarts:image:register modelarts:image:listGroup 在镜像管理中注册和查看镜像。 保存镜像 SWR SWR Admin SWR Admin为SWR最大权限,用于: 开发环境运行的实例,保存成镜像。 使用 自定义镜像 创建开发环境Notebook实例。 使用SSH功能 E CS ecs:serverKeypairs:list ecs:serverKeypairs:get ecs:serverKeypairs:delete ecs:serverKeypairs:create 为开发环境Notebook实例配置登录密钥。 DEW kps:domainKeypairs:get kps:domainKeypairs:list 挂载SFS Turbo盘 SFS Turbo SFS Turbo FullAccess 子用户对SFS目录的读写操作权限。专属池Notebook实例挂载SFS(公共池不支持),且挂载的SFS不是当前子用户创建的。 查看所有实例 ModelArts modelarts:notebook:listAllNotebooks ModelArts开发环境界面上,查询所有用户的实例列表,适用于给开发环境的实例管理员配置该权限。 IAM iam:users:listUsers VSCode插件(本地)/ PyCharm Toolkit(本地) ModelArts modelarts:notebook:listAllNotebooks modelarts:trainJob:create modelarts:trainJob:list modelarts:trainJob:update modelarts:trainJobVersion:delete modelarts:trainJob:get modelarts:trainJob:logExport modelarts:workspace:getQuotas(如果开通了工作空间功能,则需要配置此权限。) 从本地VSCode连接云上的Notebook实例、提交训练作业等。 OBS obs:bucket:ListAllMybuckets obs:bucket:HeadBucket obs:bucket:ListBucket obs:bucket:GetBucketLocation obs:object:GetObject obs:object:GetObjectVersion obs:object:PutObject obs:object:DeleteObject obs:object:DeleteObjectVersion obs:object:ListMultipartUploadParts obs:object:AbortMultipartUpload obs:object:GetObjectAcl obs:object:GetObjectVersionAcl obs:bucket:PutBucketAcl obs:object:PutObjectAcl obs:object:ModifyObjectMetaData IAM iam:projects:listProjects 从本地PyCharm查询IAM项目列表,完成连接配置。 表4 管理训练作业 业务场景 依赖的服务 依赖策略项 支持的功能 训练管理 ModelArts modelarts:trainJob:* modelarts:trainJobLog:* modelarts:aiAlgorithm:* modelarts:image:list modelarts:network:get modelarts:workspace:get 创建训练作业和查看训练日志。 modelarts:workspace:getQuota 查询工作空间配额。如果开通了工作空间功能,则需要配置此权限。 modelarts:tag:list 在训练作业中使用标签管理服务TMS。 IAM iam:credentials:listCredentials iam:agencies:listAgencies 使用配置的委托授权项。 SFS Turbo sfsturbo:shares:getShare sfsturbo:shares:getAllShares 在训练作业中使用SFS Turbo。 SWR SWR Administrator 使用自定义镜像运行训练作业。 SMN smn:topic:publish smn:topic:list 通过SMN通知训练作业状态变化事件。 OBS obs:bucket:ListAllMybuckets obs:bucket:HeadBucket obs:bucket:ListBucket obs:bucket:GetBucketLocation obs:object:GetObject obs:object:GetObjectVersion obs:object:PutObject obs:object:DeleteObject obs:object:DeleteObjectVersion obs:object:ListMultipartUploadParts obs:object:AbortMultipartUpload obs:object:GetObjectAcl obs:object:GetObjectVersionAcl obs:bucket:PutBucketAcl obs:object:PutObjectAcl obs:object:ModifyObjectMetaData 使用OBS桶中的数据集运行训练作业。 表5 使用Workflow 业务场景 依赖的服务 依赖策略项 支持的功能 使用数据集 ModelArts modelarts:dataset:getDataset modelarts:dataset:createDataset modelarts:dataset:createDatasetVersion modelarts:dataset:createImportTask modelarts:dataset:updateDataset modelarts:processTask:createProcessTask modelarts:processTask:getProcessTask modelarts:dataset:listDatasets 在工作流中使用ModelArts数据集 管理AI应用 ModelArts modelarts:model:list modelarts:model:get modelarts:model:create modelarts:model:delete modelarts:model:update 在工作流中管理ModelArts AI应用 部署上线 ModelArts modelarts:service:get modelarts:service:create modelarts:service:update modelarts:service:delete modelarts:service:getLogs 在工作流中管理ModelArts在线服务 训练作业 ModelArts modelarts:trainJob:get modelarts:trainJob:create modelarts:trainJob:list modelarts:trainJobVersion:list modelarts:trainJobVersion:create modelarts:trainJob:delete modelarts:trainJobVersion:delete modelarts:trainJobVersion:stop 在工作流中管理ModelArts训练作业 工作空间 ModelArts modelarts:workspace:get modelarts:workspace:getQuotas 在工作流中使用ModelArts工作空间 管理数据 OBS obs:bucket:ListAllMybuckets(获取桶列表) obs:bucket:HeadBucket(获取桶元数据) obs:bucket:ListBucket(列举桶内对象) obs:bucket:GetBucketLocation(获取桶区域位置) obs:object:GetObject(获取对象内容、获取对象元数据) obs:object:GetObjectVersion(获取对象内容、获取对象元数据) obs:object:PutObject(PUT上传、POST上传、复制对象、追加写对象、初始化上传段任务、上传段、合并段) obs:object:DeleteObject(删除对象、批量删除对象) obs:object:DeleteObjectVersion(删除对象、批量删除对象) obs:object:ListMultipartUploadParts(列举已上传的段) obs:object:AbortMultipartUpload(取消多段上传任务) obs:object:GetObjectAcl(获取对象ACL) obs:object:GetObjectVersionAcl(获取对象ACL) obs:bucket:PutBucketAcl(设置桶ACL) obs:object:PutObjectAcl(设置对象ACL) 在工作流中使用OBS数据 工作流运行 IAM iam:users:listUsers(查询用户列表) iam:agencies:getAgency(查询指定委托详情) iam:tokens:assume(获取委托Token) 在工作流运行时,调用ModelArts其他服务 集成 DLI DLI dli:jobs:get(查询作业详情) dli:jobs:list_all(查询作业列表) dli:jobs:create(创建新作业) 在工作流中集成DLI 集成 MRS MRS mrs:job:get(查询作业详情) mrs:job:submit(创建并执行作业) mrs:job:list(查询作业列表) mrs:job:stop(停止作业) mrs:job:batchDelete(批量删除作业) mrs:file:list(查询文件列表) 在工作流中集成MRS 表6 管理AI应用 业务场景 依赖的服务 依赖策略项 支持的功能 管理AI应用 SWR swr:repository:deleteRepository swr:repository:deleteTag swr:repository:getRepository swr:repository:listTags 从自定义镜像导入 从OBS导入时使用自定义引擎 OBS obs:bucket:ListAllMybuckets(获取桶列表) obs:bucket:HeadBucket(获取桶元数据) obs:bucket:ListBucket(列举桶内对象) obs:bucket:GetBucketLocation(获取桶区域位置) obs:object:GetObject(获取对象内容、获取对象元数据) obs:object:GetObjectVersion(获取对象内容、获取对象元数据) obs:object:PutObject(PUT上传、POST上传、复制对象、追加写对象、初始化上传段任务、上传段、合并段) obs:object:DeleteObject(删除对象、批量删除对象) obs:object:DeleteObjectVersion(删除对象、批量删除对象) obs:object:ListMultipartUploadParts(列举已上传的段) obs:object:AbortMultipartUpload(取消多段上传任务) obs:object:GetObjectAcl(获取对象ACL) obs:object:GetObjectVersionAcl(获取对象ACL) obs:bucket:PutBucketAcl(设置桶ACL) obs:object:PutObjectAcl(设置对象ACL) 从OBS导入模型 模型转换指定OBS路径 表7 管理部署上线 业务场景 依赖的服务 依赖策略项 支持的功能 在线服务 LTS lts:logs:list(查询日志列表) 查询和展示LTS日志 OBS obs:bucket:GetBucketPolicy (获取桶策略) obs:bucket:HeadBucket (获取桶元数据) obs:bucket:ListAllMyBuckets (获取桶列表) obs:bucket:PutBucketPolicy (设置桶策略) obs:bucket:DeleteBucketPolicy (删除桶策略) 服务运行时容器挂载外部存储卷 批量服务 OBS obs:object:GetObject(获取对象内容、获取对象元数据) obs:object:PutObject(PUT上传、POST上传、复制对象、追加写对象、初始化上传段任务、上传段、合并段) obs:bucket:CreateBucket(创建桶) obs:bucket:ListBucket(列举桶内对象) obs:bucket:ListAllMyBuckets(获取桶列表) 创建批量服务,批量推理。 边缘服务 CES ces:metricData:list(查询指标数据) 查看服务的监控指标 IEF ief:deployment:delete(删除应用部署) 管理边缘服务 表8 管理数据集 业务场景 依赖的服务 依赖策略项 支持的功能 管理数据集和标注 OBS obs:bucket:ListBucket(列举桶内对象) obs:object:GetObject(获取对象内容、获取对象元数据) obs:object:PutObject(PUT上传、POST上传、复制对象、追加写对象、初始化上传段任务、上传段、合并段) obs:object:DeleteObject(删除对象、批量删除对象) obs:bucket:HeadBucket(获取桶元数据) obs:bucket:GetBucketAcl(获取桶ACL) obs:bucket:PutBucketAcl(设置桶ACL) obs:bucket:GetBucketPolicy(获取桶策略) obs:bucket:PutBucketPolicy(设置桶策略) obs:bucket:DeleteBucketPolicy(删除桶策略) obs:bucket:PutBucketCORS(设置桶的CORS配置、删除桶的CORS配置) obs:bucket:GetBucketCORS(获取桶的CORS配置) obs:object:PutObjectAcl(设置对象ACL) 管理OBS中的数据集 标注OBS数据 创建数据管理作业 管理表格数据集 DLI dli:database:displayAllDatabases dli:database:displayAllTables dli:table:describe_table 在数据集中管理DLI数据 管理表格数据集 DWS dws:openAPICluster:list dws:openAPICluster:getDetail 在数据集中管理DWS数据 管理表格数据集 MRS mrs:job:submit mrs:job:list mrs:cluster:list mrs:cluster:get 在数据集中管理MRS数据 智能标注 ModelArts modelarts:service:list modelarts:model:list modelarts:model:get modelarts:model:create modelarts:trainJobInnerModel:list modelarts:workspace:get modelarts:workspace:list 使用智能标注 团队标注 IAM iam:projects:listProjects(查询租户项目) iam:users:listUsers(查询用户列表) iam:agencies:createAgency(创建委托) iam:quotas:listQuotasForProject(查询指定项目的配额) 管理标注团队 表9 资源管理 业务场景 依赖的服务 依赖策略项 支持的功能 资源池管理 BSS bss:coupon:view bss:order:view bss:balance:view bss:discount:view bss:renewal:view bss:bill:view bss:contract:update bss:order:pay bss:unsubscribe:update bss:renewal:update bss:order:update 资源池的创建、续费、退订等与计费相关的功能。依赖权限需要配置在IAM项目视图中。 CCE cce:cluster:list cce:cluster:get 获取CCE集群列表、集群详情、集群证书等信息。依赖权限需要配置在IAM项目视图中。 KMS kms:cmk:list kms:cmk:getMaterial 获取用户创建的密钥对列表信息。依赖权限需要配置在IAM项目视图中。 AOM aom:metric:get 获取资源池的监控数据。依赖权限需要配置在IAM项目视图中。 OBS obs:bucket:ListAllMybuckets obs:bucket:HeadBucket obs:bucket:ListBucket obs:bucket:GetBucketLocation obs:object:GetObject obs:object:PutObject obs:object:DeleteObject obs:object:DeleteObjectVersion 获取AI诊断日志。依赖权限需要配置在IAM项目视图中。 ECS ecs:availabilityZones:list 查询可用区列表。依赖权限需要配置在IAM项目视图中。 网络管理 VPC vpc:routes:create vpc:routes:list vpc:routes:get vpc:routes:delete vpc:peerings:create vpc:peerings:accept vpc:peerings:get vpc:peerings:delete vpc:routeTables:update vpc:routeTables:get vpc:routeTables:list vpc:vpcs:create vpc:vpcs:list vpc:vpcs:get vpc:vpcs:delete vpc:subnets:create vpc:subnets:get vpc:subnets:delete vpcep:endpoints:list vpcep:endpoints:create vpcep:endpoints:delete vpcep:endpoints:get vpc:ports:create vpc:ports:get vpc:ports:update vpc:ports:delete vpc:networks:create vpc:networks:get vpc:networks:update vpc:networks:delete ModelArts网络资源创建和删除、VPC网络打通。依赖权限需要配置在IAM项目视图中。 SFS Turbo sfsturbo:shares:addShareNic sfsturbo:shares:deleteShareNic sfsturbo:shares:showShareNic sfsturbo:shares:listShareNics 用户的网络和SFS Turbo资源打通。依赖权限需要配置在IAM项目视图中。 边缘资源池 IEF ief:node:list ief:group:get ief:application:list ief:application:get ief:node:listNodeCert ief:node:get ief:IEFInstance:get ief:deployment:list ief:group:listGroupInstanceState ief:IEFInstance:list ief:deployment:get ief:group:list 边缘池增删改查管理
  • Step6 预测结果 在“在线服务”页面,单击在线服务名称,进入服务详情页面。 单击“预测”页签,请求类型选择“multipart/form-data”,请求参数填写“image”,单击“上传”按钮上传示例图片,然后单击“预测”。 预测完成后,预测结果显示区域将展示预测结果,根据预测结果内容,可识别出此图片的数字是“2”。 本案例中使用的MNIST是比较简单的用做demo的数据集,配套算法也是比较简单的用于教学的神经网络算法。这样的数据和算法生成的模型仅适用于教学模式,并不能应对复杂的预测场景。即生成的模型对预测图片有一定范围和要求,预测图片必须和训练集中的图片相似(黑底白字)才可能预测准确。 图8 示例图片 图9 预测结果展示
  • Step3 创建OBS桶并上传文件 将上一步中的数据和代码文件、推理代码文件与推理配置文件,从本地上传到OBS桶中。在ModelArts上运行训练作业时,需要从OBS桶中读取数据和代码文件。 登录OBS管理控制台,按照如下示例创建OBS桶和文件夹。创建OBS桶和文件夹的操作指导请参见创建桶和新建文件夹。 {OBS桶} # OBS对象桶,用户可以自定义名称,例如:test-modelarts-xx -{OBS文件夹} # OBS文件夹,自定义名称,此处举例为pytorch - mnist-data # OBS文件夹,用于存放训练数据集,可以自定义名称,此处举例为mnist-data - mnist-code # OBS文件夹,用于存放训练脚本train.py,可以自定义名称,此处举例为mnist-code - infer # OBS文件夹,用于存放推理脚本customize_service.py和配置文件config.json - mnist-output # OBS文件夹,用于存放训练输出模型,可以自定义名称,此处举例为mnist-output 创建的OBS桶所在区域和后续使用ModelArts必须在同一个区域Region,否则会导致训练时找不到OBS桶。具体操作可参见查看OBS桶与ModelArts是否在同一区域。 创建OBS桶时,桶的存储类别请勿选择“归档存储”,归档存储的OBS桶会导致模型训练失败。 上传Step1 准备训练数据下载的MNIST数据集压缩包文件到OBS的“mnist-data”文件夹中。上传文件至OBS的操作指导请参见上传对象。 上传数据到OBS中时,请不要加密,否则会导致训练失败。 文件无需解压,直接上传压缩包至OBS中即可。 上传训练脚本“train.py”到“mnist-code”文件夹中。 上传推理脚本“customize_service.py”和推理配置文件“config.json”到“mnist-code”的“infer”文件中。
  • Step1 准备训练数据 本案例使用的数据是MNIST数据集,您可以在浏览器中搜索“MNIST数据集”下载如图3所示的4个文件。 图3 MNIST数据集 “train-images-idx3-ubyte.gz”:训练集的压缩包文件,共包含60000个样本。 “train-labels-idx1-ubyte.gz”:训练集标签的压缩包文件,共包含60000个样本的类别标签。 “t10k-images-idx3-ubyte.gz”:验证集的压缩包文件,共包含10000个样本。 “t10k-labels-idx1-ubyte.gz”:验证集标签的压缩包文件,共包含10000个样本的类别标签。
  • 操作流程 开始使用如下样例前,请务必按准备工作指导完成必要操作。 Step1 准备训练数据:下载MNIST数据集。 Step2 准备训练文件和推理文件:编写训练与推理代码。 Step3 创建OBS桶并上传文件:创建OBS桶和文件夹,并将数据集和训练脚本,推理脚本,推理配置文件上传到OBS中。 Step4 创建训练作业:进行模型训练。 Step5 推理部署:训练结束后,将生成的模型导入ModelArts用于创建AI应用,并将AI应用部署为在线服务。 Step6 预测结果:上传一张手写数字图片,发起预测请求获取预测结果。 Step7 清除资源:运行完成后,停止服务并删除OBS中的数据,避免不必要的扣费。
  • 准备工作 已注册华为账号并开通华为云,且在使用ModelArts前检查账号状态,账号不能处于欠费或冻结状态。 配置委托访问授权 ModelArts使用过程中涉及到OBS、SWR、IEF等服务交互,首次使用ModelArts需要用户配置委托授权,允许访问这些依赖服务。 使用华为云账号登录ModelArts管理控制台,在左侧导航栏单击“全局配置”,进入“全局配置”页面,单击“添加授权”。 在弹出的“访问授权”窗口中, 授权对象类型:所有用户 委托选择:新增委托 权限配置:普通用户 选择完成后勾选“我已经详细阅读并同意《ModelArts服务声明》”,然后单击“创建”。 图1 配置委托访问授权 完成配置后,在ModelArts控制台的全局配置列表,可查看到此账号的委托配置信息。 图2 查看委托配置信息
  • Notebook中安装依赖包并保存镜像 在后续训练步骤中,训练作业启动命令中包含sh scripts/install.sh,该命令用于git clone完整的代码包和安装必要的依赖包,每次启动训练作业时会执行该命令安装。 您可以在Notebook中导入完代码之后,在Notebook运行sh scripts/install.sh命令提前下载完整代码包和安装依赖包,然后使用保存镜像功能。后续训练作业使用新保存的镜像,无需每次启动训练作业时再次下载代码包以及安装依赖包,可节约训练作业启动时间。 由于训练启动命令也会执行sh scripts/install.sh安装依赖包,因此Notebook保存镜像为可选操作。
  • 创建Notebook 创建开发环境Notebook实例,具体操作步骤请参考创建Notebook实例。 镜像选择已注册的自定义镜像,资源类型选择创建好的专属资源池,规格推荐选择“Ascend: 8*ascend-snt9b”。 图1 Notebook中选择自定义镜像与规格 存储配置选择“弹性文件服务SFS”,并且选择已创建的SFS Turbo实例。如果该SFS Turbo多人共用,则推荐用户编辑“子目录挂载”,创建自己的子目录进行划分。 图2 Notebook中选择弹性文件服务
  • Step3 上传代码包和权重文件 上传安装依赖软件推理代码AscendCloud-LLM-6.3.906-xxx.zip和算子包AscendCloud-OPP-6.3.906-xxx.zip到主机中,包获取路径请参见表2。 将权重文件上传到DevServer机器中。权重文件的格式要求为Huggface格式。开源权重文件获取地址请参见表3。 如果使用模型训练后的权重文件进行推理,需要上传训练后的权重文件和开源的原始权重文件。模型训练及训练后的权重文件转换操作可以参考相关文档章节中提供的模型训练文档。
  • Step5 进入容器安装推理依赖软件 通过容器名称进入容器中。默认使用ma-user用户执行后续命令。 docker exec -it ${container_name} bash 上传代码和权重到宿主机时使用的是root用户,此处需要执行如下命令统一文件属主为ma-user用户。 #统一文件属主为ma-user用户 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 解压算子包并将相应算子安装到环境中。 unzip AscendCloud-OPP-*.zip pip install ascend_cloud_ops-1.0.0-py3-none-any.whl pip install cann_ops-1.0.0-py3-none-any.whl 解压软件推理代码并安装依赖包。安装过程需要连接互联网git clone,请确保容器环境可以访问公网。 unzip AscendCloud-LLM-*.zip cd llm_inference/ascend_vllm bash build.sh 运行完后,会安装适配昇腾的vllm-0.4.2版本。
  • Step6 启动推理服务 配置需要使用的NPU卡编号。例如:实际使用的是第1张卡,此处填写“0”。 export ASCEND_RT_VISIBLE_DEVICES=0 如果启动服务需要使用多张卡,例如:实际使用的是第1张和第2张卡,此处填写为“0,1”,以此类推。 export ASCEND_RT_VISIBLE_DEVICES=0,1 NPU卡编号可以通过命令npu-smi info查询。 配置环境变量。 export DEFER_DECODE=1 # 是否使用推理与Token解码并行;默认值为1表示开启并行,取值为0表示关闭并行。开启该功能会略微增加首Token时间,但可以提升推理吞吐量。 export DEFER_MS=10 # 延迟解码时间,默认值为10,单位为ms。将Token解码延迟进行的毫秒数,使得当次Token解码能与下一次模型推理并行计算,从而减少总推理时延。该参数需要设置环境变量DEFER_DECODE=1才能生效。 export USE_VOCAB_PARALLEL=1 # 是否使用词表并行;默认值为1表示开启并行,取值为0表示关闭并行。对于词表较小的模型(如llama2系模型),关闭并行可以减少推理时延,对于词表较大的模型(如qwen系模型),开启并行可以减少显存占用,以提升推理吞吐量。 export USE_PFA_HIGH_PRECISION_MODE=1 # PFA算子是否使用高精度模式;默认值为0表示不开启。针对Qwen2-7B模型,必须开启此配置,否则精度会异常;其他模型不建议开启,因为性能会有损失。 如果需要增加模型量化功能,启动推理服务前,先参考使用AWQ量化或使用SmoothQuant量化章节对模型做量化处理。 启动服务与请求。此处提供vLLM服务API接口启动和OpenAI服务API接口启动2种方式。详细启动服务与请求方式参考:https://docs.vllm.ai/en/latest/getting_started/quickstart.html。 以下服务启动介绍的是在线推理方式,离线推理请参见https://docs.vllm.ai/en/latest/getting_started/quickstart.html#offline-batched-inference。 方式一:通过OpenAI服务API接口启动服务 在llm_inference/ascend_vllm/vllm-gpu-0.4.2目录下通OpenAI服务API接口启动服务,具体操作命令如下,可以根据参数说明修改配置。 python -m vllm.entrypoints.openai.api_server --model ${container_model_path} \ --max-num-seqs=256 \ --max-model-len=4096 \ --max-num-batched-tokens=4096 \ --dtype=float16 \ --tensor-parallel-size=1 \ --block-size=128 \ --host=${docker_ip} \ --port=8080 \ --gpu-memory-utilization=0.9 \ --trust-remote-code 方式二:通过vLLM服务API接口启动服务 在llm_inference/ascend_vllm/vllm-gpu-0.4.2目录下通过vLLM服务API接口启动服务,具体操作命令如下,API Server的命令相关参数说明如下,可以根据参数说明修改配置。 python -m vllm.entrypoints.api_server --model ${container_model_path} \ --max-num-seqs=256 \ --max-model-len=4096 \ --max-num-batched-tokens=4096 \ --dtype=float16 \ --tensor-parallel-size=1 \ --block-size=128 \ --host=${docker_ip} \ --port=8080 \ --gpu-memory-utilization=0.9 \ --trust-remote-code 推理服务基础参数说明如下: --model ${container_model_path}:模型地址,模型格式是HuggingFace的目录格式。即Step3 上传代码包和权重文件上传的HuggingFace权重文件存放目录。若使用了量化功能,则使用推理模型量化章节转换后的权重。 --max-num-seqs:最大同时处理的请求数,超过后拒绝访问。 --max-model-len:推理时最大输入+最大输出tokens数量,输入超过该数量会直接返回。max-model-len的值必须小于config.json文件中的"seq_length"的值,否则推理预测会报错。config.json存在模型对应的路径下,例如:${container_work_dir}/chatglm3-6b/config.json。 --max-num-batched-tokens:prefill阶段,最多会使用多少token,必须大于或等于--max-model-len,推荐使用4096或8192。 --dtype:模型推理的数据类型。支持FP16和BF16数据类型推理。float16表示FP16,bfloat16表示BF16。 --tensor-parallel-size:模型并行数。取值需要和启动的NPU卡数保持一致,可以参考1。此处举例为1,表示使用单卡启动服务。 --block-size:kv-cache的block大小,推荐设置为128。当前仅支持64和128。 --host=${docker_ip}:服务部署的IP,${docker_ip}替换为宿主机实际的IP地址。 --port:服务部署的端口。 --gpu-memory-utilization:NPU使用的显存比例,复用原vLLM的入参名称,默认为0.9。 --trust-remote-code:是否相信远程代码。 高阶参数说明: --enable-prefix-caching:如果prompt的公共前缀较长或者多轮对话场景下推荐使用prefix-caching特性。在推理服务启动脚本中添加此参数表示使用,不添加表示不使用。 --quantization:推理量化参数。当使用量化功能,则在推理服务启动脚本中增加该参数,若未使用量化功能,则无需配置。根据使用的量化方式配置,可选择awq或smoothquant方式。 --speculative-model ${container_draft_model_path}:投机草稿模型地址,模型格式是HuggingFace的目录格式。即Step3 上传代码包和权重文件上传的HuggingFace权重文件存放目录。投机草稿模型为与--model入参同系列,但是权重参数远小于--model指定的模型。若未使用投机推理功能,则无需配置。 --num-speculative-tokens:投机推理小模型每次推理的token数。若未使用投机推理功能,则无需配置。参数--num-speculative-tokens需要和--speculative-model ${container_draft_model_path}同时使用。 --use-v2-block-manager:vllm启动时使用V2版本的BlockSpaceManger来管理KVCache索引,若不使用该功能,则无需配置。注意:若使用投机推理功能,必须开启此参数。 服务启动后,会打印如下类似信息。 server launch time cost: 15.443044185638428 s INFO: Started server process [2878]INFO: Waiting for application startup. INFO: Application startup complete. INFO: Uvicorn running on http://0.0.0.0:8080 (Press CTRL+C to quit)
  • Step4 启动容器镜像 启动容器镜像前请先按照参数说明修改${}中的参数。 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 \ -v /etc/localtime:/etc/localtime \ -v /usr/local/Ascend/driver:/usr/local/Ascend/driver \ -v /etc/ascend_install.info:/etc/ascend_install.info \ --device=/dev/davinci_manager \ --device=/dev/devmm_svm \ --device=/dev/hisi_hdc \ -v /var/log/npu/:/usr/slog \ -v /usr/local/sbin/npu-smi:/usr/local/sbin/npu-smi \ -v /sys/fs/cgroup:/sys/fs/cgroup:ro \ -v ${dir}:${container_work_dir} \ --net=host \ --name ${container_name} \ ${image_id} \ /bin/bash 参数说明: --device=/dev/davinci0,..., --device=/dev/davinci7:挂载NPU设备,示例中挂载了8张卡davinci0~davinci7。 -v ${dir}:${container_work_dir} 代表需要在容器中挂载宿主机的目录。宿主机和容器使用不同的大文件系统,dir为宿主机中文件目录,${container_work_dir}为要挂载到的容器中的目录。为方便两个地址可以相同。 容器不能挂载到/home/ma-user目录,此目录为ma-user用户家目录。如果容器挂载到/home/ma-user下,拉起容器时会与基础镜像冲突,导致基础镜像不可用。 driver及npu-smi需同时挂载至容器。 不要将多个容器绑到同一个NPU上,会导致后续的容器无法正常使用NPU功能。 --name ${container_name}:容器名称,进入容器时会用到,此处可以自己定义一个容器名称。 {image_id} 为docker镜像的ID,在宿主机上可通过docker images查询得到。
  • Step1 检查环境 SSH登录机器后,检查NPU设备检查。运行如下命令,返回NPU设备信息。 npu-smi info # 在每个实例节点上运行此命令可以看到NPU卡状态 npu-smi info -l | grep Total # 在每个实例节点上运行此命令可以看到总卡数 npu-smi info -t board -i 1 | egrep -i "software|firmware" #查看驱动和固件版本 如出现错误,可能是机器上的NPU设备没有正常安装,或者NPU镜像被其他容器挂载。请先正常安装固件和驱动,或释放被挂载的NPU。 驱动版本要求是23.0.5。如果不符合要求请参考安装固件和驱动章节升级驱动。 检查docker是否安装。 docker -v #检查docker是否安装 如尚未安装,运行以下命令安装docker。 yum install -y docker-engine.aarch64 docker-engine-selinux.noarch docker-runc.aarch64 配置IP转发,用于容器内的网络访问。执行以下命令查看net.ipv4.ip_forward配置项的值,如果为1,可跳过此步骤。 sysctl -p | grep net.ipv4.ip_forward 如果net.ipv4.ip_forward配置项的值不为1,执行以下命令配置IP转发。 sed -i 's/net\.ipv4\.ip_forward=0/net\.ipv4\.ip_forward=1/g' /etc/sysctl.conf sysctl -p | grep net.ipv4.ip_forward
  • 预训练数据集预处理参数说明 预训练数据集预处理脚本scripts/llama2/1_preprocess_data.sh 中的具体参数如下: --input:原始数据集的存放路径。 --output-prefix:处理后的数据集保存路径+数据集名称(例如:moss-003-sft-data)。 --tokenizer-type:tokenizer的类型,可选项有['BertWordPieceLowerCase','BertWordPieceCase','GPT2BPETokenizer','PretrainedFromHF'],一般为PretrainedFromHF。 --tokenizer-name-or-path:tokenizer的存放路径,与HF权重存放在一个文件夹下。 --seq-length:要处理的最大seq length。 --workers:设置数据处理使用执行卡数量 / 启动的工作进程数。 --log-interval:是一个用于设置日志输出间隔的参数,表示输出日志的频率。在训练大规模模型时,可以通过设置这个参数来控制日志的输出。 输出数据预处理结果路径: 训练完成后,以 llama2-13b 为例,输出数据路径为:/home/ma-user/ws/llm_train/AscendSpeed/processed_for_input/llama2-13b/data/pretrain/
  • 用户自定义执行数据处理脚本修改参数说明 若用户要自定义数据处理脚本并且单独执行,同样以 llama2 为例。 方法一:用户可打开scripts/llama2/1_preprocess_data.sh脚本,将执行的python命令复制下来,修改环境变量的值,进入到 /home/ma-user/ws/llm_train/AscendSpeed/ModelLink 路径中,再执行python命令。 方法二:用户在Notebook中直接编辑scripts/llama2/1_preprocess_data.sh脚本,自定义环境变量的值,并在脚本的首行中添加 cd /home/ma-user/ws/llm_train/AscendSpeed/ModelLink 命令,随后运行该脚本。 其中环境变量详细介绍如下: 表1 数据预处理中的环境变量 环境变量 示例 参数说明 RUN_TYPE pretrain、sft、lora 数据预处理区分: 预训练场景下数据预处理,默认参数:pretrain 微调场景下数据预处理,默认:sft / lora ORIGINAL_TRAIN_DATA_PATH /home/ma-user/ws/llm_train/AscendSpeed/training_data/${用户自定义的数据集路径和名称} 原始数据集的存放路径。 TOKENIZER_PATH /home/ma-user/ws/llm_train/AscendSpeed/tokenizers/llama2-13b tokenizer的存放路径,与HF权重存放在一个文件夹下。请根据实际规划修改。 PROCESSED_DATA_PREFIX /home/ma-user/ws/llm_train/AscendSpeed/processed_for_input/llama2-13b/data 处理后的数据集保存路径+数据集前缀 TOKENIZER_TYPE PretrainedFromHF 可选项有:['BertWordPieceLowerCase','BertWordPieceCase','GPT2BPETokenizer','PretrainedFromHF'],一般为 PretrainedFromHF 。 SEQ_LEN 4096 要处理的最大seq length。脚本会检测超出SEQ_LEN长度的数据,并打印log。
  • 微调数据集预处理参数说明 微调包含SFT和LoRA微调。数据集预处理脚本参数说明如下: --input:原始数据集的存放路径。 --output-prefix:处理后的数据集保存路径+数据集名称(例如:moss-003-sft-data) --tokenizer-type:tokenizer的类型,可选项有['BertWordPieceLowerCase','BertWordPieceCase','GPT2BPETokenizer','PretrainedFromHF'],一般为PretrainedFromHF。 --tokenizer-name-or-path:tokenizer的存放路径,与HF权重存放在一个文件夹下。 --handler-name:生成数据集的用途,这里是生成的指令数据集,用于微调。 GeneralPretrainHandler:默认。用于预训练时的数据预处理过程中,将数据集根据key值进行简单的过滤。 GeneralInstructionHandler:用于sft、lora微调时的数据预处理过程中,会对数据集full_prompt中的user_prompt进行mask操作。 --seq-length:要处理的最大seq length。 --workers:设置数据处理使用执行卡数量 / 启动的工作进程数。 --log-interval:是一个用于设置日志输出间隔的参数,表示输出日志的频率。在训练大规模模型时,可以通过设置这个参数来控制日志的输出。 输出数据预处理结果路径: 训练完成后,以 llama2-13b 为例,输出数据路径为:/home/ma-user/ws/llm_train/AscendSpeed/processed_for_input/llama2-13b/data/fintune/
  • ModelArts依赖的OBS权限自定义策略样例 如下示例为ModelArts依赖OBS服务的最小化权限项,包含OBS桶和OBS对象的权限。授予示例中的权限您可以通过ModelArts正常访问OBS不受限制。 { "Version": "1.1", "Statement": [ { "Action": [ "obs:bucket:ListAllMybuckets", "obs:bucket:HeadBucket", "obs:bucket:ListBucket", "obs:bucket:GetBucketLocation", "obs:object:GetObject", "obs:object:GetObjectVersion", "obs:object:PutObject", "obs:object:DeleteObject", "obs:object:DeleteObjectVersion", "obs:object:ListMultipartUploadParts", "obs:object:AbortMultipartUpload", "obs:object:GetObjectAcl", "obs:object:GetObjectVersionAcl", "obs:bucket:PutBucketAcl", "obs:object:PutObjectAcl" ], "Effect": "Allow" } ] }
  • ModelArts开发环境使用权限的自定义策略样例 { "Version": "1.1", "Statement": [ { "Effect": "Allow", "Action": [ "modelarts:notebook:list", "modelarts:notebook:create" , "modelarts:notebook:get" , "modelarts:notebook:update" , "modelarts:notebook:delete" , "modelarts:notebook:action" , "modelarts:notebook:access" ] } ] }
  • auto-completion命令详解 支持自动补全模式,在终端中自动完成ma-advisor命令补全,支持“bash(默认)/zsh/fish”。 ma-advisor auto-completion Bash 图15 提示 根据提示,在terminal中输入对应的命令即可开启在bash中对MA-Advisor相关命令自动补全功能,例如,执行如下命令后,即可在bash命令行中,后续执行ma-advisor相关命令时,使用Tab键即可自动补全: eval "$(_MA_ADVISOR_COMPLETE=bash_source ma-advisor)"
  • query命令详解 timeline:单独对推理、训练timeline性能数据进行单算子详情查询,根据算子名称以及任务类型(AI_CPU|AI_CORE)进行查询,算子查询统计信息输出到运行终端,并在执行目录下的"log/ma_advisor.xlsx"文件中给出相关算子详细信息。 ma-advisor query timeline --data-dir='/temp/profiling_dir' --op_name='Mul' --task_type='AI_CPU'
共100000条