为Amazon深度学习AMI安装mxnet GPU R软件包的问题
mxnet
r
22
0

我在亚马逊深度学习linux AMI上为R安装mxnet GPU时遇到问题。环境变量是如此混乱,以至于任何非专家级系统管理员都无法理解。

步骤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毫无帮助

第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

结果:

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

步骤6:尝试制作rpkg

Cd /src/mxnet
Sudo make rpkg

错误:错误:'mxnet'的程序包或名称空间加载失败:'mxnet'的loadNamespace()中的.onLoad失败,详细信息:调用: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 /导出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 /本地/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

在所有这些方法中,所有一项都有效,因为在它再次崩溃之前,我短暂地使mxnet R程序包工作了。我已经花了50多个小时来进行此安装,坦率地说,这太荒谬了。较难安装软件,然后才是对实际网络进行编程。

我没有5年以上的linux sys管理员知识,所以如果您愿意,请多提供一些帮助,然后“修复环境变量”。我可以说这显然是错误的,但不知道需要什么“修复环境变量”。

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

参考资料:
Stack Overflow
收藏
评论
共 1 个回答
高赞 时间 活跃

在运行任何sudo命令时是否尝试了以下操作?

sudo -E make -j8

这意味着当以超级用户身份运行时,它将保留env变量。您无需添加新的配置文件即可查找库。仅使用上述命令保留env变量就足够了。

收藏
评论
新手导航
  • 社区规范
  • 提出问题
  • 进行投票
  • 个人资料
  • 优化问题
  • 回答问题