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的内容)。

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