基于AutoDL部署langchain-chatchat-0.3.1实战

一、租用AutoDL云服务器,配置环境

1.1 配置AutoDL环境

注册好autodl账户之后,开始在上面租服务器,GPU我选择的是RTX4090*2,西北B区,基础镜像选择的是Pytorch-2.3.0-python-3.12(ubuntu22.04)- cuda版本12.1。

1.2 了解AutoDl学术加速的使用

进入JupyterLab,在/root目录下建立data文件夹,进行学术加速,提高在国外网站(github等学术网站)拉取文件的速度:

# 开启学术加速
source /etc/network_turbo# 取消学术加速:
unset http_proxy && unset https_proxy

1.3 基于AutoDL的虚拟环境激活

source ~/.bashrc
conda init

二、设置和安装Langchain-Chatchat及相关依赖


1.打开终端从github上将新版本的项目拉取下来,指令如下(如果学术加速不稳定,需要取消学术加速):

git clone https://github.com/chatchat-space/Langchain-Chatchat.git


2.新建一个虚拟环境(进入glm4_text前可能需要激活:source ~/.bashrc   conda init)

conda create -n glm4_text python==3.11
conda activate glm4_text

3.安装 Langchain-Chatchat,从 0.3.0 版本起,Langchain-Chatchat 提供以 Python 库形式的安装方式,具体安装请执行:(请不要着急使用该命令,看下一条命令)

pip install langchain-chatchat -U  -i https://pypi.tuna.tsinghua.edu.cn/simple

4.因模型部署框架 Xinference 接入 Langchain-Chatchat 时需要额外安装对应的 Python 依赖库,因此如需搭配 Xinference 框架使用时,建议使用如下指令进行安装:(因为我使用的就是Xinference框架)

pip install langchain-chatchat[xinference] -U  -i https://pypi.tuna.tsinghua.edu.cn/simple

三、Xinference框架部署与大模型 & embidding模型加载


从 0.3.0 版本起,Langchain-Chatchat 不再根据用户输入的本地模型路径直接进行模型加载,涉及到的模型种类包括 LLM、Embedding、Reranker 及后续会提供支持的多模态模型等,均改为支持市面常见的各大模型推理框架接入,如 Xinference、Ollama、LocalAI、FastChat、One API 等。因此,请确认在启动 Langchain-Chatchat 项目前,首先进行模型推理框架的运行,并加载所需使用的模型。然后再正式启动 Langchain-Chatchat。

1.新开终端再次新建一个推理虚拟环境llm_tl并激活:

conda create -n llm_tl python==3.11
conda activate llm_tl

3.Xinference 在 Linux, Windows, MacOS 上都可以通过 pip 来安装。如果需要使用 Xinference 进行模型推理,可以根据不同的模型指定不同的引擎。

这一步骤请记得不要使用AutoDL中的无卡模式开机!不然会遇到进程杀死的错误!

pip install "xinference[all]"  -i https://pypi.tuna.tsinghua.edu.cn/simple

报错:Failed to build llama-cpp-python
ERROR: ERROR: Failed to build installable wheels for some pyproject.toml based projects (llama-cpp-python)

