当前位置:   article > 正文

本地(局域网)部署有道QAnything问答的笔记(未完待续写)_qanything本地化部署

qanything本地化部署

一、环境准备

QAnything 有python版本和docker版本,本文讲述为docker版本。
QAnything的docker版本可以在Linux和Windows with WSL Ubuntu子系统两种环境下部署,本文讲述为Windows with WSL Ubuntu子系统。

小白抄作业,不要只看【环境准备】,要看完【启动运行项目】失败的教训后再抄作业

(一)win内部版本要大于19045(wsl的必要环境)

(二)看见CPU开启虚拟化,说明BIOS设置的虚拟选项已经开启。(wsl的必要环境)

如何开启,自己百度搜:cpu虚拟化怎么开启

(三)安装虚拟化组件(wsl),(wsl和Docker的必要环境)

windows 虚拟机监控程序平台不开启的话可能导致后面docker desktop启动不起来,记得要重启电脑
在这里插入图片描述

(四)安装Ubuntu

单位的局域网对外网做了限制,不能访问微软商店,所以分发版本的Ubuntu无法在线安装,只能命令行安装,有两种方式

// web请求方式下载Ubuntu20.04
//第一种方式
Invoke-WebRequest -Uri https://aka.ms/wslubuntu2004 -OutFile Ubuntu.appx -UseBasicParsing
  • 1
  • 2
  • 3

在这里插入图片描述
在这里插入图片描述

或者curl方式下载,两种方法都行,都是下载Ubuntu.appx这个安装文件,下载到哪里不知道,就用资源管理器搜Ubuntu.appx,找到后双击运行,就可以不通过微软商店,在本地安装分发版的Ubuntu。

//curl方式下载。
//第二种方式
curl.exe -L -o ubuntu-2004.appx https://aka.ms/wslubuntu2004
  • 1
  • 2
  • 3

在这里插入图片描述

首次启动新安装的 Linux 分发版时,将打开一个控制台窗口,系统会要求你等待一会,以便文件解压缩并存储到电脑上。 后续的所有启动时间应不到一秒。
然后,需要为新的 Linux 分发版创建用户帐户和密码。
在这里插入图片描述

另外更新一下wsl2的升级包

到微软官方下载,链接地址:https://wslstorestorage.blob.core.windows.net/wslblob/wsl_update_x64.msi
在这里插入图片描述
将 WSL 2 设置为默认版本

// 将 WSL 2 设置为默认版本
wsl --set-default-version 2
//查看一下版本
wsl -l -v
  • 1
  • 2
  • 3
  • 4

在这里插入图片描述

(五)安装Docker Desktop

家里的老win10就是低于19044,无法安装最新版的Docker,所以开头就强调版本号,于是我就下载了2.4版。
单位的win11,直接下载最新版4.30
安装的注意事项参考IT大灰狼的笔记

实战搭建网易有道的QAnything(一) 前提准备工作

注意:在windows的WSL Ubuntu子系统下,只安装Docker Desktop,在纯Linux下需要安装Docker和docker compose,见官方说明:

在这里插入图片描述

(六)wls2、Docker从C盘迁移到别的磁盘

默认是安装到C盘的,时间长了,肯定占用C盘空间,所以有必要迁移出来。这个很容易,网上也有很多资料。
1、如果是微软市场分发版的Ubuntu,就参考这个网址https://blog.csdn.net/myf_666/article/details/133663086直接在windows里搬家。
2、如果是命令行安装的Ubuntu,就参考这个网址【WSL2教程】WSL迁移到非系统盘

(七)更新Ubuntu软件包的国内源

这一步在局域网很关键,单位对外网做了很多限制,所以后面项目启动的时候,很多软件包依赖更新会失败。
在sources.list的列表里添加国内源,会大大减少失败的机率。
注意:以下的命令操作,不在powershell窗口操作,而是在自己的Ubuntu窗口里操作,要看见那个~$标志。
在这里插入图片描述

在这里插入图片描述

//进入Ubuntu的apt目录,备份原先的源列表sources.list为sources.list.bak见下图
cd etc\apt
sudo cp sources.list sources.list.bak
//用nano编辑,注意不要在“记事本”里编辑,会引起代码读取错误。
sudo nano sources.list
  • 1
  • 2
  • 3
  • 4
  • 5

在这里插入图片描述
在文件最前面添加以下条目:

##中国科技大学源(速度很快):
deb https://mirrors.ustc.edu.cn/ubuntu/ focal main restricted universe multiverse
deb https://mirrors.ustc.edu.cn/ubuntu/ focal-updates main restricted universe multiverse
deb https://mirrors.ustc.edu.cn/ubuntu/ focal-backports main restricted universe multiverse
deb https://mirrors.ustc.edu.cn/ubuntu/ focal-security main restricted universe multiverse
##阿里云源:
deb http://mirrors.aliyun.com/ubuntu/ focal main restricted universe multiverse
#deb-src http://mirrors.aliyun.com/ubuntu/ focal main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ focal-security main restricted universe multiverse
#deb-src http://mirrors.aliyun.com/ubuntu/ focal-security main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ focal-updates main restricted universe multiverse
#deb-src http://mirrors.aliyun.com/ubuntu/ focal-updates main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ focal-backports main restricted universe multiverse
#deb-src http://mirrors.aliyun.com/ubuntu/ focal-backports main restricted universe multiverse
##清华大学源:
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal-updates main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal-backports main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal-security main restricted universe multiverse
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19

保存并退出编辑器(在nano编辑器中,按Ctrl + X,然后按Y,最后按Enter)。

//及时更新一下软件包
sudo apt update
sudo apt upgrade
  • 1
  • 2
  • 3

(八)安装git

//检查 Git 版本: 打开终端,然后输入以下命令来检查 Git 是否已安装,以及其版本:
git --version
//如果这个命令返回了一个版本号,比如 git version 2.25.1,这意味着 Git 已经安装在你的系统上。如果终端显示消息说找不到 git 命令,那么你需要安装 Git。
//用你的系统的包管理器来安装
sudo apt update
sudo apt install git
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

(九)安装git-lfs

//添加git lfs软件包下载源
curl -s https://packagecloud.io/install/repositories/github/git-lfs/script.deb.sh | sudo bash
//使用标准的ubuntu安装命令安装git-lfs扩展
sudo apt-get install git-lfs
//安装完 Git LFS 后,你需要运行一次 
git lfs install
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

(十)提前安装一些必要的依赖

在官方和其他帖子里提到这些,顺便安装一下,准没错。

sudo apt-get update
sudo apt-get install unzip
sudo apt-get install jq
sudo apt-get install bc
  • 1
  • 2
  • 3
  • 4

二、启动运行项目

(一)拉取项目

我对比了一下,只有github上是最新的,国内镜像上的是比较旧的版本。 进入Ubuntu,新建一个目录QA,用于存放QAnything的代码,进入目录

//进入QA目录
cd QA
//拉取本项目
git clone https://github.com/netease-youdao/QAnything.git
  • 1
  • 2
  • 3
  • 4

(二)拉取RAG构架里的embedding模型

//进入qanything目录
cd qanything
git clone https://www.modelscope.cn/netease-youdao/QAnything.git
//完成后,qanything目录下会有一个约8G的models.zip文件,解压缩
unzip qanything/models.zip
  • 1
  • 2
  • 3
  • 4
  • 5

(三)拉取基座大语言模型

//进入custom_models目录
 cd QAnything/assets/custom_models
 //下载千问7B模型
git clone https://www.modelscope.cn/models/netease-youdao/Qwen-7B-QAnything
  • 1
  • 2
  • 3
  • 4

进入linux子系统,替换字符串

wsl进入自己的linux子系统,更改shell脚本的回车(在windows下创建编辑的shell脚本是dos格式的,而linux却是只能执行格式为unix格式的脚本),否则执行时会报,将回车符替换为空字符串。

//进入qanything目录
cd qanything
sed -i "s/\r//" scripts/run_for_local_option.sh
sed -i "s/^M//" scripts/run_for_local_option.sh
sed -i "s/\r//" scripts/run_for_cloud_option.sh
sed -i "s/^M//" scripts/run_for_cloud_option.sh
sed -i "s/\r//" run.sh
sed -i "s/^M//" run.sh
sed -i "s/\r//" close.sh
sed -i "s/^M//" close.sh
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

第一次启动失败,显存不够,7B换3B

准备工作完成后,直接运行

//第一次启动
cd QAnything
bash run.sh  # 默认在0号GPU上启动码
  • 1
  • 2
  • 3

不出意外,果然出现意外,报:

您的显卡型号卡4080-16G, 不支持部署Qwen-7B-QAnything模型,推荐部署3B及3B以下的模型,包括在线的OpenAI API

16G的显卡都小了,看来有道的模型太吃显存了,只好下载MiniChat-2-3B

cd QAnything/assets/custom_models
git clone https://www.modelscope.cn/netease-youdao/MiniChat-2-3B.git
  • 1
  • 2

第二次启动失败,解决显卡驱动的问题。

