华为云深度学习服务试水笔记

举报
motozilog 发表于 2019/04/20 14:09:30 2019/04/20
【摘要】 因笔记本弱爆的GT840M,尝试将原本的keras代码移植到华为云DLS上跑,记录一下调试过程

最近接了一个图像识别的项目,公司配的笔记本电脑只是GT840M 2G显存,只能跑跑LeNet、MobileNet v2、NASNet Mobile这些小模型。效果虽然过得去,但是每个EPOCH几十分钟,真的让人心急死,都懒得去调参数。

干脆用华为云深度学习服务,测试一下。

华为云DLS的版本:

keras 2.2.0

tensorflow 1.8.0

有opencv、numpy等

但没有imutils,也就是原本 paths.list_images('/train')这样的,就得重写

所以获取图片的路径是首先要解决


先用OBS browser将图片传上OBS

image.png

目录架构如下:

s3://obs-xxxxxx/

                         |

                         -train

                                |

                                -type1

                                         |

                                         -001.jpg

                                         -002.jpg

                                -type2

                                         -001.jpg

                                         -002.jpg

                                .........

                        |

                         - test

                                |

                                -type1

                                         |

                                         -001.jpg

                                         -002.jpg

                                -type2

                                         -001.jpg

                                         -002.jpg

从OBS拉过图片过来

def getFilesHw(filepath):
    list = []
    dirs=mox.file.list_directory(filepath)
    for dir in dirs:
        files=mox.file.list_directory(filepath+dir+'/')
        for file in files:
            f=filepath+dir+'/'+file
            #print(f)
            list.append(f)
    return list
trainPaths = 's3://obs-xxxxxx/train/'
files=getFilesHw(trainPaths)


总算将目录拉过来了,问题用image=cv2.imread(imagePath)直接就空的呢(imagePath是写's3://obs-xxxxxx/train/type1/001.jpg')?

查了半天原来要这样用

image = cv2.imdecode(np.fromstring(mox.file.read(imagePath, binary=True), np.uint8), cv2.IMREAD_COLOR)

图片读过来了。


其它训练过程就和本地keras一样,毕竟不熟悉的情况不敢轻易用mox的api

然而到了保存环节,又来杯具了:

model.save(s3://obs-xxxxxx/model.bin) #直接报错

保存不了,只能用折中的办法,先将文件保存到DLS的本地,然后再复制回OBS

model.save('model.bin')
mox.file.copy('model.bin', s3://obs-xxxxxx/model.bin)


不过pickle方面就好很多,原来的代码是这样

f = open("label.bin", "wb")
f.write(pickle.dumps(label))
f.close()

改写成这样

with mox.file.File("s3://obs-xxxxxx/label.bin", "wb") as f:
    f.write(pickle.dumps(label))
    f.close()


至此完成移植,用华为云强大GPU测试一下,果然P100跑LeNet是小菜一碟,1分钟不到就搞定,有木有啊?

image.png


并且P100有16G显存,可以体验VGG、ResNet这些规模大的网络。

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。