背景
很多新同学在尝试AI深度学习训练的过程中,遇到的第一个问题很可能就是要配置CUDA环境,安装tensorflow/pytorch/mxnet等框架。大家内心可能都有这样一个想法:我就是想跑个实验,为啥要先搞清楚GPU驱动,CUDA,CUDNN,conda,tensorflow,pytorch等这些知识呢?为啥不能给我一个开箱即用的环境呢?
为了帮忙用户解决AI训练过程中遇到的环境问题,滴滴云推出了一款基于jupyter lab的笔记本(Notebook)服务,内置了最新的GPU驱动,CUDA/CUDNN版本,常见的深度学习训练框架(tensorflow, pytorch, mxnet, keras),用户可以选择相应notebook kernel进行自己的训练;
即使所有的开发环境都准备好了,用户在真正训练的时候还是会遇到一些问题,最常见的就是训练数据怎么搬移到笔记本实例上去;如果数据已经在某个云盘上,那可以直接在笔记本实例中,通过terminal使用wget进行下载;如果数据在本地电脑,并且数据量小于10M,那么可以直接通过笔记本实例中的上传/下载按钮进行上传/下载。本文针对数据在本地,并且数据量较大的情况,提供一种基于滴滴云对象存储(S3)的最佳实践!
为什么要使用对象存储上传/下载数据
通常情况下,我们可能不需要一直占用着GPU资源进行训练,虽然Notebook也提供了关机不计费功能,但是这里只是GPU,CPU和内存资源不计费,还是会有云盘的费用,虽然很少,如120G的系统盘,每天费用差不多要2+元(120GB x 0.0008元/GB/小时);
相比之下,使用对象存储费用计算如下:
如果我们有10G的数据要保存,每个月存储费用为: 10G * 0.12元/GB/月 * 1月 = 1.2;流量费用因为我们使用内网地址,不会产生公网流量!
因此我们可以通过对象存储来存储数据集,甚至代码,然后释放Notebook实例;下次需要使用的时候,再把对象存储里的数据集,代码复制到Notebook实例中,使用内网域名,数据拷贝速度可以达到100MB/s
获取对象存储的AK/SK
1. 开通对象存储服务
目前滴滴云对象存储服务需要联系滴滴云客户进行开通,可以用过点击对象存储官网页面右下角的客服按钮,联系滴滴云客服进行开通;
2. 创建/获取AK/SK
开通对象存储后,可以进入对象存储控制台,点击密钥管理,进入密钥管理页面;
在密钥管理页面,先点击对象存储密钥,然后再点击创建API密钥按钮,生成API密钥;
查看生成的AK/SK,并记录,后面会用到!
3. 本地数据上传到滴滴云对象存储
3.1 本地是mac系统
3.1.1 安装mc客户端
brew install minio/stable/mc
3.1.2 配置客户端
// your_access_key和your_secret_key就是步骤2中创建并获取的AK和SK mc config host add didiyun https://s3.didiyunapi.com your_access_key your_secret_key
3.1.3 操作对象存储
mc ls didiyun //查看自己账户下所有的bucket(存储桶) mc mb didiyun/ml-test //创建一个名为ml-test的bucket(存储桶) mc mb didiyun/ml-test/test/ //在ml-test 这个bucket下创建一个名为test的文件夹,主要test后面必须加'/' mc cp a.txt didiyun/ml-test //把本地单个文件a.txt复制到ml-test这个bucket下 mc cp --recursive app didiyun/ml-test //把本地文件夹上传到ml-test这个bucket下 mc cp didiyun/ml-test/2.png . //把ml-test这个bucket下的2.png单个文件下载到本地 mc cp --recursive didiyun/ml-test/app . //把ml-test这个bucket下的app目录下载到本地 mc rm --force --recursive didiyun/test1/test1.jpg //删除ml-test这个bucket目录下的test1.jpg单文件 mc rm --force --recursive didiyun/ml-test/app //删除ml-test这个bucket目录下的app目录
mc客户端有时候不太稳定,操作时会遇到一些问题,具体命令可以参考官方教程
3.2 本地是windows系统
3.2.1 安装mc客户端
在浏览器输入mc完全指南手册地址: https://docs.min.io/cn/minio-client-complete-guide ;找到 下载二进制文件(Microsoft Windows) ,下载mc.exe;默认下载位置为Downloads
3.2.2 配置客户端
新建一个terminal,进入到Downloads目录下,配置mc客户端
cd Downloads //mc.exe默认下载路径为Downloads,如果下载在其他地方,则进入对应的目录 .\mc.exe --help //查看mc.exe 命令是否可以正常运行 // your_access_key和your_secret_key就是步骤2中创建并获取的AK和SK .\mc.exe config host add didiyun https://s3.didiyunapi.com your_access_key your_secret_key
3.2.3 操作对象存储
.\mc.exe ls didiyun //查看自己账户下所有的bucket(存储桶) .\mc.exe mb didiyun/ml-test //创建一个名为ml-test的bucket(存储桶) .\mc.exe mb didiyun/ml-test/test/ //在ml-test 这个bucket下创建一个名为test的文件夹,主要test后面必须加'/' .\mc.exe cp a.txt didiyun/ml-test //把本地单个文件a.txt复制到ml-test这个bucket下 .\mc.exe cp --recursive app didiyun/ml-test //把本地文件夹上传到ml-test这个bucket下 .\mc.exe cp didiyun/ml-test/2.png . //把ml-test这个bucket下的2.png单个文件下载到本地 .\mc.exe cp --recursive didiyun/ml-test/app . //把ml-test这个bucket下的app目录下载到本地 .\mc.exe rm --force --recursive didiyun/test1/test1.jpg //删除ml-test这个bucket目录下的test1.jpg单文件 .\mc.exe rm --force --recursive didiyun/ml-test/app //删除ml-test这个bucket目录下的app目录
3.3 本地是linux系统
如果本地是linux系统,可以参考下一节内容进行下载,配置mc客户端,上传/下载数据
4. 对象存储中数据上传/下载到笔记本实例
4.1 安装mc客户端
//进入notebook的terminal,下载mc客户端 wget https://dl.min.io/client/mc/release/linux-amd64/mc //官网下载速度有点慢,建议使用滴滴云对象存储里保存的 // wget https://zyk.s3-internal.didiyunapi.com/public_software/mc //如果不是在滴滴云notebook中访问,可以使用公网地址进行下载 // wget https://zyk.s3.didiyunapi.com/public_software/mc //增加执行权限 chmod +x mc //mc移动到PATH指向的目录,这样就可以直接访问 mv mc /usr/bin/
4.2 配置mc客户端
// your_access_key和your_secret_key就是步骤2中创建并获取的AK和SK // 注意这里使用对象存储内网地址: https://s3-internal.didiyunapi.com;如果您不是在notebook中使用 // 需要使用对象存储的公网地址: https://s3.didiyunapi.com mc config host add didiyun https://s3-internal.didiyunapi.com your_access_key your_secret_key
4.3 数据上传/下载
mc ls didiyun //查看自己账户下所有的bucket(存储桶) mc mb didiyun/ml-test //创建一个名为ml-test的bucket(存储桶) mc mb didiyun/ml-test/test/ //在ml-test 这个bucket下创建一个名为test的文件夹,主要test后面必须加'/' mc cp a.txt didiyun/ml-test //把本地单个文件a.txt复制到ml-test这个bucket下 mc cp --recursive app didiyun/ml-test //把本地文件夹上传到ml-test这个bucket下 mc cp didiyun/ml-test/2.png . //把ml-test这个bucket下的2.png单个文件下载到本地 mc cp --recursive didiyun/ml-test/app . //把ml-test这个bucket下的app目录下载到本地 mc rm --force --recursive didiyun/test1/test1.jpg //删除ml-test这个bucket目录下的test1.jpg单文件 mc rm --force --recursive didiyun/ml-test/app //删除ml-test这个bucket目录下的app目录
5. 优惠购买滴滴云Notebook等GPU产品
目前滴滴云在搞AI大师码活动,用我的AI大师码6666在滴滴云上购买GPU/vGPU/机器学习产品可享受9折优惠,点击http://www.didiyun.com前往滴滴云官网