为亚马逊深度学习 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
- 请注意,这是由 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(相关性 = 真)”
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 复制到那里
结果:同样的错误
添加/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
结果:同样的错误
大量的环境标签都失败了:
出口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 变量就足够了。
我在为 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
- 请注意,这是由 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(相关性 = 真)” 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 复制到那里 结果:同样的错误
添加/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 结果:同样的错误
大量的环境标签都失败了:
出口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 变量就足够了。