当前位置: 首页 > 编程日记 > 正文

在阿里云Kubernetes容器服务上打造TensorFlow实验室

tensorboard-2.jpg

简介

Jupyter notebook是强大的数据分析工具,它能够帮助快速开发并且实现机器学习代码的共享,是数据科学团队用来做数据实验和组内合作的利器,也是机器学习初学者入门这一个领域的好起点。

而TensorFLow是深度学习和机器学习最流行的开源框架,它最初是由Google研究团队开发的并致力于解决深度神经网络的机器学习研究,从2015年开源到现在得到了广泛的应用。特别是Tensorboard这一利器,对于数据科学家有效的工作也是非常有效的利器。

而利用Jupyter开发TensorFLow也是许多数据科学家的首选,但是如何能够快速从零搭建一套这样的环境,并且配置GPU的使用,同时支持最新的TensorFLow版本, 对于数据科学家来说既是复杂的,同时也是浪费精力的。在阿里云的Kubernetes集群上,您可以通过简单的按钮提交创建一套完整的TensorFlow实验环境,包括Jupyter Notebook开发模型,利用Tensorboard调整模型。

准备Kubernetes环境

阿里云容器服务Kubernetes 1.9.3目前已经上线,但是购买按量付费的GPU计算型服务器需要申请ECS工单开通。具体创建过程,可以参考创建Kubernetes集群。

体验通过应用目录部署TensorFlow实验室

通过Helm部署MPI的应用,本文以openmpi为例,向您展示如何快速在容器服务上运行MPI应用。实际上如果需要换成其他MPI实现只需要替换镜像即可。

2.1 可以通过应用目录,点击ack-tensorflow-dev

dev_1.jpg

2.2 点击参数, 就可以通过修改参数配置点击部署

dev_2.jpg

这里的密码是tensorflow, 您也可以改成您自己设定的密码

也可以登录到Kubernetes master运行以下命令

$ helm install --name tensorflow incubator/ack-tensorflow

2.3 运行结束后可以登录到控制台,查看tensorflow应用启动的状态

dev_3.jpg

登录使用TensorFlow实验环境

  1. 首先通过ssh登录Kubernetes集群,查看tensorflow应用列表
$ helm list
NAME          REVISION    UPDATED                     STATUS      CHART                       NAMESPACE
tensorflow    1           Thu Apr 12 07:54:59 2018    DEPLOYED    ack-tensorflow-dev-0.1.0    default

2. 利用helm status检查应用配置

$ helm status tensorflow
LAST DEPLOYED: Thu Apr 12 07:54:59 2018
NAMESPACE: default
STATUS: DEPLOYEDRESOURCES:
==> v1/Service
NAME                           TYPE          CLUSTER-IP   EXTERNAL-IP     PORT(S)                      AGE
tensorflow-ack-tensorflow-dev  LoadBalancer  172.19.2.39  10.0.0.1  6006:32483/TCP,80:32431/TCP  13m==> v1beta2/Deployment
NAME                           DESIRED  CURRENT  UP-TO-DATE  AVAILABLE  AGE
tensorflow-ack-tensorflow-dev  1        1        1           1          13mNOTES:
1. Get the application URL by running these commands:NOTE: It may take a few minutes for the LoadBalancer IP to be available.You can watch the status of by running 'kubectl get svc -w tensorflow-ack-tensorflow-dev'export SERVICE_IP=$(kubectl get svc --namespace default tensorflow-ack-tensorflow-dev -o jsonpath='{.status.loadBalancer.ingress[0].ip}')echo http://$SERVICE_IP:

这里可以看到外部SLB的ip是10.0.0.1, Jupyter Notebook的端口为80, Tensorboard为6006。

3. 通过Jupyter访问端点登录,本示例中Jupyter的访问地址是http://10.0.0.1, 输入前面设定的密码点击登录, 在本示例中我们设定的是tensorflow

jupyter-1.jpg

4. 点击Terminal按钮

jupyter-2.jpg

5. 在Terminal内执行nvidia-smi, 可以看到GPU的配置

jupyter-3.jpg

6. 通过git命令下载tensorflow样例代码,

$ git clone https://code.aliyun.com/kubernetes/Tensorflow-Examples.git

jupyter-4.jpg

7. 回到主页您就能看到Tensorflow-Examples已经下载到了您的工作目录

