华为云用户手册

  • 上传镜像 客户端上传镜像,是指在安装了容器引擎客户端的机器上使用docker命令将镜像上传到 容器镜像服务 的镜像仓库。 如果容器引擎客户端机器为云上的E CS 或CCE节点,根据机器所在区域有两种网络链路可以选择: 如果机器与容器镜像仓库在同一区域,则上传镜像走内网链路。 如果机器与容器镜像仓库不在同一区域,则上传镜像走公网链路,机器需要绑定弹性公网IP。 使用客户端上传镜像,镜像的每个layer大小不能大于10G。 上传镜像的容器引擎客户端版本必须为1.11.2及以上。 连接容器 镜像服务 。 登录容器镜像服务控制台。 单击右上角“创建组织”,输入组织名称完成组织创建。请自定义组织名称,本示例使用“deep-learning”,下面的命令中涉及到组织名称“deep-learning”也请替换为自定义的值。 选择左侧导航栏的“总览”,单击页面右上角的“登录指令”,在弹出的页面中单击复制登录指令。 此处生成的登录指令有效期为24小时,如果需要长期有效的登录指令,请参见获取长期有效登录指令。获取了长期有效的登录指令后,在有效期内的临时登录指令仍然可以使用。 登录指令末尾的 域名 为镜像仓库地址,请记录该地址,后面会使用到。 在安装容器引擎的机器中执行上一步复制的登录指令。 登录成功会显示“Login Succeeded”。 在安装容器引擎的机器上执行如下命令,为镜像打标签。 docker tag [镜像名称1:版本名称1] [镜像仓库地址]/[组织名称]/[镜像名称2:版本名称2] [镜像名称1:版本名称1]:${image_name}:${image_version}请替换为您所要上传的实际镜像的名称和版本名称。 [镜像仓库地址]:可在SWR控制台上查询,即1.c中登录指令末尾的域名。 [组织名称]:/${organization_name}请替换为您创建的组织。 [镜像名称2:版本名称2]:${image_name}:${image_version}请替换为您期待的镜像名称和镜像版本。 示例: docker tag ${image_name}:${image_version} swr.cn-north-4.myhuaweicloud.com/${organization_name}/${image_name}:${image_version} 上传镜像至镜像仓库。 docker push [镜像仓库地址]/[组织名称]/[镜像名称2:版本名称2] 示例: docker push swr.cn-north-4.myhuaweicloud.com/${organization_name}/${image_name}:${image_version} 上传镜像完成后,返回容器镜像服务控制台,在“我的镜像”页面,执行刷新操作后可查看到对应的镜像信息。
  • 操作步骤 下载MLNX_OFED_LINUX-4.3-1.0.1.0-ubuntu16.04-x86_64.tgz。 进入地址,单击“Download”,选择“Archive Versions”,“Version”选择“4.3-1.0.1.0”,“OS Distribution”选择“Ubuntu”,“OS Distribution Version”选择“Ubuntu 16.04”,“Architecture”选择“x86_64”,下载MLNX_OFED_LINUX-4.3-1.0.1.0-ubuntu16.04-x86_64.tgz。 宿主机安装的infiniband驱动版本为4.3-1.0.1.0,容器镜像中安装的infiniband驱动版本需要与宿主机版本匹配,即同为4.3-1.0.1.0。 可能部分区域的网卡较新,会出现更高版本的infiniband驱动版本,如果您遇到了infiniband驱动安装后,仍然无法使能infiniband网卡的问题,可以咨询相关运维人员以确认宿主机的实际infiniband驱动版本。 图1 下载驱动 参考如下Dockerfile中,以在容器镜像中安装infiniband驱动。 USER root # copy MLNX_OFED_LINUX-4.3-1.0.1.0-ubuntu16.04-x86_64.tgz to docker image RUN tar xzvf MLNX_OFED_LINUX-4.3-1.0.1.0-ubuntu16.04-x86_64.tgz && \ cd MLNX_OFED_LINUX-4.3-1.0.1.0-ubuntu16.04-x86_64 && \ chmod +x mlnxofedinstall && \ ./mlnxofedinstall --user-space-only --without-fw-update --force && \ cd - && \ rm MLNX_OFED_LINUX-4.3-1.0.1.0-ubuntu16.04-x86_64.tgz && \ rm -rf MLNX_OFED_LINUX-4.3-1.0.1.0-ubuntu16.04-x86_64 USER ma-user 验证infiniband驱动是否安装成功。 在训练代码中执行以下命令,如果无报错则infiniband驱动安装成功: os.system("ofed_info")
  • Notebook 表1 Notebook挂载点介绍 挂载点 是否只读 备注 /home/ma-user/work/ 否 客户数据的持久化目录。 /data 否 客户PFS的挂载目录。 /cache 否 裸机规格时支持,用于挂载宿主机NVMe的硬盘。 /train-worker1-log 否 兼容训练任务调试过程。 /dev/shm 否 用于PyTorch引擎加速。 /modelarts 是 / /etc/secret-volume 是 / /etc/sudoers 是 / /etc/localtime 是 / var/run/secrets/kubernetes.io/serviceaccount 是 /
  • run.sh脚本测试ModelArts训练整体流程 自定义容器在ModelArts上训练和本地训练的区别如下图: 图1 本地与ModelArts上训练对比 ModelArts上进行训练比本地训练多了一步OBS和容器环境的数据迁移工作。 增加了和OBS交互工作的整个训练流程如下: 建议使用OBSutil作为和OBS交互的工具,如何在本机安装obsutil可以参考obsutil安装和配置。 训练数据、代码、模型下载。(本地使用硬盘挂载或者docker cp,在ModelArts上使用OBSutil) 启动脚本,用法无切换,一般就是到达执行目录,然后python xxx.py。 训练结果、日志、checkpoints上传。(本地使用硬盘挂载或者docker cp,在ModelArts上使用OBSutil) 可以用一个run脚本把整个流程包起来。run.sh脚本的内容可以参考如下示例: #!/bin/bash ##认证用的AK和SK硬编码到代码中或者明文存储都有很大的安全风险,建议在配置文件或者环境变量中密文存放,使用时解密,确保安全。 ##本示例以AK和SK保存在环境变量中来实现身份验证为例,运行本示例前请先在本地环境中设置环境变量HUAWEICLOUD_SDK_AK和HUAWEICLOUD_SDK_SK。 ##安装obsutil,完成AKSK配置。建议在基础镜像里做好。 #mkdir -p /opt && cd /opt #wget https://obs-community.obs.cn-north-1.myhuaweicloud.com/obsutil/current/obsutil_linux_amd64.tar.gz #tar -xzvf obsutil_linux_amd64.tar.gz && mv obsutil_linux_amd64_*/ utils #alias obsutil='/opt/utils/obsutil' #obsutil config -i=${HUAWEICLOUD_SDK_AK} -k=${HUAWEICLOUD_SDK_SK} -e=obs.cn-north-4.myhuaweicloud.com ##训练输入复制到容器镜像本地。 #/cache目录的容量较大。 DATA_URL=`echo ${DLS_DATA_URL} | sed /s/s3/obs/` mkdir –p /cache/data /opt/utils/obsutil cp –r –f ${DATA_URL} /cache/data ##执行训练任务。 #涉及conda env切换时。 source /xxxxx/etc/profile.d/conda.sh conda activate xxxenv conda info --envs #启动训练脚本。 cd xxxx python xxx.py ##复制输出结果到OBS目录。 TRAIN_URL=`echo ${DLS_TRAIN_URL} | sed /s/s3/obs/` /opt/utils/obsutil cp –r –f /cache/out ${TRAIN_URL} 把run.sh放到/opt目录,在实际启动任务的时候,使用以下命令启动任务即可: bash –x /opt/run.sh 把run.sh放到/root目录,可以在原镜像里增加一层,这一层就只是COPY这个run脚本。在基础镜像里可以一起把obsutil安装、配置好。参考如下dockerfile: FROM $your_docker_image_tag RUN mkdir -p /opt && cd /opt && \ wget https://obs-community.obs.cn-north-1.myhuaweicloud.com/obsutil/current/obsutil_linux_amd64.tar.gz && \ tar -xzvf obsutil_linux_amd64.tar.gz && mv obsutil_linux_amd64_*/ utils && \ /opt/utils/obsutil config -i=${HUAWEICLOUD_SDK_AK} -k=${HUAWEICLOUD_SDK_SK} -e=obs.cn-north-4.myhuaweicloud.com COPY run.sh /opt/run.sh ModelArts的容器会有一个/cache目录,这个目录挂载的硬盘容量最大。建议下载数据和中间数据都存到这个目录中,防止因硬盘占满导致任务失败。 父主题: FAQ
  • Vnt1机型软件版本建议:gpu driver version : 440.95.01 gpu driver version : 440.95.01(GPU驱动在宿主机中安装,镜像中无需安装) cuda runtime version : 10.2(PyTorch自带,无需关心) cudnn version : 7.6.x(PyTorch自带,无需关心) pytorch version : 1.x.x+cu102
  • Vnt1机型软件版本建议:gpu driver version : 470.57.02 gpu driver version : 470.57.02(GPU驱动在宿主机中安装,镜像中无需安装) cuda runtime version : 10.2(PyTorch自带,无需关心) cudnn version : 7.6(PyTorch自带,无需关心) pytorch version : 1.X.X-cu102
  • 上传算法至SFS 下载Swin-Transformer代码。 git clone --recursive https://github.com/microsoft/Swin-Transformer.git 修改lr_scheduler.py文件,把第27行:t_mul=1. 注释掉。 修改data文件夹下imagenet22k_dataset.py,把第28行:print("ERROR IMG LOADED: ", path) 注释掉。 修改data文件夹下的build.py文件,把第112行:prefix = 'ILSVRC2011fall_whole',改为prefix = 'ILSVRC2021winner21k_whole'。 在Swin-Transformer目录下创建requirements.txt指定python依赖库: # requirements.txt内容如下 timm==0.4.12 termcolor==1.1.0 yacs==0.1.8 准备run.sh文件中所需要的obs文件路径。 准备imagenet数据集的分享链接 勾选要分享的imagenet21k_whole数据集文件夹,单击分享按钮,选择分享链接有效期,自定义提取码,例如123456,单击“复制链接”,记录该链接。 准备obsutil_linux_amd64.tar.gz的分享链接 单击此处下载obsutil_linux_amd64.tar.gz,将其上传至OBS桶中,设置为公共读。单击属性,单击复制链接。 链接样例如下: https://${bucketname_name}.obs.cn-north-4.myhuaweicloud.com/${folders_name}/pytorch.tar.gz 在Swin-Transformer目录下,创建运行脚本run.sh。 脚本中的"SRC_DATA_PATH=${imagenet数据集在obs中分享链接}",需要替换为上一步中的imagenet21k_whole文件夹分享链接。 脚本中的"https://${bucket_name}.obs.cn-north-4.myhuaweicloud.com/${folder_name}/obsutil_linux_amd64.tar.gz",需要替换为上一步中obsutil_linux_amd64.tar.gz在OBS上的路径(需将文件设置为公共读)。 单机单卡运行脚本: # 在代码主目录下创建一个run.sh,内容如下 #!/bin/bash # 从obs中下载数据到本地SSD盘 DIS_DATA_PATH=/cache SRC_DATA_PATH=${imagenet数据集在obs中分享链接} OBSUTIL_PATH=https://${bucket_name}.obs.cn-north-4.myhuaweicloud.com/${folder_name}/obsutil_linux_amd64.tar.gz mkdir -p $DIS_DATA_PATH && cd $DIS_DATA_PATH && wget $OBSUTIL_PATH && tar -xzvf obsutil_linux_amd64.tar.gz && $DIS_DATA_PATH/obsutil_linux_amd64*/obsutil share-cp $SRC_DATA_PATH $DIS_DATA_PATH/ -ac=123456 -r -f -j 256 && cd - IMAGE_DATA_PATH=$DIS_DATA_PATH/imagenet21k_whole MASTER_PORT="6061" /home/ma-user/anaconda3/envs/pytorch/bin/python -m torch.distributed.launch --nproc_per_node=1 --master_addr localhost --master_port=$MASTER_PORT main.py --data-path $IMAGE_DATA_PATH --cfg ./configs/swin/swin_base_patch4_window7_224_22k.yaml --local_rank 0 多机多卡运行脚本: # 创建run.sh #!/bin/bash # 从obs中下载数据到本地SSD盘 DIS_DATA_PATH=/cache SRC_DATA_PATH=${imagenet数据集在obs中分享链接} OBSUTIL_PATH=https://${bucket_name}.obs.cn-north-4.myhuaweicloud.com/${folder_name}/obsutil_linux_amd64.tar.gz mkdir -p $DIS_DATA_PATH && cd $DIS_DATA_PATH && wget $OBSUTIL_PATH && tar -xzvf obsutil_linux_amd64.tar.gz && $DIS_DATA_PATH/obsutil_linux_amd64*/obsutil share-cp $SRC_DATA_PATH $DIS_DATA_PATH/ -ac=123456 -r -f -j 256 && cd - IMAGE_DATA_PATH=$DIS_DATA_PATH/imagenet21k_whole MASTER_ADDR=$(echo ${VC_WORKER_HOSTS} | cut -d "," -f 1) MASTER_PORT="6060" NNODES="$VC_WORKER_NUM" NODE_RANK="$VC_TASK_INDEX" NGPUS_PER_NODE="$MA_NUM_GPUS" /home/ma-user/anaconda3/envs/pytorch/bin/python -m torch.distributed.launch --nnodes=$NNODES --node_rank=$NODE_RANK --nproc_per_node=$NGPUS_PER_NODE --master_addr $MASTER_ADDR --master_port=$MASTER_PORT main.py --data-path $IMAGE_DATA_PATH --cfg ./configs/swin/swin_base_patch4_window7_224_22k.yaml 推荐先使用单机单卡运行脚本,待正常运行后再改用多机多卡运行脚本。 多机多卡run.sh中的“VC_WORKER_HOSTS”、“VC_WORKER_NUM”、“VC_TASK_INDEX”、“MA_NUM_GPUS”为ModelArts训练容器中预置的环境变量。训练容器环境变量详细介绍可参考查看训练容器环境变量。 通过obsutils,将代码文件夹放到OBS上,然后通过OBS将代码传至SFS相应目录中。 在SFS中将代码文件Swin-Transformer-main设置归属为ma-user。 chown -R ma-user:ma-group Swin-Transformer 执行以下命令,去除Shell脚本的\r字符。 cd Swin-Transformer sed -i 's/\r//' run.sh Shell脚本在Windows系统编写时,每行结尾是\r\n,而在Linux系统中行每行结尾是\n,所以在Linux系统中运行脚本时,会认为\r是一个字符,导致运行报错“$'\r': command not found”,因此需要去除Shell脚本的\r字符。 父主题: 多机多卡
  • 操作步骤 登录Imagenet数据集下载官网地址,下载Imagenet21k数据集:http://image-net.org/ 下载格式转换后的annotation文件:ILSVRC2021winner21k_whole_map_train.txt和ILSVRC2021winner21k_whole_map_val.txt。 下载完成后将上述3个文件数据上传至OBS桶中的imagenet21k_whole文件夹中。上传方法请参考上传数据和算法至OBS(首次使用时需要)。
  • 准备数据 登录coco数据集下载官网地址:https://cocodataset.org/#download 下载coco2017数据集的Train(18GB)、Val images(1GB)、Train/Val annotations(241MB),分别解压后并放入coco文件夹中。 下载完成后,将数据上传至SFS相应目录中。由于数据集过大,推荐先通过obsutil工具将数据集传到OBS桶后,再将数据集迁移至SFS。 在本机机器上运行,通过obsutil工具将本地数据集传到OBS桶。 # 将本地数据传至OBS中 # ./obsutil cp ${数据集所在的本地文件夹路径} ${存放数据集的obs文件夹路径} -f -r # 例如 ./obsutil cp ./coco obs://your_bucket/ -f -r 登录ECS服务器,通过obsutil工具将数据集迁移至SFS,样例代码如下: # 将OBS数据传至SFS中 # ./obsutil cp ${数据集所在的obs文件夹路径} ${SFS文件夹路径} -f -r # 例如 ./obsutil cp obs://your_bucket/coco/ /mnt/sfs_turbo/ -f -r /mnt/sfs_turbo/coco文件夹内目录结构如下: coco |---annotations |---train2017 |---val2017 更多obsutil的操作,可参考obsutil简介。 将文件设置归属为ma-user: chown -R ma-user:ma-group coco
  • 监控资源 用户可以通过资源占用情况窗口查看计算节点的资源使用情况,最多可显示最近三天的数据。在资源占用情况窗口打开时,会定期向后台获取最新的资源使用率数据并刷新。 操作一:如果训练作业使用多个计算节点,可以通过实例名称的下拉框切换节点。 操作二:单击图例“cpuUsage”、“gpuMemUsage”、“gpuUtil”、“memUsage”“npuMemUsage”、“npuUtil”、可以添加或取消对应参数的使用情况图。 操作三:鼠标悬浮在图片上的时间节点,可查看对应时间节点的占用率情况。 表1 参数说明 参数 说明 cpuUsage cpu使用率。 gpuMemUsage gpu内存使用率。 gpuUtil gpu使用情况。 memUsage 内存使用率。 npuMemUsage npu内存使用率。 npuUtil npu使用情况。 父主题: 单机单卡
  • 多机多卡 资源购买: 购买 虚拟私有云VPC 购买弹性文件服务SFS 购买 对象存储服务 OBS 购买容器镜像服务SWR 创建网络 购买ModelArts专属资源池 购买弹性 云服务器ECS 基本配置: 权限配置 专属资源池VPC打通 ECS服务器挂载SFS Turbo存储 在ECS中创建ma-user和ma-group obsutils安装和配置 (可选)工作空间配置 训练: 上传数据至OBS(首次使用时需要) 上传算法至SFS 创建训练任务
  • 准备数据 单击下载动物数据集至本地,并解压。 通过obsutil将数据集上传至OBS桶中。 ./obsutil cp ./dog_cat_1w obs://${your_obs_buck}/demo/ -f -r OBS支持多种文件上传方式,当文件少于100个时,可以在OBS Console中上传,当文件大于100个时,推荐使用工具,推荐OBS Browser+(win)、obsutil(linux)。上述例子为obsutil使用方法。
  • (可选)工作空间配置 ModelArts支持设置子用户的细粒度权限、不同工作空间之间资源隔离。ModelArts工作空间帮您实现项目资源隔离、多项目分开结算等功能。 如果您开通了企业项目管理服务的权限,可以在创建工作空间的时候绑定企业项目ID,并在企业项目下添加用户组,为不同的用户组设置细粒度权限供组里的用户使用。 如果您未开通企业项目管理服务的权限,也可以在ModelArts创建自己独立的工作空间,但是无法使用跟企业项目相关的功能。 工作空间为白名单功能,使用该功能需要提工单申请开通。 父主题: 基本配置
  • obsutil安装和配置 obsutil是用于访问、管理对象存储服务OBS的命令行工具,使用该工具可以对OBS进行常用的配置管理操作,如创建桶、上传文件/文件夹、下载文件/文件夹、删除文件/文件夹等。 obsutil安装和配置的具体操作指导请参见obsutils快速入门。 操作命令中的AK/SK要替换为用户实际获取的AK/SK,Endpoint可以参考终端节点(Endpoint)和访问域名获取。 父主题: 基本配置
  • 在ECS中创建ma-user和ma-group 在ModelArts训练平台使用的自定义镜像时,默认用户为ma-user、默认用户组为ma-group。如果在训练时调用ECS中的文件,需要修改文件权限改为ma-user可读,否则会出现Permission denied错误,因此需要在ECS中提前创建好ma-user和ma-group。 在terminal中执行以下命令: default_user=$(getent passwd 1000 | awk -F ':' '{print $1}') || echo "uid: 1000 does not exist" && \ default_group=$(getent group 100 | awk -F ':' '{print $1}') || echo "gid: 100 does not exist" && \ if [ ! -z ${default_group} ] && [ ${default_group} != "ma-group" ]; then \ groupdel -f ${default_group}; \ groupadd -g 100 ma-group; \ fi && \ if [ -z ${default_group} ]; then \ groupadd -g 100 ma-group; \ fi && \ if [ ! -z ${default_user} ] && [ ${default_user} != "ma-user" ]; then \ userdel -r ${default_user}; \ useradd -d /home/ma-user -m -u 1000 -g 100 -s /bin/bash ma-user; \ chmod -R 750 /home/ma-user; \ fi && \ if [ -z ${default_user} ]; then \ useradd -d /home/ma-user -m -u 1000 -g 100 -s /bin/bash ma-user; \ chmod -R 750 /home/ma-user; \ fi && \ # set bash as default rm /bin/sh && ln -s /bin/bash /bin/sh 查看创建的用户,执行以下命令: id ma-user 如果出现以下信息则表示创建成功。 uid=1000(ma-user) gid=100(ma-group) groups=100(ma-group) 父主题: 基本配置
  • 操作步骤 在ECS服务器中设置华为云镜像源。 sudo sed -i "s@http://.*archive.ubuntu.com@http://repo.huaweicloud.com@g" /etc/apt/sources.list sudo sed -i "s@http://.*security.ubuntu.com@http://repo.huaweicloud.com@g" /etc/apt/sources.list 安装NFS客户端,挂载对应盘。 sudo apt-get update sudo apt-get install nfs-common 获取SFS Turbo的挂载命令。 进入弹性文件服务SFS管理控制台。 选择“SFS Turbo”进入文件系统列表,单击文件系统名称,进入详情页面。 在“基本信息”页签获取并记录“Linux挂载命令”。 在ECS服务器中挂载NFS存储。 首先保证对应目录存在,然后输入对应指令即可。命令参考: mkdir -p /mnt/sfs_turbo mount -t nfs -o vers=3,nolock 192.168.0.169:/ /mnt/sfs_turbo
  • 测试用户权限 由于权限配置需要等待15-30分钟生效,建议在配置完成后,等待30分钟,再执行如下验证操作。 使用用户组02中任意一个子用户登录ModelArts管理控制台。在登录页面,请使用“ IAM 用户登录”方式进行登录。 首次登录会提示修改密码,请根据界面提示进行修改。 验证ModelArts权限。 在左上角的服务列表中,选择ModelArts服务,进入ModelArts管理控制台。 在ModelArts管理控制台,可正常创建Notebook、训练作业、注册镜像。 验证SFS权限。 在左上角的服务列表中,选择SFS服务,进入SFS管理控制台。 在SFS管理控制台,在SFS Turbo中单击右上角的“创建文件系统”,如果能正常打开页面,表示当前用户具备SFS的操作权限。 验证ECS权限。 在左上角的服务列表中,选择ECS服务,进入ECS管理控制台。 在ECS管理控制台,单击右上角的“购买弹性云服务器”,如果能正常打开页面,表示当前用户具备ECS的操作权限。 验证VPC权限。 在左上角的服务列表中,选择VPC服务,进入VPC管理控制台。 在VPC管理控制台,单击右上角的“创建虚拟私有云”,如果能正常打开页面,表示当前用户具备VPC的操作权限。 验证DEW权限。 在左上角的服务列表中,选择DEW服务,进入DEW管理控制台。 在DEW管理控制台,在“密钥对管理”-“私有密钥对”中单击“创建密钥对”,如果能正常打开页面,表示当前用户具备DEW的操作权限。 验证OBS权限。 在左上角的服务列表中,选择OBS服务,进入OBS管理控制台。 在OBS管理控制台,单击右上角的“创建桶”,如果能正常打开页面,表示当前用户具备OBS的操作权限。 验证SWR权限。 在左上角的服务列表中,选择SWR服务,进入SWR管理控制台。 在SWR管理控制台,如果能正常打开页面,表示当前用户具备SWR的操作权限。 单击右上角的“上传镜像”,如果能看到授权的组织,表示当前用户具备SWR组织权限。 父主题: 权限配置
  • 配置SWR组织权限 IAM用户创建后,需要管理员在组织中为用户添加授权,使IAM用户对组织内所有镜像享有读取/编辑/管理的权限。 只有具备“管理”权限的账号和IAM用户才能添加授权。 登录容器镜像服务控制台。 在左侧菜单栏选择“组织管理”,单击组织名称。 在“用户”页签下单击“添加授权”,在弹出的窗口中为IAM用户选择权限,然后单击“确定”。 SWR授权管理详情可参考授权管理。 如果给子用户的SWR授权不是SWR Admin权限,则需要继续配置SWR组织权限。 父主题: 权限配置
  • 配置ModelArts委托权限 给用户配置ModelArts委托授权,允许ModelArts服务在运行时访问OBS等依赖服务。 使用华为云账号登录ModelArts管理控制台,在左侧导航栏单击“权限管理”,进入“权限管理”页面,单击“添加授权”。 在弹出的“添加授权”窗口中,选择: 授权对象类型:所有用户 委托选择:新增委托 权限配置:普通用户 选择完成后勾选“我已经详细阅读并同意《ModelArts服务声明》”,然后单击“创建”。 图1 配置委托访问授权 完成配置后,在ModelArts控制台的权限管理列表,可查看到此账号的委托配置信息。 图2 查看委托配置信息 父主题: 权限配置
  • falcon-11B模型 在训练开始前,针对falcon-11B模型中的tokenizer文件,需要替换代码。替换文件{work_dir}/tokenizers/falcon-11B/config.json,具体步骤如下: 复制代码包目录下config.json至falcon-11B的tokenizer目录下,样例命令: 进入到代码目录下{work_dir}/llm_train/LLaMAFactory/ascendcloud_patch/models/falcon2/如: cd /home/ma-user/ws/llm_train/LLaMAFactory/ascendcloud_patch/models/falcon2/ 复制config.json文件至加载的权重文件/tokenizer目录下,参考路径上传代码和权重文件到工作环境中的步骤3。 cp -f config.json {work_dir}/tokenizers/falcon-11B/
  • 模型NPU卡数取值表 不同模型推荐的训练参数和计算规格要求如表1所示。规格与节点数中的1*节点 & 4*Ascend表示单机4卡,以此类推 表1 模型NPU卡数取值表 支持模型 支持模型参数量 文本序列长度 训练类型 Zero并行 规格与节点数 llama3 70B cutoff_len=4096 lora per_device_train_batch_size=1 2*节点 & 8*Ascend sft per_device_train_batch_size=1 8*节点 & 8*Ascend cutoff_len=8192 lora per_device_train_batch_size=1 2*节点 & 8*Ascend sft per_device_train_batch_size=1 8*节点 & 8*Ascend 8B cutoff_len=4096/8192 lora sft per_device_train_batch_size=1 1*节点 & 1*Ascend 1*节点 & 4*Ascend Qwen2 72B cutoff_len=4096 lora sft per_device_train_batch_size=1 2*节点 & 8*Ascend 4*节点 & 8*Ascend cutoff_len=8192 lora sft per_device_train_batch_size=1 2*节点 & 8*Ascend 8*节点 & 8*Ascend 7B cutoff_len=4096 lora/sft per_device_train_batch_size=1 1*节点 & 4*Ascend cutoff_len=8192 lora/sft per_device_train_batch_size=1 1*节点 & 8*Ascend 0.5/1.5B cutoff_len=4096/8192 lora/sft per_device_train_batch_size=1 1*节点 & 1*Ascend Qwen1.5 0.5B/1.8B cutoff_len=4096/8192 lora/sft per_device_train_batch_size=1 1*节点 & 1*Ascend 4B cutoff_len=4096/8192 sft per_device_train_batch_size=1 1*节点 & 4*Ascend cutoff_len=4096/8192 lora per_device_train_batch_size=1 1*节点 & 1*Ascend 7B cutoff_len=4096/8192 lora per_device_train_batch_size=1 1*节点 & 1*Ascend cutoff_len=4096/8192 sft per_device_train_batch_size=1 1*节点 & 8*Ascend 14B cutoff_len=4096/8192 sft per_device_train_batch_size=1 1*节点 & 8*Ascend cutoff_len=4096/8192 lora per_device_train_batch_size=1 1*节点 & 1*Ascend falcon2 11B cutoff_len=4096/8192 sft per_device_train_batch_size=1 1*节点 & 8*Ascend cutoff_len=4096/8192 lora per_device_train_batch_size=1 1*节点 & 1*Ascend Yi 6B cutoff_len=4096/8192 sft per_device_train_batch_size=1 1*节点 & 4*Ascend cutoff_len=4096/8192 lora per_device_train_batch_size=1 1*节点 & 1*Ascend 34B cutoff_len=4096 sft lora per_device_train_batch_size=1 2*节点 & 8*Ascend 1*节点 & 2*Ascend cutoff_len=8192 sft lora per_device_train_batch_size=1 2*节点 & 8*Ascend 1*节点 & 4*Ascend 父主题: 训练脚本说明
  • 各个模型深度学习训练加速框架的选择 LlamaFactory框架使用两种训练框架: DeepSpeed和Accelerate都是针对深度学习训练加速的工具,但是它们的实现方式和应用场景有所不同。 DeepSpeed是一种深度学习加速框架,主要针对大规模模型和大规模数据集的训练。DeepSpeed的核心思想是在单个GPU上实现大规模模型并行训练,从而提高训练速度。DeepSpeed提供了一系列的优化技术,如ZeRO内存优化、分布式训练等,可以帮助用户更好地利用多个GPU进行训练 Accelerate是一种深度学习加速框架,主要针对分布式训练场景。Accelerate的核心思想是通过模型并行和数据并行来实现分布式训练,从而提高训练速度。Accelerate提供了一系列的优化技术,如模型切分、梯度累积等,可以帮助用户更好地利用多个节点进行训练。 各个模型选用加速框架 表1 模型加速框架建议表 序号 模型参数量 文本序列长度 优化工具(Deepspeed&Accelerator) 0 小于4B cutoff_len=4096 Deepspeed-ZeRO-0 cutoff_len=8192 Deepspeed-ZeRO-0 1 小于7B cutoff_len=4096 Deepspeed-ZeRO-1 cutoff_len=8192 Deepspeed-ZeRO-1 2 7B至13B cutoff_len=4096 Deepspeed-ZeRO-2 cutoff_len=8192 Deepspeed-ZeRO-2 3 14B-72B cutoff_len=4096 Deepspeed-ZeRO-3 cutoff_len=8192 Deepspeed-ZeRO-3 以上为建议值,上述参数值仅供参考,如需配置其他加速框架或ZeRO (Zero Redundancy Optimizer)优化器用户可自行选用配置。 父主题: 训练脚本说明
  • 附录:基于vLLM不同模型推理支持最小卡数和最大序列说明 基于vLLM(v0.5.0)部署推理服务时,不同模型推理支持的最小昇腾卡数和对应卡数下的max-model-len长度说明,如下面的表格所示。 以下值是在gpu-memory-utilization为0.9时测试得出,为服务部署所需的最小昇腾卡数及该卡数下推荐的最大max-model-len长度,不代表最佳性能。 以llama2-13b为例,NPU卡显存为32GB时,至少需要2张卡运行推理业务,2张卡运行的情况下,推荐的最大序列max-model-len长度最大是16K,此处的单位K是1024,即16*1024。 测试方法:gpu-memory-utilization为0.9下,以4k、8k、16k递增max-model-len,直至达到能执行静态benchmark下的最大max-model-len。 表1 基于vLLM不同模型推理支持最小卡数和最大序列说明 序号 模型名 32GB显存 64GB显存 最小卡数 最大序列(K) max-model-len 最小卡数 最大序列(K) max-model-len 1 llama-7b 1 16 1 32 2 llama-13b 2 16 1 16 3 llama-65b 8 16 4 16 4 llama2-7b 1 16 1 32 5 llama2-13b 2 16 1 16 6 llama2-70b 8 32 4 64 7 llama3-8b 1 32 1 128 8 llama3-70b 8 32 4 64 9 qwen-7b 1 8 1 32 10 qwen-14b 2 16 1 16 11 qwen-72b 8 8 4 16 12 qwen1.5-0.5b 1 128 1 256 13 qwen1.5-7b 1 8 1 32 14 qwen1.5-1.8b 1 64 1 128 15 qwen1.5-14b 2 16 1 16 16 qwen1.5-32b 4 32 2 64 17 qwen1.5-72b 8 8 4 16 18 qwen1.5-110b -- 8 128 19 qwen2-0.5b 1 128 1 256 20 qwen2-1.5b 1 64 1 128 21 qwen2-7b 1 8 1 32 22 qwen2-72b 8 32 4 64 23 chatglm2-6b 1 64 1 128 24 chatglm3-6b 1 64 1 128 25 glm-4-9b 1 32 1 128 26 baichuan2-7b 1 8 1 32 27 baichuan2-13b 2 4 1 4 28 yi-6b 1 64 1 128 29 yi-9b 1 32 1 64 30 yi-34b 4 32 2 64 31 deepseek-llm-7b 1 16 1 32 32 deepseek-coder-instruct-33b 4 32 2 64 33 deepseek-llm-67b 8 32 4 64 34 mistral-7b 1 32 1 128 35 mixtral-8x7b 4 8 2 32 36 gemma-2b 1 64 1 128 37 gemma-7b 1 8 1 32 38 falcon-11b 1 8 1 64 父主题: 主流开源大模型基于Lite Server适配PyTorch NPU推理指导(6.3.907)
  • Git下载代码时报错 在执行scripts/install.sh安装命令或使用Dockerfile构建镜像时,如遇到git下载代码出现以下类似的报错信息,关闭git验证即可。 报错信息: fatal: unable to access 'https://gitee.com/ascend/ModelLink.git/': error setting certificate verify locations: CAfile: /etc/pki/tls/certs/ca-bundle.crt CApath: none 关闭git验证命令如下: git config --global http.sslverify false 父主题: 常见错误原因和解决方法
  • 网卡名称错误 当训练开始时提示网卡名称错误。或者通信超时。可以使用ifconfig命令检查网卡名称配置是否正确。 比如,ifconfig看到当前机器IP对应的网卡名称为enp67s0f5,则可以设置环境变量指定该值。 图1 网卡名称错误 export GLOO_SOCKET_IFNAME=enp67s0f5 # 多机之间使用gloo通信时需要指定网口名称, export TP_SOCKET_IFNAME=enp67s0f5 # 多机之间使用TP通信时需要指定网口名称 export HCCL_SOCKET_IFNAME=enp67s0f5 # 多机之间使用HCCL通信时需要指定网口名称 关于环境变量的解释可以参考:Distributed communication package - torch.distributed — PyTorch 2.3 documentation 父主题: 常见错误原因和解决方法
  • Yi模型 在使用Yi模型的chat版本时,由于transformer 4.38版本的bug,导致在读取tokenizer文件时,加载的vocab_size出现类似如下尺寸不匹配的问题。 RuntimeError: Error(s) in loading state_dict for VocabParallelEmbedding: size mismatch for weight: copying a param with shape torch.Size([64000, 4096]) from checkpoint, the shape in current model is torch.Size([63992, 4096]). 需要在训练开始前,修改llm_train/AscendSpeed/yi/3_training.sh文件,并添加--tokenizer-not-use-fast参数。修改后如图1所示。 图1 修改Yi 模型3_training.sh文件
  • ChatGLMv3-6B 在训练开始前,针对ChatGLMv3-6B模型中的tokenizer文件,需要修改代码。修改文件chatglm3-6b/tokenization_chatglm.py 。 文件最后几处代码中需要修改,具体位置可根据上下文代码信息进行查找,修改后如图所示。 图2 修改ChatGLMv3-6B tokenizer文件 图3 修改ChatGLMv3-6B tokenizer文件
  • ChatGLMv3-6B 在训练开始前,针对ChatGLMv3-6B模型中的tokenizer文件,需要修改代码。修改文件chatglm3-6b/tokenization_chatglm.py 。 文件最后几处代码中需要修改,具体位置可根据上下文代码信息进行查找,修改后如图所示。 图1 修改ChatGLMv3-6B tokenizer文件 图2 修改ChatGLMv3-6B tokenizer文件
  • Alpaca数据集 本教程使用Alpaca数据集,数据集的介绍及下载链接如下。 Alpaca数据集是由OpenAI的text-davinci-003引擎生成的包含52k条指令和演示的数据集。这些指令数据可以用来对语言模型进行指令调优,使语言模型更好地遵循指令。 预训练使用的Alpaca数据集下载:https://huggingface.co/datasets/tatsu-lab/alpaca/resolve/main/data/train-00000-of-00001-a09b74b3ef9c3b56.parquet,数据大小:24M左右。 SFT和LoRA微调使用的Alpaca数据集下载:https://huggingface.co/datasets/QingyiSi/Alpaca-CoT/blob/main/alpacaGPT4/alpaca_gpt4_data.json,数据大小:43.6 MB。
  • 自定义数据 用户也可以自行准备训练数据。数据要求如下: 使用标准的.json格式的数据,通过设置--json-key来指定需要参与训练的列。请注意huggingface中的数据集具有如下this格式。可以使用–json-key标志更改数据集文本字段的名称,默认为text。在维基百科数据集中,它有四列,分别是id、url、title和text。可以指定–json-key 标志来选择用于训练的列。 { 'id': '1', 'url': 'https://simple.wikipedia.org/wiki/April', 'title': 'April', 'text': 'April is the fourth month...' }
共100000条
提示

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