最近, mxnet的官网发生了重大变更, 编译安装R的文章找不到了, 因此我试了很多次, 最后在github储存库找到了原始文档, 完成安装, 因此记录下步骤, 以免丢失, 浪费了很多时间, 也还是失败了
系统环境: deepin v20 beta, R4.0.1, gcc version 8.3.0 (Uos 8.3.0.2-1+deepin), mxnet 1.6.0
安装依赖
sudo apt-get update
sudo apt-get install -y build-essential git ninja-build ccache libopenblas-dev libopencv-dev cmake
编译
克隆储存库并复制配置文件. 这个过程需要比较久的时间, 建议对git使用代理
git clone --recursive https://github.com/apache/incubator-mxnet.git mxnet
cd mxnet
cp config/linux.cmake config.cmake # or config/linux_gpu.cmake for build with CUDA
因为我编译的是cpu版本, 对配置也没有其他要求, 因此不需要修改配置, 直接编译
rm -rf build
mkdir -p build && cd build
cmake -GNinja ..
cmake --build . --parallel 4
--parallel
后面的参数为你所选择的CPU核心数量, 虽然选择越多会编译越快, 但也会因为内存不足而无法编译. 我的笔记本电脑有16G内存, 并行10核心编译会卡死, 因此我选择了较低的核心数量, 方便同时做其他事情.安装
系统安装依赖
sudo apt-get update
sudo apt-get install -y r-base-core r-cran-devtools libcairo2-dev libxml2-dev
其中
r-cran-devtools
不是必要的, 因为 r-cran-devtools
只支持R3.5, 而此时我的R的版本已经达到4.0, 安装不了, 但并不影响我安装mxnetR安装特定的包
R
> install.packages("roxygen2")
完成之后, 在mxnet目录下, 输入下面的命令和R绑定
make -f R-package/Makefile rpkg
然而, 我得到了找不到
R-package/Makefile
这个文件的报错信息, 原来这个文件只在mxnet 1.6.0以上存在, 于是我又切换到1.7.x分支, 尝试完成绑定输入命令后, 发现需要下载其他R的安装包, 于是我停止编译, 主动进入R安装相应的包(使用清华源会快一点), 然而, 我发现
igraph
这一包无法安装, 出现如下的报错信息Error: package or namespace load failed for ‘igraph’ in dyn.load(file, DLLpath = DLLpath, ...):
无法载入共享目标对象‘/home/jerrywang/R/x86_64-pc-linux-gnu-library/4.0/00LOCK-igraph/00new/igraph/libs/igraph.so’::
libgfortran.so.4: 无法打开共享对象文件: 没有那个文件或目录
查了很多才发现是需要安装一下的fortran库的, 输入命令
sudo apt install libgfortran4
终于, 安装
igraph
成功, 于是安装好其他所需库后, 继续输入上面的命令和R绑定.最后的结果还是出了问题, 安装失败, 原因归结于在安装串了版本, 于是我放弃了自己手动安装. 选择稳定的正式版安装
再次安装
下载mxnet 1.6.0 正式签名版源代码, 使用一键安装脚本一键安装. 手动把脚本内的
repo
换成国内镜像你以为这就结束了? Wrong
正式签名版本的mxnet里面居然没有也没有
R-package
这一文件夹, 安装失败. 于是我选择再次尝试git源代码, 把git仓库中的 1.6.x分支的R-package
复制到此处, 继续安装,失败总结
最终的结果是失败, 也许正是因为mxnet的整改, 我本不应该折腾, 想法太多了. 整改不保留原来的版本, 实在是太过于激进啊.
不得不说, mxnet的版本管理和文档是有问题的, 当初学者无所适从. 或者是说我的英文太差没找到地方. 是有一键安装脚本的, 在
setup-utils
里面. 然而, 我也发现了一些mxnet对自身建设的不足
- 新版的mxnet还没有正式发行, 编译安装指导已经变成了新的方式
- 更改网站没有dev的版本, 直接在正式的网站更改, 以至于一段时间内网站资料缺失严重, 给初学者以很大困难 (一般想不到到github找源文件)
不过, 这都是在慢慢变好的, 新版的mxnet不需要sudo权限就可以安装, 这样使得系统更加干净.
另一个bug是 新版的 cmake 相比于旧版的 make 虽然在编译速度上可能更快, 但这样同时也导致了更多的内存占用, 以至于电脑卡死, 给人造成很不爽的感觉
对个人的启示:
我不是写底层的, 我也不是debug的, 我是调包侠, 没有专业的指引就不要折腾. 虽然这样失去很多自主性, 但其实, 我是没能力折腾的 😕
Loading Comments...