当前虚拟机的 g++ --version,发现版本为“g++ (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0”,如果高于10的话就需要降级到10。降级后重新运行即可成功!

在创建的虚拟环境中更新需如下指令:

conda config --add channels conda-forgeconda install gxx_linux-64=10pip install "xinference[all]"  -i https://pypi.tuna.tsinghua.edu.cn/simple

4.本地运行Xinference配置

让我们以一个经典的大语言模型 glm4-9b-chat 来展示如何在本地用 Xinference 运行大模型,我这里自定义了一个存储日志文件和大模型,embedding模型的路径,如果不自定义一个路径将会下载到默认的一个路径下,这样很容易将我们的系统盘给撑爆,以魔塔社区下载模型为例。

XINFERENCE_HOME=/root/autodl-tmp/xinference XINFERENCE_MODEL_SRC=modelscope xinference-local --host 0.0.0.0 --port 9997 

 5.新建一个终端依次输入如下代码:

进入llm_tl环境,输入如下指令下载embeding模型和glm4-chat模型。

xinference launch --model-name bge-large-zh-v1.5 --model-type embeddingxinference launch --model-engine vllm --model-name glm4-chat --size-in-billions 9 --model-format pytorch --quantization none

遗憾的是看不到下载过程(不知道下载过程报错时如何处理),下载完后,我们安装apt-get install tree后,进入目录/root/autodl-tmp/xinference/modelscope,通过tree把文件路径列出来:

sudo apt-get update
apt-get install tree
tree
(base) root@autodl-container-75ca4f8174-f38c15a5:~/autodl-tmp/xinference/modelscope# tree
.
└── hub├── Xorbits│   └── bge-large-zh-v1___5│       ├── 1_Pooling│       │   └── config.json│       ├── README.md│       ├── config.json│       ├── config_sentence_transformers.json│       ├── configuration.json│       ├── model.safetensors│       ├── modules.json│       ├── pytorch_model.bin│       ├── sentence_bert_config.json│       ├── special_tokens_map.json│       ├── tokenizer.json│       ├── tokenizer_config.json│       └── vocab.txt└── ZhipuAI└── glm-4-9b-chat├── LICENSE├── README.md├── README_en.md├── config.json├── configuration.json├── configuration_chatglm.py├── generation_config.json├── model-00001-of-00010.safetensors├── model-00002-of-00010.safetensors├── model-00003-of-00010.safetensors├── model-00004-of-00010.safetensors├── model-00005-of-00010.safetensors├── model-00006-of-00010.safetensors├── model-00007-of-00010.safetensors├── model-00008-of-00010.safetensors├── model-00009-of-00010.safetensors├── model-00010-of-00010.safetensors├── model.safetensors.index.json├── modeling_chatglm.py├── tokenization_chatglm.py├── tokenizer.model└── tokenizer_config.json6 directories, 35 files

6.以使用 --model-uid 或者 -u 参数指定模型的 UID,如果没有指定,Xinference 会随机生成一个 ID,下面的命令xinference list 可以看出UID分别为glm4-chat和bge-large-zh-v1.5:

四、启动项目

1.切换成我们最开始新建的虚拟环境,在启动项目之前确保首先进行模型推理框架的运行,并加载所需使用的模型,查看与修改 Langchain-Chatchat 配置

运行chatchat --help命令:

chatchat --help

 2.可根据上述配置命令选择需要查看或修改的配置类型,以项目初始化init配置为例,想要进行项目初始化查看或修改时可以输入以下命令chatchat init --help获取帮助信息,如下图所示:

从返回信息可以看出,chatchat init可以指定API,LLM模型,Embedding模型等,使用如下命令指定默认llm和embedding。

chatchat init -l glm4-chat
chatchat init -e bge-large-zh-v1.5

3.初始化知识库(不初始化官方提供的知识库也没问题,后面直接在UI界面中操作自己的本地知识库就好!)。

chatchat kb -r

有一个报错:“ FileExistsError: 从文件 samples/test_files/langchain.pdf 加载文档时出错:[Errno 17] File exists: '/root/nltk_data/tokenizers' ” ,将文件'/root/data/Langchain-Chatchat/data/knowledge_base/samples/content/test_files/langchain.pdf'复制到'/root/nltk_data/tokenizers'即可。

4.启动项目

chatchat start -a

在本地服务器终端上运行:

ssh -p 46828 root@connect.westc.gpuhub.com -CNg -L 8501:127.0.0.1:8501 -o StrictHostKeyChecking=no 

输入AutoDL上复制到密码,即在本地电脑上通过127.0.0.1:8501访问到chatchat,可以看到当前部署到版本为0.3.1.3。

9.11和9.9谁更大,也回答得比较合理:

其它功能后续再继续摸索。

本文非原创,参考了如下博客(表示感谢):

基于AutoDL部署langchain-chatchat-0.3.0-CSDN博客

langchain-chatchat-0.3.0小白保姆部署指南-CSDN博客

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

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

相关文章

垃圾回收相关概念

12.1. System.gc()的理解 在默认情况下,通过system.gc()或者Runtime.getRuntime().gc() 的调用,会显式触发Full GC,同时对老年代和新生代进行回收,尝试释放被丢弃对象占用的内存。 然而System.gc() 调用附带一个免责声明&#x…

网络原理2-网络层与数据链路层

目录 网络层数据链路层 网络层 网络层做的工作: 1、地址管理–>IP地址 2、路由选择–>数据包传输的路径规划 网络层主要的协议就是IP协议 IP协议的报头结构: 4位版本: 有两个取值,4表示IPv4,6表示IPv6&am…

C++ IO流

文章目录 C语言中的流式输入输出c中的输入输出继承关系c中的循环输入再次回顾类型转换 C语言中的流式输入输出 C语言的输入输出: scanf printf 输入输出是针对设备—内存之间的关系 比如:网卡,里面有一套类似文件系统的东西来记录, 这时就需要进行写入读取操作 在Linux中, 一…

Blender/3ds Max/C4D哪个软件好?

在3D建模和动画制作领域,Blender、3ds Max和Cinema 4D(C4D)都是备受赞誉的软件。每个软件都有其独特的优势和特点,选择哪个软件取决于用户的具体需求和个人偏好。今天,成都渲染101云渲染就来分析一些这三款软件的情况&…

C++前后缀分解

相关知识点 C算法与数据结构 打开打包代码的方法兼述单元测试 这个算法很容易想到,学习了本文后,可以更快得想到。 前后缀分解 分治法的一种,将数组和字符串,拆分成前缀和后缀。字符串(数组)的前缀是字符串的前i个元…

【Vue】- Vue应用

文章目录 知识回顾前言Vue应用源码分析1. 组件化开发2. 组件注册与使用3. 组件样式冲突scoped4. 组件通信拓展知识设置默认值总结知识回顾 前言 Vue应用 源码分析 1. 组件化开发 组件化概念 组件化:一个页面可以拆分成一个个组件,每个组件有着自己独立的结构、样式、行为…

linux---压缩打包

linux打包和压缩文件和目录: 归档(打包)命令:tar 归档就是将多个文件或者目录打包成为一个文件,存放再磁盘中,方便文件或者目录丢失时,可以恢复。 归档文件名使用相对路径 (注意区分归档文件和被归档文…

C# 禁止程序重复启动

修改:Program.cs [STAThread] static void Main() {Mutex mutex new Mutex(true, "NewGuid123456", out bool isCreatedNew);if (!isCreatedNew){MessageBox.Show(Application.ProductName "is running...");return;}Application.EnableVisu…

web安卓逆向之必学CSS基础知识

文章目录 CSS基础知识一、CSS的介绍1. CSS 的定义2. CSS 的作用3. CSS 的基本语法4. 小结 二、css 的引入方式1. 行内式语法格式:特点:适用场景: 2. 内嵌式(内部样式)语法格式:特点:适用场景&am…

Acrobat 9 安装教程

软件介绍 Adobe Acrobat 是由Adobe公司开发的一款PDF(Portable Document Format,便携式文档格式)编辑软件。借助它,可以以PDF格式制作和保存文档,以便于浏览和打印,同时还可以使用一些高级工具来创建、编辑…

[SWPU2019]Web11

考点: sql注入 buuctf上开启容器可以看到是个登录页面,注入的地方不在这里,我们首先需要进行注册一个账号,然后登录上去,可以看到有个申请发布广告。 既然登录页面没有东西,那么申请发布广告肯定会有东西…

Docker上安装mysql

获取 MySQL 镜像 获取镜像。使用以下命令来拉取镜像: 1docker pull mysql:latest 这里拉取的是最新版本的 MySQL 镜像。你也可以指定特定版本,例如: 1docker pull mysql:8.0 运行 MySQL 容器 运行 MySQL 容器时,你需要指定一些…

ARM驱动学习之8 动态申请字符类设备号

ARM驱动学习之8 动态申请字符类设备号 KernelCode: • 字符设备函数在文件“include/linux/fs.h”中 • alloc_chrdev_region() 是动态分配主次设备号。 • 宏定义MAJOR提取dev_t数据中的主设备号源码: /*** alloc_chrdev_region() - register a range of char dev…

通过Java设计模式提高业务流程灵活性的策略

引言 在软件开发中,随着业务需求的不断变化,系统的灵活性成为了一个重要的考量因素。Java设计模式作为一种经过验证的解决方案,可以有效地提高系统的可维护性、扩展性和灵活性。本文将探讨几种关键的设计模式,以及它们如何帮助我…

基于协同过滤+python+django+vue+的音乐推荐系统

作者:计算机学姐 开发技术:SpringBoot、SSM、Vue、MySQL、JSP、ElementUI、Python、小程序等,“文末源码”。 专栏推荐:前后端分离项目源码、SpringBoot项目源码、SSM项目源码 系统展示 【2025最新】基于协同过滤pythondjangovue…

计算机网络(一) —— 网络基础入门

目录 一,关于网络 二,协议 2.1 协议是什么,有什么用? 2.2 协议标准谁定的? 2.3 协议分层 2.4 OSI 七层模型 2.5 TCP/IP 四层模型 三,网络传输基本流程 3.1 局域网中两台主机通信* 3.2 报文的封装与…

【VSCode】VSCode Background 背景插件辅助窗口程序

前排贴上Github项目链接 GitHub窗口项目链接 这是一个基于VSCode上由shalldie上传的background扩展制作的windows窗口程序。 该程序旨在通过窗口程序尽可能的完善该扩展原有的功能。 background - shalldie 的最大优势是我目前仅在其扩展上发现了UseFront的选项,这…

共享单车轨迹数据分析:以厦门市共享单车数据为例(四)

副标题:共享单车与地铁接驳距离探究——以厦门市为例 关于轨道交通站点接驳范围的研究早已屡见不鲜,通常认为以站点为圆心、800米作为地铁站直接的服务范围是合理的。近年来,随着轨道、公交和慢行交通三网融合概念的提出,慢行交通…

docker--刚开始学不知道如何操作拉取,或拉取失败(cmd)

报 unauthorized: incorrect username or password.(未授权) 进行授权 在docker desktop注册账号登录好docker desktop 在cmd中进行docker登录,输入账号密码,提示Login Succeeded,即登录成功 docker login -u xxx(x…

Java API 之集合框架进阶

前言: 本文主要讲解集合框架中的List、Set、Map接口中的进阶知识,主要是分析其底层原理和优缺点。 1. List 接口 1.1 ArrayList import java.util.ArrayList; import java.util.List;public class ArrayListExample {public static void main(String[] …