paddlenlp智能问答系统,安装落地步骤

这篇具有很好参考价值的文章主要介绍了paddlenlp智能问答系统,安装落地步骤。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

安装paddlepaddle

python -m pip install paddlepaddle-gpu==2.3.2 -i https://pypi.tuna.tsinghua.edu.cn/simple

清华源

python -m pip install paddlepaddle-gpu==2.3.2 -i https://pypi.tuna.tsinghua.edu.cn/simple

下载pipelines源代码

git clone https://github.com/PaddlePaddle/PaddleNLP.git
cd ${HOME}/PaddleNLP/pipelines/
pip install -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple
python setup.py install

【注意】以下的所有的流程都只需要在pipelines根目录下进行,不需要跳转目录

我们建议在 GPU 环境下运行本示例,运行速度较快
python examples/question-answering/dense_qa_example.py --device gpu
如果只有 CPU 机器,安装CPU版本的Paddle后,可以通过 --device 参数指定 cpu 即可, 运行耗时较长
python examples/question-answering/dense_qa_example.py --device cpu

参考官方文档下载安装 elasticsearch-8.3.2 并解压。

https://www.elastic.co/cn/downloads/elasticsearch

1.启动 ES 服务 把xpack.security.enabled 设置成false,如下:

xpack.security.enabled: false

2.然后启动:

./bin/elasticsearch

3.检查确保 ES 服务启动成功

curl http://localhost:9200/_aliases?pretty=true

备注:ES 服务默认开启端口为 9200

【注意】以下的所有的流程都只需要在pipelines根目录下进行,不需要跳转目录

1.4.2 文档数据写入 ANN 索引库

建立 ANN 索引库

python utils/offline_ann.py --index_name baike_cities --doc_dir data/baike --delete_index
参数含义说明
* `index_name`: 索引的名称
* `doc_dir`: txt文本数据的路径
* `host`: Elasticsearch的IP地址
* `port`: Elasticsearch的端口号
* `delete_index`: 是否删除现有的索引和数据,用于清空es的数据,默认为false

运行成功后会输出如下的日志:

INFO - pipelines.utils.logger - Logged parameters:
{‘processor’: ‘TextSimilarityProcessor’, ‘tokenizer’: ‘NoneType’, ‘max_seq_len’: ‘0’, ‘dev_split’: ‘0.1’}
INFO - pipelines.document_stores.elasticsearch - Updating embeddings for all 1318 docs …
Updating embeddings: 10000 Docs [00:16, 617.76 Docs/s]

1.4.3 启动 RestAPI 模型服务

指定智能问答系统的Yaml配置文件

【注意】以下的所有的流程都只需要在pipelines根目录下进行,不需要跳转目录

更改自己的配置文件

vi rest_api/pipeline/dense_qa.yaml
components:    # define all the building-blocks for Pipeline
  - name: DocumentStore
    type: ElasticsearchDocumentStore  # consider using MilvusDocumentStore or WeaviateDocumentStore for scaling to large number of documents
    params:
      host: 10.201.192.135  # 更换ES ip地址 localhost
      index: baike_cities
      embedding_dim: 312
      port: 9201 # 更改es端口号
      username:   # 更改es用户名称
      password:  # 更改es密码

  - name: Retriever
    type: DensePassageRetriever
    params:
      document_store: DocumentStore    # params can reference other components defined in the YAML
      top_k: 10
      query_embedding_model: rocketqa-zh-nano-query-encoder  # 更换retriever模型位置
      passage_embedding_model: rocketqa-zh-nano-query-encoder  # 更换retriever模型位置
      embed_title: False
  - name: Ranker       # custom-name for the component; helpful for visualization & debugging
    type: ErnieRanker    # pipelines Class name for the component
    params:
      model_name_or_path: rocketqa-zh-dureader-cross-encoder   # 更换Ranker模型位置
      top_k: 5
  - name: Reader       # custom-name for the component; helpful for visualization & debugging
    type: ErnieReader    # pipelines Class name for the component
    params:
      model_name_or_path: ernie-gram-zh-finetuned-dureader-robust

指定智能问答系统的Yaml配置文件

export PIPELINE_YAML_PATH=rest_api/pipeline/dense_qa.yaml

使用端口号 8891 启动模型服务

python rest_api/application.py 8891

Linux 用户推荐采用 Shell 脚本来启动服务:

sh examples/question-answering/run_qa_server.sh

启动后可以使用curl命令验证是否成功运行:

curl -X POST -k http://localhost:8891/query -H 'Content-Type: application/json' -d '{"query": "北京市有多少个行政区?","params": {"Retriever": {"top_k": 5}, "Ranker":{"top_k": 5}}}'
export:PIPELINE_YAML_PATH='rest_api/pipeline/dense_qa.yaml'
使用端口号 8891 启动模型服务
python rest_api/application.py 8891

1.4.4 启动 WebUI

配置模型服务地址
export:API_ENDPOINT='http://127.0.0.1:8891'
在指定端口 8502 启动 WebUI
python -m streamlit run ui/webapp_question_answering.py --server.port 8502

