自定义代码
星河社区命令行工具(AI Studio CLI)
星河社区命令行工具(AI Studio CLI)是基于 aistudio_hub sdk 建立的管理工具,借助此工具,用户可以不受开发环境限制,方便快捷地提交模型训练任务,并通过模型产线完成日志监控、效果评估与在线部署。
在 AI 模型训练场景下,通常对 GPU 的要求较高,更大显存、更多卡数的计算资源配置对于提升模型训练的效率和质量至关重要。在 notebook 环境下,通常仅能使用单卡资源,网页端进行长时间的模型训练也可能会遇到页面关闭、浏览器崩溃等不稳定的情况,导致模型训练被迫中断。
通过星河社区命令行工具(AI Studio CLI)可以发起模型产线任务(后台任务),不依赖前端界面响应,调用 V100 32G 多卡集群资源(最多支持单机八卡),提升训练效率的同时保障了任务的稳定性,同时可以通过运行日志实时监控训练进度,训练结束后支持对结果目录下的文件进行评估、部署与单文件下载。
准备任务代码
星河社区命令行工具(AI Studio CLI)通过终端命令行的方式与星河社区模型产线交互,不限制用户的编程与调试环境。你可以选择云端开发环境 BML CodeLab,也可以选择本地 IDE 进行编程与调试。
注:任务运行镜像(paddle2.6_py3.10、paddle2.5_py3.10、paddle2.4_py3.7)分别对应 notebook 项目中的框架版本(pp2.6.0、pp2.5.2、pp2.4.0),方便用户在 notebook 镜像环境中调通脚本后,一行命令发布到模型产线进行模型训练。
模型训练相关的代码文件(小文件)需要整体放到一个文件夹下,通过 CLI 打包(zip包)上传,总体积不超过 50MB。在任务环境中,文件夹内的代码文件会被解压缩到根目录 /home/aistudio 下(不含文件夹),用户需要确保代码文件中含可执行脚本,并通过启动命令来控制代码运行。
大体积文件推荐使用数据集挂载的方式,自定义代码模型产线支持最多挂载3个数据集,只需要为 mount_dataset 传入 {dataset_id} 即可。dataset 文件会在启动任务时拉取到任务环境的 /home/aistudio/data 目录下,依据 {dataset_id} 分别存放对应的数据(与 notebook 项目存放逻辑一致),支持用户在任务环境中读取数据集参与模型训练。
此外,仅 /home/aistudio/output 目录下的文件会被持久化保存,并支持在产线运行结束后查看文件列表。需要保存的产出文件,请注意设置正确的保存路径哦。
总结一下,任务环境中的文件目录结构如下示例:
/home/aistudio # 任务环境的根目录
├── data # 挂载数据的存储目录
│ ├── data264391 # 通过{dataset_id}区分
│ └── dataxxxxx
├── output # 产出文件的保存路径,持久化存储
│ ├── log # 训练日志
│ ├── save_modelxxx # 其他用户自定义的存储文件
│ └── ...
├── run.sh # 用户自定义的可执行脚本
├── requirments.txt # (可选)声明环境依赖,通过可执行脚本完成安装
├── train.py # (可选)与模型训练相关的执行文件
└── ... # (可选)其他自定义文件等
可以看到,整个任务环境的自定义程度非常高,用户可以选择灵活的方式发起任务,设置运行环境,定义产出文件存储方式,并支持在评估环节对产出文件(/home/aistudio/output 目录下的文件)重新修改,支持把结果文件部署为在线服务。
请注意,模型产线对输出结果的总体积大小限制是100GB,文件数量限制是10000,超过限制任务会立即失败,建议用户在训练时保存必要文件,阶段性删除非必要文件。
使用 CLI 提交任务
用户认证
首次使用 AI Studio CLI 提交与管理任务,需要安装 aistudio-sdk 库,并通过 访问令牌 完成身份认证。
安装方式:
$ pip install --upgrade aistudio-sdk
认证方式:
$ aistudio config --token <yourToken>
任务提交
AI Studio CLI 的命令行结构如下:
$ aistudio submit job [flags]
参数详情:
参数 | 是否必填 | 功能介绍 | 类型 | 默认值 |
---|---|---|---|---|
--name, -n | 是 | 产线名称:最多64个字符,支持中英文、数字、下划线、中划线、点,且符号不能在首尾 | String | |
--path, -p | 是 | 任务代码本地路径(文件夹):文件夹内的文件总体积不超过50MB | String | |
--cmd, -c | 是 | 任务代码启动命令,建议使用 ' ' 包裹 |
String | |
--env, -e | 否 | 飞桨框架版本:paddle2.6_py3.10;paddle2.5_py3.10;paddle2.4_py3.7 | String | paddle2.6_py3.10 |
--device, -d | 否 | 硬件资源型号:当前仅支持 v100 | String | v100 |
--gpus, -g | 否 | gpu数量:1,4,8 | Int | 1 |
--payment, -pay | 否 | 计费方式:acoin-A币支付;coupon-算力点支付 | String | acoin |
--mount_dataset, -m | 否 | 数据集挂载:填写 {dataset_id},支持主站数据集挂载到任务盘(/home/aistudio/data),以便用户在任务中使用。单个任务最多挂载3个数据集 | String | none |
使用示例:
$ aistudio submit job \
--name ppyoloe_MiniFashionPedia_gpu1 \
--path ./code_gpu1 \
--cmd 'sh run.sh' \
--payment coupon \
--gpus 1 \
--mount_dataset 264391
# 返回name, pipeline_id, status, create_time,url
用户脚本中可以使用挂载的数据:
######处理数据集######
tar -xf ./data/data264391/MiniFashionPedia.tar -C ./data
rm -rf ./data/data264391/MiniFashionPedia.tar
######拉取PaddleDetection开源代码,安装环境依赖######
git clone https://gitee.com/paddlepaddle/PaddleDetection
pip install -r ./PaddleDetection/requirements.txt -Uq
######启动单卡训练######
export CUDA_VISIBLE_DEVICES=0
python ./PaddleDetection/tools/train.py -c config.yml --eval
######启动多卡训练######
# export CUDA_VISIBLE_DEVICES=0,1,2,3
# python -m paddle.distributed.launch --gpus 0,1,2,3 ./PaddleDetection/tools/train.py -c config.yml --fleet --eval
下载产出
$ aistudio job job_id cp -h
usage: PROG job job_id cp [-h] result_file local_path
positional arguments:
result_file 结果文件路径
local_path 本地保存路径
options:
-h, --help show this help message and exit
创建数据集
$ aistudio dataset create -h
usage: PROG dataset create [-h] -n NAME -f FILES [FILES ...] [-p] [-l {1,2,3,4,5,6,7,8}] [-d DESCRIPTION]
options:
-h, --help show this help message and exit
-n NAME, --name NAME 数据集名称
-f FILES [FILES ...], --files FILES [FILES ...]
本地文件路径,支持多个文件
-p, --public 是否公开数据集
-l {1,2,3,4,5,6,7,8}, --license {1,2,3,4,5,6,7,8}
数据集许可协议的ID,仅在设置public后生效。默认为1 (公共领域 CC0)。
可选项包括:
1: 公共领域 (CC0)
2: 署名 (CC BY 4.0)
3: 署名-相同方式共享 (CC BY-SA 4.0)
4: 署名-非商业性使用-相同方式共享 (CC BY-NC-SA 4.0)
5: 署名-禁止演绎 (CC-BY-ND)
6: 自由软件基金会 (GPL 2)
7: 署名-允许演绎 (ODC-BY)
8: 其他
-d DESCRIPTION, --description DESCRIPTION
数据集描述
向已有数据集中添加文件
$ aistudio dataset add -h
usage: PROG dataset add [-h] -id ID -f FILES [FILES ...]
options:
-h, --help show this help message and exit
-id ID, --id ID 数据集id
-f FILES [FILES ...], --files FILES [FILES ...]
本地文件路径,支持多个文件