[机器学习]-如何在MacBook上部署运行Langchain-Chatchat

如何在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 环境学习和研究大语言模型提供了支持。

  • 20
    点赞
  • 32
    收藏
    觉得还不错? 一键收藏
  • 13
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 13
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值