Ubuntu部署LangChain-Chatchat

news2025/1/16 17:48:27

个人博客:https://blog.lukeewin.top
更多内容欢迎访问我的博客。

一、环境

OS: Ubuntu 20.04
PyTorch: 2.0.0
Python: 3.8
CUDA: 11.8
GPU: RTX 4090 24GB
CPU: 12 vCPU Intel(R) Xeon(R) Platinum 8352V CPU @ 2.10GHz
RAM: 90GB
硬盘: 180GB
LLM: Chatglm3-6b
Embedding Models: BAAI/bge-large-zh-v1.5
TextSplitter: ChineseRecursiveTextSplitter
Kb_dataset: faiss

启用学术加速:

source /etc/network_turbo

关闭学术加速:

unset http_proxy && unset https_proxy

如果是在Notebook中可以运行下面代码:

import subprocess
import os

result = subprocess.run('bash -c "source /etc/network_turbo && env | grep proxy"', shell=True, capture_output=True, text=True)
output = result.stdout
for line in output.splitlines():
    if '=' in line:
        var, value = line.split('=', 1)
        os.environ[var] = value

二、创建Python运行环境

# 创建Python运行虚拟环境
# 方式一
conda create -p yourParth pythonVersion
# 例如
conda create -p /root/autodl-tmp/llm python=3.8

# 方式二
conda create -n name pythonVersion
# 例如
conda create -n llm python=3.8

三、克隆源码以及安装Python依赖库

  1. 激活虚拟环境
conda activate /root/autodl-tmp/llm # 如果用方式一
conda activate llm # 如果用方式二
  1. 更新pip
pip3 install --upgrade pip
  1. 拉取源码
git clone --recursive https://github.com/chatchat-space/Langchain-Chatchat.git
  1. 进入目录
cd Langchain-Chatchat
  1. 安装全部依赖 (如果不想要安装全部依赖,可以跳过这步)
pip install -r requirements.txt

# 我这里把前三个依赖注释了,并且把fass向量数据库依赖注释了

# 默认依赖包括基本运行环境(FAISS向量库)。以下是可选依赖:
- 如果要使用 milvus/pg_vector 等向量库,请将 requirements.txt 中相应依赖取消注释再安装。
- 如果要开启 OCR GPU 加速,请安装 rapidocr_paddle[gpu]
- 如果要使用在线 API 模型,请安装对用的 SDK
  1. 如果只需运行API,可执行:
pip install -r requirements_api.txt
  1. 如果只需运行WebUI,可执行:
pip install -r requirements_webui.txt

四、模型下载

安装好python依赖后,在LangChain源码目录内创建目录model

mkdir model

安装gitgit-lfs

sudo apt update
sudo apt install git
curl -s https://packagecloud.io/install/repositories/github/git-lfs/script.deb.sh | sudo bash
sudo apt-get install git-lfs
git lfs install

使用git命令克隆模型到服务器。

git clone https://huggingface.co/THUDM/chatglm3-6b
git clone https://huggingface.co/BAAI/bge-large-zh-v1.5

五、初始化向量数据库

  • 如果您已经有创建过知识库,可以先执行以下命令创建或更新数据库表:
python init_database.py --create-tables

如果可以正常运行,则无需再重建知识库。

  • 如果您是第一次运行本项目,知识库尚未建立,或者之前使用的是低于最新master分支版本的框架,或者配置文件中的知识库类型、嵌入模型发生变化,或者之前的向量库没有开启 normalize_L2,需要以下命令初始化或重建知识库:
python init_database.py --recreate-vs

如果报错:

ModuleNotFoundError: No module named 'configs.basic_config'

解决方案:

python copy_config_example.py

六、启动

1. 修改加载离线模型

# 修改 vim /root/autodl-tmp/llm/src/Langchain-Chatchat/startup.py
# 是修改 Work 中的模型路径
model_path='/root/autodl-tmp/llm/src/Langchain-Chatchat/model/chatglm3-6b', # 这里写离线模型的绝对路径

2. 修改启动端口

configs/server_config.py

WEBUI_SERVER = {
    "host": DEFAULT_BIND_HOST,
    "port": 6006,
}

3. 启动

