如何在MacBook上部署运行Langchain-Chatchat
1.背景提要
# Langchain-Chatchat 项目的官方简介如下:
LangChain-Chatchat (原 Langchain-ChatGLM) 是基于 ChatGLM 等大语言模型与 Langchain 等应用框架实现,开源、可离线部署的检索增强生成(RAG)大模型知识库项目。
该项目的优势在于
- 项目方便离线部署,可在用户私有环境下搭建实现大语言模型的应用
- 项目通过RAG提供了本地创建用户知识库的支持,使得在大语言模型基础上,可以接入用户数据,实现基于大语言模型的数据抽取和分析,并提供更加灵活友好的人性化交互方式。
- 项目开源,方便研究学习和部署使用
Langchain-Chatchat 默认是部署在提供CUDA支持的Nvidia GPU环境,对学习的硬件环境有一定要求。本人平时使用MacBook Pro M3,虽然没有CUDA支持,但机器性能不错,所以尝试在Mac环境下安装部署Langchain-Chatchat
2. 安装步骤
2.1 环境配置
本季的硬件环境:MacBook Pro, CPU M3 Max,内存36GB, 操作系统 macOS Sonaoma 14.2.1
首先,确保你的机器安装了 Python 3.8 - 3.11 (按官方文档说明,强烈推荐使用 Python3.11)。这里使用 conda 创建一个虚拟环境,并在虚拟环境内安装项目的依赖。下面是官方文档提供的安装步骤
$ conda create -n langchain-chatchat python=3.11.7
$ conda activate langchain-chatchat
# 拉取仓库
$ git clone https://github.com/chatchat-space/Langchain-Chatchat.git
# 进入目录
$ cd Langchain-Chatchat
# 安装全部依赖
$ pip install -r requirements.txt
$ pip install -r requirements_api.txt
$ pip install -r requirements_webui.txt
# 默认依赖包括基本运行环境(FAISS向量库)。如果要使用 milvus/pg_vector 等向量库,请将 requirements.txt 中相应依赖取消注释再安装。
执行过程中遇到的几个问题:
-
问题1: 依赖文件 requirements.txt,requirements_api.txt 中包含了如下两个非 MacOS 系统的软件包,导致执行 pip install 时报错。解决方法是先在requirements 文件中将其注释掉,后续遇到问题再解决(后续发现系统能正常启动运行)。
python-magic-bin; sys_platform == 'win32' vllm==0.2.7; sys_platform == "linux"
python-magic-bin 是 Python 中一个用于处理文件类型识别的库,提供了一种基于文件内容而不是文件扩展名的文件类型识别方法,使得程序能够更准确地处理各种类型的文件。
vLLM 是伯克利大学LMSYS组织开源的大语言模型高速推理框架,旨在极大地提升实时场景下的语言模型服务的吞吐与内存使用效率。 vLLM 是一个快速且易于使用的库,用于 LLM 推理和服务,可以和HuggingFace 无缝集成。
-
问题2: 执行 pip install -r requirements.txt 时报错,提示找不到 torch 模块 ModuleNotFoundError: No module named ‘torch’。解决方法,先在控制台下单独成功安装torch软件包(执行 pip install torch==2.1.2 ),再执行其它软件包批量安装。
2.2 模型下载
如需在本地或离线环境下运行本项目,需要首先将项目所需的模型下载至本地,通常开源 LLM 与 Embedding 模型可以从 HuggingFace 下载。
Langchain-chatchat 项目中默认使用的 LLM 模型 THUDM/ChatGLM3-6B 与 Embedding 模型 BAAI/bge-large-zh,下载模型需要先安装 Git LFS ,然后运行。如果下载速度太慢,可以切换到huggingface 在国内的镜像站点下载,具体方法参见镜像站点说明 https://hf-mirror.com/。本示例中将模型下载到了Mac系统下的 /Users/test/Storage/models/ 目录下
$ git lfs install
$ mkdir /Users/test/Storage/models/
$ cd /Users/test/Storage/models/
$ wget https://hf-mirror.com/hfd/hfd.sh
$ chmod a+x hfd.sh
$ export HF_ENDPOINT=https://hf-mirror.com
$ brew install aria2c
$ ./hfd.sh THUDM/chatglm3-6b --repo-type dataset --tool aria2c -x 4
$ ./hfd.sh BAAI/bge-large-zh --repo-type dataset --tool aria2c -x 4
ChatGLM3 是智谱AI和清华大学 KEG 实验室联合发布的对话预训练模型。ChatGLM3-6B 是 ChatGLM3 系列中的开源模型,在保留了前两代模型对话流畅、部署门槛低等众多优秀特性的基础上,ChatGLM3-6B 引入了如下特性:更强大的基础模型,更完整的功能支持,更全面的开源序列
BGE-Large-zh 是一种基于百度大脑的中文通用语义表示模型,能够将文本转换为高维向量,用于各种自然语言处理任务。
aria2c 是个多线程下载的工具库,下载模型时速度更快
2.3 初始化知识库和配置文件
进入Langchain-Chatchat 目录,按照下列方式初始化自己的知识库和复制配置文件
# 将项目 configs/ 目录下的 example 配置文件复制生成一份新的配置文件
# 后续根据自己的环境对配置文件进行修改
$ python copy_config_example.py
# 创建矢量数据库。矢量数据库用于后续自建知识库时存储分词、索引后的数据
$ python init_database.py --recreate-vs
然后修改配置文件,将默认基于Nvidia CUDA 的 GPU 计算设置,修改成 MacBook 支持的 GPU 计算 MPS (Metal Performance Shaders)。
苹果有自己的一套GPU实现 API Metal,使用苹果的Metal Performance Shaders(MPS)作为PyTorch的后端,可以实现加速GPU训练。MPS后端扩展了PyTorch框架,提供了在Mac上设置和运行操作的脚本和功能。
具体操作时,编辑 configs 下的几个配置文件,将里面默认为 cuda 的地方修改为 mps
编辑 configs/model_config.py 文件,修改如下几个参数
# 模型存放目录,修改成模型下载的路径
# 如果没有提前下载模型,这里可以不填,启动时会自动下载模型到默认目录。
MODEL_ROOT_PATH = "/Users/test/Storage/models"
# Embedding 模型运行设备。设为 "auto" 会自动检测(会有警告),也可手动设定为 "cuda","mps","cpu","xpu" 其中之一。
EMBEDDING_DEVICE = "mps"
# LLM 模型运行设备。设为"auto"会自动检测(会有警告),也可手动设定为 "cuda","mps","cpu","xpu" 其中之一。
LLM_DEVICE = "mps"
例如编辑 configs/server_config.py 文件,修改如下几个配置
"chatglm3-6b": {
"device": "mps",
},
"Qwen1.5-0.5B-Chat": {
"device": "mps",
},
2.4 启动服务
按照以下命令启动项目
# python startup.py -h 查看帮助,
# -a 是api服务和webui服务都启动
$ python startup.py -a
然后在浏览器中访问地址 http://localhost:8501 进入用户 WebUI 界面
然后在浏览器中访问地址 http://127.0.0.1:7861/docs 进入 API 接口界面
3. 总结
Langchain-Chatchat 是对中文支持非常好的大语言模型运行框架,同时支持本创建本地数据知识库,本文记录了如何在MacoBook Pro M3 环境下成功部署 Langchain-Chatchat 的运行环境。为非 CUDA 环境学习和研究大语言模型提供了支持。