当前位置:   article > 正文

使用fastgpt高效搭建本地离线大语言模型(Chatglm2)问答平台_fastgpt本地部署

fastgpt本地部署

官网的接入本地模型的流程,写的太笼统且分散了,踩了无数坑,在阿里云上ubuntu20部署好了,以下是流程。

系统:ubuntu20(22也是一致的)

网络:需要魔法

cuda环境:cuda12.0

一、安装基本环境

1、安装git和git-lfs

apt install git
apt install git-lfs

2、安装docker以及docker-compose

apt update

#安装先决条件安装允许apt通过HTTPS使用仓库的软件包
apt install apt-transport-https ca-certificates curl software-properties-common

#安装Docker的密钥
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -

#添加Docker仓库
add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"

#更新数据库
apt update

#使用刚刚添加的库安装Docker
apt-cache policy docker-ce

#安装docker
apt install docker-ce

#启动docker
systemctl enable docker

systemctl start docker

#安装docker-compose
curl -L "https://github.com/docker/compose/releases/download/v2.6.1/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose

chmod +x /usr/local/bin/docker-compose

docker-compose version

3、在本地安装miniconda3或者python

 wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh
chmod +x Miniconda3-latest-Linux-x86_64.sh
./Miniconda3-latest-Linux-x86_64.sh
source ~/.bashrc
conda --version

4、拉取相关的代码和模型

git clone https://github.com/THUDM/chatglm2-6b
git clone https://huggingface.co/moka-ai/m3e-large
git clone https://github.com/labring/FastGPT
git clone https://github.com/songquanpeng/one-api

cd chatglm2-6b && git lfs install && git lfs pull
cd m3e-large && git lfs install && git lfs pull

5、安装python环境

pip install torch==2.0.1+cu117 torchvision==0.15.2+cu117 torchaudio==2.0.2 --index-url https://download.pytorch.org/whl/cu117 

cd chatglm2-6b
pip install -r requirements.txt

cd /Fastgpt/files/models/ChatGLM2 #注释掉requirements.txt里面的torch
pip install -r requirements.txt

二、启动本地模型

#可以修改openai_api.py里面的模型权重路径,不修改的话是自己下载官方的,需要科学的环境
cd FastGPT/files/models/ChatGLM2

python openai_api.py

可能会在知识库回答中出现问题,可以修改openai_api.py

#添加这个函数
def merge_content(messages):
    merged_messages = []
    system_content = ""
    for message in messages:
        if message.role == "system":
            system_content += message.content
        else:
            if system_content:
                merged_messages.append(ChatMessage(
                    role="system", content=system_content))
                system_content = ""
            merged_messages.append(message)
    if system_content:
        merged_messages.append(ChatMessage(
            role="system", content=system_content))
    return merged_messages
    
#原始代码,不用管,为了定位到需要修改的地方:
query = request.messages[-1].content
prev_messages = request.messages[:-1]

#添加prev_messages = merge_content(prev_messages)

调用接口

curl --location --request POST 'http://localhost:6006/v1/embeddings' \
--header 'Authorization: Bearer sk-aaabbbcccdddeeefffggghhhiiijjjkkk' \
--header 'Content-Type: application/json' \
--data-raw '{
  "model": "m3e",
  "input": ["hello world"]
}'


curl --location --request POST 'http://localhost:6006/v1/chat/completions' \
--header 'Authorization: Bearer sk-aaabbbcccdddeeefffggghhhiiijjjkkk' \
--header 'Content-Type: application/json' \
--data-raw '{
  "model": "chatglm2",
  "messages": [{"role": "user", "content": "Hello!"}]
}'

 

三、启动OneAPI

docker配置本地代理,需要先开启科学上网环境

配置 Docker 代理创建目录mkdir -p /etc/systemd/system/docker.service.d

vim  /etc/systemd/system/docker.service.d/http-proxy.conf

在http-proxy.conf文件中添加如下:

                [Service]

                Environment="HTTP_PROXY=http://192.168.253.2:7890"

                Environment="HTTPS_PROXY=http://192.168.253.2:7890"

#直接运行这行命令,docker会自动下载justsong/one-api镜像
docker run --name one-api -d --restart always -p 3000:3000 -e TZ=Asia/Shanghai -v /home/data:/data justsong/one-api
 

 通过http://localhost:3000/ root/123456 登录OneAPI,将模型接入到OneAPI 

四、启动Fastgpt

修改FastGPT\files\deploy\fastgpt\docker-compose.yml这个文件

FastGPT\files\deploy\fastgpt\docker-compose.yml
  fastgpt:
    container_name: fastgpt
    image: ghcr.io/labring/fastgpt:latest # git
    # image: registry.cn-hangzhou.aliyuncs.com/fastgpt/fastgpt:latest # 阿里云 建议使用
    ports:
      - 3003:3000#需要修改端口号,因为3000已经被OneAPI使用了
    environment:
      # root 密码,用户名为: root
      - DEFAULT_ROOT_PSW=1234
      # 中转地址,如果是用官方号,不需要管
      - OPENAI_BASE_URL=http://47.108.92.86:3000/v1 #OneAPi的地址
      - CHAT_API_KEY=sk-bo0u9bqdXMrNnYNR059d29849f9148268c172505C0Fb2e05

修改FastGPT\files\deploy\fastgpt\config.json文件,添加  

"ChatModels": [
    //已有模型
    {
      "model": "chatglm2-6b-int4",
      "name": "chatglm2",
      "contextMaxToken": 8000,
      "quoteMaxToken": 4000,
      "maxTemperature": 1.2,
      "price": 0,
      "defaultSystem": ""
    }
  ],

"VectorModels": [
    {
      "model": "m3e",
      "name": "M3E(测试使用)",
      "price": 0.0,
      "defaultToken": 500,
      "maxToken": 1800
    }
],

 启动容器

cd FastGPT\files\deploy\fastgpt
docker-compose up -d  #运行
docker-compose restart #重启
docker-compose down #关闭 

 可以看到有四个容器正在运行。进入fastgpt http://localhost:3003/ root/1234,选择知识库和对话引导

搭建完成  

 参考:高效搭建离线大语言模型问答平台:实用指南

            https://doc.fastgpt.run/docs/custom-models/chatglm2/

声明:本文内容由网友自发贡献,转载请注明出处:【wpsshop】
推荐阅读
相关标签
  

闽ICP备14008679号