百度 AnyQ 安裝

AnyQ 環(huán)境配置(mac環(huán)境或者win環(huán)境)

安裝 Docker

Docker image 獲取

docker pull docker.paddlepaddlehub.com/paddle:latest-dev

Docker 容器

docker run -it -p 22:22 -p 8999:8999 --name AnyQ (imageid)

clone AnyQ

git clone https://github.com/baidu/AnyQ.git

make

cd AnyQ
mkdir build && cd build && cmake .. & make

其中cmake .. && make 的過程是一個艱難的過程,但凡出現網絡卡住的時候,可以ctrl+c中止,然后通過重新執(zhí)行cmake .. && make繼續(xù)執(zhí)行,直到完全成功

cd build
cmake .. && make

運行 Demo

cp ../tools/anyq_deps.sh .
sh anyq_deps.sh

因為下一步需要jdk加持,官方的docker鏡像里面沒有jdk所以這一步官方作者給的解決方案如下:

wget http://anyq.bj.bcebos.com/jdk-8u171-linux-x64.tar.gz
tar xzvf jdk-8u171-linux-x64.tar.gz

添加環(huán)境變量

export PATH=`pwd`/jdk1.8.0_171/bin:$PATH

安裝好jdk后執(zhí)行:

cp ../tools/solr -rp solr_script
sh solr_script/anyq_solr.sh solr_script/sample_docs

至此,所有的步驟完成,可以運行demo

./run_server

容器內使用curl調用服務

curl "127.0.0.1:8999/anyq?question=需要使用什么賬號登錄"

可以得到結果

I0415 07:02:55.794643  2268 utils.cpp:590] RAW: in json_to_analysis_item, query:需要使用什么賬號登錄
I0415 07:02:55.794643  2268 utils.cpp:594] RAW: in json_to_analysis_item, type:(null)
I0415 07:02:55.794643  2268 analysis_strategy.cpp:115] RAW: analysis_analysis size: 1
I0415 07:02:55.794643  2268 analysis_strategy.cpp:130] RAW: before use analysis strategy's analysis_result
I0415 07:02:55.794643  2268 utils.cpp:609] RAW: query:需要使用什么賬號登錄
I0415 07:02:55.794643  2268 utils.cpp:611] RAW: tokens_basic size is 0
I0415 07:02:55.794643  2268 analysis_strategy.cpp:148] RAW: method_process method_wordseg start
I0415 07:02:55.794643  2268 analysis_strategy.cpp:154] RAW: method_process method_wordseg sucess
I0415 07:02:55.794643  2268 analysis_strategy.cpp:163] RAW: after use analysis strategy's analysis_result
I0415 07:02:55.794643  2268 utils.cpp:609] RAW: query:需要使用什么賬號登錄
I0415 07:02:55.794643  2268 utils.cpp:611] RAW: tokens_basic size is 5
I0415 07:02:55.794643  2268 utils.cpp:614] RAW: tokens_basic    buffer:需要   length:6    offset:0    analysis_term_weight:0.200000
I0415 07:02:55.794643  2268 utils.cpp:614] RAW: tokens_basic    buffer:使用   length:6    offset:6    analysis_term_weight:0.200000
I0415 07:02:55.794643  2268 utils.cpp:614] RAW: tokens_basic    buffer:什么   length:6    offset:12   analysis_term_weight:0.200000
I0415 07:02:55.794643  2268 utils.cpp:614] RAW: tokens_basic    buffer:賬號   length:6    offset:18   analysis_term_weight:0.200000
I0415 07:02:55.794643  2268 utils.cpp:614] RAW: tokens_basic    buffer:登錄   length:6    offset:24   analysis_term_weight:0.200000
I0415 07:02:55.794643  2268 equal_solr_q_builder.cpp:48] RAW: equal solr_fetch_q=question:需要使用什么賬號登錄
I0415 07:02:55.794643  2268 term_retrieval.cpp:109] RAW: solr_fetch_q=question:需要使用什么賬號登錄
I0415 07:02:55.794643  2268 term_retrieval.cpp:119] RAW: url = http://127.0.0.1:8900/solr/collection1/select
I0415 07:02:55.794643  2268 http_client.cpp:84] RAW: para_url: fl=id,question,answer&q=question%3A%E9%9C%80%E8%A6%81%E4%BD%BF%E7%94%A8%E4%BB%80%E4%B9%88%E8%B4%A6%E5%8F%B7%E7%99%BB%E5%BD%95&rows=15&wt=json
I0415 07:02:55.794643  2268 term_retrieval.cpp:185] RAW: Term retrieval item id=1, query=需要使用什么賬號登錄?;
I0415 07:02:55.794643  2268 term_retrieval.cpp:185] RAW: Term retrieval item id=3, query=AI服務支持推廣賬號使用么?;
I0415 07:02:55.794643  2268 term_retrieval.cpp:185] RAW: Term retrieval item id=4, query=為什么登錄到百度云還要填寫手機號、郵箱等信息?;
I0415 07:02:55.794643  2268 term_retrieval.cpp:185] RAW: Term retrieval item id=5, query=我以前是百度開發(fā)者中心用戶,還需要進行開發(fā)者認證么?;
I0415 07:02:55.794643  2268 term_retrieval.cpp:185] RAW: Term retrieval item id=11, query=我是百度云的老用戶,可以使用百度云的AK/SK么?;
I0415 07:02:55.794643  2268 term_retrieval.cpp:185] RAW: Term retrieval item id=14, query=如果我正在做一個比較大型的落地項目,需要更多配額如何接洽?;
I0415 07:02:55.794643  2268 term_retrieval.cpp:187] RAW: keyword retrieval result len=6
I0415 07:02:55.794643  2268 retrieval_strategy.cpp:129] RAW: before rm_dup, retrieval result len=6;
I0415 07:02:55.794643  2268 retrieval_strategy.cpp:132] RAW: after rm_dup retrieval result len=6;
I0415 07:02:55.794643  2268 rank_strategy.cpp:460] RAW: after rough rank, remain 6 cands
I0415 07:02:55.794643  2268 simnet_paddle_sim.cpp:91] RAW: source query:需要使用什么賬號登錄
I0415 07:02:55.794643  2268 simnet_paddle_sim.cpp:126] RAW: candidate query:需要使用什么賬號登錄?, socre:0.993676
I0415 07:02:55.794643  2268 simnet_paddle_sim.cpp:126] RAW: candidate query:AI服務支持推廣賬號使用么?, socre:0.712404
I0415 07:02:55.794643  2268 simnet_paddle_sim.cpp:126] RAW: candidate query:為什么登錄到百度云還要填寫手機號、郵箱等信息?, socre:0.442901
I0415 07:02:55.794643  2268 simnet_paddle_sim.cpp:126] RAW: candidate query:我以前是百度開發(fā)者中心用戶,還需要進行開發(fā)者認證么?, socre:0.288477
I0415 07:02:55.794643  2268 simnet_paddle_sim.cpp:126] RAW: candidate query:我是百度云的老用戶,可以使用百度云的AK/SK么?, socre:0.251138
I0415 07:02:55.794643  2268 simnet_paddle_sim.cpp:126] RAW: candidate query:如果我正在做一個比較大型的落地項目,需要更多配額如何接洽?, socre:0.178194
I0415 07:02:55.794643  2268 jaccard_sim.cpp:48] RAW: jaccard = 0.909091
I0415 07:02:55.794643  2268 jaccard_sim.cpp:48] RAW: jaccard = 0.277778
I0415 07:02:55.794643  2268 jaccard_sim.cpp:48] RAW: jaccard = 0.222222
I0415 07:02:55.794643  2268 jaccard_sim.cpp:48] RAW: jaccard = 0.125000
I0415 07:02:55.794643  2268 jaccard_sim.cpp:48] RAW: jaccard = 0.107143
I0415 07:02:55.794643  2268 jaccard_sim.cpp:48] RAW: jaccard = 0.054054
I0415 07:02:55.794643  2268 rank_strategy.cpp:474] RAW: after rank, remain 2 cands
I0415 07:02:55.794643  2268 rank_strategy.cpp:255] RAW: anyq query: 需要使用什么賬號登錄
I0415 07:02:55.794643  2268 rank_strategy.cpp:256] RAW: output
I0415 07:02:55.794643  2268 rank_strategy.cpp:258] RAW:     query:需要使用什么賬號登錄?
I0415 07:02:55.794643  2268 rank_strategy.cpp:259] RAW:     confidence:0.976759
I0415 07:02:55.794643  2268 anyq_strategy.cpp:77] RAW: input_query=需要使用什么賬號登錄;analysis_time=3.00ms;retrieval_num=6;retrieval_time=14.00ms;anyq_answer=您需要擁有一個百度賬號,用來登錄百度云,可以點擊此處注冊百度賬戶。如您以前擁有百度推廣賬戶,同樣可以登錄百度云。;rank_item_num=2;rank_time=61.00ms;

