基于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个元…

linux---压缩打包

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

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 容器时,你需要指定一些…

基于协同过滤+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…

【Elasticsearch系列五】Java API

💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…

opencv之图像梯度

图像梯度 图像梯度计算的是图像变化的速度。对于图像的边缘部分,其灰度值变化较大,梯度值也较大;相反,对于图像中比较平滑的部分,其灰度值变化较小,相应的梯度值也较小。一般情况下,图像梯度计…

C++11的部分新特性

目录 1.列表初始化 1.1 { } 初始化 1.2 std::initializer_list 2.声明 2.1 auto 2.2 decltype 2.3 nullptr 3. 范围for 4.STL中的一些变化 5.右值引用与移动语义 5.1 左值引用与右值引用 5.2 左值引用与右值引用的比较 5.3 右值引用使用场景 5.4 完美转发 6.新的…

JavaScript事件处理和常用对象

文章目录 前言一、事件处理程序 1.JavaScript 常用事件2.事件处理程序的调用二、常用对象 1.Window 对象2.String 对象3.Date 对象总结 前言 JavaScript 语言是事件驱动型的。这意味着,该门语言可以通过事件触发来调用某一函数或者一段代码。该文还简单介绍了Window…

Android 11 FileProvider的使用和限制

概述: 从Android 7开始,将不允许在app之间,使用file uri,即file://的方式,传递一个file,否则会抛出异常:FileUriExposedException ,其解决方案,就是使用FileProvider,用c…

有关 Element-ui 的一些思考

本篇文章是基于 element-ui 的 主题样式修改 曾经为了修改组件风格,一个项目用了上百个样式穿透,后来才发现定制一个主题就够了! 第一步,在官网的主题页面,修改背景色、字体颜色及边框颜色 第二步,下载主题 第三步,用下载的css文件替换掉默认的css文件