DB-GPT_0.5.10安装__部署Qwen2-72b模型(Ubuntu)——报错记录

news2024/12/28 20:53:43

官网地址在这里——源码部署 (yuque.com),英文地址——Source Code Deployment | DB-GPT (dbgpt.site)

官网给了三种部署方式:源码部署、Docker部署、Docker-Compose部署,这里我选择的部署方式是源码部署,Docker部署的教程我感觉比较简陋,还是使用源码部署更为稳妥些。不过经过自己的尝试发现,DB-GPT官网给的部署教程属实不太友好,关于配置文件env里各条配置规则的介绍实在太少了,自己连接教程之外的其他llm的时候经常报错。

部署前提

在部署DB-BPT之前,最好确认已经在本地或者服务器上部署好了大语言模型以及对应的embedding模型!!

DB-GPT官网的教程里虽然给了一些embedding模型的安装方法,但是很可能与你部署的大语言模型对应不上导致启动失败!这里我使用的模型是’Qwen2-72b’,使用的系统是Ubuntu,模型是在xinference上部署的,在之后的配置信息中只要配置好url就可以访问了。

(1)下载源代码

git clone https://github.com/eosphoros-ai/DB-GPT.git

使用conda创建新的虚拟环境

conda create -n dbgpt_env python=3.10
conda activate dbgpt_env

这里注意,如果你使用的是非root用户,很可能没有对当前文件夹的读写权限,请先开启一下权限:

# 比如 sudo chmod -R u+rw /usr/local
sudo chmod -R u+rw '你的文件夹路径'

激活环境之后需要进入到 ‘DB-GPT’ 这个子文件夹(之后的命令基本都是在’DB-GPT’目录下执行),然后再执行下面的命令:

pip install -e ".[default]"

这句命令下载的python包会比较多,会消耗较长的时间,需要耐心等待。==如果刚才没有给当前系统用户开放读写权限,这一步安装的时候可能会失败。==包安装好之后,运行下面的命令复制一份配置文件,之后我们修改配置就是在这个 .env 文件里修改

cp .env.template  .env

(2)开始部署模型

首先确保安装了 git-lfs 服务,下面是不同系统对应的安装命令,直接运行命令就好:

● CentOS installation: yum install git-lfs
● Ubuntu installation: apt-get install git-lfs
● MacOS installation: brew install git-lfs

由于我使用的是Qwen大模型,而且模型已经在xinference上部署好了,这里只需要安装额外的依赖项:

pip install  -e ".[openai]"
pip install dashscope

然后需要注意的是,官网给出的 Qwen模型 的配置信息是这样的:

# .env
# Aliyun tongyiqianwen
LLM_MODEL=tongyi_proxyllm
TONGYI_PROXY_API_KEY={your-tongyi-sk}
PROXY_SERVER_URL={your_service_url}

但是经过我的尝试,配置信息如果这么写是无法成功调用大模型的,调用llm时会爆出api-key非法的错误。

幸亏有前辈之前在Github反映过这样的问题:[Bug] [Module Name] qwen模型使用本地部署,DB-GPT项目独立部署在另外一台机器上面,在使用数据库对话时出现错误。 · Issue #930 · eosphoros-ai/DB-GPT (github.com)

经过尝试,正确的配置信息应该是这样的(在 .env 文件里修改):

LANGUAGE=zh
# LLM_MODEL必须是固定的'proxyllm',不能修改!!
LLM_MODEL=proxyllm
PROXY_API_KEY= 你的api-key
PROXY_SERVER_URL=http://10.xx.xxx.xx:xxxx/v1/chat/completions
PROXYLLM_BACKEND= llm的名字

# EMBEDDING_MODEL也必须是固定的'proxy_http_openapi',不能修改!!
EMBEDDING_MODEL=proxy_http_openapi
proxy_http_openapi_proxy_server_url=http://10.xx.xxx.xx:xxxx/v1/embeddings
proxy_http_openapi_proxy_api_key=你的api-key
proxy_http_openapi_proxy_backend=embedding模型的名字

这里配置EMBEDDING_MODEL的配置信息时最好把原来的配置注释掉,因为DB-GPT官网说配置文件里不支持覆写。

这里我安装的DB-GPT 的版本是 0.5.10,目前为止需要安装的组件已经全部安装好了,可以使用如下命令运行(二者选其一):

python dbgpt/app/dbgpt_server.py
# 或
dbgpt start webserver

