Langchain-ChatGLM安装部署

释放双眼,带上耳机,听听看~!
本文介绍了Langchain-ChatGLM项目的安装部署步骤,包括环境检查、项目依赖、下载本地模型等内容,旨在帮助读者实现对中文场景的知识库问答解决方案的部署。

Langchian-ChatGLM安装部署

介绍

Langchain-ChatGLM项目是一种利用 langchain 思想实现的基于本地知识库的问答应用,目标期望建立一套对中文场景与开源模型支持友好、可离线运行的知识库问答解决方案.

本项目实现原理如下图所示,过程包括加载文件 -> 读取文本 -> 文本分割 -> 文本向量化 -> 问句向量化 -> 在文本向量中匹配出与问句向量最相似的top k个 -> 匹配出的文本作为上下文和问题一起添加到prompt中 -> 提交给LLM生成回答。

Langchain-ChatGLM安装部署

从文档处理角度来看,实现流程如下:

Langchain-ChatGLM安装部署

部署要求

  • ChatGLM-6B模型
量化等级 最低 GPU 显存(推理) 最低 GPU 显存(高效参数微调)
FP16(无量化) 13 GB 14 GB
INT8 8 GB 9 GB
INT4 6 GB 7 GB

部署步骤

环境检查

# 首先,确信你的机器安装了 Python 3.8 及以上版本
$ python --version
Python 3.8.13

# 如果低于这个版本,可使用conda安装环境
$ conda create -p /your_path/env_name python=3.8

# 激活环境
$ source activate /your_path/env_name
$ pip3 install --upgrade pip

# 关闭环境
$ source deactivate /your_path/env_name

# 删除环境
$ conda env remove -p  /your_path/env_name

项目依赖

# 拉取仓库
$ git clone https://github.com/imClumsyPanda/langchain-ChatGLM.git

# 进入目录
$ cd langchain-ChatGLM

# 项目中 pdf 加载由先前的 detectron2 替换为使用 paddleocr,如果之前有安装过 detectron2 需要先完成卸载避免引发 tools 冲突
$ pip uninstall detectron2

# 检查paddleocr依赖,linux环境下paddleocr依赖libX11,libXext
$ yum install libX11
$ yum install libXext

# 安装依赖,这里要注意python版本,如果某些依赖下不下来,可以换个镜像源下载
$ pip install -r requirements.txt

# 验证paddleocr是否成功,首次运行会下载约18M模型到~/.paddleocr
# 这一步最新版本会报错,但好像不影响使用
$ python loader/image_loader.py

下载本地模型

作者在QA中提供了模型的百度云盘地址,方便国内下载

这里下载到linux服务器推荐使用百度网盘linux客户端bypy,需先将模型文件保存到百度网盘的/我的应用数据/bypy目录下,具体的bypy登录流程见bypy文档

