云服务器内容精选
-
Ascend-Powered-Engine框架启动原理 在ModelArts算法建界面选择AI引擎时,能够看到一个叫做Ascend-Powered-Engine的AI引擎,它与其他AI引擎相比有些特别。它既不是一个AI框架(如:PyTorch、TensorFlow)也不是一个并行执行框架(如:MPI),而是适配加速芯片Ascend编译的一组AI框架+运行环境+启动方式的集合。 由于几乎所有的Ascend加速卡都跑在ARM规格的机器上,因此上层docker镜像也都是ARM镜像。 针对GPU场景的镜像中安装了对应版本的CUDA(由英伟达推出的统一计算架构)驱动,而Ascend-Powered-Engine引擎的镜像中都安装了与底层硬件版本适配的CANN(华为针对AI场景推出的异构计算架构)驱动。 提交训练作业后,ModelArts Standard平台会自动运行训练任务的启动文件;启动文件的运行次数取决于训练卡数。 单机作业时,每个任务内运行N次启动文件;N为任务的卡数;例如单机1卡,则worker-0任务的启动文件会被运行1次;单机8卡,worker-0任务的启动文件会被运行8次。因此需要避免在启动文件中进行端口监听。 启动文件会被设置如下环境变量: RANK_TABLE_FILE:rank table file (RTF) 文件路径 ASCEND_DEVICE_ID:逻辑device_id,例如单卡训练,该值始终为 0 RANK_ID:可以理解为训练作业级的device逻辑(顺序)编号 RANK_SIZE:根据RTF中device的数目设置该值,例如4 * snt9b,该值即为4。 当需要启动文件仍然在逻辑上仅运行1次时,则可以在启动文件中判断“ASCEND_DEVICE_ID”的值,当值为“0”则执行逻辑,当值为非0则直接退出。 Ascend-Powered-Engine框架对应的代码示例mindspore-verification.py,请参见训练脚本mindspore-verification.py文件。 Ascend-Powered-Engine框架单机启动命令和分布式启动命令无区别。
-
训练任务在容器中的挂载点说明 使用 自定义镜像 训练模型时,训练任务在容器中的挂载点参考如表2所示。 表2 训练任务挂载点介绍 挂载点 是否只读 备注 /xxx 否 专属池使用SFS盘挂载的目录,路径由客户自己指定。 /home/ma-user/modelarts 否 空文件夹,建议用户主要用这个目录。 /cache 否 裸机规格支持,挂载宿主机NVMe的硬盘。 /dev/shm 否 用于PyTorch引擎加速。 /usr/local/nvidia 是 宿主机的nvidia库。
-
自定义镜像的启动命令规范 用户遵循ModelArts镜像的规范要求制作镜像,选择自己的镜像,并且通过指定代码目录(可选)和启动命令的方式来创建的训练作业。 图1 创建训练作业选择自定义方式 当使用完全自定义镜像创建训练作业时,“启动命令”必须在“/home/ma-user”目录下执行,否则训练作业可能会运行异常。 在完全使用自定义镜像创建训练作业时,通过指定的“conda env”启动训练。由于训练作业运行时不是shell环境,因此无法直接使用“conda activate”命令激活指定的 “conda env”,需要使用其他方式以达成使用指定“conda env”来启动训练的效果。假设您的自定义镜像中的“conda”安装于“/home/ma-user/anaconda3”目录“conda env”为“python-3.7.10”,训练脚本位于“/home/ma-user/modelarts/user-job-dir/code/train.py”。可通过以下方式使用指定的“conda env”启动训练: 方式一:为镜像设置正确的“DEFAULT_CONDA_ENV_NAME”环境变量与“ANACONDA_DIR”环境变量。 ANACONDA_DIR=/home/ma-user/anaconda3 DEFAULT_CONDA_ENV_NAME=python-3.7.10 您可以使用Python命令启动训练脚本。启动命令示例如下: python /home/ma-user/modelarts/user-job-dir/code/train.py 方式二:使用“conda env python”的绝对路径。 您可以使用“/home/ma-user/anaconda3/envs/python-3.7.10/bin/python”命令启动训练脚本。启动命令示例如下: /home/ma-user/anaconda3/envs/python-3.7.10/bin/python /home/ma-user/modelarts/user-job-dir/code/train.py 方式三:设置PATH环境变量。 您可以将指定的“conda env bin”目录配置到PATH环境变量中。您可以使用Python命令启动训练脚本。启动命令示例如下: export PATH=/home/ma-user/anaconda3/envs/python-3.7.10/bin:$PATH; python /home/ma-user/modelarts/user-job-dir/code/train.py 方式四:使用“conda run -n”命令。 您可以使用“/home/ma-user/anaconda3/bin/conda run -n python-3.7.10”命令来执行训练命令,启动命令示例如下: /home/ma-user/anaconda3/bin/conda run -n python-3.7.10 python /home/ma-user/modelarts/user-job-dir/code/train.py 如果在训练时发生找不到“$ANACONDA_DIR/envs/$DEFAULT_CONDA_ENV_NAME/lib ”目录下“.so”文件的相关报错,可以尝试将该目录加入到“LD_LIBRARY_PATH”,将以下命令放在上述启动方式命令前: export LD_LIBRARY_PATH=$ANACONDA_DIR/envs/$DEFAULT_CONDA_ENV_NAME/lib:$LD_LIBRARY_PATH; 例如,方式一的启动命令示例此时变为: export LD_LIBRARY_PATH=$ANACONDA_DIR/envs/$DEFAULT_CONDA_ENV_NAME/lib:$LD_LIBRARY_PATH; python /home/ma-user/modelarts/user-job-dir/code/train.py
-
使用Ascend自定义镜像训练时的训练代码适配规范 使用NPU资源创建训练作业时,系统会在训练容器里自动生成Ascend HCCL RANK_TABLE_FILE文件。当使用预置框架创建训练作业时,在训练过程中预置框架会自动解析Ascend HCCL RANK_TABLE_FILE文件,当使用自定义镜像创建训练作业时,就要适配训练代码使得训练过程中在代码里读取解析Ascend HCCL RANK_TABLE_FILE文件。 Ascend HCCL RANK_TABLE_FILE文件说明 Ascend HCCL RANK_TABLE_FILE文件提供Ascend分布式训练作业的集群信息,用于Ascend芯片分布式通信,可以被HCCL集合通信库解析。该文件格式有模板一和模板二两个版本。 ModelArts提供的是模板二格式。ModelArts训练环境的Ascend HCCL RANK_TABLE_FILE文件名为jobstart_hccl.json,获取方式可以通过预置的RANK_TABLE_FILE环境变量实现。 表1 RANK_TABLE_FILE环境变量说明 环境变量 说明 RANK_TABLE_FILE 该环境变量指示Ascend HCCL RANK_TABLE_FILE文件所在目录,值为/user/config。 算法开发者可通过 “${RANK_TABLE_FILE}/jobstart_hccl.json”,路径获取该文件。 ModelArts训练环境jobstart_hccl.json文件内容(模板二)示例: { "group_count": "1", "group_list": [{ "device_count": "1", "group_name": "job-trainjob", "instance_count": "1", "instance_list": [{ "devices": [{ "device_id": "4", "device_ip": "192.1.10.254" }], "pod_name": "jobxxxxxxxx-job-trainjob-0", "server_id": "192.168.0.25" }] }], "status": "completed" } jobstart_hccl.json文件中的status字段的值在训练脚本启动时,并不一定为completed状态。因此需要训练脚本等待status字段的值等于completed之后,再去读取文件的剩余内容。 通过训练脚本,可以使用模板一格式的jobstart_hccl.json文件,在等待status字段的值等于completed之后,将模板二格式jobstart_hccl.json文件转换为模板一格式的jobstart_hccl.json文件。 转换后的jobstart_hccl.json文件格式(模板一)示例: { "server_count": "1", "server_list": [{ "device": [{ "device_id": "4", "device_ip": "192.1.10.254", "rank_id": "0" }], "server_id": "192.168.0.25" }], "status": "completed", "version": "1.0" } 转换功能的实现,可参考从0制作自定义镜像用于创建训练作业(MindSpore+Ascend)中所述的Ascend训练脚本的启动脚本。
更多精彩内容
CDN加速
GaussDB
文字转换成语音
免费的服务器
如何创建网站
域名网站购买
私有云桌面
云主机哪个好
域名怎么备案
手机云电脑
SSL证书申请
云点播服务器
免费OCR是什么
电脑云桌面
域名备案怎么弄
语音转文字
文字图片识别
云桌面是什么
网址安全检测
网站建设搭建
国外CDN加速
SSL免费证书申请
短信批量发送
图片OCR识别
云数据库MySQL
个人域名购买
录音转文字
扫描图片识别文字
OCR图片识别
行驶证识别
虚拟电话号码
电话呼叫中心软件
怎么制作一个网站
Email注册网站
华为VNC
图像文字识别
企业网站制作
个人网站搭建
华为云计算
免费租用云托管
云桌面云服务器
ocr文字识别免费版
HTTPS证书申请
图片文字识别转换
国外域名注册商
使用免费虚拟主机
云电脑主机多少钱
鲲鹏云手机
短信验证码平台
OCR图片文字识别
SSL证书是什么
申请企业邮箱步骤
免费的企业用邮箱
云免流搭建教程
域名价格