(3)启动时报错

1. ImportError: libcupti.so.12: cannot open shared object file: No such file or directory

这个错误的意思是,DB-GPT运行时找不到 “ libcupti.so.12” 这个库,这个问题发生的原因大概率事Anaconda自己的问题,每次创建的新conda环境并不会完全同步cuda相关的依赖。当然也有可能是你没有安装好cuda toolkit。

# 检查一下cuda版本
nvcc --version

image-20240801153831886

如果是像图中一样,是成功安装了的,那么使用如下命令:

sudo find / -name "libcupti.so.12"

这个命令会运行较长的时间,作用是全局找 “libcupti.so.12” 文件,最后查找的结果可能有多个,选择一个文件复制到dbgpt_env环境下即可

比如,命令的查找结果为:

/usr/local/cuda-12.1/extras/CUPTI/lib64/libcupti.so.12
/home/myuser/anaconda3/envs/DiffFashion/lib/python3.9/site-packages/nvidia/cuda_cupti/lib/libcupti.so.12
/home/myuser/anaconda3/envs/toolbench/lib/python3.10/site-packages/nvidia/cuda_cupti/lib/libcupti.so.12
/home/myuser/anaconda3/envs/CAST/lib/python3.9/site-packages/nvidia/cuda_cupti/lib/libcupti.so.12
/home/myuser/anaconda3/envs/vllm/lib/python3.9/site-packages/nvidia/cuda_cupti/lib/libcupti.so.12
/home/myuser/anaconda3/envs/yolov8/lib/libcupti.so.12
/home/myuser/anaconda3/envs/ladi-vton/lib/python3.10/site-packages/nvidia/cuda_cupti/lib/libcupti.so.12
/home/myuser/anaconda3/envs/chatchat2/lib/python3.8/site-packages/nvidia/cuda_cupti/lib/libcupti.so.12
/home/myuser/anaconda3/envs/qwen2/lib/python3.11/site-packages/nvidia/cuda_cupti/lib/libcupti.so.12
/home/myuser/anaconda3/lib/python3.11/site-packages/nvidia/cuda_cupti/lib/libcupti.so.12
/home/myuser/anaconda3/pkgs/cuda-cupti-12.1.105-0/lib/libcupti.so.12
/home/myuser/.local/lib/python3.10/site-packages/nvidia/cuda_cupti/lib/libcupti.so.12

因为上文中创建的虚拟环境名为dbgpt_env,所以dbgpt_env的路径其实就是 /home/myuser/anaconda3/envs/dbgpt_env/lib/python3.10/site-packages/nvidia/cuda_cupti/

由于我们创建dbgpt_env时使用的环境是python3.10,这里也挑选相同版本的conda环境,比如 /home/myuser/anaconda3/envs/ladi-vton/lib/python3.10/site-packages/nvidia/cuda_cupti/lib/libcupti.so.12

那么其实只用复制文件或者创建一个软链接就行:

# 复制方式
cp /home/zstu/anaconda3/envs/ladi-vton/lib/python3.10/site-packages/nvidia/cuda_cupti/lib/libcupti.so.12 /home/zstu/anaconda3/envs/dbgpt_env/lib/python3.10/site-packages/nvidia/cuda_cupti/lib/libcupti.so.12

# 软链接方式需要先创建路径
mkdir -p /home/zstu/anaconda3/envs/dbgpt_env/lib/python3.10/site-packages/nvidia/cuda_cupti/lib/
ln -s  /home/zstu/anaconda3/envs/ladi-vton/lib/python3.10/site-packages/nvidia/cuda_cupti/lib/libcupti.so.12 /home/zstu/anaconda3/envs/dbgpt_env/lib/python3.10/site-packages/nvidia/cuda_cupti/lib/libcupti.so.12

2. No module named ‘botocore’

这个问题比较简单,就是缺乏了botocore这个包

pip install botocore

3.RuntimeError: Failed to import transformers.trainer because of the following error (look up to see its traceback): /home/myuser/.local/lib/python3.10/site-packages/flash_attn_2_cuda.cpython-310-x86_64-linux-gnu.so: undefined symbol: _ZN3c104cuda14ExchangeDeviceEa

这个问题我也没明白是怎么出现的,问了GPT之后是使用如下方法解决的:

pip uninstall flash-attn
pip install flash-attn

(4)开始使用

如果访问端口号 5670 可以看到如下页面就代表你安装成功了:

image-20240801155909678

