离线安装tensorboardx_在Centos下离线安装DeepMD-kit

一周前我们分享了

在Ubuntu下在线安装DeepMD-kit

,但是有一些服务器或者集群是无法连接外网的,因此很有必要掌握离线安装DeePMD-kit的方法。

本课题组的集群装的Centos7系统,离线,GCC版本是4.8.5。

主要参考资料[安装deepmd]和[源码安装TensorFlow]

https://blog.csdn.net/xszyqbr/article/details/82961934

https://github.com/deepmodeling/deepmd-kit/blob/master/doc/install-tf.1.12.md

本教程适合无法连网的Ubuntu和Centos主机以及集群。太老的集群不要考虑装了,因为bazel依赖

GLIBC_2.14

GLIBCXX_3.4.19

,如果gcc版本和glibc版本过低,可以考虑先升级一波。本教程所有用的文件可以在链接:

https://pan.baidu.com/s/1XL00f32OxtWbRkQQq1arYw

提取码:qfmd 下载,包含用到的所有文件。

离线安装必须的工具

安装 cmake

#从cmake官网下载cmake-3.15.3.tar.gz,并上传到服务器

tar -zxvf cmake-3.15.3.tar.gz

cd cmake-3.15.3/

#指定一个安装目录,比如${DeePMDkitHOME}/pre-tools/cmake

#这里我指定DeePMDkitHOME为/public/software/apps/DeePMD-kit,根据自己的实际目录更改

export DeePMDkitHOME=/public/software/apps/DeePMD-kit

mkdir -p ${DeePMDkitHOME}/pre-tools

./configure --prefix=${DeePMDkitHOME}/pre-tools/cmake

gmake && gmake install

#加入环境变量

export PATH=${DeePMDkitHOME}/pre-tools/cmake/bin:$PATH

#在我的系统 这样安装的cmake报openssl错误,可以直接使用以下版本的二进制cmake

tar -zxvf cmake-3.15.3-Linux-x86_64.tar.gz

mv cmake-3.15.3-Linux-x86_64 ${DeePMDkitHOME}/pre-tools

export PATH=${DeePMDkitHOME}/pre-tools/cmake-3.15.3-Linux-x86_64/bin:$PATH

安装 autoconf

#从http://ftp.gnu.org/gnu/autoconf/ 下载 autoconf-2.69.tar.gz

tar -zxvf autoconf-2.69.tar.gz

cd autoconf-2.69

#指定一个安装目录,比如${DeePMDkitHOME}/pre-tools/autoconf

./configure --prefix=${DeePMDkitHOME}/pre-tools/autoconf

make && make install

#加入环境变量

export PATH=${DeePMDkitHOME}/pre-tools/autoconf/bin:$PATH

cd ../

安装 automake

#从http://ftp.gnu.org/gnu/automake/ 下载 automake-1.14.tar.gz

tar -zxvf automake-1.14.tar.gz

cd automake-1.14

./bootstrap.sh

#指定一个安装目录,比如${DeePMDkitHOME}/pre-tools/automake

./configure --prefix=${DeePMDkitHOME}/pre-tools/automake

make && make install

#加入环境变量

export PATH=${DeePMDkitHOME}/pre-tools/automake/bin:$PATH

cd ../

安装 libtool

#从http://ftp.gnu.org/gnu/libtool/ 下载 libtool-2.4.6.tar.gz

tar -zxvf libtool-2.4.6.tar.gz

cd libtool-2.4.6

#指定一个安装目录,比如${DeePMDkitHOME}/pre-tools/libtool

./configure --prefix=${DeePMDkitHOME}/pre-tools/libtool

make && make install

#加入环境变量

export PATH=${DeePMDkitHOME}/pre-tools/libtool/bin:$PATH

export LIBRARY_PATH=${DeePMDkitHOME}/pre-tools/libtool/lib:$LIBRARY_PATH

cd ../

安装JAVA环境

下载Openjdk,并设置JAVA_HOME变量

#从https://download.java.net/java/GA/jdk13/5b8a42f3905b406298b72d750b6919f6/33/GPL/openjdk-13_linux-x64_bin.tar.gz下载 openjdk二进制版本

tar -zxvf openjdk-13_linux-x64_bin.tar.gz

#移动到指定的安装目录,比如${DeePMDkitHOME}/pre-tools/

mv jdk-13 ${DeePMDkitHOME}/pre-tools

#配置openjdk环境变量

export JAVA_HOME=${DeePMDkitHOME}/pre-tools/jdk-13

export PATH=$JAVA_HOME/bin:$PATH

安装bazel,必须安装0.15.0及以上版本

使用预编译好的

0.15.0

