Langchain-Chatchat本地部署记录,三分钟学会!

1.前言:

最近AI爆发式的火,忆往昔尤记得16,17那会移动互联网是特别火热的,也造富了一批公司和个人,出来了很多精妙的app应用。现在轮到AI发力了,想想自己也应该参与到这场时代的浪潮之中,所以就找了开源的项目来玩一玩,学习下里面的知识。不管最后结果有没有造富自己,学到的知识总是有用的,至少不会让自己在AI时代掉队。今天要讲的是LangChain-chatchat, 用官网自己的话来说就是: 基于 Langchain 与 ChatGLM 等大语言模型的本地知识库问答应用实现。 一种利用 [langchain] 思想实现的基于本地知识库的问答应用,目标期望建立一套对中文场景与开源模型支持友好、可离线运行的知识库问答解决方案。

界面如下:

image-20240310194452916

2.安装步骤:

官网有三种安装方式:

1.autoDL

2.docker

3.本地部署

第一种其实比较方便和实惠,机器配置不够也可以跑模型,每个小时几块钱,而且都是autoDL有对应的镜像可以直接运行,非常的便捷。

第二种大概有40G的包,部署也算比较方便。

今天我们讲的是第三种本地部署,虽然比较麻烦,但是在自己机器上部署方便调试,也更容易去了解整个项目是怎么运行的,对于学习来说是比较好的。

2.1 前置条件

硬件:

  • 官网推荐:

    • 本框架使用 fschat驱动,统一使用 huggingface进行推理,其他推理方式(如 llama-cppTensorRT加速引擎 建议通过推理引擎以 API 形式接入我们的框架)。

      同时, 我们没有对 Int4 模型进行适配,不保证Int4模型能够正常运行。因此,量化版本暂时需要由开发者自行适配, 我们可能在未来放。

      如果想要顺利在GPU运行本地模型的 FP16 版本,你至少需要以下的硬件配置,来保证在我们框架下能够实现 稳定连续对话

      • ChatGLM3-6B & LLaMA-7B-Chat 等 7B模型
        • 最低显存要求: 14GB
        • 推荐显卡: RTX 4080
      • Qwen-14B-Chat 等 14B模型
        • 最低显存要求: 30GB
        • 推荐显卡: V100
      • Yi-34B-Chat 等 34B模型
        • 最低显存要求: 69GB
        • 推荐显卡: A100
      • Qwen-72B-Chat 等 72B模型
        • 最低显存要求: 145GB
        • 推荐显卡:多卡 A100 以上

      一种简单的估算方式为:

      FP16: 显存占用(GB) = 模型量级 x 2
      Int4: 显存占用(GB) = 模型量级 x 0.75
      
      

      以上数据仅为估算,实际情况以 nvidia-smi 占用为准。 请注意,如果使用最低配置,仅能保证代码能够运行,但运行速度较慢,体验不佳。

      同时,Embedding 模型将会占用 1-2G 的显存,历史记录最多会占用 数GB 的显存,因此,需要多冗余一些显存。

      内存最低要求: 内存要求至少应该比模型运行的显存大。

      例如,运行ChatGLM3-6B FP16 模型,显存占用13G,推荐使用16G以上内存。

      部分测试用机配置参考,在以下机器下开发组成员已经进行原生模拟测试(创建新环境并根据要求下载后运行),确保能流畅运行全部功能的代码框架。

      • 服务器
      处理器: Intel® Xeon® Platinum 8558P Processor (260M Cache, 2.7 GHz)
      内存: 4 TB
      显卡组:  NVIDIA H800 SXM5 80GB x 8
      硬盘: 6 PB 
      操作系统: Ubuntu 22.04 LTS,Linux kernel 5.15.0-60-generic
      显卡驱动版本: 535.129.03
      Cuda版本: 12.1 
      Python版本: 3.11.7
      网络IP地址:美国,洛杉矶
      
      
      • 个人PC
      处理器: Intel® Core™ i9 processor 14900K 
      内存: 256 GB DDR5
      显卡组:  NVIDIA RTX4090 X 1 / NVIDIA RTXA6000 X 1
      硬盘: 1 TB
      操作系统: Ubuntu 22.04 LTS / Arch Linux, Linux Kernel 6.6.7
      显卡驱动版本: 545.29.06
      Cuda版本: 12.3 Update 1
      Python版本: 3.11.7
      网络IP地址:中国,上海 
      
      
  • 我的电脑:

    处理器: 13th Gen Intel(R) Core(TM) i5-13490F
    内存: 32GB DDR5
    显卡组:  NVIDIA RTX4060
    硬盘: 2TB
    操作系统: windows wsl2安装的Ubuntu 22.04.3 LTS
    显卡驱动版本: 545.29.06
    Cuda版本: 12.2
    Python版本: 3.10.12
    
    

