在windows的wsl2环境部署本地Langchain-Chatchat
前提条件(环境准备)
win操作系统
最好是win11,因为win11对wsl2的支持比较好,会自动避免很多坑。
CPU开启虚拟化
需要在BIOS里开启,因为windows操作系统的wsl2,就是通过虚拟机模拟的一个 Linux环境。
如何开启,请百度搜:cpu虚拟化怎么开启
Windows Subsystem for Linux(简称WSL)是一个在Windows 10\11上能够运行原生Linux二进制可执行文件(ELF格式)的兼容层。它是由微软与Canonical公司合作开发,其目标是使纯正的Ubuntu、Debian等映像能下载和解压到用户的本地计算机,并且映像内的工具和实用工具能在此子系统上原生运行。
安装虚拟化组件(wsl)
wsl是微软在windows操作系统里,通过虚拟化技术,又营造了一个Linux生态,在这个生态里,几乎可以安装和运行所有常用的Linux应用。
安装Ubuntu
Ubuntu是在Linux内核基础上发展出来的Linux操作系统,它的门槛更低,更有利于Linux进步到桌面图形化操作,以及各种基于网络的服务器功能。
注意:
这里的Ubuntu只是微软合作研究的Ubuntu-LTS 版,不是真正的Ubuntu,不过已经模拟的很成功了,绝大部分Ubuntu的功能和命令,在这个版本里都很好的运行,大大方便了我们在windows和 Linux两种环境里来回切换。
更新一下wsl2的升级包
将 WSL 2 设置为默认版本
wls2从C盘迁移到别的磁盘
更新Ubuntu软件包的国内源
安装git-lfs
显卡驱动略,只要安装了GeForce_Experience就行了。
以上步骤具体操作方法可以参考我另一篇笔记
Langchain-Chatchat部署
一、用Conda搭建一个专用的虚拟环境
经过失败后才发现这一步很关键。
刚开始,我看了Langchain-Chatchat官网的说明后,立马动手,也没认真学习Conda的概念、作用,直接上手部署模型,搞了好几遍,知识库初始化出错,项目启动也出错,就是搞不定。
自己反思前后的步骤:
有的是在没有安装conda前操作的;
有的是在建立Langchain-Chatchat专用虚拟环境后操作的;
有的是在电脑关机重启后(没有重新激活进入Langchain-Chatchat专用虚拟环境)操作的。
于是认真学习了一下conda的概念、作用,还做了笔记。
学习完了,重新部署,上文的准备工作完成后,第一步就建立专用的虚拟环境,以后始终在这个虚拟环境里操作,包括安装项目的依赖,拉取模型,修改配置,初始化知识库,启动项目,直至部署成功。
安装windows的Conda------Anaconda
安装这玩意主要是建立Python的虚拟环境,kao,又是虚拟环境,计算机技术中到处都是虚拟技术。
什么是Conda自己百度,或者看我的笔记。
类似上面说的Docker Desktop,我们要充分利用windows的生态,在Anaconda官网下载后双击安装就完了,就不用在命令行下载、安装、配置Conda。我们既可以在窗口里操作,也可以在命令行操作各种conda命令了。
在窗口操作的好处就是,动动鼠标就可以,建立、切换不同Python版本的环境,查看该环境已安装哪些软件,这些软件的版本号,同时还能看见–可以安装但未安装的软件包。
也可以进入当前虚拟环境的命令行,敲键盘执行命令。
建立Langchain-Chatchat专用虚拟环境
我是在Anaconda图形窗口新建了一个名为chain的虚拟环境,选择Python版本,点击建立,就OK了。
然后鼠标点击绿色的启动按钮,从默认的base(root)环境切换到chain专用环境,再点击打开命令行窗口。
命令行左边显示了当前所处的虚拟环境名称
把已安装的python库更新一下,相当于执行 pip3 install --upgrade pip 命令。
二、拉取项目仓库代码
这个简单,进入Ubuntu窗口,在根目录上建立一个新文件夹lang,然后进入这个文件夹,把Langchain-Chatchat项目代码放在这个文件夹里。
建议在github上拉取,国内其它几个仓库平台上的最后更新日期不如github新。
git clone --recursive https://github.com/chatchat-space/Langchain-Chatchat.git
三、安装项目的依赖
拉取结束后,进入项目所在的Langchain-Chatchat文件夹,安装项目依赖。
// 进入目录
$ cd Langchain-Chatchat
// 安装全部依赖
$ pip install -r requirements.txt
全部依赖也不是很大,只要更新了Ubuntu软件包的国内源,应该很快就能完成。
四、模型下载
模型下载很费时间,我是在modelscope魔搭下载的,速度可以达到50M。全部下载model_config.py.example默认的模型。
基座大模型:chatglm3-6b
Embedding模型: bge-large-zh-v1.5
在Langchain-Chatchat文件里再新建一个文件夹,名字自己定,我建了一个modesss文件夹,一会把两个模型都下载到这个文件夹里,方便后面配置文件修改。
$ cd Langchain-Chatchat
$ mkdir modesss
$ cd modesss
$ git lfs install
$ git clone https://www.modelscope.cn/ZhipuAI/chatglm3-6b.git
$ git clone https://www.modelscope.cn/AI-ModelScope/bge-large-zh-v1.5.git
五、修改配置文件
用自己的IDE软件,修改相关配置文件
1、批量将configs下的.example文件复制并命名为.py文件
因为项目启动程序执行的是configs文件夹下所有文件的.py文件,如果不把他们的后缀从.example改为.py就会出错。
copy_config_example.py就是一个简单的重命名程序,当然,你也可手工改。
用IDE软件执行项目根目录下的copy_config_example.py,
或者在命令行执行copy_config_example.py
$ cd Langchain-Chatchat
$ python copy_config_example.py
2、修改model_config.py里的模型路径
在windows资源管理器,找到我们存放两个模型的路径。
BAAI里存放的下载好的Embedding模型: bge-large-zh-v1.5
THUDM里存放的是下载好的基座大模型:chatglm3-6b
对路径点击右键,复制绝对地址。
用IDE软件修改configs文件夹下的model_config.py,第6行,把我们刚才复制的绝对路径,粘贴到这里。
再检查一下Embedding模型的名称,和我们BAAI文件夹的保持一模一样。
基座大模型,不用改。
Embedding模型的PATH路径,与我们modesss文件夹要一模一样。
基座模型的PATH路径,与我们modesss文件夹要一模一样。
保存上述的修改。
六、初始化知识库
我们是第一次运行,所以执行:
$ python init_database.py --recreate-vs
初始化过程,电脑风扇狂飙,CPU飙到100%,GPU飙到46%,内存飙到95%。当时吓了一跳,生怕电脑烧了,忘了截图。
历时大约5分钟。
七、启动项目–顺利成功
很顺利,大约8分钟,CPU、GPU都很正常。
python startup.py -a
http://0.0.0.0:8501是打不开的,用http://127.0.0.1:8501进入。