使用华为云跑自己的深度学习模型教程
文章目录
前言
2020年11月,华为技术有限公司组织技术专家对申报2020年第一批华为有限公司教育部产学合作协同育人项目进行评审,最终通过了我们专业特色班的申请,所以我们特色班的学生就拥有免费使用华为云的福利!
对我们学生来说,华为云最大的作用就是跑深度学习模型了。特别是对实验室算力不充裕的同学来说,简直是个天大的好消息!但是网上对华为云的具体使用教程很少很杂,所以就记录一下自己使用华为云从零到跑通深度学习模型的全流程。
一、创建访问密钥?
-
首先进入华为云官网:华为云官网
-
点击页面右上角的 登录(这里默认都有华为云账号并且都已经开通云服务)
-
鼠标选择页面右上角 控制台 (我们需要的服务都在控制台里)
-
鼠标移到页面右上角的 账号,选择显示出来的 我的凭证
-
选择页面左侧的 访问密钥,点击 新增访问密钥
-
选择发送验证码,并且在描述里面添加上传的数据的相关描述,便于以后的寻找(像我这里上传的是kaggle比赛的数据集,就这样描述就行)。
-
填完之后它就会弹出让你下载一个.csv文件,一定要下载!下载完之后打开,里面的AK和SK就是我们要的密钥。
二、创建数据集OBS桶
(一)什么是OBS桶
简单来讲,就是 存放数据集的地方,类似于我们电脑的一个磁盘。
计费标准:以标准存储(单AZ)单价为0.099元/GB/月,整点结算时单AZ桶中有400GB标准存储对象,则一个月产生的标准存储(单AZ)的存储费用为:0.0990元/GB/月 * 400GB ≈ 40元。
而华为给我们的代金卷是 500元(可用于ModelArts、对象存储服务),所以经费还是比较充足的。而且跑完数据后可以及时删除桶,这样计费就会停止了。
还有,这个代金卷在我们使用类似OBS桶等的按需产品时会自动扣除相关费用,不用自己去点击使用支付。还有,这个代金卷只能用于支付账单而不能用于充值(否则你就可以提现了!)。
这里涉及一个单AZ和多AZ的概念。简单来说,就是是否选择在其它地区的服务器备份你的数据,防止你所选择的区域的服务器坏了(概率微乎其微)导致数据丢失。对于我们学生来说,不需要备份数据,选择单AZ就行了。
(二)创建OBS桶
- 回到 控制台 页面,鼠标移到页面左上角 三根横线(服务列表) 的位置,然后在搜索框中搜索 OBS ,然后点击下面的 对象存储服务OBS
- 点击 创建桶
- 填写桶信息。需要注意的是区域选择离自己最近的服务器(我在深圳所以选的广州),然后其它默认就行了。填完以后选择右下角的 立即创建 。
- 创建完成后,点击 桶名称 进入桶。
- 进入桶之后,点击页面左侧的 对象,之后点击 创建文件夹,就可以得到一个新的文件夹用以存放我们的数据。
三、上传数据到OBS桶
(一)数据量小于5G
直接 对象 -> 上传对象 -> 拖拽文件进去 -> 上传就行
(二)数据量大于5G
因为我的数据大小是在350G左右,然后存放在linux服务器上,所以上传的话只能选择 obsutil 而不是OBS Browser+,因为 OBS Browser+不支持linux操作系统。(本来想的从kaggle网站直接导出数据集上传到OBS桶,但是没找到具体的方法,所以只能先从kaggle下载数据集到本地,再从本地上传到OBS桶。如果有人知道方法的话欢迎告诉我或者在评论区评论!)
1、安装obsutil
- 回到对象存储服务界面,点击页面中间的obsutil框内的 下载
- 选择 业务工具 里面的 工具下载
- 根据下载和安装obsutil界面的linux安装命令教程,将四条指令依次执行即可。
2、配置obsutil
-
config配置文件:
在解压文件目录下执行命令:
./obsutil config -i=ak -k=sk -e=endpoint其中:ak 换成我们一开始创建OBS桶时下载的.csv文件里的 Access Key Id,sk 换成 Secret Access Key,endpoint 在我们创建的OBS桶的基本信息里,点击我们的OBS桶进去就能看到。
配置成功的话都会显示:Update config file successfully!
-
检查连通性:./obsutil ls -s
出现obs 和 Bucker number 就意味着配置成功了。
3、上传数据
将要上传的数据放在一个文件夹下,然后使用命令:
./obsutil cp /data/train_data obs://桶名 -f -r
递归上传文件夹/data/train_data下面的所有数据到OBS桶内。接着只需要等待就行了。(346G的数据,以网速3M/s,要上传40h左右。这里建议大数据的话对数据先压缩再上传!)
四、在ModelArts上使用自己的代码和数据集训练学习
当数据上传完毕时,就可以开始跑自己的模型了(350G左右的数据我上传到150多G的时候就给中断了,也没有报任何错误,目前还不知道具体原因。但是这里只是演示一下功能,并不影响)。
- 在控制台的服务列表搜索 “ModelArts”,点击进去
- 点击页面左侧 开发环境下面的 Notebook
- 进入之后可能要进行 服务授权
- 委托直接选择 自动创建 就行,这个功能我们应该用不到。
- 点击 创建
- 按照我下面的配置就行,然后点击下一步
- 确认配置
- 创建完成后,打开jupyter notebook(注意:一旦创建成功,就默认notebook开着,也就是在费钱了。所以如果创建完不想立刻使用,记得点击停止!)
- 接着就上传自己的notebook然后开始运行。
- 这里提醒一下,我们需要不时前往费用中心查看自己的代金卷还剩多少,毕竟一个小时28块其实用着挺快的!
五、notebook需要注意的问题
(一)kernel问题
因为我是用pytorch框架,所以选择的kernel是 pytorch1.4.0。然后发现有许多库找不到,就直接 !pip install 库名 就行。记得先更新一下pip:!pip install --upgrade pip(重新打开notebook后就得重新装一次库!)
(二)路径问题
1. 问题描述:
在gleason2.1.ipynb文件里面无法通过路径直接访问OBS桶里的数据
我的OBS桶数据分布如下。
然后我创建notebook选择的存储配置在于 obs://kaggle-gleason/code/ 也就是我的code目录下,跟我的 gleason2.1.ipynb 同级。
问题在于:在gleason2.1.ipynb文件里面无法直接访问OBS桶里的数据,无论是csv文件还是图片数据。使用绝对路径或者相对论路径都不行!
报错:FileNotFoundError: File b’obs://kaggle-gleason/Gleason_Train/train.csv’ does not exist
2. 问题原因
查了各种资料之后,发现可能的原因如下:
- OBS桶的定位与ModelArts的控制台定位不一致。
但是我都是定的广州,所以排除!
- 未对ModelArts进行OBS访问授权
我已经授权了!这里自动创建的modelarts_agency里的默认权限就包含OBS访问权限了。
查看网上各种资料之后,发现确实没法用notebook直接调用OBS桶的数据,必须先将OBS桶的数据加载到notebook本地,再使用本地路径进行访问。然而本地的默认硬盘只有5G,所以就影响到了解决问题的不同方法。
3. 解决方法
解决方法有两个
- 创建notebook的时候存储配置选择云硬盘,然后输入需要的硬盘大小。这里默认为5G免费,然后超出部分按1G/h = 0.0014元计价。值得注意的是,我们的代金卷只适用于OBS桶和ModelArts服务,不适用于云硬盘,所以这里我没有试过云硬盘的结果。
- 若我们选择存储配置为OBS的话,默认的5G磁盘大小就无法改变,意味着我们要根据训练数据的大小选择不同的方法。
①、数据量小于5G:使用moxing库将obs桶的数据拷贝到本地磁盘,命令如下:
②、数据量大于5G的话,就无法导入数据了,只能选择训练管理下的 训练作业了。创建也不难,只是在自定义算法的时候把自己的.ipynb文件修改为.py文件就行了。这里就不做演示了。
总结
文章只是根据我的代金卷所能提供的服务简单介绍了一下华为云的使用。其实华为云真的特别复杂,需要好长一段时间的学习。如果大家对文章有什么疑问或补充的话,欢迎在评论区评论或者私信我,我看到的话就会及时回复的!