软件:

  • 官网推荐:

    要顺利运行本代码,请按照以下系统要求进行配置

    已经测试过的系统

    • Linux Ubuntu 22.04.5 kernel version 6.7

    其他系统可能出现系统兼容性问题。

    最低要求

    该要求仅针对标准模式,轻量模式使用在线模型,不需要安装torch等库,也不需要显卡即可运行。

    • Python 版本: >= 3.8(很不稳定), < 3.12
    • CUDA 版本: >= 12.1

    推荐要求

    开发者在以下环境下进行代码调试,在该环境下能够避免最多环境问题。

    • Python 版本 == 3.11.7

    • CUDA 版本: == 12.1

  • 笔者电脑:

    • 系统:windows wsl2安装的Ubuntu 22.04.3 LTS
    • python版本: 3.10.12
    • CUDA版本:12.2

之所以提一下电脑硬件软件的配置,因为可能存在刚好有读者跟我的差不太多的硬件配置,或者比我好的硬件配置就是可以跑起来的。而且软件这个我可以跑起来的话,也验证了在我这个系统,python版本,CUDA版本的组合是可以运行起来的,也可以给别人一个参考。要注意一点的就是,如果你跟我一样的是使用windows的系统,然后wsl走的linux系统,提一嘴就是windows上安装的cuda版本可能会跟linux系统的cuda版本不一样的情况,最后是卸载掉弄成一样的,小于11.7的话跑通义千问的模型会有问题,虽然我跑通义千问的模型还没有成功,但是在解决一个安装qwen模型的时候遇到一个问题就是安装某个依赖库的时候要求cuda版本大于11.7。

2.2 部署步骤

  • 拉取代码

    # 拉取仓库
    $ git clone --recursive https://github.com/chatchat-space/Langchain-Chatchat.git
    # 进入目录
    $ cd Langchain-Chatchat
    # 安装全部依赖
    $ pip install -r requirements.txt
    
    
  • 下载模型

    # 安装模型,这一步如果没有进行,启动项目的时候回自动从https://huggingface.co/上面下载,不过问题就是
    # 国内从https://huggingface.co/上下载模型是很慢的。所以建议先从modelscope(魔塔上下载模型),然后在
    # 项目的configs/model_config.py填写好MODEL_ROOT_PATH地址,这样不用从外部下载模型直接跑对于第一次运
    # 行会快很多。 
    # 下载模型,下载模型需要先安装Git LFS,然后运行。官网使用的是https://huggingface.co的包,我这里修
    # 改成魔塔的仓库地址了。不过要提一点的是虽然官网要你下载了这两个模型,如果没有修改配置文件里面的话,跑
    # 起来用的并不这两个模型。chatglm2-6b这个是llm(大语言模型),m3e-base这个是embeding模型。需要在
    $ git lfs install
    $ git clone https://www.modelscope.cn/ZhipuAI/chatglm2-6b.git
    $ git clone https://www.modelscope.cn/Jerry0/m3e-base.git
    
    
    • 配置模型

    将项目中configs/model_config.py里面的LLM_MODELS里面增加上chatglm2-6b,EMBEDDING_MODEL配置上m3e-base。配置完之后,才会在启动的时候使用下载的这两个模型,要不然会使用默认的模型。chatglm3-6b和bge-large-zh-v1.5。

    image-20240310193905361

    tips:因为上面说的这两个模型是已经有开发者验证过的所以在下面的模型列表里面是有的,下载完模型,修改下配置文件就可以用。但是如果模型列表里面没有的模型加载进来,不一定可以跑。这个要注意下!

