首页 文章

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

提问于
浏览
1

我在亚马逊深度学习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 ..

第五步:制作

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执行任何操作crv lib / libmxnet.a

*注意,即使更改config.mk文件,make命令也始终返回'nothing to update'

第6步:尝试制作rpkg

Cd /src/mxnet
Sudo make rpkg

错误:错误:'mxnet'的包或命名空间加载失败:.onLoad在'mxnet'的loadNamespace()中失败,详细信息:call:dyn.load(file,DLLpath = DLLpath,...)错误:无法加载共享object'/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结果:同样的错误

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

export 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

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

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

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

1 回答

  • 1

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

    sudo -E make -j8
    

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

相关问题