在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
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.****.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分布式的方法,我怎么在官网没看到呢?希望知道的跟我说一下,感激不尽!!!