现在我们可以提问了,如果你提问的时候爆出如下错误:

InvalidApiKey:Invalid API-key provided. (error_code: -1)

这个首先检查你的api-key是不是写错了。如果确认是没有写错,那么应该就是配置文件 .env 里没有配置好,比如使用Qwen模型时 LLM_MODEL写成了tongyi_proxyllm。(这个LLM_MODEL配置确实是很迷,我最开始以为它是指的模型的名字,结果最后发现只能写固定名词)

chat_data的使用

这里我展示一下chat data和chat excel的用法,如果要使用chat data是必须要有数据库的,db-gpt会根据你的问题调用text2ToSQL,生成SQL语句之后自动查询,将查询结果返回到前端。首先需要配置数据库,这里我使用的是Clickhouse:

image-20240801160251953

image-20240801160312737

填写好相应的host和port之后保存应该会出现一个 找不到 clickhouse-connect的错误,这里要安装上:

pip install clickhouse-connect

然后回到首页,选择chat_data功能,选择刚才连接的数据库,就可以开始提问了:

image-20240801161236377

chat_excel

这个功能比较简单,上传一份excel文件,让 db-gpt 解析数据:

image-20240801160846254

这里选择好文件之后,一定要记得点一下这个 上传按钮,否则文件是没有上传到db-gpt后台解析的,你提问的时候就会发生报错。

image-20240801161212061

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1969668.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

18. Lammps命令学习-4之units

来源: “码农不会写诗”公众号 链接:Lammps命令学习-4之units units style 使用read data或create box命令定义模拟框之前设置用于模拟的单位类型   https://docs.lammps.org/units.html Syntax units styleDescription **设置用于模拟的单位类型&am…

MySQL数据库入门基础知识 【1】推荐

数据库就是储存和管理数据的仓库,对数据进行增删改查操作,其本质是一个软件。 首先数据有两种,一种是关系型数据库,另一种是非关系型数据库。 关系型数据库是以表的形式来存储数据,表和表之间可以有很多复杂的关系&a…

flink 1.17 测试

1、配置 2、测试: ./bin/flink run-application -t yarn-application -Dyarn.application.namewordcount -c org.apache.flink.streaming.examples.wordcount.WordCount ./examples/streaming/WordCount.jar --input hdfs://jy/tmp/input --output hdfs://jy/tmp/o…

linux安装人大金仓数据库

下载人大金仓数据库 人大金仓-成为世界卓越的数据库产品与服务提供商 (kingbase.com.cn) 下载授权文件 1创建用户 创建用户并设置密码为kingbase useradd kingbasepasswd kingbase 创建目录 sudo mkdir -p /opt/Kingbase/ES/V9 # 设置操作权限 sudo chmod orwx /opt/Kingba…

Spring@Autowired注解

Autowired顾名思义,就是自动装配,其作用是为了消除代码Java代码里面的getter/setter与bean属性中的property。当然,getter看个人需求,如果私有属性需要对外提供的话,应当予以保留。 因此,引入Autowired注解…

智慧水务项目(一)django(drf)+angular 18 通过pycharm建立项目

一、环境准备 windows 10 pycharm python3.11 二、pycharm 创建django项目 三、建立requirements.txt 在根目录创建requirements.txt,也就是与manage.py同一目录下,先放下面几个依赖 Django djangorestframeworkpip install -r .\requirements.txt 更新下pip python…

仓颉语言 -- 网络编程

使用新版本 (2024-07-19 16:10发布的) 1、网络编程概述 网络通信是两个设备通过计算机网络进行数据交换的过程。通过编写软件达成网络通信的行为即为网络编程。 仓颉为开发者提供了基础的网络编程功能,在仓颉标准库中,用户可使用…

python3GUI--new音乐播放器!By:PyQt5(附下载地址)

文章目录 一.前言二.展示1.启动2.MV推荐3.专辑详情页4.歌手详情页5.搜索结果页6.歌曲播放页7.我喜欢歌曲页8.我喜欢专辑页 三.思路&启发1.布局2.细节3.组件复用4.项目结构5.优化速度1.Nuitka1.显著提高性能:2.减小程序体积&am…

SPSSAU | 德尔菲专家法原理及案例实操分析