版本的bazel二进制版本(https://blog.csdn.net/darkrabbit/article/details/81262556)。注:将sh文件上传到集群可能会出现问题,可以打包成ZIP再上传

unzip bazel-0.15.0-installer-linux-x86_64.zip

#指定一个安装目录,比如${DeePMDkitHOME}/pre-tools/bazel

bash bazel-0.15.0-installer-linux-x86_64.sh --prefix=${DeePMDkitHOME}/pre-tools/bazel

#加入环境变量

export PATH=${DeePMDkitHOME}/pre-tools/bazel/bin:$PATH

离线安装Anaconda3.5

按照(https://blog.csdn.net/xszyqbr/article/details/82961934)安装Anaconda,并加入到环境变量。`unzip Anaconda3-5.0.1-Linux-x86_64.zip && bash Anaconda3-5.0.1-Linux-x86_64.sh`,此版本的python为Python3.6.

使用该环境下的pip离线安装适配Python3.6的tensorflow,

tensorflow-1.12.0-cp36-cp36m-manylinux1_x86_64.whl

,还需装各种依赖库。

安装依赖库,在

needed_python_package

文件夹下。

cd needed_python_package

pip install Keras_Preprocessing-1.0.5-py2.py3-none-any.whl

pip install Keras_Applications-1.0.6-py2.py3-none-any.whl

tar -zxvf absl-py-0.1.8.tar.gz

cd absl-py-0.1.8

python setup.py install

cd ../

pip install protobuf-3.6.1-cp36-cp36m-manylinux1_x86_64.whl

pip install grpcio-1.8.6-cp36-cp36m-manylinux1_x86_64.whl

pip install astor-0.7.1-py2.py3-none-any.whl

tar -zxvf termcolor-1.1.0.tar.gz

cd termcolor-1.1.0/

python setup.py install

cd ../

tar -zxvf gast-0.2.0.tar.gz

cd gast-0.2.0/

python setup.py install

cd ../

tar -zxvf Markdown-2.6.8.tar.gz

cd Markdown-2.6.8/

python setup.py install

cd ../

pip install tensorboard-1.12.0-py3-none-any.whl

pip install tensorflow-1.12.0-cp36-cp36m-manylinux1_x86_64.whl

下载tensorflow源码,安装tensorflow的C++接口

打开https://github.com/tensorflow/tensorflow,点击

Branch:master

tages

,选择

v1.12.0

版本,页面刷新后,选择

Clone or download

下载ZIP,并上传到服务器。

解压

tensorflow-master.zip

unzip tensorflow-1.12.0.zip

cd tensorflow-1.12.0

./configure

,有较多的选项,首先给出Python的路径,其他的配置参考博客(https://blog.csdn.net/yhily2008/article/details/79967118)。

Bazel需要很多第三方依赖,这些是编译必须的,这里我们提前用联网的机器下好,并上传到服务器上,并在服务器上开启一个网络下载服务,另外还需将tensorflow里原来的下载地址更改为本地下载地址。我做了一个压缩包forDeePMD-kit.zip。解压后在文件夹下有个开启下载服务的

download_local.py

脚本和更新后的

tensorflow1.12.0

文件夹以及含有所有第三方依赖的

dependency

文件夹。

tensorflow1.12.0

主要更新了三个文件,/tensorflow-1.12.0/WORKSPACE,/tensorflow-1.12.0/tensorflow/workspace.bzl以及/tensorflow-1.12.0/third_party/icu/workspace.bzl。在含有

download_local.py

文件的目录执行以下命令:

nohup python download_local.py > download_local.log 2>&1 &

。在后台使用

flask

框架开启一个

WEB

下载服务,上述安装的

Anaconda

版本的

python3.6

中包含了

flask

使用bazel 编译tensorflow,可以控制编译时的所用资源 等待非常久的时间

bazel build -c opt --verbose_failures //tensorflow:libtensorflow_cc.so

,安装完成后可以执行命令

fg

并按

Crtl+C

停止之前开的下载服务。

设置tensorflow的主安装目录,我装在目录

${DeePMDkitHOME}/tensorflow_root

export tensorflow_root=${DeePMDkitHOME}/tensorflow_root

mkdir -p ${tensorflow_root}

在当前目录下下载tensorflow的依赖文件:Protobuf, Eigen, nsync and absl

Protobuf

#设置在${tensorflow_root}目录下新建tmps文件夹用于放置中间文件

mkdir -p ${tensorflow_root}/tmps

mkdir -p ${tensorflow_root}/tmps/proto

#这里已经将/tensorflow/contrib/makefile/download_dependencies.sh中要下载的文件都下载好了,在tensorflow/contrib/makefile/downloads中。

cd tensorflow/contrib/makefile/downloads/protobuf/

#由于我们的libtool和autoconf是另外从头编译的,autoconf不知道libtool的宏文件放在哪里,因此需要将宏目录传入编译的include

#libtool的宏目录是${DeePMDkitHOME}/pre-tools/libtool/share/aclocal

#需根据自己的实际目录将autogen.sh中的autoreconf -f -i -Wall,no-obsolet 改成 autoreconf -f -i -Wall,no-obsolet -I${DeePMDkitHOME}/pre-tools/libtool/share/aclocal

./autogen.sh

./configure --prefix=${tensorflow_root}/tmps/proto

make

make install

Eigen

mkdir -p ${tensorflow_root}/tmps/eigen

cd ../eigen

mkdir build_dir

cd build_dir

cmake -DCMAKE_INSTALL_PREFIX=${tensorflow_root}/tmps/eigen/ ../

make install

nsync

mkdir -p ${tensorflow_root}/tmps/nsync

cd ../../nsync

mkdir build_dir

cd build_dir

cmake -DCMAKE_INSTALL_PREFIX=${tensorflow_root}/tmps/nsync/ ../

make

make install

absl

cd ../../absl

bazel build

mkdir -p ${tensorflow_root}/include/

sudo rsync -avzh --include '*/' --include '*.h' --exclude '*' absl ${tensorflow_root}/include/

cd ../../../../..

将以上库文件拷贝到tensorflow的安装目录

mkdir -p ${tensorflow_root}/lib

cp bazel-bin/tensorflow/libtensorflow_cc.so ${tensorflow_root}/lib/

cp bazel-bin/tensorflow/libtensorflow_framework.so ${tensorflow_root}/lib/

cp ${tensorflow_root}/tmps/proto/lib/libprotobuf.a ${tensorflow_root}/lib/

cp ${tensorflow_root}/tmps/nsync/lib/libnsync.a ${tensorflow_root}/lib/

#可能是nsync/lib64/libnsync.a

然后拷贝头文件

mkdir -p ${tensorflow_root}/include/tensorflow

cp -r bazel-genfiles/* ${tensorflow_root}/include/

cp -r tensorflow/cc ${tensorflow_root}/include/tensorflow

cp -r tensorflow/core ${tensorflow_root}/include/tensorflow

cp -r third_party ${tensorflow_root}/include

cp -r ${tensorflow_root}/tmps/proto/include/* ${tensorflow_root}/include

cp -r ${tensorflow_root}/tmps/eigen/include/eigen3/* ${tensorflow_root}/include

cp -r ${tensorflow_root}/tmps/nsync/include/*h ${tensorflow_root}/include

清理头文件目录下的源文件

cd ${tensorflow_root}/include

find . -name "*.cc" -type f -delete

可以删除所有依赖的缓存文件

rm -fr ${tensorflow_root}/tmps/eigen ${tensorflow_root}/tmps/nsync ${tensorflow_root}/tmps/proto

安装DeePMD-kit

先在${tensorflow_root}的上级目录克隆DeePMD-kit源码

cd ${tensorflow_root} && cd ../

unzip deepmd-kit-master.zip

通过

deepmd_source_dir

变量记录源代码的位置

cd deepmd-kit-master

export deepmd_source_dir=`pwd`

cd ${deepmd_source_dir}/source

mkdir build

cd build

设置deepmd-kit的主安装目录,我装在用户目录

${DeePMDkitHOME}/deepmd_root

下,执行cmake,

export deepmd_root=${DeePMDkitHOME}/deepmd_root

mkdir -p ${deepmd_root}

#如果用gcc>5.0 去掉选项-DTF_GOOGLE_BIN=true,如果运行时出现deepmd-kit/lib/deepmd/libop_abi.so: undefined symbol:请打开选项-DTF_GOOGLE_BIN=true

cmake -DTF_GOOGLE_BIN=true -DTENSORFLOW_ROOT=${tensorflow_root}

-DCMAKE_INSTALL_PREFIX=${deepmd_root} ..

如果cmake执行成功,make以及make install

make clean

make

#如果你的GCC版本小于4.9,编译时json会报错。所以需要把${DeePMDkitHOME}/forDeePMD-kit/deepmd-kit-master/source/3rdparty/json.hpp 的 //#error "unsupported GCC version - see https://github.com/nlohmann/json#supported-compilers" 报错命令注释掉。我的版本是GCC4.8.5,官网上json最低支持就是gcc4.8.5,因此注释没有关系。

make install

如果一切顺利的话,你将在

$deepmd_root/bin

目录下找到以下可执行文件

$ ls ${deepmd_root}/bin

dp_frz dp_ipi dp_test dp_train

#可以加入系统PATH

echo 'export PATH='${deepmd_root}'/bin:$PATH' >> ~/.bashrc

source ~/.bashrc

至此DeePMD-kit的安装方法已经介绍完毕,后面的教程可能会讲解一些软件的用法和DPGEN(The deep potential generator,https://github.com/deepmodeling/dpgen)工具。

你可能感兴趣的:(离线安装tensorboardx_在Centos下离线安装DeepMD-kit)