google cloud :穷人也能玩深度学习

导语: 想玩深度学习但是没钱更新电脑配置怎么办?google cloud,只要1美元,只要1美元,300美元赠金带回家!365天免费使用,让你轻松入门深度学习!是的,你没有听错,只要1美元,只要1美元,买1赠300,还在犹豫什么,机不可失,失不再来,赶紧掏出你的电脑抢购吧!

背景

由于深度学习计算量大,常常会遇到一个训练跑几小时甚至1天多的情况。一段时间后,你肯定会有升级电脑的想法。而其中很重要的一块是gpu运算需要一块好显卡。

但是当我看看价钱,再看看信用卡账单,我觉得人穷还是应该多忍忍。

我以前还不幸上了农企的船,而目前主流的深度学习框架都是使用cuda,用opencl的速度大部分时候比直接跑cpu还慢。所以如果看完后有同学觉得自己装机更方便的话记住不要买amd的显卡(当然好像土豪也不会买amd的显卡...),另外不差钱的推荐上双TITAN X

介绍

前段时间听richardcliu介绍,google cloud现在有优惠,充值1美元赠送300美元,最多可使用1年。用了之后觉得价格挺公道的。

google cloud有专门的ml-engine(machine learning engine)模块,可以直接用来跑tensorflow,不用像虚拟机一样开关机。只需要根据需要指定配置就行。收费分为训练收费和预测收费两种:

这里意思是如果进行模型训练,那么每个训练单位1小时0.49美元(美国服务器)。有5中配置可供选择(具体介绍),每种占用的训练单位不同。比如如果选用STANDARD_1就是1小时4.9美元。如果是执行预测任务是每1000次预测0.1美元,plus会员按每小时0.4美元收费(升级plus不要钱,就是会在帐号没钱的时候自动扣信用卡的钱)。

使用google cloud有个好处就是完全不占用本地电脑资源,需要跑的时候扔个命令让google cloud跑就是,而且不阻塞自己的其它任何工作。跑的过程中生成的数据全部都会存储在存储分区中。

安装和配置

以mac安装做说明,包括之后的示例也以mac为准。

1.安装python 2.7,gcloud目前只支持python2.x。

2.更新pip

pip install -U pip

如果安装的tensorflow不是基于python2.7的,那么再安装一个基于python 2.7的tensorflow

tensorflow 1.3之后的版本tensorboard和tensorflow分开了,写这篇文章的时候刚把tensorflow从1.2.1更新到了1.3,独立的tensorboard一直跑不了,就先用1.2.1版本说明好了

pip install tensorflow==1.2.1

这个版本的tensorflow不是用来跑代码的,是用来之后把代码提交到google cloud运行前检查语法的。

3.下载google cloud sdk并解压

4.安装

sh ./google-cloud-sdk/install.sh

5.配置ml-engine。

a.创建一个新的云平台项目 https://console.cloud.google.com/cloud-resource-manager b.启用付费 https://support.google.com/cloud/answer/6293499#enable-billing c.启用机器学习api https://console.cloud.google.com/flows/enableapi

6.初始化gcloud

gcloud init

然后会提示你登录,确认后会弹出登录页面,然后在弹出的网页选允许

To continue, you must log in. Would you like to log in (Y/n)? Y

选择项目,如果只有一个项目会默认帮你选择,选刚才那个创建的云平台项目(注意是填选择序号)。

Pick cloud project to use:
 [1] [my-project-1]
 [2] [my-project-2]
 ...
 Please enter your numeric choice:

选择默认区域,建议选us-east1,那里机器便宜,而且在运算时支持gpu

Which compute zone would you like to use as project default?
 [1] [asia-east1-a]
 [2] [asia-east1-b]
 ...
 [14] Do not use default zone
 Please enter your numeric choice:

全部设置完成后会有提示已经设置完成。

配置完成后可以用gcloud config list查看配置。更加详细的gcloud命令见

https://cloud.google.com/sdk/gcloud/reference/

示例

准备数据

下载示例代码,解压后进入estimator目录

cd cloudml-samples-master/census/estimator

mkdir data,将数据下载下来放在data里面。

创建存储分区。如果是第一次使用,进入后会有配置引导。

https://console.cloud.google.com/storage/browse

在命令行中设置BUCKET_NAME临时变量

BUCKET_NAME="刚刚设置的存储分区"

设置完成后可以通过echo命令查看是否正常设置

设置REGION临时变量。值与刚刚创建BUCKET_NAME的区域相同。我的是us-east1

REGION=us-east1

将data文件夹上传到google cloud

gsutil cp -r data gs://$BUCKET_NAME/data

设置TRAIN_DATA和EVAL_DATA临时变量

TRAIN_DATA=gs://$BUCKET_NAME/data/adult.data.csv
EVAL_DATA=gs://$BUCKET_NAME/data/adult.test.csv

把test.json也上传上去并且设置临时变量

gsutil cp ../test.json gs://$BUCKET_NAME/data/test.json
TEST_JSON=gs://$BUCKET_NAME/data/test.json

训练

这时候终于可以跑训练任务了。对于每次训练或者预测,都要取一个专门的名称标识。

JOB_NAME=census_test_1

指定输出地址。就是指定tensorflow代码在训练过程中生成的文件。

OUTPUT_PATH=gs://$BUCKET_NAME/$JOB_NAME

下面可以正式开始执行训练了

gcloud ml-engine jobs submit training $JOB_NAME \
    --job-dir $OUTPUT_PATH \
    --runtime-version 1.2 \
    --module-name trainer.task \
    --package-path trainer/ \
    --region $REGION \
    --scale-tier STANDARD_1 \
    -- \
    --train-files $TRAIN_DATA \
    --eval-files $EVAL_DATA \
    --train-steps 1000 \
    --verbosity DEBUG  \
    --eval-steps 100

