惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
WordPress大学
WordPress大学
人人都是产品经理
人人都是产品经理
Engineering at Meta
Engineering at Meta
小众软件
小众软件
I
InfoQ
有赞技术团队
有赞技术团队
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
Martin Fowler
Martin Fowler
月光博客
月光博客
雷峰网
雷峰网
aimingoo的专栏
aimingoo的专栏
云风的 BLOG
云风的 BLOG
Last Week in AI
Last Week in AI
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
S
SegmentFault 最新的问题
The GitHub Blog
The GitHub Blog
Y
Y Combinator Blog
V
Visual Studio Blog
博客园 - 叶小钗
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
GbyAI
GbyAI
P
Proofpoint News Feed
Apple Machine Learning Research
Apple Machine Learning Research

少数派

派早报:Google 发布 Fitbit Air 等 - 少数派 「新人报到」確認需求,再開始 - 少数派 从 SOLO 独立开发者社区,我看到了越来越多开发者开始做自己的产品 - 少数派 我怎么管理那些"不常做,但总会忘"的生活事项 - 少数派 人形机器人量产元年,数据才是具身智能的“生死线” - 少数派 BuhoLaunchpad 高度还原 Mac 启动台:开发历程与思考 - 少数派 五年陪伴依然不舍,DIY 换壳后让罗技 MX Master 3 继续服役 - 少数派 新玩意 240|少数派的编辑们最近买了啥? - 少数派 一日一技|为什么你应该关闭 iOS 的键盘声音 - 少数派 我做了个插件和 Skills,一键提取任何网站的设计规范 Design.md - 少数派 住在三四线城市的你,该开始录播客了 - 少数派 甘南秘境,大白高国 - 少数派 AI的审美:谁让把我变成川内倫子 - 少数派 返工怎能不烦恼,打工人片单总有一部是你的「嘴替」 - 少数派 为了让「上厕所」更健康,我做了一个小工具 - 少数派 AI + Skill,能够让生成的文章去除 AI 味吗? - 少数派 新玩意|韶音OpenDots ONE 耳夹式耳机 - 少数派 《美满》| 在每一个春天的晚上相爱(362) - 少数派 新玩意|优篮子 PS01 MagSnap 磁吸支架 - 少数派 自我整合手记 | 我开始早睡了:用稳定规则,为自由托底 - 少数派 用龙虾(OpenClaw)两个多月,我最深的12个体会 - 少数派 听歌时间到,12 张你可能错过的 2025 华语乐坛好专辑 - 少数派 承诺能追吗 - 少数派 macOS 26启动台没了? 我做了个不一样的App启动器 - Keboard - 少数派 《四海为家的人》| INTJ对话INTJ(361) - 少数派 你发过的那些黑历史,是时候一次清干净了 - 少数派 新玩意:安安静静玩,越玩越专注:计客密码机 - 少数派 iPad 用户首次体验 Android 平板:vivo Pad6 Pro - 少数派 数据逻辑强 - 少数派 极北行+ | 一路向北,探访日本至北之地 | 001 - 少数派
负荷
2018-06-21 · via 少数派
null

负荷

下午,我用 Python 深度学习框架 Keras 训练了一个包含3层神经网络的回归模型,预测波士顿地区房价。

null

这是来自于 “Deep Learning with Python” 书上的一个例子。

null

运行的时候,代码有两个大循环。

第一个把数据跑100遍(epochs),第二个把数据跑500遍。

我的笔记本电脑算起来很吃力,风扇一直在响。

大热天的,看着好可怜。

用笔记本电脑进行机器学习,还是不大合适的。

我要是有一块 GPU 就好了……

此时,突发奇想。

我虽然没有带 nVidia GPU 的设备,不过谁说非要在本地机器运行代码了?

早已是云时代了啊!

能否用云端 GPU 跑机器学习代码,让我的笔记本少花些力气呢?

偶遇

有这个想法,是因为最近在 Youtube 上面,我看到了 Siraj Raval 的一段新视频

null

这段视频里,他推荐了云端 GPU 提供平台 FloydHub。

null

我曾经试过 AWS GPU 产品。

那是在一门深度学习网课上。

授课老师跟 AWS 合作,为全体学生免费提供若干小时的 AWS 计算能力,以便大家顺利完成练习和作业。

我记得那么清楚,是因为光如何配置 AWS ,他就专门录了数十分钟的视频。

AWS 虽然已经够简单,但是对于新手来说,还是有些门槛。

null

FloydHub 这个网站,刚好能解决用户痛点。

首先它能够包裹 AWS ,把一切复杂的选择都过滤掉。

其次它内置了几乎全部主流深度学习框架,自带电池,开箱即用;

null

另外,它提供了丰富而简明的文档,用户可以快速上手。

正如它的主页宣称的:

Focus on what matters. Let FloydHub handle the grunt work.

翻译过来就是:

关注你想做的事儿。脏活累活,扔给 FloydHub 吧。