python startup.py -a # 启动全部
可选参数包括 -a (或--all-webui), --all-api, --llm-api, -c (或--controller), --openai-api, -m (或--model-worker), --api, --webui,其中:

--all-webui 为一键启动 WebUI 所有依赖服务;
--all-api 为一键启动 API 所有依赖服务;
--llm-api 为一键启动 Fastchat 所有依赖的 LLM 服务;
--openai-api 为仅启动 FastChat 的 controller 和 openai-api-server 服务;
其他为单独服务启动选项。
若想指定非默认模型,需要用 --model-name 选项,示例:

python startup.py --all-webui --model-name Qwen-7B-Chat
更多信息可通过 python startup.py -h 查看。

4. 端口映射

ssh -CNg -L 6006:127.0.0.1:6006 root@connect.westb.seetacloud.com -p 25229

七、报错信息以及对应的解决方案

初始化向量数据库报错:ModuleNotFoundError: No module named 'configs.basic_config'
执行:python copy_config_example.py
报错:ModuleNotFoundError: No module named 'faiss'
执行:pip install faiss-gpu

八、运行效果

错信息以及对应的解决方案

初始化向量数据库报错:ModuleNotFoundError: No module named 'configs.basic_config'
执行:python copy_config_example.py
报错:ModuleNotFoundError: No module named 'faiss'
执行:pip install faiss-gpu

八、运行效果

image-20240403153555981

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

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

相关文章

008 CSS盒子模型

文章目录 盒子模型内容-宽度和高度内边距-padding边框-border圆角-border-radius 外边距-margin上下margin的传递上下margin的折叠块级元素的水平居中行内级元素(包括inline-block元素)的水平居中 外轮廓-outline盒子阴影-box-shadow文字阴影-text-shadow行内非替换元素的特殊性…

C语言实现快速排序算法

1. 什么是快速排序算法 快速排序的核心思想是通过分治法(Divide and Conquer)来实现排序。 算法的基本步骤是: 1. 选择一个基准值(通常是数组中的某个元素),将数组分成两部分,使得左边的部分所有元素都小于…

文心一言指令词宝典之营销文案篇

作者:哈哥撩编程(视频号、抖音、公众号同名) 新星计划全栈领域优秀创作者博客专家全国博客之星第四名超级个体COC上海社区主理人特约讲师谷歌亚马逊演讲嘉宾科技博主极星会首批签约作者 🏆 推荐专栏: 🏅…

Linux:IO多路转接之poll

文章目录 select的缺点pollstruct pollfd解决缺点的方式 代码实现 本篇总结的是poll的相关内容,在总结poll的内容前,先回顾一下select的缺点 select的缺点 select的缺点也比较明显 等待的fd是有上限的,在我们当前这个版本来说,…

Hive 之 UDF 运用(包会的)

文章目录 UDF 是什么?reflect静态方法调用实例方法调用 自定义 UDF(GenericUDF)1.创建项目2.创建类继承 UDF3.数据类型判断4.编写业务逻辑5.定义函数描述信息6.打包与上传7.注册 UDF 函数并测试返回复杂的数据类型 UDF 是什么? H…

【Redis教程0x0F】Redis实战篇

Redis如何实现延迟队列? 延迟队列是指把当前要做的事情,往后推迟一段时间再做。延迟队列的常见使用场景有以下几种: 在淘宝、京东等购物平台上下单,超过一定时间未付款,订单会自动取消;打车的时候&#x…

Android中的aidl接口及案例说明

目录 一、什么是AIDL 二、AIDL语法规格 三、AIDL实例 客户端: 服务端: 一、什么是AIDL AIDL,即 Android Interface Definition Language,用于android不同进程间通信接口。同一个应用里面还是建议用正常接口实现功能即可。 官方说明:Android 接口定义语言 (AIDL) | …

150行Python代码模拟太阳系行星运转

今天我们用Python来模拟一下太阳系行星运动轨迹~ 先上成品图(运行效果含音乐的呦) 想要实现这样的效果并不难 准备材料 首先我们需要准备这样一些材料 宇宙背景图 背景透明的行星图 编写代码 代码分块详解 导入需要的模块 import pygame import …

高效学习方法:冥想背诵,看一句念一句,再每个词分析位置及语法等合理性,忘记哪个词再看猜下为什么会忘,跟自己的表达哪里不一样。