# 下载模型
$ mv bypy/* workspace/models/

配置本地模型路径

修改config/model_config.py文件

embedding_model_dict = {
    # 本地路径
    "ernie-tiny": "/root/workspace/models/ernie-3.0-nano-zh",
    # 本地路径
    "ernie-base": "/root/workspace/models/ernie-3.0-base-zh",
    "text2vec-base": "shibing624/text2vec-base-chinese",
    # 本地路径
    "text2vec": "/root/workspace/models/text2vec-large-chinese",
    "m3e-small": "moka-ai/m3e-small",
    "m3e-base": "moka-ai/m3e-base",
}

# supported LLM models
# llm_model_dict 处理了loader的一些预设行为,如加载位置,模型名称,模型处理器实例
# 在以下字典中修改属性值,以指定本地 LLM 模型存储位置
# 如将 "chatglm-6b" 的 "local_model_path" 由 None 修改为 "User/Downloads/chatglm-6b"
# 此处请写绝对路径
llm_model_dict = {
    "chatglm-6b-int4-qe": {
        "name": "chatglm-6b-int4-qe",
        "pretrained_model_name": "THUDM/chatglm-6b-int4-qe",
        "local_model_path": "/root/workspace/models/chatglm-6b-int4-qe",
        "provides": "ChatGLM"
    },
    "chatglm-6b-int4": {
        "name": "chatglm-6b-int4",
        "pretrained_model_name": "THUDM/chatglm-6b-int4",
        "local_model_path": "/root/workspace/models/chatglm-6b-int4",
        "provides": "ChatGLM"
    },
    "chatglm-6b-int8": {
        "name": "chatglm-6b-int8",
        "pretrained_model_name": "THUDM/chatglm-6b-int8",
        "local_model_path": None,
        "provides": "ChatGLM"
    },
    "chatglm-6b": {
        "name": "chatglm-6b",
        "pretrained_model_name": "THUDM/chatglm-6b",
        "local_model_path": "/root/workspace/models/chatglm-6b",
        "provides": "ChatGLM"
    },

    "chatyuan": {
        "name": "chatyuan",
        "pretrained_model_name": "ClueAI/ChatYuan-large-v2",
        "local_model_path": None,
        "provides": None
    },
    "moss": {
        "name": "moss",
        "pretrained_model_name": "fnlp/moss-moon-003-sft",
        "local_model_path": None,
        "provides": "MOSSLLM"
    },
    "vicuna-13b-hf": {
        "name": "vicuna-13b-hf",
        "pretrained_model_name": "vicuna-13b-hf",
        "local_model_path": "/media/checkpoint/vicuna-13b-hf",
        "provides": "LLamaLLM"
    },

    # 通过 fastchat 调用的模型请参考如下格式
    "fastchat-chatglm-6b": {
        "name": "chatglm-6b",  # "name"修改为fastchat服务中的"model_name"
        "pretrained_model_name": "chatglm-6b",
        "local_model_path": None,
        "provides": "FastChatOpenAILLM",  # 使用fastchat api时,需保证"provides"为"FastChatOpenAILLM"
        "api_base_url": "http://localhost:8000/v1"  # "name"修改为fastchat服务中的"api_base_url"
    },

    # 通过 fastchat 调用的模型请参考如下格式
    "fastchat-vicuna-13b-hf": {
        "name": "vicuna-13b-hf",  # "name"修改为fastchat服务中的"model_name"
        "pretrained_model_name": "vicuna-13b-hf",
        "local_model_path": None,
        "provides": "FastChatOpenAILLM",  # 使用fastchat api时,需保证"provides"为"FastChatOpenAILLM"
        "api_base_url": "http://localhost:8000/v1"  # "name"修改为fastchat服务中的"api_base_url"
    },
}

启动项目

gradio webui启动

$ python webui.py

使用本地的向量模型会导致警告,这个不需要处理

WARNING 2023-06-12 23:29:00,381-1d: No sentence-transformers model found with name /root/workspace/models/text2vec-large-chinese. Creating a new one with MEAN pooling.

启动后访问7860端口即可,如果需要调整端口,需要调整webui.py文件中的端口

(demo
 .queue(concurrency_count=3)
 .launch(server_name='0.0.0.0',
         # 更换端口
         server_port=7862,
         show_api=False,
         share=False,
         inbrowser=False))

api启动

$ python api.py

前端项目启动

需安装nodejs版本>=18.15.0

$ cd views/
$ pnpm install 
$ npm run dev
本网站的内容主要来自互联网上的各种资源,仅供参考和信息分享之用,不代表本网站拥有相关版权或知识产权。如您认为内容侵犯您的权益,请联系我们,我们将尽快采取行动,包括删除或更正。
AI教程

LoRA: Low-Rank Adaptation of Large Language Models

2023-12-12 10:29:14

AI教程

Runway Gen-1视频编辑软件助力奥斯卡最大赢家《瞬息全宇宙》制作

2023-12-12 10:34:14

个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索