image-20240310193814840

  • 启动项目

    如果什么问题到没有出现的话,就会是这样一个界面,上面会显示加载的LLM模型,使用的Embedings模型,项目api文档地址和webui的地址。

    image-20240310194211001

可以看到我们可以访问本地的8501端口就可以进入到web界面。

image-20240310194452916

  • 实践效果

使用本地机器跑模型的效果,虽然这个图里面是回答得感觉还行吧,但是实际我问一个问题,回答需要可能10分钟才能返回完结果。可能是因为这个确实挺需要硬件资源的,我本地就一块显存8G的显卡,能跑起来,我已经是谢天谢地了。而且我还找了些资料去优化,将FP16的模型弄成int8的模型去跑,但是不知道是我方式不对还是,硬件资源不够,跑出来的效果也还是很慢。所以如果想要商业化之类的,硬件资源还是得给够,或者走大模型的api调用。我这个只能说是个人学习使用下,连流畅的效果都达不到,哈哈哈。

image-20240310181143407

3.遇到的问题

3.1 python安装库特别慢,查了一下,如果运行 pip config list 返回空值,表示没有明确在配置文件中设置源地址。在这种情况下,pip将使用其内置的默认源,即 [pypi.org/simple。ping…]

设置步骤如下:

# 在命令行输入
pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple

3.2 下载模型的时候git clone连不上服务器

方法一:

发现访问这个模型需求一些科学的手段,直接浏览器可以访问到[huggingface.co/THUDM/chatg…]

设置如下:

# 在命令行输入
 git clone -c http.proxy="http://127.0.0.1:1001" https://huggingface.co/THUDM/chatglm2-6b
 
 git clone -c http.proxy="http://127.0.0.1:1001" https://huggingface.co/BAAI/bge-large-zh

这个代理的端口就用自己平时完成科学访问的端口。

方法二(推荐):

另外一种方式就是访问国内的魔塔网站下载(modelscope),进入到模型库的栏目,

搜索对应模型,然后点击下载。以chatglm2-6b为例。

git clone https://www.modelscope.cn/ZhipuAI/chatglm2-6b.git


因为是国内直接下载,方法二比方法一还是快很多,推荐使用这个方式。

3.3 报错ModuleNotFoundError: No module named ‘pwd’

这个报错来自于我一开始是在windows系统上部署的,发现官方推荐的系统是ubuntu,我本地是用的windows系统,执行启动脚本的时候需要使用到linux的pwd的命令。windows里面是没有这个命令的所以报错了,本来想改写下这个脚本使用windows对应pwd的命令去处理。但是一想,万一后面还有其他地方也用了只有linux存在的命令,那改起来的地方就多了,还是老老实实的用linux系统吧。所以后来重新弄了下windows11的WSL,用WSL可以在windows系统下安装linux的子系统,然后让Chatchat在linux子系统里面跑应该就没问题了。

# 在windows11命令行执行,如果没有安装过这个,可以自己看下最下面的参考资料有提到怎么在windows11上开启wsl,主要是有一些虚拟机开关要打开。
wsl --install


这里简单提一下默认的ubuntu的目录和windows的系统磁盘的对应关系,在unbuntu里面进入到/mnt目录,然后比如你要进入win的d盘,就输入cd /mnt/d就行了。其他盘符也是一样的道理。

3.4 安装qwen的模型报错

image-20240309145022872

这个问题来自于准备使用通义千问的模型,然后需要启动chatchat提示需要安装一个fast-attention的包,上面这个图就是安装fast-attention报的错。因为我本地的cuda是没有加入到环境变量里面的,所以报错了。后来我下载了一个cuda11.5,结果继续报错,查资料说是要11.7以上。后来又卸载了,更新成cuda12.2才可以。

3.5 register_controller报错

image-20240310195600397

这个报错是提示register_to_controller报错,是问了交流群里面的人才解决的,是因为我本地起了全局代理,然后这个是注册应该走到代理的网络上去了。关闭了代理或者PAC模式之后,wsl要重新启动一个新的会话,然后再启动项目就可以运行了。

3.6 chatchat开启量化模型