原则:易学则易行,则效果最好。《易经》 你提到的这种学习方法结合了多种记忆和理解技巧,可以帮助提高学习效率。下面是对这种方法的一个详细解释和一些建议: 冥想背诵:通过冥想来集中注意力,可以帮助你在没…

redis 数据库的安装及使用方法

目录 一 关系数据库与非关系型数据库 (一)关系型数据库 1,关系型数据库是什么 2,主流的关系型数据库有哪些 3,关系型数据库注意事项 (二)非关系型数据库 1,非关系型数据库是…

WLAN组网经典实验

1、项目需求 现有一无线网络建设,需求为三层组网,AP、STA网关均在核心交换机上,AC作为给AP分配IP地址的DHCP,SW1作为给STA分配IP地址的DHCP,默认AP工作在vlan1上,说白了就是管理vlan流量在AC上跑,业务vlan流量在核心上跑。 2、项目规划 如上图所示: AP1管理vlan: 2 …

Unity性能优化篇(十四) 其他优化细节以及UPR优化分析器

代码优化: 1. 使用AssetBundle作为资源加载方案。 而且经常一起使用的资源可以打在同一个AssetBundle包中。尽量避免同一个资源被打包进多个AB包中。压缩方式尽量使用LZ4,少用或不要用LZMA的压缩方式。如果确定后续开发不会升级Unity版本,则可…

基于SpringBoot+Vue的前后端分离的电影院售票管理运营平台

一、项目背景介绍: 该系统研究背景聚焦于电影市场的快速增长、互联网电影院管理、用户体验和服务优化以及数据管理与决策支持。随着人们生活水平的提高,电影观影已成为重要的娱乐方式,电影院作为传统场所面临新的挑战。借助SpringBootVue技术…

vscode的源码插件GitHub Repositories

打铁还需自身硬,需要不断提升自我,提升自我的一种方式就是看源码,站在更高的维度去理解底层原理,以便以后更好的开发和解决问题,由于源码一个动不动就是几个G甚至十几个G,如果一个个源码下载下来&#xff0…

NLP在搜索召回领域中的应用场景

自然语言处理(NLP)在搜索召回领域中的应用场景非常广泛,它通过理解和分析人类语言,提高了信息检索的准确性和效率。以下是一些具体的应用场景: 1. 搜索引擎优化 NLP技术可以用于优化搜索引擎的查询处理,通…

江协科技STM32:TIM输出比较

输出比较模块的主要功能:输出一定频率和占空比的PWM波形 CC是捕获比较的意思,R是Register,寄存器的意思,CCR捕获比较寄存器它是输入捕获和输出比较共用的 当使用输入捕获,它就是捕获寄存器 当使用输出比较,它就是比…

分享webgl魔幻星球

界面截图 webgl 是在网页上绘制和渲染三维图形的技术,可以让用户与其进行交互。divcss、canvas 2d 专注于二维图形。 对公司而言,webgl 可以解决他们在三维模型的显示和交互上的问题;对开发者而言,webgl 可以让我们是实现更多、更…

大学教材《C语言程序设计》(浙大版)课后习题解析 | 第十一、十二章

概述 本文主要提供《C语言程序设计》(浙大版) 第十一、十二章的课后习题解析,以方便同学们完成题目后作为参考对照。 专栏直达链接: 《C语言程序设计》(浙大版)_孟俊宇-MJY的博客-CSDN博客​http://t.csdnimg.cn/ZtcgY 一.第十一章(指针进…

【第十五篇】使用BurpSuite实现IDOR越权(实战案例)

程序不存在严格的访问控制,从而实现未授权访问等。 如图,用户 ID 用于检索相关用户的数据,以呈现帐户页面。 思路:进行爆破或修改请求后发包,查看是否存在IDOR越权 操作:遍历ID参数,查看回显 …

VMware配置环境(安装运行问题)及系列dns端口网络类型IP远程连接学习之(详谈8000字)

安装vmware快速配置步骤 下载VMware安装包 在下载好VMware安装包之后双击运行 接受条款 关闭VMware自动更新 勾选快捷键方式 安装VMware安装 输入许可证(有需要私信小编) 安装完成 重启电脑即可 最终成功界面: 安装Linux系统 创建虚拟机 选择…