深度学习任务,就算力来说,我们经常遇到两个问题:一是算力不够,二是价格太贵。
最近百度的同学发布了一个免费使用百度云GPU算力提交深度学习任务的工具PaddleCloud,能够帮助你一键快速发布深度学习任务,让我们一起来看一看这个工具是怎么做到的吧!
PaddleCloud介绍
PaddleCloud能够帮助您一键发起深度学习任务,为您提供免费底层计算资源、或提供快速打通云上计算资源通道,支持您快速发起单机/分布式飞桨框架训练任务,致力于推动AI应用更广泛地落地。
1、核心优势
使用PaddleCloud您将不需要配置繁琐复杂的运行环境,内置飞桨框架帮您一键发起单机/分布式深度学习任务,同时,为您提供免费底层计算资源、或提供快速打通云上计算资源通道,即使是无算力、不懂框架的小白,十分钟即可发起训练任务!
简单易用:十分钟即可开始PaddlePaddle训练任务
自定义:可自定义构建PaddlePaddle训练代码
任务管理:集成了训练任务管理的能力
免费资源:提供一定量的免费GPU资源(针对每位用户每天提供100分钟的免费训练资源)
按需付费:付费GPU资源可按需使用
以下是原有云付费的使用流程 vs PaddleCloud的使用流程对比
2、应用场景
1)需要GPU计算资源,但本地没有GPU资源
2)本地有少量GPU资源,临时需要按需使用云上GPU资源
3)集成到本地环境中,实现本地+云端一体化体验
PaddleCloud的使用流程
结合房价预测模型的训练为例,进行步骤讲解,
fit-a-line(房价预测示例,是一个线性回归房价预测示例(单机示例),本示例是基于paddle1.6版本,源代码fit_a_line:https://github.com/PaddlePaddle/book/blob/for_paddle1.6/01.fit_a_line, 示例说明文档fit-a-line文档:https://github.com/PaddlePaddle/book/blob/for_paddle1.6/01.fit_a_line/README.cn.md。
对于使用房价预测示例提交任务且反馈意见的用户,我们将挑选10位最佳反馈用户赠送百度定制礼品,期望您来体验和分享。意见反馈QQ:864714313
一、代码结构
示例代码目录结构
├── job: 示例任务父目录,用paddlecloud命令行提交任务时配置--file=./job,可将该目录提交到计算集群上
│ ├── data: data目录用来存放训练和测试数据集的本地目录,提交训练任务后,该目录会被整体上传到计算集群中
│ │ ├── train_data: 训练数据集的目录,可将训练数据放到该目录下,提交任务时会将该目录上传(或者挂载)到集群的计算节点上
│ │ ├── test_data: 测试数据集的目录,可将测试数据放到该目录下,提交任务时会将该目录上传(或者挂载)到集群的计算节点上
│ ├── run.sh: 训练任务的启动脚本,主要用来调起任务的python脚本,例如:python train.py,该脚本是在计算集群上被调用
│ ├── train.py: 具体的算法代码,此处的是房价预测的paddle组网代码
├── submit.sh: 提交任务的脚本,该脚本会调用paddlecloud命令行工具,将训练数据data和训练代码train.py、运行脚本run.sh提交到计算集群中,需要在自己的机器上执行,并且需要先下载并安装paddlecloud命令行工具,该脚本仅支持linux和mac上使用
说明
1)data目录用来存放训练和测试数据集的本地目录,提交训练任务后,该目录会被整体上传到计算集群中;该目录名称可以按需修改为其他名称,在训练代码中使用时需要相应修改。
2)train.py是训练相关的代码,run.sh是任务运行脚本,提交训练任务后,这些脚本都将被上传到集群中,并且在集群中运行
3)train_data和test_data是data的子目录,用来区分训练数据集和测试数据集,作为data的子目录,提交训练任务后,该目录会被整体上传到计算集群中。
在计算集群上获取该路径的方法是:
LOCAL_DATA_PATH = os.getenv("LOCAL_MOUNT_PATH") # LOCAL_MOUNT_PATH内置的环境变量,直接获取该值即可
cluster_train_dir = LOCAL_DATA_PATH + "/data/train_data" # 计算节点上训练数据的路径
二、使用说明
【第一步 准备环境 】
1)安装python3环境和依赖库
自行安装Python3和pip3(Python3包安装和管理工具)
安装Python依赖库
pip3 install requests
pip3 install rsa
2)下载命令行工具
PaddleCloud当前只支持命令行方式使用,暂时还不支持web方式
linux & mac
bash -c "$(curl -X GET http://ppoc-filecenter.bj.bcebos.com/install_paddlecloud_stable.sh)"; source ~/.bashrc
Windows
暂未开放,敬请期待
【第二步 申请并配置Token】
1)填入企业或组织邮箱,申请token,等待邮件通知(注意:有些邮件供应商可能会屏蔽该邮件或将邮件判别为垃圾邮件)
paddlecloud gen_token --email=
例如:paddlecloud gen_token --email=your_name@163.com
2)将邮件中的token填入命令行工具的配置文件
登陆自己的邮箱,查收Baidu PaddleCloud邮件,将token对应的ak/sk依次填入命令行中
paddlecloud gen_token --email=
create_token...
Paste your ak here:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
Paste your sk here:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
create_token done
也可以将token对应的ak/sk复制并粘贴到~/bin/paddlecloud/conf/client.conf文件中(先找到该文件并用编辑器打开后在粘贴)
// 注:如下内容仅为示例,以自己收到的邮件中的内容为准
[main]
debug = 0
userid: xxx
ak: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
sk: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
【第三步 提交任务】
直接执行如下命令即可将任务提交到计算集群上运行
// linux中使用该命令
sh submit.sh
也可以将submit.sh中的内容拿出来单独执行,例如:
paddlecloud submit_job --files=job --start_cmd="sh run.sh"
// --files用来指定本地代码和数据的目录,本地的job目录会被整体上传到计算集群中
// --start_cmd指定任务的启动命令,该命令会在计算集群上被执行
【第四步 查看任务】
1、查看任务详情
$ paddlecloud query_job --job_id=job-d22c1fffb768d9b0748def85b158f303
bos_url: paddlecloud-public.bj.bcebos.com/dd9d92e3dad72633c5053c718203204d/job
create_time: 2020-05-18 11:24:53
error_msg:
finish_time: 2020-05-18 11:26:14
instance_count: 1
instance_ids_list:
job_id: job-d22c1fffb768d9b0748def85b158f303
job_name: tmp_job
job_status: success
job_type: gpu
kill_flag: 0
public_bcc: 1
public_bos: 1
queue_reason:
start_cmd: sh run.sh
start_time: 2020-05-18 11:25:12
wall_time: 00:30:00
2. 查看作业目录
$ paddlecloud get_files --job_id=job-d22c1fffb768d9b0748def85b158f303
2285758331454547565081a3eb37e538/job/output/job-d22c1fffb768d9b0748def85b158f303/ 0 2020-05-19T06:39:03Z
2285758331454547565081a3eb37e538/job/output/job-d22c1fffb768d9b0748def85b158f303/log/trainer-0.log 9649 2020-05-19T06:39:53Z
2285758331454547565081a3eb37e538/job/output/job-d22c1fffb768d9b0748def85b158f303/rank-0/__model__ 5322 2020-05-19T06:39:47Z
2285758331454547565081a3eb37e538/job/output/job-d22c1fffb768d9b0748def85b158f303/rank-0/fc_0.b_0 28 2020-05-19T06:39:47Z
2285758331454547565081a3eb37e538/job/output/job-d22c1fffb768d9b0748def85b158f303/rank-0/fc_0.w_0 78 2020-05-19T06:39:47Z
....
3. 查看作业日志
下载作业日志
$ paddlecloud get_files --job_id=job-d22c1fffb768d9b0748def85b158f303 --download=1
查看日志列表
$ ll output/2285758331454547565081a3eb37e538/job/output/job-d22c1fffb768d9b0748def85b158f303/log
drwxrwxr-x 3 work work 4096 May 18 11:29 ./
drwxrwxr-x 3 work work 4096 May 18 11:29 ../
drwxrwxr-x 2 work work 4096 May 18 11:29 trainer-0.log
查看日志
$ cat output/2285758331454547565081a3eb37e538/job/output/job-d22c1fffb768d9b0748def85b158f303/log/trainer-0.log