怎样判断keras模型是否使用了tpu_合理的薅谷歌TPU的羊毛

9adecb0df8273cb0a20b9a4cf75a5573.png

相信很多人都看过这篇文章:

量子位:薅资本主义羊毛,用Google免费GPU​zhuanlan.zhihu.com
bd01b7304984c6ce0dc6b658c361ca55.png

去年10月份的时候,谷歌又上了新的TPU,以前12个小时断以下的GPU终于不用忍受了(https://research.google.com/colaboratory/faq.html#gpu-availability)

官方也有GPU有时可用有时不可用的说明:

我可以如何使用 GPU?为什么 GPU 有时不可用?
Colaboratory 在使用时需要交互。系统可能会停止长时间运行的后台计算(尤其是在 GPU 上运行的计算)。请勿将 Colaboratory 用于加密货币挖矿。此项操作不受支持,并且可能会导致服务不可用。如果用户希望通过 Colaboratory 界面运行连续或长时间运行的计算,我们建议他们使用本地运行时。

关于TPU的羊毛可以薅多久,至少官网还没有说明,我在组的的服务器实在抢不过来了,就用这个来多跑几个模型。

首先,我只做TPU方面以及一些其他的补充,不重复造轮子,其他的使用请参考量子位的文章。

  1. 运行环境与数据集。

207f9a36cec7897dd4eeca7b7eaa4296.png

这是运行的环境,数据集上传到自己的google drive以后其实是不可见的,需要通过

from 

挂载,其中要授权一下。

注意google drive只有15G。

2. TPU的调用

在setting中运行环境中选TPU就好了。

模型需要转换以下,根据官方例子(Keras Fashion MNIST)

使用指令

tpu_model 

把模型转换成TPU model,其中有一点要注意,keras的model是不可以用的,必须要是tf.keras的model才可以,修改代码

#import keras

API略有不同,需要简单修改下。

关于转换的那个指令,多说两句,我个人感觉还是有点bug的:

tf.contrib.tpu.keras_to_tpu_model是把keras model转换成 TPU model,而tf.contrib.tpu.TPUDistributionStrategy是转换的策略, 而tf.contrib.cluster_resolver.TPUClusterResolver是指定的TPU,当同时写:

TPUClusterResolver = tf.contrib.cluster_resolver.TPUClusterResolver(tpu='grpc://' + os.environ['COLAB_TPU_ADDR'])
Model1 = tf.contrib.tpu.keras_to_tpu_model( model1, strategy=tf.contrib.tpu.TPUDistributionStrategy(TPUClusterResolver) )
Model2 = tf.contrib.tpu.keras_to_tpu_model( model2, strategy=tf.contrib.tpu.TPUDistributionStrategy(TPUClusterResolver) )

指定同一个TPU的时候,在第二条指定的时候会出错,应该是指定到同一个TPU上面去了,但是到目前为止,我还没有找到怎么把Model1从TPU上面release的方法。

3. TPU效率

根据题图可见,一共分配了1个worker,其中有8个TPU core,和我服务器上双1080TI的对比是:

一个Epoch

TPU:~30min

2*1080Ti:~20min

可以看出速度还是很客观。

显存的话,我本来的输入是500*840,被TPU自动限制成了62*840,32bit,那么计算下应该是62*840*4/1024=203MB,确实有点小。。。。。

羊毛可以薅起来了。

其他参考:

机器之心:Colab提供了免费TPU,机器之心帮你试了试​zhuanlan.zhihu.com
24a16dccfee20f19f7a49d1684e601f9.png
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值