为亚马逊深度学习AMI安装mxnet GPU R软件包的问题

时间:2017-10-25 22:14:37

标签: r linux amazon-ec2 mxnet

我无法在亚马逊深度学习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发布的,但绝对没有任何帮助make rpkg

第4步:设置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(dependencies = TRUE)"     cd ..

第5步:制作

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; make 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命令也始终返回“无需更新”

第6步:尝试制作rpkg

Cd /src/mxnet
Sudo make rpkg

错误: 错误:'mxnet'的包或命名空间加载失败:  .onLoad在loadNamespace()中失败,对于' mxnet',详情:   call: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 结果:同样的错误

  1. 将/ 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 结果:同样的错误

  2. 所有失败的荒谬环境标签:

    导出MXNET_HOME = / usr / lib64 / R / library / mxnet / libs / export 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 export LD_LIBRARY_PATH = / usr / local / cuda-8.0 / lib64 / libcudart.so.8.0 export LD_LIBRARY_PATH = / usr / lib64 / R / library / mxnet / libs / libmxnet.so / usr / lib export LD_LIBRARY_PATH = / usr / local / cuda-8.0 / targets / x86_64-linux / lib /:$ LD_LIBRARY_PATH export LD_LIBRARY_PATH = / usr / local / cuda-8.0 / lib64 / libcudart.so.8.0

  3. 在所有这些工作中,因为我在mxnet R包再次崩溃之前简要地让它运行了。我已经放弃了50多个小时进入这个装置,坦率地说这是荒谬的。更难以安装软件,然后编程实际网络....

    我没有5年以上的linux系统管理员知识,所以如果你愿意的话请更加有用,然后'修复环境变量'。我可以说明显有什么不对,但不知道'修复环境'变量需要。

    最重要的是,即使在成功安装R软件包之后,在将Rstudio服务器的配置文件设置为:rsession-ld-library-path = / opt / local / lib:/ usr / local之前,它仍然无法工作/ CUDA / lib64下

1 个答案:

答案 0 :(得分:1)

运行任何sudo命令时是否尝试过以下操作。

sudo -E make -j8

这意味着它将以超级用户身份运行时保留env变量。您不必为make添加新的配置文件来查找库。只需使用上面的命令保留env变量即可。