这个问题是来源于我感觉本地的llm返回很慢,所以查了下资料怎么优化返回速度。发现可以修改项目中configs/server_config.py里面的load_8bit参数。

image-20240310200634568

开启之后,启动项目的加载模型的日志里面会多一行’load_8bit’: True的日志,表示开启8bit量化成功。这个原理大概是这样一个意思,本身模型的计算可能小数位很长,假设有16位,开启之后把16位转为8位或者精度更低的位数,这样计算的时候就会更加迅速,不过带来的问题就是可能结果没有之前准确。不过我试了下开启之后,我主观上没有觉得它返回变快了,不过群里的朋友说开启之后是挺快的,这个效果我是没有办法百分之百说有效,读者可以自行尝试一下。

项目结构

自己理解的项目结构,可能不完全准确

image-20240310201828692

官网放的Chatchat处理流程图,如果看过langchain的资料的话,会发现中间主要是langchain的处理过程,因为这个项目也是基于langchain去做的。

image-20240310202107156

文档处理流程

image-20240310202128044

总结

虽然使用Chatchat整个过程中的坑还是挺多的,但是至少跑起来了,而且在跑这个项目中遇到了很多自己没有接触过的知识。比如量化模型这个概念,是在优化返回速度的时候才知道可以把模型的精度改小,提高计算速度。现在本地还只运行成功了项目本身支持的几个模型,像界面中的知识库问答,文件对话,搜索引擎问答,自定义agent都还没跑成功,还有挺多东西要去研究和尝试的,还是挺有意思的。我想了想后面可能会针对其他的几个模式也写一些记录。

如何学习AI大模型?

我在一线互联网企业工作十余年里,指导过不少同行后辈。帮助很多人得到了学习和成长。

我意识到有很多经验和知识值得分享给大家,也可以通过我们的能力和经验解答大家在人工智能学习中的很多困惑,所以在工作繁忙的情况下还是坚持各种整理和分享。但苦于知识传播途径有限,很多互联网行业朋友无法获得正确的资料得到学习提升,故此将并将重要的AI大模型资料包括AI大模型入门学习思维导图、精品AI大模型学习书籍手册、视频教程、实战学习等录播视频免费分享出来。

在这里插入图片描述

第一阶段: 从大模型系统设计入手,讲解大模型的主要方法;

第二阶段: 在通过大模型提示词工程从Prompts角度入手更好发挥模型的作用;

第三阶段: 大模型平台应用开发借助阿里云PAI平台构建电商领域虚拟试衣系统;

第四阶段: 大模型知识库应用开发以LangChain框架为例,构建物流行业咨询智能问答系统;

第五阶段: 大模型微调开发借助以大健康、新零售、新媒体领域构建适合当前领域大模型;

第六阶段: 以SD多模态大模型为主,搭建了文生图小程序案例;

第七阶段: 以大模型平台应用与开发为主,通过星火大模型,文心大模型等成熟大模型构建大模型行业应用。

在这里插入图片描述

👉学会后的收获:👈
• 基于大模型全栈工程实现(前端、后端、产品经理、设计、数据分析等),通过这门课可获得不同能力;

• 能够利用大模型解决相关实际项目需求: 大数据时代,越来越多的企业和机构需要处理海量数据,利用大模型技术可以更好地处理这些数据,提高数据分析和决策的准确性。因此,掌握大模型应用开发技能,可以让程序员更好地应对实际项目需求;

• 基于大模型和企业数据AI应用开发,实现大模型理论、掌握GPU算力、硬件、LangChain开发框架和项目实战技能, 学会Fine-tuning垂直训练大模型(数据准备、数据蒸馏、大模型部署)一站式掌握;

• 能够完成时下热门大模型垂直领域模型训练能力,提高程序员的编码能力: 大模型应用开发需要掌握机器学习算法、深度学习框架等技术,这些技术的掌握可以提高程序员的编码能力和分析能力,让程序员更加熟练地编写高质量的代码。

在这里插入图片描述

1.AI大模型学习路线图
2.100套AI大模型商业化落地方案
3.100集大模型视频教程
4.200本大模型PDF书籍
5.LLM面试题合集
6.AI产品经理资源合集

