百度AnyQ的编译部署

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)

  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"

  1. 如果是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定制solrAnyQ示例配置

cp ../tools/anyq_deps.sh .

 

需要切换到python2 的环境中,因为这个项目的python代码是基于py2写的

 

conda activate xiaoenv2

 

sh anyq_deps.sh

 

启动solr, 依赖python-json, jdk>=1.8JDK的安装请参考: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

例如

 

http://172.16.10.10:8999/anyq?question=%22%E6%B3%A8%E5%86%8C%E7%99%BE%E5%BA%A6%E8%B4%A6%E6%88%B7%E6%97%B6%E6%94%B6%E4%B8%8D%E5%88%B0%E9%AA%8C%E8%AF%81%E7%A0%81%E6%80%8E%E4%B9%88%E5%8A%9E%22

 

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

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章