【发布时间】:2017-10-26 07:58:27
【问题描述】:
我在 Amazon 深度学习 linux AMI 上安装 mxnet GPU for R 时遇到问题。环境变量是如此混乱,以至于任何非专家系统管理员都无法弄清楚它是一场噩梦。
第 1 步:安装大量丢失/损坏的程序和 R 包
sudo yum install R
sudo yum install libxml2-devel
sudo yum install cairo-devel
sudo yum install giflib-devel
sudo yum install libXt-devel
sudo R
install.packages("devtools")
library(devtools)
install_github("igraph/rigraph")
install.packages(‘DiagrammeR’)
install.packages(‘roxygen2’)
install.packages(‘rgexf’)
install.packages(‘influenceR’)
install.packages(‘Cairo’)
install.packages(“imager”)
第 2 步:编辑 config.mk 文件
cd /src/mxnet
cp make/config.mk .
echo "USE_BLAS=openblas" >>config.mk
echo "ADD_CFLAGS += -I/usr/include/openblas" >>config.mk
echo "ADD_LDFLAGS += -lopencv_core -lopencv_imgproc -lopencv_imgcodecs" >>config.mk
echo "USE_CUDA=1" >>config.mk
echo "USE_CUDA_PATH=/usr/local/cuda" >>config.mk
echo "USE_CUDNN=1" >>config.mk
*注意,即使设置了 USE_CUDA_PATH,它仍然找不到 libcudart.so,需要在 make 命令中链接(稍后显示)
第 3 步:新建配置文件,以便 make 命令可以找到 libcudart.so
/etc/ld.so.conf.d/cuda.conf
添加 /usr/local/cuda-8.0/lib64
sudo ldconfig
- 注意这是由 nvidia 发布的,但对制作 rpkg 没有任何帮助
第四步:设置R目录
Rscript -e "install.packages('devtools', repo = 'https://cran.rstudio.com')"
cd R-package
Rscript -e "library(devtools); library(methods); options(repos=c(CRAN='https://cran.rstudio.com'));
install_deps(依赖 = TRUE)" 光盘..
第五步:制作
cd /src/mxnet
sudo make -j8
结果:
make CXX=g++ DEPS_PATH=/home/ec2-user/src/mxnet/deps -C /home/ec2-user/src/mxnet/ps-lite ps
cd /home/ec2-user/src/mxnet/dmlc-core;使 libdmlc.a USE_SSE=1 config=/home/ec2-user/src/mxnet/config.mk; cd /home/ec2-user/src/mxnet
make[1]: 进入目录/home/ec2-user/src/mxnet/dmlc-core'
make[1]:libdmlc.a' 是最新的。
make[1]: 离开目录/home/ec2-user/src/mxnet/dmlc-core'
make[1]: Entering directory/home/ec2-user/src/mxnet/ps-lite'
make[1]: ps'.
make[1]: Leaving directory/home/ec2-user/src/mxnet/ps-lite' 无事可做
ar crv lib/libmxnet.a
*注意,即使更改 config.mk 文件,make 命令总是返回“nothing to update”
第6步:尝试制作rpkg
Cd /src/mxnet
Sudo make rpkg
错误: 错误:“mxnet”的包或命名空间加载失败: .onLoad 在“mxnet”的 loadNamespace() 中失败,详细信息: 调用:dyn.load(file, DLLpath = DLLpath, ...) 错误:无法加载共享对象“/usr/lib64/R/library/mxnet/libs/libmxnet.so”: libcudart.so.8.0:无法打开共享对象文件:没有这样的文件或目录 错误:加载失败 执行停止 错误:加载失败
所以它正在寻找一个不存在的位置:/usr/lib64/R/library/mxnet/libs/ 当文件实际存在时: /home/ec2-user/src/mxnet/R-package/inst/libs/libmxnet.so 或者 /home/ec2-user/src/mxnet/lib/libmxnet.so
到目前为止我所尝试的:
sudo LD_LIBRARY_PATH=/usr/local/cuda/lib64 make rpkg
这将修复缺少的 libcudart.so.8.0 问题,但只需替换为: libmklml_intel.so:无法打开共享对象文件:没有这样的文件或目录以及原来的'找不到libmxnet.so
还尝试过: 1.实际创建目录(/usr/lib64/R/library/mxnet/libs/)然后复制libmxnet.so那里 结果:同样的错误
将 /home/ec2-user/src/mxnet/R-package/inst/libs/ 添加到 make 命令 sudo LD_LIBRARY_PATH=/home/ec2-user/src/mxnet/R-package/inst/libs make rpkg 结果:同样的错误
-
大量的环境标签都失败了:
导出 MXNET_HOME=/usr/lib64/R/library/mxnet/libs/ 导出 MXNET_HOME=/usr/lib64/R/library/mxnet/libs/libmxnet.so
sudo ldconfig /usr/local/cuda/lib64 sudo ln -s /usr/lib64/R/library/mxnet/libs /usr/lib sudo ln -s /usr/lib64/R/library/mxnet/libs/libmxnet.so /usr/lib sudo ln -s /usr/local/lib/libmklml_intel.so /usr/lib sudo ln -s /usr/local/lib/libiomp5.so /usr/lib sudo ln -s /usr/local /usr/lib 导出 LD_LIBRARY_PATH=/usr/local/cuda-8.0/lib64/libcudart.so.8.0 导出 LD_LIBRARY_PATH=/usr/lib64/R/library/mxnet/libs/libmxnet.so /usr/lib 导出 LD_LIBRARY_PATH=/usr/local/cuda-8.0/targets/x86_64-linux/lib/:$LD_LIBRARY_PATH 导出 LD_LIBRARY_PATH=/usr/local/cuda-8.0/lib64/libcudart.so.8.0
在所有这些工作中,因为我在 mxnet R 包再次崩溃之前短暂地让它工作。我在这个装置上投入了 50 多个小时,坦率地说,这很荒谬。安装软件比编写实际的网络更难......
我没有 5 年以上的 linux 系统管理员知识,所以如果您愿意,请提供更多帮助,然后是“修复环境变量”。我可以看出这显然是什么问题,但不知道什么是“修复环境”变量的蕴涵。
最重要的是,即使在成功安装 R 包之后,它仍然无法工作,直到将 Rstudio 服务器的配置文件设置为:rsession-ld-library-path=/opt/local/lib:/usr/local /cuda/lib64
【问题讨论】:
标签: r linux amazon-ec2 mxnet