德尔菲专家法Delphi是一种结构化的预测和决策方法,主要用于收集和综合专家意见,进而做出相应决策的研究方法。比如在我们建立指标体系时,首先选择20个备选指标,然后寻找10位专家进行评价(评价该20个指标是否具有可行&a…

聊聊ChatGLM6B的微调脚本及与Huggingface的关联

前言 本文首先分析微调脚本trainer.sh的内容,再剖析ChatGLM是如何与Huggingface平台对接,实现transformers库的API直接调用ChatGLM模型,最后定位到了ChatGLM模型的源码文件。 脚本分析 微调脚本: PRE_SEQ_LEN128 LR2e-2CUDA_V…

GeneAvatar: 3D 数字人编辑方案

定位: GeneAvatar是一种通用方法,用于编辑不同体积表示(如NeRFBlendShape、INSTA、Next3D)中的3D数字人,仅需一张2D图像即可实现友好的编辑操作。 核心功能: 支持使用2D编辑方法(如拖拽式GAN、文本驱动编辑等&#x…

[Bugku] web-CTF-GET

GET 1.开启环境 2.根据内容得知在网址url后输入?whatflag

字符设备驱动基础—sys文件系统,udev介绍,驱动模块在内核空间注册设备

文章目录 sys文件系统介绍设计思想应用和功能 udev介绍主要功能工作原理使用 udevadm 工具 设备文件创建流程驱动程序的注册device_create函数详解示例代码效果图 sys文件系统介绍 sysfs 是 Linux 内核中的一种虚拟文件系统,它为用户空间和内核之间提供了一种统一的…

C语言小练习(贰)

上机 计算n以内所有正奇数的和 ? n值通过键盘输入 #include <stdio.h>int main() {int sum 0;int i 1;int n;printf("请输入一个范围\n");scanf("%d",&n);do{if(i % 2 ! 0)//判断奇数{sum i;}i;}while(i < n);//限定条件printf("范围…

Python连接数据库:JDBC不是唯一选择!

你是否曾困惑于如何在Python中连接数据库?也许你听说过JDBC,但不确定它是否适用于Python?别担心,本文将为你揭开Python数据库连接的神秘面纱! 目录 JDBC vs Python数据库连接Python连接数据库的正确姿势Python的数据库连接方案为什么Python不直接使用ODBC或JDBC&#xff1f;…

正点原子imx6ull-mini-Linux驱动之阻塞IO和非阻塞IO实验(12)

阻塞和非阻塞 IO 是 Linux 驱动开发里面很常见的两种设备访问模式&#xff0c;在编写驱动的时候 一定要考虑到阻塞和非阻塞。本章我们就来学习一下阻塞和非阻塞 IO&#xff0c;以及如何在驱动程序中 处理阻塞与非阻塞&#xff0c;如何在驱动程序使用等待队列和 poll 机制。 1&…

2024-08-01升级问题记录:升级ArcGIS for Android

升级以离线方式引用的arcgis for Android &#xff0c;从10.2.7到 10.2.9 1、下载完整的aar库 地址&#xff1a;JFroghttps://esri.jfrog.io/ui/native/arcgis/com/esri/arcgis/android/arcgis-android/10.2.9/ 2、替换旧的库&#xff0c;由于10.2.7是以jar方式引用&#xf…

Win10系统,使用钉钉会议共享屏幕的时候,别人看到的都是全黑或全白屏幕

环境&#xff1a; Win10系统 钉钉7.6.0 问题描述&#xff1a; Win10系统&#xff0c;使用钉钉会议共享屏幕的时候&#xff0c;别人看到的都是全黑或全白屏幕 解决方案&#xff1a; 在Win10系统上使用钉钉会议共享屏幕出现全黑或全白的问题&#xff0c;这可能与系统升级兼容…

盘点那些实用的开发技术!!

敏感信息加密操作&#xff0c;让开发的系统更加的安全可靠&#xff01;&#xff01;Jasypt&#xff08;Java Simplified Encryption&#xff09;是一个开源的Java库&#xff0c;用于简化加密操作。https://mp.weixin.qq.com/s/sPBV8Ej46YJsElImodRjAQ每个Web开发都应了解的&…

一个前后端分离架构的低代码开发平台,支持微服务架构,支持开发SAAS项目(附源码)

前言 在当前的企业软件开发领域&#xff0c;开发者常常面临着代码重复性高、开发效率低、项目周期长等挑战。现有的软件解-决方案往往难以满足快速变化的市场需求&#xff0c;特别是在SAAS项目、企业信息管理系统&#xff08;MIS&#xff09;、内部办公系统&#xff08;OA&…