遇到的問題

  1. 端口映射一定要正確,否則會導致git失敗
  2. git失敗,報錯信息
RPC failed; curl 18 transfer closed with outstanding read data remaining

可以嘗試添加配置

git config --global http.sslVerify false
git config --global http.postbuffer 524288000

在docker中添加無效的話那么在本地也要添加,我是這樣解決的

  1. 下載git庫經常失敗的話可以考慮從已經安裝好的人那里拷貝AnyQ/build/third_party/目錄下的所有依賴拷貝到對應的目錄下
docker cp /${addr}/AnyQ/build/third_party ${container_id}:/${workspace}/AnyQ/build/

或者根據AnyQ/cmake/external/
編譯前記得刪除所有的CMakeCache.txt,否則可能報錯

cd AnyQ/build/
find ./ -name 'CMakeCache.txt' | xargs rm -rf
  1. 假如編譯過程中遇到如下報錯
c++: internal compiler error: Killed (program cc1plus)

則是內存不夠導致,可以增加docker的內存大小或者增加swap大小

  1. 遇到xgboost編譯報錯
1、
make[2]: *** [CMakeFiles/anyq.dir/src/rank/rank_strategy.cpp.o] Error 1
make[1]: *** [CMakeFiles/anyq.dir/all] Error 2
make: *** [all] Error 2
2、
/root/projects/AI/AnyQ/build/third_party/include/dmlc/./logging.h:323:31: error: ‘DMLC_LOG_STACK_TRACE_SIZE’ was not declared in this scope

由于xgboost中做了新的修改,cmake中的cp導致正確的rabit被覆蓋掉了,因此應修改xgboost.cmake文件

COMMAND cp -r ${XGBOOST_INSTALL_DIR}/dmlc-core/include/* ${XGBOOST_INSTALL_DIR}/rabit/include/rabit third_party/include/

關于 docker 的一些操作

  1. 進入container
docker exec -it AnyQ /bin/bash
  1. 啟動container
docker start ${container_id}

其他

  1. docker app要使用用戶名密碼登錄,且與docker hub的登錄用戶名一致
  2. linux下安裝docker--centos
wget https://download.docker.com/linux/centos/7/x86_64/stable/Packages/docker-ce-17.09.0.ce-1.el7.centos.x86_64.rpm
yum localinstall docker-ce-17.09.0.ce-1.el7.centos.x86_64.rpm
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容