👉获取方式:
😝有需要的小伙伴,可以保存图片到wx扫描二v码免费领取【保证100%免费】🆓

在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【微服务网关——https与http2代理实现】

1.https与http2代理 1.1 重新认识https与http2 https是http安全版本http2是一种传输协议两者并没有本质联系 1.1.1 https与http的区别 HTTP&#xff08;超文本传输协议&#xff09;和 HTTPS&#xff08;安全超文本传输协议&#xff09;是用于在网络上交换数据的两种协议。H…

7月刷题指南|考研数学强化30天吃透《严选题》

马上就要进入7月份了&#xff0c;相信很多小伙伴的基础阶段已经接近尾声了。特别是数二的同学们&#xff0c;应该已经完成了基础部分。而数一和数三的同学由于多了一门概率论&#xff0c;可能需要更多的时间。不管是哪种情况&#xff0c;我个人认为&#xff0c;最晚也应该在暑假…

Qt 使用代码布局,而不使用UI布局

一、工程的建立&#xff1a; 1、打开Qt Creator&#xff0c;文件&#xff0c;新建文件或项目 2、选择Application&#xff0c;Qt Widgets Application 3、写入名称&#xff0c;选择qmake 4、选择基类Base class&#xff0c;去除Generate form 务必选择QWidget&#xff0c;若…

django开源电子文档管理系统_Django简介、ORM、核心模块

Django简介 Django是一种开源的大而且全的Web应用框架&#xff0c;是由python语言来编写的。他采用了MVC模式&#xff0c;Django最初是被开发来用于管理劳伦斯出版集团下的一些以新闻为主内容的网站。一款CMS(内容管理系统)软件。并于 2005 年 7 月在 BSD 许可证下发布。这套框…

传神论文中心|第15期人工智能领域论文推荐

在人工智能领域的快速发展中&#xff0c;我们不断看到令人振奋的技术进步和创新。近期&#xff0c;开放传神&#xff08;OpenCSG&#xff09;社区发现了一些值得关注的成就。传神社区本周也为对AI和大模型感兴趣的读者们提供了一些值得一读的研究工作的简要概述以及它们各自的论…

什么是脏读、幻读、不可重复读

数据库事务 数据库事务是指作为单个逻辑工作单元执行的一系列操作&#xff0c;这些操作要么全部成功执行&#xff0c;要么全部失败回滚&#xff0c;以保持数据库的一致性和完整性。在多线程或多用户同时操作时&#xff0c;难免会出现错乱与冲突&#xff0c;这就需要引入事务的…

【C# winForm】ProgressBar进度条

1.控件介绍 进度条通常用于显示代码的执行进程进度&#xff0c;在一些复杂功能交互体验时告知用户进程还在继续。 在属性栏中&#xff0c;有三个值常用&#xff1a; Value表示当前值&#xff0c;Minimum表示进度条范围下限&#xff0c;Maximum表示进度条范围上限。 2.简单实…

【产品经理】订单处理12-订单的取消与反取消

在电商ERP系统中&#xff0c;订单取消与反取消也是常见功能之一。 订单取消与反取消也是电商ERP系统的常见功能&#xff0c;本次主要讲解下订单取消与反取消的逻辑。 一、订单取消 在电商ERP系统中&#xff0c;订单取消一般由审单员操作&#xff0c;此类取消一般是由于上下游…

商家团购app微信小程序模板

手机微信商家团购小程序页面&#xff0c;商家订餐外卖小程序前端模板下载。包含&#xff1a;团购主页、购物车订餐页面、我的订单、个人主页等。 商家团购app微信小程序模板

sublime如何运行Html文件?

背景&#xff1a; 在sublime上面写了html代码以后&#xff0c;怎么运行html文件来进行debug呢&#xff1f;如果去点击保存的HTML文件&#xff0c;每次这样就会很麻烦&#xff0c;能不能直接在sublime里面点什么就可以直接打开浏览器运行呢&#xff1f;答案是OK的。 1-确认Vie…

Android面试题经典之Glide取消加载以及线程池优化

