AnyQ 在Linux(centos 7 )上的编译
肖轶超-河北科技大学毕业
欢迎大家评论指导,然后我修改文档
一.系统下载及环境安装
(1)源码下载到对应的位置
git clone https://github.com/baidu/AnyQ.git
(2)cmake3安装
1)安装gcc/g++的软件依赖
yum install -y gcc gcc-c++ make automake
2)下载cmake源代码包(推荐3.3.2),
可以去官网查看最新版的下载地址:https://cmake.org/download/
wget https://cmake.org/files/v3.3/cmake-3.3.2.tar.gz
解压cmake源码包
tar -zxvf cmake-3.3.2.tar.gz
进入目录,设置,编译,链接
cd cmake-3.3.2/
./bootstrap
gmake
gmake install
(3)bison 3.0安装
cd /usr/local/src
wget http://ftp.gnu.org/gnu/bison/bison-3.5.tar.gz
tar -zxvf bison-3.5.tar.gz
cd bison-3.5
./configure
make
make install
检查
bison -V
二.系统编译
系统及环境下载安装完以后,进入安装包目录,开始进行编译
cd ./AnyQ
mkdir build && cd build
cmake .. && make
注意事项:在编译过程中,会遇到多次git clone下载停止的情况,此时只需Ctrl+C暂停程序执行,重新执行cmake .. && make即可。这个过程需要反复进行,直到成功为止。
如果报错
make[3]: *** [all] 错误 2
make[2]: *** [third_party/paddle/src/extern_paddle-stamp/extern_paddle-build] 错误 2
make[1]: *** [CMakeFiles/extern_paddle.dir/all] 错误 2
make: *** [all] 错误 2
尝试(1)
- 如果是paddle编译时有问题,可以尝试把文件cmake/external/paddle.cmake中的如下代码片断中:
ExternalProject_Add(
extern_paddle
${EXTERNAL_PROJECT_LOG_ARGS}
GIT_REPOSITORY "https://github.com/PaddlePaddle/Paddle.git"
GIT_TAG "release/0.14.0" #这里,这里
PREFIX ${PADDLE_SOURCES_DIR}
CONFIGURE_COMMAND mkdir -p ${PADDLE_INSTALL_DIR} && cd ${PADDLE_INSTALL_DIR} && ${CMAKE_COMMAND} -DCMAKE_INSTALL_PREFIX=${PADDLE_INSTALL_DIR}
-DCMAKE_BUILD_TYPE=Release -DWITH_PYTHON=OFF -DWITH_MKL=ON -DWITH_MKLDNN=OFF -DWITH_GPU=OFF -DWITH_FLUID_ONLY=ON <SOURCE_DIR>
BUILD_COMMAND cd ${PADDLE_INSTALL_DIR} && make -j16
INSTALL_COMMAND cd ${PADDLE_INSTALL_DIR} && make inference_lib_dist
UPDATE_COMMAND ""
)
GIT_TAG的值改为"v0.14.0"
因为paddle仓库的tag里面,反正我是没有找到"release/0.14.0"
- 如果是xgboost安装失败,则可以尝试把文件cmake/external/xgboost.cmake中的如下片断中:
ExternalProject_Add(
extern_xgboost
${EXTERNAL_PROJECT_LOG_ARGS}
DOWNLOAD_DIR ${XGBOOST_SOURCES_DIR}/src/
DOWNLOAD_COMMAND git clone --recursive https://github.com/dmlc/xgboost.git #这里需要指定版本
DOWNLOAD_NO_PROGRESS 1
PREFIX ${XGBOOST_SOURCES_DIR}
BUILD_COMMAND ""
UPDATE_COMMAND ""
CONFIGURE_COMMAND ""
INSTALL_COMMAND cd ${XGBOOST_INSTALL_DIR} && make -j4
BUILD_IN_SOURCE 1
)
把DOWNLOAD_COMMAND 值改为git clone -b v0.90 --recursive https://github.com/dmlc/xgboost.git
如果多次编译开始报错:/data/xiaoyichao/projects/AnyQ/build/third_party/xgboost 的文件夹不为空这样的信息,则需要手动删除一下这个文件下的内容。
尝试(2)
/data/xiaoyichao/projects/AnyQ/cmake/external路径下
然后修改如下两个文件,使之以单线程编译即可
将make -j 后边不等于的变为1
xgboost.cmake:
INSTALL_COMMAND cd ${XGBOOST_INSTALL_DIR} && make -j1
paddle.cmake
BUILD_COMMAND cd ${PADDLE_INSTALL_DIR} && make -j1
如果报错
make[2]: *** No rule to make target 'libanyq.a', needed by 'run_server'. Stop.
[100%] Built target run_server
我这里定位到问题是
编译错误
${XGBOOST_INSTALL_DIR}/dmlc-core/include/* ${XGBOOST_INSTALL_DIR}/rabit/include/*
Header files of dmlc in rabit should not be copy to the target directory, which will overwrite the right one.
解决方法是修改xgboost.cmake文件
##原始内容
COMMAND cp -r ${XGBOOST_INSTALL_DIR}/dmlc-core/include/* ${XGBOOST_INSTALL_DIR}/rabit/include/* third_party/include/
##修改为
COMMAND cp -r ${XGBOOST_INSTALL_DIR}/dmlc-core/include/* ${XGBOOST_INSTALL_DIR}/rabit/include/rabit third_party/include/
多次编译,如果提示xgboost文件下已存在且不为空的是时候,根据给出的路径手动删一下。
三、构建索引、配置及Web服务的安装
系统编译成功以后,在AnyQ/build目录下,执行下面的命令
获取AnyQ定制solr、AnyQ示例配置
cp ../tools/anyq_deps.sh .
需要切换到python2 的环境中,因为这个项目的python代码是基于py2写的
conda activate xiaoenv2
sh anyq_deps.sh
启动solr, 依赖python-json, jdk>=1.8(JDK的安装请参考:https://www.linuxidc.com/Linux/2016-09/134941.htm)
cp ../tools/solr -rp solr_script
sh solr_script/anyq_solr.sh solr_script/sample_docs
四.系统运行及监控
上面步骤执行成功以后,即可在build目录下运行系统,代码如下:
./run_server
系统运行成功后,即可通过http://IP:8999访问系统运行界面
五、启动HTTP-Server
在build路径下
./run_server
# 请求示例:
http:${host}:${port}/anyq?question=XXX
例如
solr页面举例:
http://172.16.10.10:8900/solr/#/collection1/query
参考文献:
https://github.com/baidu/AnyQ/issues/192
https://blog.stormbirds.cn/articles/2019/04/09/1554797567784.html
https://rqsir.github.io/2019/04/10/%E7%99%BE%E5%BA%A6anyQ-%E7%BC%96%E8%AF%91%E9%94%99%E8%AF%AF/
http://www.hongxuejing.com/linux/linux_bison-23.html