百度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

 

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