本文首发于公众号“AntDream”&#xff0c;欢迎微信搜索“AntDream”或扫描文章底部二维码关注&#xff0c;和我一起每天进步一点点 Glide通过生命周期取消加载 生命周期回调过程 onStop —>RequestManager.onStop –>RequestTracker.pauseRequest –> SingleRequest…

SpringSecurity6 | 基于数据库实现登录认证

SpringSecurity6 | 基于数据库认证 ✅作者简介:大家好,我是Leo,热爱Java后端开发者,一个想要与大家共同进步的男人😉😉 🍎个人主页:Leo的博客 💞当前专栏: 循序渐进学SpringSecurity6 ✨特色专栏: MySQL学习 🥭本文内容: SpringSecurity6 | 基于数据库实现登…

Cell | 泛癌蛋白基因组学分析,揭示癌症治疗靶点(章冰/高强)

– DOI: 10.1016/j.cell.2024.05.039 Pan-cancer proteogenomics expands the landscape of therapeutic targets 留意最新动态&#xff0c;请关注微信公众号&#xff1a;组学之心 最近课题组在写泛癌的综述&#xff0c;刚好这篇相关研究论文在6.24发表&#xff0c;新鲜出炉…

Toshiba东芝TB6612FNG电机驱动IC:释放性能与多功能性

在嵌入式系统和机器人技术领域&#xff0c;电机控制是一个关键方面&#xff0c;对项目的性能和可靠性有着显著影响。东芝的TB6612FNG电机驱动IC作为一个稳健且多功能的解决方案&#xff0c;在驱动双直流电机方面脱颖而出&#xff0c;提供了高性能、可靠性和易用性。本文将深入探…

Java [ 基础 ] 异常处理 ✨

✨探索Java基础 异常处理✨ 在Java编程中&#xff0c;异常处理是一个非常重要的概念&#xff0c;它有助于在程序运行时捕获和处理错误&#xff0c;从而使程序更加健壮和可靠。 本文将介绍Java中的异常基础知识、异常类型、异常处理机制以及最佳实践。 一、什么是异常&#…

SQL语句的案例分析

根据提供的图片内容&#xff0c;这段文字看起来像是一个SQL查询的一部分&#xff0c;特别是一个用于删除数据的语句。以下是对这段SQL的核心内容整理&#xff1a; ### 核心内容整理&#xff1a; 1. **删除操作**&#xff1a; - 使用DELETE语句来删除数据。 2. **子查询**…

惠海 H6900B 2.7V3.7V4.2V5V9V升12V24V48VLED升压恒流芯片IC

惠海H6900B LED升压恒流芯片IC是一款功能丰富的LED驱动解决方案&#xff0c;为高亮度LED灯串设计。以下是针对该产品的进一步分析和解释&#xff1a; 产品特点 高效率&#xff1a;高达95%以上的效率意味着在驱动LED时&#xff0c;只有很少的能量转化为热量&#xff0c;从而提…

轨迹规划 | 图解模型预测控制MPC算法(附ROS C++/Python/Matlab仿真)

目录 0 专栏介绍1 模型预测控制原理2 差速模型运动学3 基于差速模型的MPC控制4 仿真实现4.1 ROS C实现4.2 Python实现4.3 Matlab实现 0 专栏介绍 &#x1f525;附C/Python/Matlab全套代码&#x1f525;课程设计、毕业设计、创新竞赛必备&#xff01;详细介绍全局规划(图搜索、…

“论单元测试方法及应用”写作框架,软考高级论文,系统架构设计师论文

论文真题 1、概要叙述你参与管理和开发的软件项目,以吸你所担的主要工作。 2、结给你参与管理和开发的软件项目&#xff0c;简要叙述单元测试中静态测试和动态测试方法的基本内容。 3、结给你惨与管理和研发的软件项目,体阐述在玩测试过程中,如何确定白盒测试的覆盖标准,及如…

YOLO在目标检测与视频轨迹追踪中的应用

YOLO在目标检测与视频轨迹追踪中的应用 引言 在计算机视觉领域&#xff0c;目标检测与视频轨迹追踪是两个至关重要的研究方向。随着深度学习技术的飞速发展&#xff0c;尤其是卷积神经网络&#xff08;CNN&#xff09;的广泛应用&#xff0c;目标检测与视频轨迹追踪的性能得到…