jupyter-5.jpg

8. 进入到 http://10.0.0.1/notebooks/Tensorflow-Examples/notebooks/4_Utils/tensorboard_basic.ipynb, 运行程序

jupyter-6.jpg

注意:如果您需要用Tensorboard观测训练效果请将日志记录到/output/training_logs下。

9. 以下为训练结果输出

jupyter-7.jpg

10. 这时您可以登录Tensorboard查看训练效果, 本示例中Tensorboard的地址为http://10.0.0.1:6006 。 这里您可以看到模型的定义和训练的收敛趋势。

tensorboard-1.jpg

总结

我们可以利用阿里云Kubernetes容器服务,轻松的搭建在云端搭建TensorFlow的环境,运行深度学习的实验室,并且利用TensorBoard追踪训练效果。欢迎大家使用阿里云上的GPU容器服务,在使用GPU高效计算的能力同时,比较简单和快速的开始模型开发工作。

相关文章:

PagedGeometry 笔记03

1. 创建草 PagedGeometry *grass new PagedGeometry(mCamera,50); grass->addDetailLevel<GrassPage>(100); // 在100单位内绘草。 GrassLoader *grassLoader new GrassLoader(grass); grass->setPageLoader(grassLoader); grassLoader->setH…

【Qt中文手册】QSortFilterProxyModel

1、说明 QSortFilterProxyModel类继承自QAbstractProxyModel是一个代理类,存在于另一模型Model和视图View之间,将另一个模型排序或者过滤后在视图上显示。 2、简单示例 没有使用代理的项视图模型代码如下 QTreeView *treeView = new QTreeView; MyItemModel *model = new…

吴恩达的Landing.ai又迎来一位AI大牛

参加 2019 Python开发者日&#xff0c;请扫码咨询 ↑↑↑整理 | 琥珀出品 | AI科技大本营&#xff08;ID&#xff1a;rgznai100&#xff09;近日&#xff0c;吴恩达在Twitter发消息称&#xff0c;欢迎王冬岩加入Landing.ai&#xff0c;负责公司的客户对接及战略伙伴合作&#x…

synchronize

1。synchronize方法的产生与vcl的局限性有关,因为vcl控件在同一时刻只能被单线程访问&#xff0c;如果多个线程同时访问vcl,vcl会出现问题。所以问了安全地访问vcl,Tthread类提供了一个方法叫synchronize&#xff0c;他可以让线程中的方法在主线程中执行&#xff0c;所以我们可…

Google BBR拥塞控制算法背后的数学解释 | 深度

参加 2019 Python开发者日&#xff0c;请扫码咨询 ↑↑↑作者 | 赵亚转载自CSDN网站杭州待了一段时间&#xff0c;回到深圳过国庆假期&#xff0c;无奈温州皮鞋?厂老板过节要回温州和上海&#xff0c;不在深圳&#xff0c;也就没有见着&#xff0c;非常遗憾&#xff01;国庆节…

【Linux】linux使用mplayer播放摄像头

1、安装mplayer 1.1 在ubuntu上安装mplayer sudo apt-get install mplayer1.2 在Centos7上安装mplayer 安装软件包&#xff1a; sudo yum localinstall http://download1.rpmfusion.org/free/el/rpmfusion-free-release-7.noarch.rpm安装mplayer&#xff1a; sudo yum ins…

leetCode刷题 2. 两数相加

原题链接&#xff1a; leetcode-cn.com/problems/ad… 题目描述 给定两个非空链表来表示两个非负整数。位数按照逆序方式存储&#xff0c;它们的每个节点只存储单个数字。将两数相加返回一个新的链表。 你可以假设除了数字 0 之外&#xff0c;这两个数字都不会以零开头。 示例&…

【Qt】pro 笔记

一、小技巧 1、获取pro文件所在目录的最后一级目录名 LASTDIR = $$relative_path($$_PRO_FILE_PWD_, $$_PRO_FILE_PWD_/..)2、获取变量的值 $$VAR:获取变量值; $${VAR}:获取变量值,{}的存在可以和后面的字符做隔离; $$(VAR):在执行qmake时,获取环境变量的值; $(VAR)…

7——ThinkPhp中的响应和重定向:

