CaffeOnSpark安装和使用教程系列三:集群环境下使用CaffeOnSpark进行MNIST数据集的测试

  • Post author:
  • Post category:其他



说明:

Yahoo




Github


中给出了在


Hadoop Yarn


集群中


CaffeOnSpark


的简单安装和测试教程:(集群环境和单节点有很多重复步骤,废话比较多)


https://github.com/yahoo/CaffeOnSpark/wiki/GetStarted_yarn

但该教程只能作为参考,完全按照教程中的操作会出现一堆莫名其妙的问题。

1、

确保

CaffeOnSpark

已经正确安装。

2、

确保

Hadoop




Spark


集群已经正确部署。

3、

配置

Spark on Yarn


修改

Spark




spark-env.sh


配置文件:

cd /home/cluster/software/spark-1.6.0-bin-hadoop2.6/conf

vim spark-env.sh


添加如下配置信息:

export YANR_CONF_DIR=

/home/cluster/software/hadoop-2.6.4/etc/hadoop

export SPARK_LOCAL_DIRS=

/home/cluster/software/spark-1.6.0-bin-hadoop2.6

export SPARK_YARN_USER_ENV=

“CLASSPATH=/home/cluster/software/hadoop-2.6.4/etc/hadoop”




spark-env.sh

配置文件发送到集群的其他节点:

scp -r spark-env.sh cluster@

slave1

:

/home/cluster/software/spark-1.6.0-bin-hadoop2.6/conf/

scp -r spark-env.sh cluster@

slave2

:

/home/cluster/software/spark-1.6.0-bin-hadoop2.6/conf/

4、

下载

MNIST

数据集


进入

CaffeOnSpark

的主目录,执行如下指令:


sudo

./scripts/setup-mnist.sh



注:通过指令可以看到

CaffeOnSpark

的所有者为


root


,即普通的用户对


CaffeOnSpark


目录下的所有文件都没有写权限,这点非常重要。如果不注意这点,后续也会遇到权限问题的错误。使用“


ls -l


”指令可以查看


CaffeOnSpark


的详细权限信息。

5、

修改

CaffeOnSpark/data/lenet_memory_train_test.prototxt

文件:

sudo vim lenet_memory_train_test.prototxt


注:在该文件中主要是修改训练和测试数据的路径信息,教程中给出的资源路径为:



查看发现在

CaffeOnSpark/data

目录下确实有


mnist_test_lmdb





mnist_train_lmdb


两个资源文件:



但由于前文介绍的,只有

root

用户对


CaffeOnSpark


有操作权限,因此若在


lenet_memory_train_test.prototxt


文件中传入


CaffeOnSpark/data


下的这两个资源文件,在执行过程中会出现“


Permission Denied


”的错误!



因此,在

software

新建一个所有者为普通用户的文件夹


test


,将


mnist_test_lmdb





mnist_train_lmdb


这两个资源文件拷贝到该文件夹下,在


lenet_memory_train_test.prototxt


中传入


test


下这两个资源文件的路径。

6、

修改

CaffeOnSpark/data/lenet_memory_solver.prototxt

文件:






net


”中


lenet_memory_train_test.prototxt


路径信息修改为绝对路径;


去掉



solver_mode:CPU


”前边的“


#



7、导入临时环境变量

export

LD_LIBRARY_PATH

=${CAFFE_ON_SPARK}/caffe-public/distribute/lib:${CAFFE_ON_SPARK}/caffe-distri/distribute/lib

export

LD_LIBRARY_PATH

=${LD_LIBRARY_PATH}:/usr/local/cuda-7.0/lib64:/usr/local/mkl/lib/intel64/

export

CAFFE_ON_SPARK

=/home/cluster/software/CaffeOnSpark

8、

执行

CaffeOnSpark

示例程序




Spark

集群中输入如下指令:

spark-submit


–master

yarn –deploy-mode client


–num-executors

1


–files

${CAFFE_ON_SPARK}/data/lenet_memory_solver.prototxt,${CAFFE_ON_SPARK}/data/lenet_memory_train_test.prototxt


–conf

spark.driver.extraLibraryPath=”${LD_LIBRARY_PATH}”


–conf

spark.executorEnv.LD_LIBRARY_PATH=”${LD_LIBRARY_PATH}”

–class

com.yahoo.ml.caffe.CaffeOnSpark

${CAFFE_ON_SPARK}/caffe-grid/target/caffe-grid-0.1-SNAPSHOT-jar-with-dependencies.jar


-train


-features

accuracy,loss


-label

label


-conf

${CAFFE_ON_SPARK}/data/lenet_memory_solver.prototxt


-devices

1


-connection

ethernet


-model

hdfs:///mnist_cluster/mnist.model


-output

hdfs:///mnist_cluster/mnist_features_result

9、查看运行结果


由于设定训练的模型和特征结果保存在

HDFS

上,因此可以在


Hadoop


的监控页面看到如下信息:


前两个为得到的最终结果,后边四个分别为迭代

1000

次和


2000


的快照信息。


通过以下指令可以查看最终得到的特征文件的具体内容信息:

hadoop fs -cat hdfs:///mnist_cluster/mnist_features_result/*



注:在

lenet_memory_solver.prototxt

中指定最大迭代次数为


2000


次,且每


1000


次打印一次快照,因此在结果文件中有


1000





2000






迭代


的信息





版权声明:本文为SadOnMyOwn原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。