在CentOs操作系统下搭建tensorflow分布式训练(菜鸟入门)

一、在windows系统下装centos系统(我用的是虚拟机,不是双系统)

 

配置:我用的电脑是台式i5处理器,4g内存,就这样开一个centos虚拟机就直接跑到76%的内存了,如果对内存有必要的话还是可以考虑一下做一个双系统(我没试过,大家可以试试)

a、装机过程很费劲,反正好多坑,如果没人带的话要走好多弯路,不过这能大幅度提高你的抗击打能力(被挫折打击的。。。)。

b、装机的话不是要选择centos系统的镜像文件吗?如果想要界面的话(就是有图标的界面),不要选择mini版,mini版是不带界面的。

c、进行centos系统安装的时候尽量找一个博客学着装,这样能少走挺多弯路的(这个网上有好多教程可以参考着看),记住如果要装带界面的centos系统时,安装的时候会有提示的,别粗心大意地忘了选,结果装的是不带界面的。安装所选的语言尽量选中文,如果你是以后做项目的话那还是选英文吧。还要记得选择网络连接,centos系统安装的时候默认是不联网的哦!!

d、系统装好了别高兴太早,你要走的坑才刚刚开始。有好多东西你要知道(因为之前是在windows系统),现在换了一个环境你肯定好多不熟悉,好多知识你要知道。首先就是linux的一些基本指令(注意有些centos指令和ubantu是不同的),cd、ls、su root、vi、等指令。还有基本的centos文件系统,它不像windows系统,可以直接在 我的电脑、c盘等地方看到有什么文件。centos有两套文件系统(我这么认为的),一套是在桌面下,通过鼠标点击进入各种文件等(HOME路径),你可以很方便的通过复制黏贴等操作转移文件。另一套是在命令行下,/usr/lib 等这样的路径,与windows系统不同的是,当我们下载某些软件的时候我们会选择文件的下载路径和安装路径,而centos的某些软件则不会询问你它安装到哪(也就是说,它有固定的安装地点还不能变),这有的时候就很烦(因为找不到)。所以你要知道一些查找所安装的软件的命令,才能知道软件在哪。

e、熟悉了centos系统的话(我估计你得安装个好几次,因为可能会出好多问题,不过不要灰心,成功就是各种失败堆积起来的),现在我们来看看怎么装tensorflow

二、在centos系统下安装tensorflow

a、https://www.cnblogs.com/yangykaifa/p/7346782.html(可以参考一下这个人的博客)

记住,centos7是自带python2.7的,所以不用下载安装,如果你需要使用python3,则等你用的时候再下载。

安装步骤

1、安装pip(这些是tensorflow的依赖包,需要先下载)

yum update -y && yum install -y python python-devel epel-release.noarch python-pip

2、上图显示pip没有成功安装,接下来採用以下的方法:

yum -y install python-pip

记住,上面三个文件缺一不可,都要用的上的,如果提示pip要更新的话,就按照提示更新即可。

 

3、完毕后记得清除缓存:yum clean all

4、安装tensorflow

https://blog.csdn.net/jorg_zhao/article/details/80075293(建议看一下这个博客),当我们直接用 pip install tensorflow这个命令的话,会发现下载及其缓慢,非常浪费时间,这是因为它是直接从外网下载的,所以慢。我们可以通过国内的镜像网站来下载,这样很快,而且不容易出问题(因为国外网站下载速度缓慢,所以可能会报超时错误)。

pip install -i https://pypi.tuna.tsinghua.edu.cn/simple/ --upgrade tensorflow      # for Python 2.*

这里你可能会问,为什么tensorflow还分GPU,和CPU版呢?我只能说硬件的好坏直接影响你神经网络跑的速度,如果是在自己电脑上就用CPU版的,如果是在集群上装,则一般是GPU版的。安装GPU版的会有些麻烦。

5、安装完如果出现successfull的字样说明你安装成功了,祝贺你!!!

6、验证一下吧这个网上有好多验证代码,随便试一下就行

(注意,如果你现在不是在上面这个路径下,import tensorflow会出问题,换句话说你所在的路径对import tensorflow来说很重要),如果不是这个路径则 cd 后面什么也不加 ,就能进入这个目录,之后就能导入了。

三、安装python编辑器 IDLE