//第二次启动,改为启动3B模型,注意:run.sh的启动参数也要按照官方的说明,进行更改。
cd QAnything
bash ./run.sh -c local -i 0 -b hf -m MiniChat-2-3B -t minichat
  • 1
  • 2
  • 3

结果,又失败了,日志显示很多错误都是显卡驱动的问题,又认真看了一下官网的说明,发现下面这个NVIDIA Container Toolkit没有安装。
在这里插入图片描述
于是按照官方给的方法(下图),失败。
在这里插入图片描述
查看了很多帖子,后来到NVIDIA 官网给的办法,成功安装。
官网地址:https://docs.nvidia.com/datacenter/cloud-native/container-toolkit/latest/install-guide.html
在这里插入图片描述

第三次启动失败,解决境外包下载的问题

解决办法,写在前面的第(七)部分,更新Ubuntu软件包的国内源。

第四次启动失败,目前卡在这里。

在这里插入图片描述

run.sh的参数定义:

bash run.sh [-c <llm_api>] [-i <device_id>] [-b <runtime_backend>] [-m <model_name>] [-t <conv_template>] [-p <tensor_parallel>] [-r <gpu_memory_utilization>] [-h]
 -c <llm_api>:指定LLM API模式,选项为 {local, cloud},默认为 'local'。若设置为 '-c cloud',请首先手动设置环境变量 {OPENAI_API_KEY, OPENAI_API_BASE, OPENAI_API_MODEL_NAME, OPENAI_API_CONTEXT_LENGTH} 到 .env 文件中。
-i <device_id>:指定GPU设备ID。
-b <runtime_backend>:指定LLM推理运行时后端,选项为 {default, hf, vllm}-m <model_name>:指定要加载的公共LLM模型名称,用于通过FastChat serve API使用,选项为 {Qwen-7B-Chat, deepseek-llm-7b-chat, ...}-t <conv_template>:指定使用公共LLM模型时的会话模板,选项为 {qwen-7b-chat, deepseek-chat, ...}-p <tensor_parallel>:使用选项 {1, 2} 设置vllm后端的张量并行参数,默认为1。
-r <gpu_memory_utilization>:指定vllm后端的gpu_memory_utilization参数(0,1],默认为0.81。
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
Note: 你可以根据自己的设备条件选择最合适的服务启动命令。
(1) 当设置 "-i 0,1" 时,本地嵌入/重新排序将在设备 gpu_id_1 上运行,否则默认使用 gpu_id_0
(2) 当设置 "-c cloud" 时,将使用本地Embedding/Rerank和OpenAI LLM API,仅需要约4GB VRAM(适用于GPU设备VRAM <= 8GB)。
(3) 使用OpenAI LLM API时,您将被要求立即输入{OPENAI_API_KEY, OPENAI_API_BASE, OPENAI_API_MODEL_NAME, OPENAI_API_CONTEXT_LENGTH}(4) "-b hf" 是运行公共LLM推理的最推荐方式,但性能较差。
(5) 在选择QAnything系统的公共Chat LLM时,应考虑更合适的PROMPT_TEMPLATE设置,以考虑不同的LLM模型。
(6) 支持使用Huggingface Transformers/vllm后端的FastChat API的公共LLM列表位于 "/path/to/QAnything/third_party/FastChat/fastchat/conversation.py" 中。
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
DEBUG
如果想要查看相关日志,请查看QAnything/logs/debug_logs目录下的日志文件。

debug.log
用户请求处理日志
sanic_api.log
后端服务运行日志
llm_embed_rerank_tritonserver.log(单卡部署)
LLM embedding和rerank tritonserver服务启动日志
llm_tritonserver.log(多卡部署)
LLM tritonserver服务启动日志
embed_rerank_tritonserver.log(多卡部署或使用openai接口)
embedding和rerank tritonserver服务启动日志
rerank_server.log
rerank服务运行日志
ocr_server.log
OCR服务运行日志
npm_server.log
前端服务运行日志
llm_server_entrypoint.log
LLM中转服务运行日志
fastchat_logs/*.log
FastChat服务运行日志
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23

未完,待续写

关闭服务

bash close.sh
  • 1

参考资料

实战搭建网易有道的QAnything(一) 前提准备工作
实战搭建网易有道的QAnything(二) 正式下载安装
旧版 WSL 的手动安装步骤
官方QAnything使用说明
官方Question and Answer based on Anything
前沿重器[45] RAG开源项目Qanything源码阅读1-概述+服务
前沿重器[46] RAG开源项目Qanything源码阅读2-离线文件处理
QAnything 的部署,使用说明

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/IT小白/article/detail/960295
推荐阅读
  

闽ICP备14008679号