public function index3(){//响应数据&#xff1a;$data[title>"标题部分","content">"内容部分"];//return json($data);//return json($data,201);//return xml($data);//请求信息给模板&#xff1a;$this->assign(name,xiaoming222)…

GitHub超全机器学习工程师成长路线图,开源两日收获3700+Star!

参加 2019 Python开发者日&#xff0c;请扫码咨询 ↑↑↑ 大会议题以及更多详情请查看&#xff1a;https://pythondevdays2019.csdn.net/ 作者 | 琥珀 出品 | AI科技大本营&#xff08;ID:rgznai100&#xff09; 近日&#xff0c;一个在 GitHub 上开源即收获了 3700 Star 的项…

Android模拟器SD卡的使用

在Eclipse中&#xff0c;操作如下&#xff1a; 在设置了RUN的命令参数之后&#xff0c;RUN一个应用&#xff0c;然后使用DDMS的File Explorer工具导入导出文件。 打开DDMS工具&#xff1a;在Eclipse的Window->Open Perspective->Other...里面打开DDMS工具。 在DDMS的File…

受用一生的高效PyCharm使用技巧

参加 2019 Python开发者日&#xff0c;请扫码咨询 ↑↑↑作者 | Python编程时光转载自Python编程时光&#xff08;ID:Python-Time&#xff09;今天先从 PyCharm 入手&#xff0c;写一些可以明显改善开发效率的使用技巧&#xff0c;一旦学会&#xff0c;受用一生。以下代码演示是…

【Go】Go基础(一):Hello World!

1、 C格式hello.go package main import "fmt"func main(){fmt.Printf("Hello World!\n"); }2、编译 go build hello.go3、运行 执行go build编译后&#xff0c;会在当前目录下生成名为hello的可执行程序。 $ ./hello Hello World!4、Go格式的hello.g…

centos7上搭建http服务器以及设置目录访问

参考文献&#xff1a;http://www.jb51.net/article/137596.htm&#xff0c;原文摘抄如下&#xff0c;并根据具体需要作了相应的修改。 步骤&#xff1a; 1. 安装httpd服务 sudo yum install httpd Apache 的所有配置文件都位于 /etc/httpd/conf 和 /etc/httpd/conf.d 。网站…

一文看懂深度学习发展史和常见26个模型

参加 2019 Python开发者日&#xff0c;请扫码咨询 ↑↑↑来源 | AI部落联盟&#xff08;ID&#xff1a;AI_Tribe&#xff09;作者简介&#xff1a;沧笙踏歌&#xff0c;硕士毕业于北京大学&#xff0c;目前计算机科学与技术博士在读&#xff0c;主要研究自然语言处理和对话系统…

JBL无所不能与IPhone4、IPad2的完美盛宴

期待以久JBL白版终于到货了&#xff0c;由于水货的供电参数是110V~200V&#xff0c;行货是110~220V&#xff0c;所以本人选择了行货&#xff0c;因为水货的供电和国内的输入电压不符&#xff0c;时间用久了会影响小J寿命。经过测试后本人发现&#xff0c;用JBL无所不能连接IPho…

【Go】Go基础(二):学习网址汇总

Go语言中文网站 https://studygolang.com/ Go语言标准库文档 https://studygolang.com/pkgdoc 《The Way to Go》中文名《Go 入门指南》 https://github.com/Unknwon/the-way-to-go_ZH_CN https://github.com/Unknwon/the-way-to-go_ZH_CN/blob/master/eBook/directory.md…

堆和栈的主要区别由以下几点:

1、管理方式不同&#xff1b;2、空间大小不同&#xff1b;3、能否产生碎片不同&#xff1b;4、生长方向不同&#xff1b;5、分配方式不同&#xff1b;6、分配效率不同&#xff1b;管理方式&#xff1a;对于栈来讲&#xff0c;是由编译器自动管理&#xff0c;无需我们手工控制&a…

参与2011年7月13日举行的Azure国际猜拳锦标赛,赢取5,000美元大奖

你想要编写自己的“bot”角色并测试你的技能&#xff0c;在线同来自美国&#xff0c;加拿大&#xff0c;中国&#xff0c;德国&#xff0c;新西兰&#xff0c;瑞典和英国的Windows Azure开发者一教高下&#xff0c;并赢取5,000美元大奖吗&#xff1f;请先注册Azure国际猜拳锦标…

【Go】Go基础(三):基本结构和基本数据类型

1、Go程序源码结构 我们将一个Go程序的源码暂时称为一个项目 &#xff1a; 每个项目由若干个包组成&#xff1b; 每个包由同一个目录中的若干个go文件组成&#xff1b; 每个go文件中由若干函数、变量、常量等组成&#xff1b; 每个函数由流程控制语句、变量、常量、运算符和函…

2019如何学Python?这里有你需要的答案

点击上方↑↑↑蓝字关注我们~参加 2019 Python开发者日&#xff0c;请扫码咨询 ↑↑↑编辑 | Jane出品 | Python大本营&#xff08;公众号id&#xff1a;pythonnews&#xff09;根据 2018 年 Python 开发者大调查&#xff0c;Python 3 的渗透率已经快速增长至 84%&#xff0c;越…

Cisco HSRP热备份路由器协议配置

HSRP热备份路由器协议&#xff1a; HSRP是 Hot Standby Routing Protocol&#xff08;热备份路由协议&#xff09;的缩写&#xff0c;它的作用是当核心路由器不能正常工作时&#xff0c; 备用路由器能够实现自动平滑的替换&#xff0c;以保证网络正常使用。该协议中含有多台路由…

FTP与TFTP的区别

文件传输协议(FTP)实际上就是传输文件的协议,它可以应用在任意两台主机之间&#xff0c;但是FTP不仅仅是一个协议,它同时也是一个程序。作为协议,FTP是被应用程序所使用的;而作为程序,用户需要通过手动方式来使用FTP并完成文件的传送。FTP允许执行对目录和文件的访问,并且可以完…

写给NLP研究者的编程指南

点击上方↑↑↑蓝字关注我们~参加 2019 Python开发者日&#xff0c;请扫码咨询 ↑↑↑作者 | 赤乐君&#xff0c;日本某大手研发部门的NLP工程师。关注关系抽取与知识图谱的相关研究。来源 | 赤乐君的知乎专栏最近AllenNLP在EMNLP2018上做了一个主题分享&#xff0c;名为“写给…

【数据库】sqlite3常用命令及SQL语句

【数据库】sqlite3数据库备份、导出方法汇总 一、准备工作 0、安装SQLite3 1&#xff09;ubuntu命令安装&#xff08;不是最新版本&#xff09; sudo apt install sqlite32&#xff09;源码安装&#xff08;可以安装最新版本&#xff09; 下载&#xff1a; https://www.sq…

资本主义社会是不存在人道的

对叙利亚人民感到无助而写点文章&#xff0c;虽然没有什么大的作用&#xff0c;也谈谈自己对于战争与和平的理解&#xff0c;战争与和平就相当于爱与恨一样&#xff0c;爱的热切&#xff0c;恨之入骨&#xff0c;虽然形容不当&#xff0c;人性的双面总是要拿来剖析一二的。 人类…

再谈javascript图片预加载经典技术

图片预加载技术的典型应用&#xff1a; 如lightbox方式展现照片&#xff0c;无疑需要提前获得大图的尺寸&#xff0c;这样才能居中定位&#xff0c;由于javascript无法获取img文件头数据&#xff0c;必须等待其加载完毕后才能获取真实的大小然后展示出来&#xff0c;所以lightb…

【Go】Go基础(四):流程控制(控制结构)

1、if-else结构 格式&#xff1a; if condition1 {// do something } else if condition2 {// do something else } else {// default }和C的不同&#xff0c;条件语句没有大括号&#xff1b; 新增的语法&#xff1a; if initialization; condition {// do something }例…

让世界零距离 小鱼易连的大梦想

“他是高材生&#xff0c;也是技术大拿。十年北美&#xff0c;十年中国&#xff0c;他在高科技领域善于创新、精于管理&#xff0c;五项中美专利加身。他在北电网络领导团队不断创新&#xff0c;成就亚太顶尖;他曾任宝利通全球高管&#xff0c;带领团队从初创一路起飞&#xff…

程序员再也不能埋头敲代码了

上周&#xff0c;阿里巴巴重磅发布了机器学习平台 PAI 3.0 版本&#xff0c;据悉&#xff0c;这个 PAL 平台封装了 200 多种经典算法&#xff0c;可以轻松搭建机器学习实验。作为码农一枚&#xff0c;使我不得不抬起原本一直低着敲代码的头&#xff0c;看看这个为 AI 狂欢的世界…