参数比较简单,熟悉tensorflow应该很好理解。scale-tiler参数就是前面说到的执行任务机器配置,一共可以进行5种机器配置。其中custom配置需要自己写一个配置文件,通过加载配置文件来运行,不能直接将配置以命令行参数的方式添加

详细的ml-engine命令参数参考

https://cloud.google.com/sdk/gcloud/reference/ml-engine/

运行完之后会提示运行成功,并且返回当前任务状态。

之后可以随时查看当前任务状态

gcloud ml-engine jobs describe ${your job name}

也可以进入可视化页面查看,下图是运行结束后的作业截图

也可以随时查看,搜索日志

运行的中间数据存储在存储空间中。

同时google cloud也支持tensorboard,使用很简单

python -m tensorflow.tensorboard --logdir=$OUTPUT_PATH

生成模型

创建临时变量

MODEL_NAME=test

创建模型

gcloud ml-engine models create $MODEL_NAME --regions=$REGION

找到对应的这个时间戳

gsutil ls -r $OUTPUT_PATH/export
MODEL_BINARIES=$OUTPUT_PATH/export/Servo/{你的时间戳}/

生成模型

gcloud ml-engine versions create v1 \
--model $MODEL_NAME \
--origin $MODEL_BINARIES \
--runtime-version 1.2

生成的模型也可以直接通过网页查看

https://console.cloud.google.com/mlengine/models

预测

设置预测任务临时变量

JOB_NAME=census_test_prediction
OUTPUT_PATH=gs://$BUCKET_NAME/$JOB_NAME

进行预测

gcloud ml-engine jobs submit prediction $JOB_NAME \
--model $MODEL_NAME \
--version v1 \
--data-format TEXT \
--region $REGION \
--input-paths $TEST_JSON \
--output-path $OUTPUT_PATH/predictions

与训练任务类似,预测任务也可以查看任务的执行情况,日志以及返回数据。

执行完成后可以查看预测结果

gsutil cat $OUTPUT_PATH/predictions/prediction.results-00000-of-00001

总结

google cloud对于自家的tensorflow支持可以算的上完美。如果学习的是其它深度学习框架则需要使用传统云服务器的方式,开虚拟机去跑任务。不管怎么样,1美元返300美元还是相当有吸引力的。

至于300美元用完之后怎么办,由于google cloud只需要google账号,不需要身份认证,猥琐一点是可以再注册个账号继续使用赠送服务。不过最好还是祝愿看到文章的你我,到那个时候能够有钱自己装机或者直接继续享受google cloud服务。

参考资料:https://cloud.google.com/ml-engine/docs/

原创声明,本文系作者授权云+社区发表,未经许可,不得转载。

如有侵权,请联系 yunjia_community@tencent.com 删除。

编辑于

张鹏宇的专栏

1 篇文章1 人订阅

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏架构师之路

数据库中间件TDDL调研笔记

前篇: 《数据库中间件cobar调研笔记》 13年底负责数据库中间件设计时的调研笔记,拿出来和大家分享,轻拍。 一,TDDL是什么 TDDL是Taobao Di...

3929
来自专栏MelonTeam专栏

google cloud--穷人也能玩深度学习

导语:想玩深度学习但是没钱更新电脑配置怎么办?google cloud,只要1美元,只要1美元,300美元赠金带回家!365天免费使用,让你轻松入门深度学习!是...

35310
来自专栏玉树芝兰

如何用Sikuli自动录入成绩?

手里明明有一份学生成绩Excel表格,却还得一一手动把它们输入到教务系统?类似这样的简单重复枯燥操作,其实你都可以一键让电脑自动替你完成。

682
来自专栏数据和云

理论实践:循序渐进理解AWR细致入微分析性能报告

黄凯耀 (Kaya) ACOUG核心会员,高级技术专家 曾经工作于Oracle Real World Database Performance Group,一...

2918
来自专栏大数据挖掘DT机器学习

Python爬虫抓取携程网机票信息并发邮件通知

现在有一个需求,想查询一下给定出发地和目的地的机票数目,然后得到所需要的航班信息。不知道哪个网站比较好,于是用bing查了一下,搜索结果中第一个是携程在bin...

42611
来自专栏Hadoop数据仓库

HAWQ取代传统数仓实践(四)——定期ETL(Sqoop、HAWQ)

一、变化数据捕获(CDC)         初始装载只在数据仓库开始使用前执行一次,然而,必须要周期性地执行装载源数据过程。与初始装载不同,定期装载一般都是增量...

49410
来自专栏数据和云

诊断工具与方法:从OS到数据库

最近在“云和恩墨微信大讲堂”中,有很多朋友遇到性能问题,但是往往没有及时的诊断信息。我将之前书中的一章摘录出来和大家略为分享。 在数据库系统的诊断中,通常须要综...

3688
来自专栏Hadoop实操

如何在CDH6.0中使用纠删码

Fayson在前面的文章中介绍过《什么是HDFS的纠删码》,当时详细介绍了什么是纠删码,纠删码的实现原理,以及一些Benchmark的结果比较。

1164
来自专栏PPV课数据科学社区

原创:R语言18讲 (二)

在学习R语言数据分析之前,我们对于R这个软件需要做一些简单的了解,这样对于我们以后编程和数据分析有很大的帮助,简单是说,就是大致了解一下R软件的界面的和操作特性...

2454
来自专栏UML

什么是实体关系图(ERD)?

实体 - 关系(ER)图(也称为ERD或ER模型)是Peter最初在1976年提出的经典且流行的概念数据模型。它是系统内不同实体的视觉表示以及它们如何相互关联。...

1815

扫码关注云+社区