凡是设计给懒人用的东西,我都喜欢。

我于是立即注册了账户,并且做了邮件验证。

null

之后,我免费获得了2个小时的 GPU 时间,可以自由尝试运行机器学习任务。

null

为了能把珍贵的 GPU 运算时间花在刀刃上,我认真地阅读了快速上手教程。

null

几分钟后,我确信自己学会了使用方法。

尝试

首先,我到 FloydHub 的个人控制面板上,新建了一个任务,起名叫做 “try-keras-boston-house-regression”。

然后,我在本地的 Jupyter Notebook 里,把代码导出为 Python 脚本文件,如下图所示。

null

我新建了一个目录,把脚本文件拷贝了进来。

null

这个 Python 脚本,我仅仅在最后加了3行代码:

import pickle

with open('/output/data.pickle', 'wb') as f:
    pickle.dump([all_scores, all_mae_histories], f)

加入这几行代码,是因为我们需要记录运行中的一些数据(即 all_scoresall_mae_histories)。这些记录必须放到 /output 文件夹下面,才能在运行结束后保存下来。

然后,进入终端,利用 cd 命令,进入到这个文件夹。

执行:

pip install floyd-cli

这样,本地的 FloydHub 命令行工具就安装好了。

执行下面命令登录进去:

floyd login

系统会提示你,输入 FloydHub 上的账号信息。

输入正确后,执行:

floyd init try-keras-boston-house-regression

注意这个名称,必须和刚才在控制面板新建的任务名称一致。

配置都完成了,下面直接运行就可以了。

输入:

floyd run --gpu --env tensorflow-1.8 "python 03-house-price.py"

这句话的意思是:

  • 使用 GPU 计算;
  • 运行环境选用 Tensorflow 1.8 版本,及对应的 Keras (2.1.6)。

如果你希望使用其他深度学习框架或版本,可以参考这个链接

null

FloydHub 对我们的命令,是这样回应的:

null

操作结束?

对,就这么简单。

你的任务,已在云端运行了。

结果

然后,我就忙自己的事儿去了。

喝茶,看书,还扫了几眼微信订阅号。

虽然是按时计费,但你不用因为怕多算钱,就死死盯住云端运行过程。

一旦任务结束,它自己会退出运行,不会多扣你一分钟珍贵的 GPU 运行时间。

等我回到电脑前面,发现任务已完成。

null

整个儿过程中,GPU 内存着实够忙碌的(占用率一直超过90%)。

不过 GPU 好像很清闲的样子,一直在百分之十几晃悠。

看来,我们的神经网络,层数还是太少了,结构不够复杂。

GPU 跑起来,很不过瘾。

往下翻页,看看输出的结果。

null

程序的输出,包括 GPU 资源创建、调用的一些记录,这里都有。

打开 output 标签页,咱们看看结果。

null

之前追加3行代码,生成的 pickle 记录文件,就在这里了。

看来,FloydHub 确实帮我们完成了繁复的计算过程。

我的笔记本电脑,一直凉凉快快,等着摘取胜利果实。

选择下载,把这个 pickle 文件下载到本地。跟我们的 Jupyter Notebook 放在一个目录下。

回到 Jupyter Lab 运行界面。

新开一个 ipynb 文件。

我们输入以下代码,查看运行记录是否符合我们的需要。

import pickle
import matplotlib.pyplot as plt
import numpy as np
%matplotlib inline

with open('data.pickle', 'rb') as f:
    [all_scores, all_mae_histories] = pickle.load(f)

num_epochs = 500
average_mae_history = [
    np.mean([x[i] for x in all_mae_histories]) for i in range(num_epochs)
]

plt.plot(range(1, len(average_mae_history) + 1), average_mae_history)
plt.xlabel('Epochs')
plt.ylabel('Validation MAE')
plt.show()

这些代码,只是为了绘图,本身没有任何复杂运算。

这是运行结果:

null

可视化结果与书上的一致。

证明机器学习代码在云端运行过程一切顺利。

我们还可以查看剩余的可用免费时长。

null

嗯,还剩下1个多小时 GPU 运算时间呢,回头接着玩儿。

小结

做深度学习任务,不一定非得自己购置设备。主要看具体需求。

假如你不需要全天候运行深度学习代码,只是偶尔才遇到计算开销大的任务,这种云端 GPU ,是更为合适的。

你花钱买了深度学习硬件设备,就只有贬值的可能。而且如果利用率低,也是资源浪费。

而同样的租赁价格,你可以获得的计算能力,却是越来越强的。

这就是摩尔定律的威力吧。

你用没用过其他的云端 GPU 服务?价格和易用程度,与 FloydHub 相较如何?

如果你对数据科学感兴趣,欢迎阅读我的系列教程。索引贴为《如何高效入门数据科学?》。

喜欢请点赞。还可以微信关注和置顶我的公众号“玉树芝兰”(nkwangshuyi)