2.window源碼部署PaddleNLP場景下無監督檢索式問答系統

1.部署流程

我個人的應用場景是機器人智能問答,所以選擇PaddleNLP。
官網地址:https://www.paddlepaddle.org.cn/paddle/paddlenlp

PaddleNLP提供了有監督檢索式問答系統和無監督檢索式問答系統,開發者可根據實際情況進行選擇。

我這裏選擇無監督檢索式問答系統。開始下載源碼。
git地址:https://github.com/PaddlePaddle/PaddleNLP.git
下載完成後,開始快速體驗,官網地址:https://github.com/PaddlePaddle/PaddleNLP/tree/develop/applications/question_answering/unsupervised_qa 執行

# pip一鍵安裝
pip install --upgrade paddle-pipelines -i https://pypi.tuna.tsinghua.edu.cn/simple

時候,報錯如下:

解決的方案有兩種:
1>下載Microsoft C++生成工具,官網地址:https://visualstudio.microsoft.com/zh-hans/visual-cpp-build-tools/
這種方式的話,可以一勞永逸的解決問題,但是下載這個工具要佔用非常多的內存。
2>手動安裝缺少的包,地址爲

https://www.lfd.uci.edu/~gohlke/pythonlibs/
https://pypi.org/project/

我在 https://pypi.org/project 中檢索

這也是剛開始安裝python版本的時候,我建議安裝3.9版本的原因

沒辦法這裏只能採取方案1了。
安裝Microsoft C++工具成功後,繼續執行

# pip一鍵安裝
pip install --upgrade paddle-pipelines -i https://pypi.tuna.tsinghua.edu.cn/simple

存在如下報錯

報錯說的是:onnx 1.13.1 requires protobuf<4,>=3.20.2, but you have protobuf 3.20.0 which is incompatible.
即conx1.13.1版本要求protobuf的最低版本是3.20.2,但是我目前protobuf的版本是3.20.0。於是我升級protobuf版本到3.20.2

但是paddlepaddle報錯了,它支持的protobuf版本最高是3.20.0。這個情況就尷尬了。即
onnx要求protobuf版本>=3.20.2,paddlepaddle要求protobuf版本<=3.20.0。
目前我採取滿足paddlepaddle的方案。自此paddle-pipelines依賴就安裝成功了。
接下來執行如下部分,詳見下圖

我這裏採用cpu版本,所以採取官網的如下命令

unset CUDA_VISIBLE_DEVICES

如上這一行設置不使用CPU,這裏暫時先忽略掉,後續會報錯,再來解決。

python run_pipelines_example.py --device cpu --source_file source_file.txt --doc_dir my_data --index_name faiss_index --retriever_batch_size 16

如上這一行是執行命令,參數如下:
device:我們採用cpu
source_file:生成問答對的源文件,我採用官網的源文件,路徑放在與run_pipelines_example.py平級
doc_dir:生成問答對預料保存的位置,路徑放在與run_pipelines_example.py平級
index_name:這個地方沒搞懂,我沒有配置es服務,按理說索引也不存在
問題來了:我是windows機器,執行如上命令後,C盤內存使用情況逐步暴增,大約暴增了20G+,直至塞滿整個C盤,導致windows系統卡住。被迫重新安裝了系統。
重裝系統後,我將windows的C盤給了230G,再次部署運行到這一步,內存還是加了22G+,得出瞭如下結論

自此,有個樣例的問答對。
接下來生成全部的問答對,由於我是cpu環境執行,時間比較久,截圖如下

執行完成後生成如下文件

內存使用情況,如下圖

2.問題總結

總結安裝過程遇到的問題

2.1 官方源碼的問題

2.2 運行過程中內存過大問題


此問題通過增加內存(cpu時增加電腦內存;gpu時增加顯卡內存)或者減小retriever_batch_size來解決,我將如上參數改成8嘗試中。或者減少訓練文檔的內容(即減少source_file.txt的內容)。

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