【问题标题】:Issues installing mxnet GPU R package for Amazon deep learning AMI为 Amazon 深度学习 AMI 安装 mxnet GPU R 包时出现问题
【发布时间】: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那里 结果:同样的错误

  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

【问题讨论】:

    标签: r linux amazon-ec2 mxnet


    【解决方案1】:

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

    sudo -E make -j8
    

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

    【讨论】:

    • 我试过了: export LD_LIBRARY_PATH=/ec2-user/src/mxnet/R- export LD_LIBRARY_PATH=/user/src/mxnet/R-package/inst/libs:$LD_LIBRARY_PATH export LD_LIBRARY_PATH=/ec2 -user/src/mxnet/lib:$LD_LIBRARY_PATH export LD_LIBRARY_PATH=/usr/local/cuda-9.0/lib64/libcudart.so.9.0 我在导出命令后使用了 sudo ldconfig,然后根据 stackoverflow 建议将 -E 添加到 make 语句中sudo -E make rpkg same cant find libmxnet.so and libcudart.so.9.0 error 它只在“测试是否可以加载包”部分失败。是否有在非检查模式下运行 make rpkg 和 R CMD INSTALL 的选项?
    • 您的环境变量错误。 LD_LIBRARY_PATH=/home/ec2-user 代替 LD_LIBRARY_PATH=/ec2-user 和 cuda LD_LIBRARY_PATH=/usr/local/cuda/lib64:$LD_LIBRARY_PATH。这些是错别字吗?此外,如果您不想运行 rpkg 中的所有内容,可以注释掉 Makefile 中 rpkg 和 rpkgtest 下的行。
    • 我尝试使用 -E 命令导出 LD_LIBRARY_PATH=/usr/local/cuda:LD_LIBRARY_PATH,但仍然没有成功。另一种选择是在不测试的情况下构建 rpackage,然后以某种方式配置 R/Rstudio 以加载正确的环境变量。该 make 文件在哪里?
    • Makefile 位于 mxnet 根文件夹中
    • 你成功了。这是两个环境变量:/usr/local/lib/ 和 =/usr/local/cuda-9.0/lib64。将它们添加到环境和 config.mk 文件中非常有帮助。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-04-06
    • 2019-11-30
    • 1970-01-01
    相关资源
    最近更新 更多