a、为什么要装IDE呢?我们在前面验证tensorflow的时候直接在python命令下写代码不是挺好的吗?错了,我们往往要在网上直接粘某些代码,这个时候我们发现直接粘的代码没法再命令行里执行,直接新建一个.py文件然后写入粘贴的代码也不是不行,但还是麻烦,那我们就用一个小小的IDE(这个就是python IDLE)。其实这个软件当你用的时候发现很简陋,挺丑的,不过这个软件不怎么耗空间,如果你以后要开发大型的系统,这个软件是不适用的,现在先凑合着用。

b、安装IDLE

你会发现这不是安装一个python工具包吗?没错,这个是自带的,所以简陋就不奇怪喽

安装完之后,直接在命令行输入idle(记住小写)就能出现界面

。。。。。。。。。。。。。。。。。。。。

挺垃圾的是吧,不过基本的功能都在,现在你就可以粘贴代码来执行了。写好代码之后,会出现run按钮,点击run,run module即可运行

 

四、开始写代码,搞分布式训练

a、这里我们必须要了解什么是分布式训练,简单来说,就是好几台电脑一起来工作,其中一些负责运算称为worker,一些负责参数传递称为ps,这些家伙合在称为一个cluster,一起完成一整套训练工作。

b、搞分布式之前最好了解一下tensorflow,这个可以去官网看,我在官网没看到分布式的内容,有点遗憾。可以搜一搜tensorflow分布式搭建,详细了解一些专业术语,对你搭建系统有帮助。

c、开始搭建一个分布式系统。(这里我会写的详细一点)

https://blog.csdn.net/u010159842/article/details/58605865(参考这个人的博客)

1、新建三个.py文件分别写入代码

第一个命名为worker1.py,代码如下

import tensorflow as tf

worker1 = "192.168.157.130:2222"

worker2 = "192.168.157.130:2223"

worker_hosts = [worker1, worker2]

cluster_spec = tf.train.ClusterSpec({ "worker": worker_hosts})

server = tf.train.Server(cluster_spec, job_name="worker", task_index=0)

server.join()

第二个命名为worker2.py,代码如下

import tensorflow as tf

worker1 = "192.168.157.130:2222"

worker2 = "192.168.157.130:2223"

worker_hosts = [worker1, worker2]

cluster_spec = tf.train.ClusterSpec({ "worker": worker_hosts})

server = tf.train.Server(cluster_spec, job_name="worker", task_index=1)

server.join()

第三个命名为client.py,代码如下

import tensorflow as tf
import numpy as np

train_x = np.linspace(-1,1,101)
train_y = 2*train_x + np.random.randn(*train_x.shape)*0.33+10

x = tf.placeholder("float")
y = tf.placeholder("float")
w = tf.Variable(0.0,name="weight")
b = tf.Variable(0.0,name="reminder")

init_op = tf.global_variables_initializer()
cost_op = tf.square(y-tf.multiply(x,w)-b)
train_op = tf.train.GradientDescentOptimizer(0.01).minimize(cost_op)

with tf.Session("grpc://localhost:2222") as sess:
    with tf.device("/job:worker/task:0"):
        sess.run(init_op)

        for i in range(10):
            for (c,d) in zip(train_x,train_y):
                sess.run(train_op,feed_dict={x:c,y:d})

        print(sess.run(w))
        print(sess.run(b))

2、(关键)打开三个终端(terminal),打开三个idle,打开三个.py文件,运行三个.py文件

a、打开一个终端,输入idle

b、在idle中点击file,点击open,找到自己的worker1.py文件,打开

c、点击run,run module,运行文件,

再terminal中显示这样一句话。

d、再开启一个terminal(重要)

在上一个terminal中点击 文件,点击 打开终端,输入idle(可能要切换到root下),点击file,open,打开worker2.py,运行。

显示这样一句话。

e、最后同理,运行client.py文件

 

在第三个idle中显示这样两个数字,则说明分布式演示成功。

五、思考与回顾

a、现在我们是在一台电脑上模拟分布式系统,我还没在两台电脑上模拟分布式呢,明天再说吧,今天就是把最近工作总结一下。

b、在两台上模拟的话就是把文件分别写在不同的电脑上,并把文件中的ip地址改一下,不过不知道还会不会出现新的问题(我想肯定会出现的!!!)

c、最后谢谢大家的观看。

d、有关tensorflow分布式的方法,我怎么在官网没看到呢?希望知道的跟我说一下,感激不尽!!!

 

 

 

 

 

 

 

 

  • 3
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值