到这里您就可以打开浏览器访问 http://127.0.0.1:8502

  • 通过如下命令设置操作系统默认编码为 zh_CN.UTF-8
export LANG=zh_CN.UTF-8

错误解决

1.Linux上安装elasticsearch出现错误 java.lang.RuntimeException: can not run elasticsearch as root

elasticsearch 需要在非root环境下运行,可以做如下的操作:

adduser est
chown est:est -R ${HOME}/elasticsearch-8.3.2/
cd ${HOME}/elasticsearch-8.3.2/
su est
./bin/elasticsearch
2.ElasticSearch因为内存不足原因启动失败解决方案

原因是因为 ElasticSearch默认 分配内存是 2 G,但是由于不足所以启动不了。可以通过修改内存来启动.

在 elasticSearch 文件夹下,输入命令行

vim config/jvm.options 

将参数调为 512 m

-Xms512m
 
-Xmx512m
服务端运行报端口占用的错误 [Errno 48] error while attempting to bind on address ('0.0.0.0',8891): address already in use
lsof -i:8891
kill -9 PID # PID为8891端口的进程
faiss 安装上了但还是显示找不到faiss怎么办?

推荐您使用anaconda进行单独安装,安装教程请参考faiss

# CPU-only version
conda install -c pytorch faiss-cpu

# GPU(+CPU) version
conda install -c pytorch faiss-gpu
如何更换pipelines中预置的模型?

更换系统预置的模型以后,由于模型不一样了,需要重新构建索引,并修改相关的配置文件。以语义索引为例,需要修改2个地方,第一个地方是utils/offline_ann.py,另一个是rest_api/pipeline/semantic_search.yaml,并重新运行:

首先修改utils/offline_ann.py

python utils/offline_ann.py --index_name dureader_robust_base_encoder \
                            --doc_dir data/dureader_dev \
                            --query_embedding_model rocketqa-zh-base-query-encoder \
                            --passage_embedding_model rocketqa-zh-base-para-encoder \
                            --embedding_dim 768 \
                            --delete_index

然后修改rest_api/pipeline/semantic_search.yaml文件:

components:    # define all the building-blocks for Pipeline
  - name: DocumentStore
    type: ElasticsearchDocumentStore  # consider using MilvusDocumentStore or WeaviateDocumentStore for scaling to large number of documents
    params:
      host: localhost
      port: 9200
      index: dureader_robust_base_encoder # 修改索引名
      embedding_dim: 768   # 修改向量的维度
  - name: Retriever
    type: DensePassageRetriever
    params:
      document_store: DocumentStore    # params can reference other components defined in the YAML
      top_k: 10
      query_embedding_model: rocketqa-zh-base-query-encoder  # 修改Retriever的query模型名
      passage_embedding_model: rocketqa-zh-base-para-encoder # 修改 Retriever的para模型
      embed_title: False
  - name: Ranker       # custom-name for the component; helpful for visualization & debugging
    type: ErnieRanker    # pipelines Class name for the component
    params:
      model_name_or_path: rocketqa-base-cross-encoder  # 修改 ErnieRanker的模型名
      top_k: 3

然后重新运行:

# 指定语义检索系统的Yaml配置文件
export PIPELINE_YAML_PATH=rest_api/pipeline/semantic_search.yaml
# 使用端口号 8891 启动模型服务
python rest_api/application.py 8891
运行faiss examples出现了错误:sqlalchemy.exec.OperationalError: (sqlite3.OperationalError) too many SQL variables

python 3.7版本引起的错误,修改如下代码:

# 增加batch_size参数,传入一个数值即可
document_store.update_embeddings(retriever, batch_size=256)
运行后台程序出现了错误:Exception: Failed loading pipeline component 'DocumentStore': RequestError(400, 'illegal_argument_exception', 'Mapper for [embedding] conflicts with existing mapper:\n\tCannot update parameter [dims] from [312] to [768]')

以语义检索为例,这是因为模型的维度不对造成的,请检查一下 elastic search中的文本的向量的维度和semantic_search.yaml里面DocumentStore设置的维度embedding_dim是否一致,如果不一致,请重新使用utils/offline_ann.py构建索引。总之,请确保构建索引所用到的模型和semantic_search.yaml设置的模型是一致的。

安装后出现错误:cannot import name '_registerMatType' from 'cv2'

opencv版本不匹配的原因,可以对其进行升级到最新版本,保证opencv系列的版本一致。

pip install opencv-contrib-python --upgrade
pip install opencv-contrib-python-headless --upgrade
pip install opencv-python --upgrade
安装运行出现 RuntimeError: Can't load weights for 'rocketqa-zh-nano-query-encoder'

rocketqa模型2.3.7之后才添加,paddlenlp版本需要升级:

pip install paddlenlp --upgrade
安装出现问题 The repository located at mirrors.aliyun.com is not a trusted or secure host and is being ignored.

设置pip源为清华源,然后重新安装,可运行如下命令进行设置:文章来源地址https://www.toymoban.com/news/detail-530101.html

pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple

到了这里,关于paddlenlp智能问答系统,安装落地步骤的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 🔥🔥探索人工智能的世界:构建智能问答系统之实战篇

    前面我们已经做好了必要的准备工作,包括对相关知识点的了解以及环境的安装。今天我们将重点关注代码方面的内容。如果你已经具备了Java编程基础,那么理解Python语法应该不会成为问题,毕竟只是语法的差异而已。随着时间的推移,你自然会逐渐熟悉和掌握这门语言。现

    2024年02月05日
    浏览(71)
  • 探索人工智能的世界:构建智能问答系统之前置篇

    在开始开发之前,我们首先要了解我们将会接触到的编程语言和组件。我本身是一名Java开发者,虽然也有接触过C、C++和PHP开发语言,但在工作中使用的并不多。因此,为了本次开发,我们选择了Python作为开发语言。大家都是从零开始,只要你有编程知识,就可以和我一起学

    2024年02月05日
    浏览(57)
  • 🔥🔥探索人工智能的世界:构建智能问答系统之前置篇

    在开始开发之前,我们首先要了解我们将会接触到的编程语言和组件。我本身是一名Java开发者,虽然也有接触过C、C++和PHP开发语言,但在工作中使用的并不多。因此,为了本次开发,我们选择了Python作为开发语言。大家都是从零开始,只要你有编程知识,就可以和我一起学

    2024年02月05日
    浏览(48)
  • 从0到1构建一个基于知识图谱的智能问答系统

    基于知识图谱的问答系统(Knowledge-Based Question Answering system: KBQA )在以下场景下比较有优势: 对于领域类型是结构化数据场景:电商、医药、系统运维(微服务、服务器、事件)、产品支持系统等,其中作为问答系统的参考对象已经是结构化数据; 问题的解答过程涉及多跳

    2024年01月25日
    浏览(45)
  • 基于大语言模型知识问答应用落地实践 – 知识库构建(下)

    上篇介绍了构建知识库的大体流程和一些优化经验细节,但并没有结合一个具体的场景给出更细节的实战经验以及相关的一些 benchmark 等,所以本文将会切入到一个具体场景进行讨论。 目标场景:对于 PubMed 医疗学术数据中的 1w 篇文章进行知识库构建,实现快速的注入和查

    2024年02月10日
    浏览(48)
  • AI智能问答系统源码/AI绘画商业系统/支持GPT联网提问/支持Midjourney绘画

    SparkAi创作系统是基于国外很火的ChatGPT进行开发的AI智能问答系统和AI绘画系统。本期针对源码系统整体测试下来非常完美,可以说SparkAi是目前国内一款的ChatGPT对接OpenAI软件系统。那么如何搭建部署AI创作ChatGPT?小编这里写一个详细图文教程吧!SparkAi程序使用Nestjs和Vue3框架技

    2024年02月08日
    浏览(83)
  • 第9章:深度探讨知识问答系统评测:智能背后的挑战与技术方案

    💗💗💗欢迎来到我的博客,你将找到有关如何使用技术解决问题的文章,也会找到某个技术的学习路线。无论你是何种职业,我都希望我的博客对你有所帮助。最后不要忘记订阅我的博客以获取最新文章,也欢迎在文章下方留下你的评论和反馈。我期待着与你分享知识、互

    2024年02月04日
    浏览(39)
  • 最新AI智能问答系统源码/AI绘画系统源码/支持GPT联网提问/Prompt应用+支持国内AI提问模型

    SparkAi创作系统是基于国外很火的ChatGPT进行开发的AI智能问答系统和AI绘画系统。本期针对源码系统整体测试下来非常完美,可以说SparkAi是目前国内一款的ChatGPT对接OpenAI软件系统。那么如何搭建部署AI创作ChatGPT?小编这里写一个详细图文教程吧!SparkAi程序使用Nestjs和Vue3框架技

    2024年02月07日
    浏览(87)
  • 小狐狸ChatGPT付费创作系统V2.0.4智能问答小程序,修复一个pc版的bug

    狸GPT付费体验系统是一款基于ThinkPHP框架开发的AI问答小程序,是基于国外很火的ChatGPT进行开发的Ai智能问答小程序。 当前全民热议ChatGPT,流量超级大,引流不要太简单!一键下单即可拥有自己的GPT!无限多开、免费更新不限时,完全开源! [b]主要功能:[/b]1、已对接流量主

    2024年02月07日
    浏览(87)
  • 智能AI问答系统ChatGPT网站系统源码+Midjourney绘画+支持GPT-4-Turbo模型+支持GPT-4图片理解能力

    SparkAi创作系统是基于ChatGPT进行开发的Ai智能问答系统和Midjourney绘画系统,支持OpenAI-GPT全模型+国内AI全模型。本期针对源码系统整体测试下来非常完美,可以说SparkAi是目前国内一款的ChatGPT对接OpenAI软件系统。那么如何搭建部署AI创作ChatGPT?小编这里写一个详细图文教程吧!

    2024年02月04日
    浏览(69)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包