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

Issues installing mxnet GPU R package for Amazon deep learning AMI

我在为 Amazon 深度学习 linux AMI 上的 R 安装 mxnet GPU 时遇到问题。环境变量是如此混乱,对于任何非专家系统管理员来说都是一场噩梦。

第 1 步:安装数量惊人的 missing/broken 程序和 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

第 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(相关性 = 真)” 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;制作 libdmlc.a USE_SSE=1 配置=/home/ec2-user/src/mxnet/config.mk;光盘 /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 命令总是 returns ‘nothing to update’

第六步:尝试制作rpkg

Cd /src/mxnet
Sudo make rpkg

错误: 错误:“mxnet”的包或命名空间加载失败: .onLoad 在 'mxnet' 的 loadNamespace() 中失败,详细信息: 呼叫:dyn.load(文件,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.所以

到目前为止我尝试过的:

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/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

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

sudo -E make -j8

这意味着它将在 运行 作为超级用户时保留环境变量。您不必为 make 添加新的配置文件来查找库。只需使用上述命令保留 env 变量就足够了。