机器学习平台是一套服务于专业算法工程师,整合云原生的工具+算力 (GPU、CPU云服务器),进行一站式AI算法开发和迭代的平台。本方案将为您介绍如何在 MLP 使用 BEVFormer 模型进行训练。
本方案以 BEVFormer 模型为例,在开始执行操作前,请确认您已经完成以下准备工作:
已开通网络/vePFS,具体操作详见更改预付费资源组的负载网络VPC--机器学习平台-火山引擎、vePFS--机器学习平台-火山引擎。
已购买 MLP 资源,详见创建资源组--机器学习平台-火山引擎。关于资源价格详情,请详见实例规格及定价--机器学习平台-火山引擎。
已创建开发机实例,其中关键参数配置如下。具体操作详见创建开发机--机器学习平台-火山引擎。
资源规格:配置以下资源规格。
CPU 实例:8C/64G/20GB云盘。
GPU 卡数:至少 8 卡,最佳实践采用一台 ml.pni3l。
挂载配置:当您是多机训练任务时,需要挂载 vePFS 并行文件系统,详情配置信息请访问文件存储vePFS。
镜像地址:在自定义镜像处配置下方镜像,填写 SSH key 。由于拉取的镜像较大,首次创建开发机事件预计 20 分钟。
vemlp-cn-beijing.cr.volces.com/preset-images/bevformer:0.0.1
说明
BEVFormer的模型代码已预制在镜像里,默认目录为/root/code/BEVFormer
,不需要重新下载。
进入开发机。
登陆 账号登录-火山引擎。
在左侧导航栏单击开发机,在开发机列表页面中单击待操作的开发机名称,进入对应开发机内。
通过 SSH 远程登录开发机,具体操作详见通过SSH远程连接开发机--机器学习平台-火山引擎。
配置 volc configure。具体操作详见使用文档--机器学习平台-火山引擎。
当前镜像中已经预制了 nuScenes V1.0 mini 数据集在 /root/code/BEVFormer/data
目录内,您可以直接使用并进行后续训练,并跳过该章节后面的步骤。
如果您想使用 V1.0 full 数据集进行训练,可以参照以下步骤下载并配置对应数据集。
wget https://d36yt3mvayqw5m.cloudfront.net/public/v1.0/v1.0-trainval_meta.tgz wget https://motional-nuscenes.s3.amazonaws.com/public/v1.0/v1.0-trainval01_blobs.tgz # 如果需要继续下载剩下的 9 个 part,可继续执行以下命令 # for part_num in {2..10}; do # if [ $part_num -lt 10 ]; then # wget https://motional-nuscenes.s3.amazonaws.com/public/v1.0/v1.0-trainval0${part_num}_blobs.tgz # else # wget https://motional-nuscenes.s3.amazonaws.com/public/v1.0/v1.0-trainval${part_num}_blobs.tgz # fi # done tar -xzvf v1.0-trainval_meta.tgz -C /root/code/BEVFormer/data tar -xzvf v1.0-trainval01_blobs.tgz -C /root/code/BEVFormer/data # 继续解压剩下的 9 个 part # for part_num in {2..10}; do # if [ $part_num -lt 10 ]; then # tar -xzvf v1.0-trainval0${part_num}_blobs.tgz -C /root/code/test # else # tar -xzvf v1.0-trainval${part_num}_blobs.tgz -C /root/code/test # fi # done cd /root/code/BEVFormer/ # 数据预处理 python tools/create_data.py nuscenes --root-path ./data/nuscenes --out-dir ./data/nuscenes --extra-tag nuscenes --version v1.0 --canbus ./data
如果您使用的是 GPU 开发机,可以直接进入开发机内进行训练,启动训练命令如下。其中命令的最后一个参数为使用的 GPU 卡数。
cd /root/code/BEVFormer && sh ./tools/train.sh ./projects/configs/bevformer/bevformer_base.py 8
最佳实践文档提供控制台与命令行两种方式的操作说明。
进入自定义任务控制台
配置环境
vemlp-cn-beijing.cr.volces.com/preset-images/bevformer:0.0.1
cd /root/code/BEVFormer && export PYTHONPATH=/root/code/BEVFormer && ./tools/dist_train.sh ./projects/configs/bevformer/bevformer_base.py
选择合适的资源,最佳实践所用机器为单机 8 卡 ml.pni3l。
挂载 vePFS。需要注意:如果是多机训练任务,需配置共享存储到 /root/code/BEVFormer/work_dirs
目录。
说明
此处挂载 vePFS 的共享存储访问路径为训练后模型的存储路径,您可以自行修改该路径,并在模型代码中同步修改。
在 Terminal 中使用以下命令对 BEVFormer 进行训练,具体操作步骤如下。
创建一个 demo-bevformer-train.yaml 文件。
编辑 yaml 文件,填写镜像、资源规格、环境变量以及入口命令。
运行任务命令。如运行成功,在 Terminal 会出现 “创建任务成功,task_id=*****” 字样。采用 nuScenes v1.0 mini 数据集的完整训练时长预计为 30 min左右。
您还可以进一步自定义超参数,如学习率和训练步数(epochs)等。相关配置在 projects/configs/bevformer/bevformer_base.py
目录内。
volc ml_task submit --conf=demo-bevformer-train.yaml
demo-bevformer-train.yaml 文件示例:
TaskName: "BEVformer-demo-train" Description: "" Tags: [] ImageUrl: "vemlp-cn-beijing.cr.volces.com/preset-images/bevformer:0.0.1" ResourceQueueID: "q-**************" #请替换为自己的队列ID # DL framework, support: TensorFlow PS,PyTorch DDP,Horovod,BytePS Framework: "PyTorchDDP" # Flavor代表机型,去 https://www.volcengine.com/docs/6459/72363 查询 TaskRoleSpecs: - RoleName: "worker" RoleReplicas: 1 Flavor: "custom" ResourceSpec: Family: "ml.pni3l" CPU: 165.000 Memory: 1765.000 GPUNum: 8 AccessType: "Queue" Storages: - Type: "Vepfs" MountPath: "/root/code/BEVFormer/work_dirs" #该路径可以修改 ReadOnly: "False" VepfsHostPath: "/mnt/vepfs-**************" #请替换为自己的文件系统ID VepfsId: "vepfs-**************" #请替换为自己的文件系统ID VepfsName: "demo-huabei2" #请替换为自己的文件系统名称 Entrypoint: | cd /root/code/BEVFormer && export PYTHONPATH=/root/code/BEVFormer && ./tools/dist_train.sh ./projects/configs/bevformer/bevformer_base.py