云服务器内容精选

  • 操作指引 图1 模型使用操作指引 表1 模型使用流程详解 序号 流程环节 说明 1 基于微调数据集进行模型微调 创建微调数据集 收藏预置微调数据集 对于需要个性化定制模型或者在特定任务上追求更高性能表现的场景,往往需要对大语言模型进行模型微调以适应特定任务。微调数据集是模型微调的基础,通过在微调数据集上进行训练从而获得改进后的新模型。 创建模型微调任务 模型微调是指调整大型语言模型的参数以适应特定任务的过程,适用于需要个性化定制模型或者在特定任务上追求更高性能表现的场景。这是通过在与任务相关的微调数据集上训练模型来实现的,所需的微调量取决于任务的复杂性和数据集的大小。在深度学习中,微调用于改进预训练模型的性能。 2 生成模型服务 将已有模型部署为模型服务 自建模型并发布为模型服务 模型需要部署成功后才可正式提供模型服务。部署成功后,可以对模型服务进行模型调测,并支持在创建Agent时使用或通过模型调用接口调用。 3 调测模型 通过调测模型,可检验模型的准确性、可靠性及反应效果,发现模型中存在的问题和局限性,确保模型能够在实际应用中正常运行,并且能够准确地预测和处理数据。
  • 出错的任务如何卡在运行中状态 创建训练作业时,启动命令末尾新增"|| sleep 5h",并启动训练任务,例如下方的cmd为您的启动命令: cmd || sleep 5h 如果训练失败,则会执行sleep命令,此时可通过Cloud Shell登录容器镜像中调试。 在Cloud Shell中调试多节点训练作业时,需要在Cloud Shell中切换work0、work1来实现对不同节点下发启动命令,否则任务会处于等待其他节点的状态。
  • 如何防止Cloud Shell的Session断开 如果需要长时间运行某一个任务,为避免在期间连接断开导致任务失败,可通过使用screen命令使得任务在远程终端窗口运行。 如果镜像中未安装screen,则执行“apt-get install screen”安装。 创建screen终端。 # 使用 -S 创建一个叫name的screen终端 screen -S name 显示已创建的screen终端。 screen -ls There are screens on: 2433.pts-3.linux (2013年10月20日 16时48分59秒) (Detached) 2428.pts-3.linux (2013年10月20日 16时48分05秒) (Detached) 2284.pts-3.linux (2013年10月20日 16时14分55秒) (Detached) 2276.pts-3.linux (2013年10月20日 16时13分18秒) (Detached) 4 Sockets in /var/run/screen/S-root. 连接“screen_id”为“2276”的screen终端。 screen -r 2276 按下“Ctrl”+“a”+“d”键离开screen终端。离开后,screen会话仍将是活跃的,之后可以随时重新连接。 更多Screen使用说明可参考Screen User's Manual。
  • 如何查看训练作业日志 在训练作业详情页,训练日志窗口提供日志预览、日志下载、日志中搜索关键字、系统日志过滤能力。 预览 系统日志窗口提供训练日志预览功能,如果训练作业有多个节点,则支持查看不同计算节点的日志,通过右侧下拉框可以选择目标节点预览。 图4 查看不同计算节日志 当日志文件过大时,系统日志窗口仅加载最新的部分日志,并在日志窗口上方提供全量日志访问链接。打开该链接可在新页面查看全部日志。 图5 查看全量日志 如果全部日志超过500M,可能会引起浏览页面卡顿,建议您直接下载日志查看。 预览链接在生成后的一小时内,支持任何人打开并查看。您可以分享链接至他人。 请注意日志中不能包含隐私内容,否则会造成信息泄露。 下载 训练日志仅保留30天,超过30天会被清理。如果用户需要永久保存日志,请单击系统日志窗口右上角下载按钮下载日志至本地保存,支持批量下载多节点日志。用户也可以在创建训练作业时打开永久保存日志按钮,保存训练日志至指定OBS路径。 针对使用Ascend规格创建的训练作业,部分系统日志暂不支持直接在训练日志窗口下载,请在创建训练作业时指定OBS路径用于保存训练日志。 图6 下载日志 搜索关键字 用户可以在系统日志右上角的搜索框搜索关键字,如图7所示。 图7 搜索关键字 系统支持高亮关键字并实现搜索结果间的跳转。搜索功能仅支持搜索当前页面加载的日志,如果日志加载不全(请关注页面提示)则需要下载或者通过打开全量日志访问链接进行搜索。全量日志访问链接打开的新页面可以通过Ctrl+F进行搜索。 系统日志过滤 图8 系统日志复选框 如果勾选了系统日志复选框,则日志中呈现系统日志和用户日志。如果去勾选,则只显示用户日志。
  • Ascend场景日志说明 使用Ascend资源运行训练作业时,会产生Ascend相关日志。Ascend训练场景下会生成device日志、plog日志、proc log单卡训练日志、MindSpore日志、普通日志。 其中,Ascend训练场景下的普通日志包括训练进程日志、pip-requirement.txt安装日志、ModelArts平台日志、ma-pre-start日志和davincirun日志。 Ascend日志结构举例说明如下: obs://dgg-test-user/snt9-test-cases/log-out/ # 作业日志路径 ├──modelarts-job-9ccf15f2-6610-42f9-ab99-059ba049a41e ├── ascend ├── process_log ├── rank_0 ├── plog # plog日志 ... ├── device-0 # device日志 ... ├── mindspore # MindSpore日志 ├──modelarts-job-95f661bd-1527-41b8-971c-eca55e513254-worker-0.log # 普通日志 ├──modelarts-job-95f661bd-1527-41b8-971c-eca55e513254-proc-rank-0-device-0.txt # proc log单卡训练日志 表2 Ascend场景下日志说明 日志类型 日志说明 日志文件名 device日志 HOST侧用户进程,在DEVICE侧产生的AICPU、HCCP的日志,回传到HOST侧(训练容器)。 如果出现如下情况,则device日志会获取不到。 节点异常重启 被主动停止的节点 在训练进程结束后,该日志会生成到训练容器中。其中,使用MindSpore预置框架训练的device日志会自动上传到OBS,使用其他预置框架和 自定义镜像 训练的device日志如果需要自动上传到OBS,则需要在代码中配置ASCEND_PRO CES S_ LOG _PATH,具体请参考如下示例。 # set npu plog env ma_vj_name=`echo ${MA_VJ_NAME} | sed 's:ma-job:modelarts-job:g'` task_name="worker-${VC_TASK_INDEX}" task_plog_path=${MA_LOG_DIR}/${ma_vj_name}/${task_name} mkdir -p ${task_plog_path} export ASCEND_PROCESS_LOG_PATH=${task_plog_path} “~/ascend/log/device-{device-id}/device-{pid}_{timestamp}.log” 其中,pid是HOST侧用户进程号。 样例: device-166_20220718191853764.log plog日志 HOST侧用户进程,在HOST侧产生的日志(例如:ACL /GE)。 plog日志会生成到训练容器中。其中,使用MindSpore预置框架训练的plog日志会自动上传到OBS,使用自定义镜像训练的plog日志如果需要自动上传到OBS,则需要在代码中配置ASCEND_PROCESS_LOG_PATH,具体请参考如下示例。 # set npu plog env ma_vj_name=`echo ${MA_VJ_NAME} | sed 's:ma-job:modelarts-job:g'` task_name="worker-${VC_TASK_INDEX}" task_plog_path=${MA_LOG_DIR}/${ma_vj_name}/${task_name} mkdir -p ${task_plog_path} export ASCEND_PROCESS_LOG_PATH=${task_plog_path} “~/ascend/log/plog/plog-{pid}_{timestamp}.log” 其中,pid是HOST侧用户进程号。 样例:plog-166_20220718191843620.log proc log proc log是单卡训练日志重定向文件,方便用户快速定位对应计算节点的日志。使用自定义镜像训练的作业不涉及proc log;使用预置框架训练的proc log日志会生成到训练容器中,且自动保存到OBS。 “[modelarts-job-uuid]-proc-rank-[rank id]-device-[device logic id].txt” device id为本次训练作业的NPU卡编号,取值单卡为0,8卡为0~7。 例如:Ascend规格为 8*Snt9时,device id取值为0~7;Ascend规格为 1*Snt9时,device id取值为0。 rank id为本次训练作业的全局NPU卡编号,取值为0~计算节点数*卡数-1,单个计算节点下,rank id与device id取值相同。 样例: modelarts-job-95f661bd-1527-41b8-971c-eca55e513254-proc-rank-0-device-0.txt MindSpore日志 使用MindSpore+Ascend训练时会产生单独的MindSpore日志。 MindSpore日志会生成到训练容器中。其中,使用MindSpore预置框架训练的plog日志会自动上传到OBS,使用自定义镜像训练的plog日志如果需要自动上传到OBS,则需要在代码中配置ASCEND_PROCESS_LOG_PATH,具体请参考如下示例。 # set npu plog env ma_vj_name=`echo ${MA_VJ_NAME} | sed 's:ma-job:modelarts-job:g'` task_name="worker-${VC_TASK_INDEX}" task_plog_path=${MA_LOG_DIR}/${ma_vj_name}/${task_name} mkdir -p ${task_plog_path} export ASCEND_PROCESS_LOG_PATH=${task_plog_path} MindSpore的日志介绍请参见MindSpore官网。 普通训练日志 普通训练日志会生成到训练容器的“/home/ma-user/modelarts/log”目录中,且自动上传到OBS。普通训练日志的类型如下所示。 ma-pre-start日志(Ascend场景特有):如果用户有定义ma-pre-start脚本,会产生该脚本执行日志。 davincirun日志(Ascend场景特有):Ascend训练进程通过davincirun.py文件启动,该启动文件产生的日志。 训练进程日志:用户训练代码的标准输出。 pip-requirement.txt安装日志:如果用户有定义pip-requirement.txt文件,会产生pip包安装日志。 ModelArts平台日志:ModelArts平台产生的系统日志,主要用于运维人员定位平台问题。 合并输出在日志文件modelarts-job-[job id]-[task id].log中。 task id表示计算节点id,单节点时取值为worker-0,多节点时取值为worker-0、worker-1、...worker-{n-1},n为计算节点个数。 样例: modelarts-job-95f661bd-1527-41b8-971c-eca55e513254-worker-0.log
  • 训练日志的时效性 从日志产生的时效性上可以分为以下3种情况: 实时日志:训练作业实时运行时产生,在ModelArts训练作业详情页面上可以查看。 历史日志:训练作业结束后,可以在ModelArts训练作业详情页面上查看历史日志,ModelArts系统自动保存30天。 永久日志:转存到OBS桶中的训练日志,在创建训练作业时,打开永久保存日志开关设置作业日志路径即可将日志转存至OBS路径。Ascend训练场景下,默认要求填写作业日志在OBS的存放路径,其他资源的训练场景下,永久保存日志开关需要用户手动开启。 图2 开启永久保存日志开关 实时日志和历史日志都是标准日志输出,内容上没有区别。Ascend训练场景下,永久日志中会包含Ascend日志,这部分日志内容在ModelArts界面上看不到。
  • 普通日志说明 普通日志中包含训练进程日志、pip-requirement.txt安装日志和ModelArts Standard平台日志。 表1 普通日志类型 日志类型 说明 训练进程日志 用户训练代码的标准输出。 pip-requirement.txt安装日志 如果用户有定义pip-requirement.txt文件,会产生pip包安装日志。 ModelArts平台日志 ModelArts平台产生的系统日志,主要用于运维人员定位平台问题。 普通日志的文件格式如下,其中task id为训练作业中的节点id。 统一日志格式:modelarts-job-[job id]-[task id].log 样例:log/modelarts-job-95f661bd-1527-41b8-971c-eca55e513254-worker-0.log 单机训练作业只会生成一个日志文件,单机作业的task id默认为worker-0。 分布式场景下有多个节点日志文件并存,通过task id区分不同节点,例如:worker-0,worker-1等。 训练进程日志、“pip-requirement.txt”安装日志和ModelArts平台日志都包含在普通日志文件“modelarts-job-[job id]-[task id].log”中。 ModelArts平台日志可以通过关键字在训练的普通日志文件“modelarts-job-[job id]-[task id].log”中筛查,筛查关键字有:[“ModelArts Service Log]”或“Platform=ModelArts-Service”。 类型一:[ModelArts Service Log] xxx [ModelArts Service Log][init] download code_url: s3://dgg-test-user/snt9-test-cases/mindspore/lenet/ 类型二:time=“xxx” level=“xxx” msg=“xxx” file=“xxx” Command=xxx Component=xxx Platform=xxx time="2021-07-26T19:24:11+08:00" level=info msg="start the periodic upload task, upload period = 5 seconds " file="upload.go:46" Command=obs/upload Component=ma-training-toolkit Platform=ModelArts-Service
  • 训练日志定义 训练日志用于记录训练作业运行过程和异常信息,为快速定位作业运行中出现的问题提供详细信息。用户代码中的标准输出、标准错误信息会在训练日志中呈现。在ModelArts中训练作业遇到问题时,可首先查看日志,多数场景下的问题可以通过日志报错信息直接定位。 训练日志包括普通训练日志和Ascend相关日志。 普通日志说明:当使用Ascend之外的资源训练时仅产生普通训练日志,普通日志中包含训练进程日志、pip-requirement.txt安装日志和ModelArts平台日志。 Ascend场景日志说明:使用Ascend资源训练时会产生device日志、plog日志、proc log单卡训练日志、MindSpore日志、普通日志。 图1 ModelArts训练日志 只有MindSpore+Ascend训练场景下会产生单独的MindSpore日志。其他AI引擎的日志都包含在普通日志中,无法区分。
  • 本地导入模型至HiLens Studio 在HiLens Studio界面单击左上角,左侧将展示开发项目的文件目录。 在开发项目的文件目录区选择文件夹或空白区域,右键单击选择“Upload Files...”,在本地选择已经开发好的模型文件并导入至HiLens Studio。 caffe模型:caffe模型文件“.caffemodel”和“.prototxt”,根据业务选择上传配置文件“.cfg”。 tensorflow模型:“.pb”模型文件,根据业务选择上传配置文件“.cfg”。
  • 界面转换模型 导入模型至HiLens Studio后,在HiLens Studio界面打开一个技能项目。 单击HiLens Studio界面左侧的。 左侧将显示开发项目的文件目录,详细说明请见项目文件说明。 图3 文件目录 右键单击文件夹“model”,单击“Model Convertion”。 弹出“Model Convertion”对话框。 按表2填写模型转换的信息,单击“OK”。 图4 Model Convertion 表2 Convert Model参数说明 参数 说明 Model Path 待转换的模型文件在技能项目文件中的位置。一般将模型导入至文件夹“model”。 Configuration 待转换模型的配置文件在技能项目文件中的位置。例如“model/aipp_rgb.cfg”。 Output Path 模型转换后输出位置。 Type 模型转换的类型,包括“TF-FrozenGraph-To-Ascend-HiLens”、“Caffe to Ascend”。 “TF-FrozenGraph-To-Ascend-HiLens” 支持将Tensorflow frozen graph模型转换成可在ascend芯片上运行的模型。 “Caffe to Ascend” 支持将Caffe模型转换成可在ascend芯片上运行的模型。 Advanced Options 当模型转换类型为“TF-FrozenGraph-To-Ascend-HiLens”时,可填写高级选项,包括张量形状、转换输出节点等参数选项,详情请见表3。 表3 Advanced Options 参数名称 参数说明 Input Tensor Shape 输入张量形状。若在上文“模型来源”中,选择需要转换格式的模型(非om格式模型),并且转换类型是“Tensorflow frozen graph 转 Ascend”或“Tensorflow SavedModel 转 Ascend”时,需要填写输入张量形状。 张量形状即模型输入数据的shape,输入数据格式为NHWC,如“input_name:1,224,224,3”,必填项。“input_name”必须是转换前的网络模型中的节点名称。当模型存在动态shape输入时必须提供。例如“input_name1:?,h,w,c”,该参数必填,其中“?”为batch数,表示1次处理的图片数量,需要根据实际情况填写,用于将动态shape的原始模型转换为固定shape的离线模型。 如果存在多个输入,请以分号(;)隔开。 out_nodes 转换输出节点,即指定输出节点,例如“node_name1:0;node_name1:1;node_name2:0”,其中“node_name”必须是模型转换前的网络模型中的节点名称,冒号后的数字表示第几个输出,例如“node_name1:0”,表示节点名称为“node_name1”的第0个输出。 input_format 输入数据格式,默认是“NHWC”,如果实际是“NCHW”的话,需要通过此参数指定“NCHW”。 net_format 优选数据格式,即指定网络算子优先选用的数据格式,“ND(N=4)”和“5D”。仅在网络中算子的输入数据同时支持“ND”和“5D”两种格式时,指定该参数才生效。“ND”表示模型中算子按“NCHW”转换成通用格式,“5D”表示模型中算子按华为自研的5维转换成华为格式。“5D”为默认值。 fp16_high_precsion 生成高精度模型,指定是否生成高精度“FP16 Davinci”模型。 0为默认值,表示生成普通“FP16 Davinci”模型,推理性能更好。 1表示生成高精度“FP16 Davinci”模型,推理精度更好。 output_type 网络输出数据类型,“FP32”为默认值,推荐分类网络、检测网络使用;图像超分辨率网络,推荐使用“UINT8”,推理性能更好。
  • 导入/转换模型操作 针对本地开发的模型,首先需要导入模型至HiLens Studio。针对非“om”格式的模型,还需要在HiLens Studio进行模型转换。 导入和转换模型的操作流程如图1所示,操作指引如表1所示。 图1 操作流程 表1 导入/转换模型操作 操作 操作方式 操作指引 步骤一:导入模型至HiLens Studio 方式一:从本地导入 本地导入模型至HiLens Studio 方式二:从OBS导入 OBS导入模型至HiLens Studio 步骤二:在HiLens Studio转换模型 方式一:使用命令行转换模型 命令行转换模型 方式二:通过HiLens Studio界面转换模型 界面转换模型
  • 模型要求 导入的模型可为“.om”格式、“.pb”格式或“.caffemodel”格式,其中“.om”格式的模型才可以在HiLens Kit上运行,“.pb”格式或“.caffemodel”格式的模型在导入HiLens Studio之后,需要将模型转换至“.om”格式。 并非所有模型都能转换成功,进行导入(转换)模型操作前,请确认是否为“.om”模型支持的TensorFlow和Caffe算子边界,详情请见附录Caffe算子边界和Tensorflow算子边界。
  • 前提条件 已在ModelArts在线训练算法模型,训练模型可参见《ModelArts文档》。如果要使用ModelArts的预置算法,当前华为HiLens平台仅支持转换如下预置算法: yolov3_resnet18(检测物体类别和位置) ResNet_v1_50(图像分类) 暂不支持导入ModelArts中“自动学习”训练的模型。 华为HiLens 只能导入ModelArts中训练的模型文件,不能导入ModelArts的模型。
  • 导入(转换)模型 在HiLens Studio界面左侧,单击。 页面左侧将显示您在ModelArts训练好的模型列表。 图1 模型列表 选择待导入、转换的模型,单击“Operation”列的“Apply”。 如果是“om”格式的模型,待模型导入成功后,HiLens Studio右下角会提示“Model imported successfully.”,文件夹“model”下会显示新导入的模型文件。 如果是非“om”格式的模型,会弹出“Convert Model”对话框。 按表1填写模型转换的信息,单击“OK”。 表1 Convert Model参数说明 参数 说明 Model Path 待转换的模型文件在技能项目文件中的位置。一般将模型导入至文件夹“save_model”。 Configuration 待转换模型的配置文件在技能项目文件中的位置。例如“save_model/aipp_rgb.cfg”。 Output Path 模型转换后输出位置。 Type 模型转换的类型,包括“TF-FrozenGraph-To-Ascend-HiLens”、“Caffe to Ascend”。 “TF-FrozenGraph-To-Ascend-HiLens” 支持将Tensorflow frozen graph模型转换成可在ascend芯片上运行的模型。 “Caffe to Ascend” 支持将Caffe模型转换成可在ascend芯片上运行的模型。 Advanced Options 当模型转换类型为“TF-FrozenGraph-To-Ascend-HiLens”时,可填写高级选项,包括张量形状、转换输出节点等参数选项,详情请见表2。 表2 Advanced Options 参数名称 参数说明 Input Tensor Shape 输入张量形状。若在上文“模型来源”中,选择需要转换格式的模型(非om格式模型),并且转换类型是“Tensorflow frozen graph 转 Ascend”或“Tensorflow SavedModel 转 Ascend”时,需要填写输入张量形状。 张量形状即模型输入数据的shape,输入数据格式为NHWC,如“input_name:1,224,224,3”,必填项。“input_name”必须是转换前的网络模型中的节点名称。当模型存在动态shape输入时必须提供。例如“input_name1:?,h,w,c”,该参数必填,其中“?”为batch数,表示1次处理的图片数量,需要根据实际情况填写,用于将动态shape的原始模型转换为固定shape的离线模型。 如果存在多个输入,请以分号(;)隔开。 out_nodes 转换输出节点,即指定输出节点,例如“node_name1:0;node_name1:1;node_name2:0”,其中“node_name”必须是模型转换前的网络模型中的节点名称,冒号后的数字表示第几个输出,例如“node_name1:0”,表示节点名称为“node_name1”的第0个输出。 input_format 输入数据格式,默认是“NHWC”,如果实际是“NCHW”的话,需要通过此参数指定“NCHW”。 net_format 优选数据格式,即指定网络算子优先选用的数据格式,“ND(N=4)”和“5D”。仅在网络中算子的输入数据同时支持“ND”和“5D”两种格式时,指定该参数才生效。“ND”表示模型中算子按“NCHW”转换成通用格式,“5D”表示模型中算子按华为自研的5维转换成华为格式。“5D”为默认值。 fp16_high_precsion 生成高精度模型,指定是否生成高精度“FP16 Davinci”模型。 0为默认值,表示生成普通“FP16 Davinci”模型,推理性能更好。 1表示生成高精度“FP16 Davinci”模型,推理精度更好。 output_type 网络输出数据类型,“FP32”为默认值,推荐分类网络、检测网络使用;图像超分辨率网络,推荐使用“UINT8”,推理性能更好。