当前位置:首页 » 《我的小黑屋》 » 正文

Windows+WSL+Ubuntu+Docker-Desktop+FastGPT+m3e+oneapi+ChatGLM3部署本地AI知识库

8 人参与  2024年04月20日 12:10  分类 : 《我的小黑屋》  评论

点击全文阅读


1. windows wsl Ubuntu(略)

2. 安装docker-destktop并设置wsl(略)

3. 在ubuntu中操作:

下载yml和json文件

cd ~/sudo mkdir fastgptcd fastgptcurl -O https://raw.githubusercontent.com/labring/FastGPT/main/files/deploy/fastgpt/docker-compose.ymlcurl -O https://raw.githubusercontent.com/labring/FastGPT/main/projects/app/data/config.json

修改yml文件,打开下载的docker-compose.yml文件,修改fastgpt端口为3200:3000(其中外部暴露端口3200可以任意)

拉去镜像,这个过程稍微比较长,如果timeout,重新拉去,或者更改docker镜像源,如何修改请自行百度

sudo docker-compose pull && sudo docker-compose up -d

手动初始化mongo(fastgpt 4.7版本不需要初始化,可以进入容器先查询)

查看mongo容器是否正常运行

sudo docker ps

进入容器

sudo docker exec -it mongo bash

链接数据库(这里需要填mongo用户名和密码)

mongo -u myusername -p mypassword --authenticationDatabase admin

直接查询初始化副本集的状态,如果提示rs0状态,则代表成功

rs.status()# 成功则退出exit()

浏览器访问 http://localhost:3020 则可以访问fastgpt的页面,默认账号是 root,密码是 1234

4. 下载启动chatglm3的api服务

下载文件和模型:

程序文件下载地址:链接 https://pan.baidu.com/s/1JjIUkQohjDMyurapD5gfqg?pwd=lky0

模型下载(模型文件将整个文件夹的内容都下载,耗时比较长):

官网地址:https://huggingface.co/THUDM/chatglm3-6b-32k/tree/main百度网盘地址:https://pan.baidu.com/s/12WsiftYvarm7A2VaL_NBHg?pwd=147l

修改chatglm3程序文件的bat

程序文件解压后,鼠标右键编辑02启动api.bat文件

复制下载好模型的绝对路径

将复制好的路径替换bat文件的模型路径(set MODEL_PATH),并保存退出

@echo offchcp 65001 >nullecho 启动中,请耐心等待set PYTHON=..\glut\python.exeset SC_PATH=..\glut\Scriptsset CU_PATH=..\glut\Lib\site-packages\torch\libset PATH=%SC_PATH%;%CU_PATH%;%PATH%set HF_ENDPOINT=https://hf-mirror.comset HF_HOME=..\huggingfaceset MODEL_PATH=..\..\chatglm3-6b-32k# 我上面使用的相对路径,也可以使用绝对路径# set MODEL_PATH=E:\LLM\chatglm3-6b-32kCD openai_api_demo%PYTHON% openai_api.pypause

双击启动02启动api.bat文件,启动完成之后就能看到使用的是http://0.0.0.0:8000,请勿关闭这个cmd窗口。

注意:请勿使用右键管理员运行,会报错:The system cannot find the path specified.

5. 使用docker部署m3e

实现本地私有部署,并调用本地LLM,则需要本地的想量化模型处理文本资料,选择M3E小模型,占用资源不高,CPU也可运行。

镜像名: stawky/m3e-large-api:latest国内镜像: registry.cn-hangzhou.aliyuncs.com/fastgpt_docker/m3e-large-api:latest 端口号: 6008 环境变量openai的渠道密码,默认:sk-aaabbbcccdddeeefffggghhhiiijjjkkk

确认端口是否被占用,m3e默认使用6008端口,使用下面命令查看是否被占用

netsh int ipv4 show excludedport tcp

部署m3e(本人使用gpu来运算)

使用cpu运行

sudo docker run -d -p 6008:6008 --name=m3e-large-api registry.cn-hangzhou.aliyuncs.com/fastgpt_docker/m3e-large-api:latest

使用gpu运行

sudo docker run -d -p 6008:6008 --gpus all --name=m3e-large-api registry.cn-hangzhou.aliyuncs.com/fastgpt_docker/m3e-large-api:latest

源镜像(推荐)

sudo docker run -d -p 6008:6008 --gpus all --name=m3e-large-api stawky/m3e-large-api:latest

其中 --gpus all 是使用gpu来运行,此过程比较慢,等待部署完成

6. 配置oneapi

运行并访问oneapi:访问 http://localhost:3000/ 并登录。初始账号用户名为 root,密码为 123456

点击令牌,添加新的令牌 如图所示:

在这里插入图片描述

复制ChatGPT Next Web

# 这是我的令牌https://app.nextchat.dev/#/?settings={"key":"sk-kuI2uEsxnJV8XgIN69493c7088D544Aa9b9d645d950e85F7","url":"http://localhost:3000"}# 其中key为:sk-kuI2uEsxnJV8XgIN69493c7088D544Aa9b9d645d950e85F7# url:http://localhost:3000

在这里插入图片描述

通常一般教程会让大家去配置渠道,但是我们是用的windows wsl ubuntu 和docker-desktop,后续配置m3e渠道测试的时候会访问不通,会出现connect: 192.168.0.137:6008 connection refused(如图),所以我们需要重新配置docker-compose.yml

在这里插入图片描述
在这里插入图片描述

7. 重新配置docker-compose.yml和config.json

docker-compose.yml,其中OPENAI_BASE_URL无修修改就是用默认的http://oneapi:3000/v1CHAT_API_KEY为上面复制ChatGPT Next Webkey,还需要在oneapi 中增加一个 extra_hosts, 详细配置如下:

docker-compose.yml

# 数据库的默认账号和密码仅首次运行时设置有效# 如果修改了账号密码,记得改数据库和项目连接参数,别只改一处~# 该配置文件只是给快速启动,测试使用。正式使用,记得务必修改账号密码,以及调整合适的知识库参数,共享内存等。version: '3.3'services:  pg:    image: ankane/pgvector:v0.5.0 # git    # image: registry.cn-hangzhou.aliyuncs.com/fastgpt/pgvector:v0.5.0 # 阿里云    container_name: pg    restart: always    ports: # 生产环境建议不要暴露      - 5432:5432    networks:      - fastgpt    environment:      # 这里的配置只有首次运行生效。修改后,重启镜像是不会生效的。需要把持久化数据删除再重启,才有效果      - POSTGRES_USER=username      - POSTGRES_PASSWORD=password      - POSTGRES_DB=postgres    volumes:      - ./pg/data:/var/lib/postgresql/data  mongo:    image: registry.cn-hangzhou.aliyuncs.com/fastgpt/mongo:5.0.18    container_name: mongo    restart: always    ports:      - 27017:27017    networks:      - fastgpt    command: mongod --keyFile /data/mongodb.key --replSet rs0    environment:      - MONGO_INITDB_ROOT_USERNAME=myusername      - MONGO_INITDB_ROOT_PASSWORD=mypassword    volumes:      - ./mongo/data:/data/db    entrypoint:      - bash      - -c      - |        openssl rand -base64 128 > /data/mongodb.key        chmod 400 /data/mongodb.key        chown 999:999 /data/mongodb.key        echo 'const isInited = rs.status().ok === 1        if(!isInited){          rs.initiate({              _id: "rs0",              members: [                  { _id: 0, host: "mongo:27017" }              ]          })        }' > /data/initReplicaSet.js        # 启动MongoDB服务        exec docker-entrypoint.sh "$$@" &        # 等待MongoDB服务启动        until mongo -u myusername -p mypassword --authenticationDatabase admin --eval "print('waited for connection')" > /dev/null 2>&1; do          echo "Waiting for MongoDB to start..."          sleep 2        done        # 执行初始化副本集的脚本        mongo -u myusername -p mypassword --authenticationDatabase admin /data/initReplicaSet.js        # 等待docker-entrypoint.sh脚本执行的MongoDB服务进程        wait $$!  fastgpt:    container_name: fastgpt    # image: registry.cn-hangzhou.aliyuncs.com/fastgpt/fastgpt:v4.7 # git    image: registry.cn-hangzhou.aliyuncs.com/fastgpt/fastgpt:v4.7 # 阿里云    ports:      - 3020:3000    networks:      - fastgpt    depends_on:      - mongo      - pg    restart: always    environment:      # root 密码,用户名为: root。如果需要修改 root 密码,直接修改这个环境变量,并重启即可。      - DEFAULT_ROOT_PSW=1234      # AI模型的API地址哦。务必加 /v1。这里默认填写了OneApi的访问地址。      - OPENAI_BASE_URL=http://oneapi:3000/v1      # AI模型的API Key。(这里默认填写了OneAPI的快速默认key,测试通后,务必及时修改)      - CHAT_API_KEY=sk-kuI2uEsxnJV8XgIN69493c7088D544Aa9b9d645d950e85F7      # 数据库最大连接数      - DB_MAX_LINK=30      # 登录凭证密钥      - TOKEN_KEY=any      # root的密钥,常用于升级时候的初始化请求      - ROOT_KEY=root_key      # 文件阅读加密      - FILE_TOKEN_KEY=filetoken      # MongoDB 连接参数. 用户名myusername,密码mypassword。      - MONGODB_URI=mongodb://myusername:mypassword@mongo:27017/fastgpt?authSource=admin      # pg 连接参数      - PG_URL=postgresql://username:password@pg:5432/postgres    volumes:      - ./config.json:/app/data/config.json      - ./fastgpt/tmp:/app/tmp  mysql:    image: mysql:8.0.36    container_name: mysql    restart: always    ports:      - 3306:3306    networks:      - fastgpt    command: --default-authentication-plugin=mysql_native_password    environment:      # 默认root密码,仅首次运行有效      MYSQL_ROOT_PASSWORD: oneapimmysql      MYSQL_DATABASE: oneapi    volumes:      - ./mysql:/var/lib/mysql  oneapi:    container_name: oneapi    image: ghcr.io/songquanpeng/one-api:latest    ports:      - 3001:3000    depends_on:      - mysql    networks:      - fastgpt    # oneapi中测试不通的话,增加下面代码    extra_hosts:      - host.docker.internal:host-gateway    restart: always    environment:      # mysql 连接参数      - SQL_DSN=root:oneapimmysql@tcp(mysql:3306)/oneapi      # 登录凭证加密密钥      - SESSION_SECRET=oneapikey      # 内存缓存      - MEMORY_CACHE_ENABLED=true      # 启动聚合更新,减少数据交互频率      - BATCH_UPDATE_ENABLED=true      # 聚合更新时长      - BATCH_UPDATE_INTERVAL=10      # 初始化的 root 密钥(建议部署完后更改,否则容易泄露)      - INITIAL_ROOT_TOKEN=fastgpt    volumes:      - ./oneapi:/datanetworks:  fastgpt:

config.json需要在llmModels中增加chatglm3的模型,在vectorModels中增加m3e,全部配置如下:

{  "feConfigs": {    "lafEnv": "https://laf.dev"  },  "systemEnv": {    "openapiPrefix": "fastgpt",    "vectorMaxProcess": 15,    "qaMaxProcess": 15,    "pgHNSWEfSearch": 100  },  "llmModels": [      {      "model": "chatglm3",      "name": "chatglm3",      "maxContext": 16000,      "avatar": "/imgs/model/openai.svg",      "maxResponse": 4000,      "quoteMaxToken": 13000,      "maxTemperature": 1.2,      "charsPointsPrice": 0,      "censor": false,      "vision": false,      "datasetProcess": true,      "usedInClassify": true,      "usedInExtractFields": true,      "usedInToolCall": true,      "usedInQueryExtension": true,      "toolChoice": true,      "functionCall": true,      "customCQPrompt": "",      "customExtractPrompt": "",      "defaultSystemChatPrompt": "",      "defaultConfig": {}    },{"model": "qwen","name": "qwen","maxContext": 32000,"avatar": "/imgs/model/qwen.svg","maxResponse": 5000,"quoteMaxToken": 5000,"maxTemperature": 1.2,"charsPointsPrice": 0,"censor": false,"vision": false,"datasetProcess": true,"usedInClassify": true,"usedInExtractFields": true,"usedInToolCall": true,"usedInQueryExtension": true,"toolChoice": true,"functionCall": false,"customCQPrompt": "","customExtractPrompt": "","defaultSystemChatPrompt": "","defaultConfig": {}},    {      "model": "gpt-3.5-turbo",      "name": "gpt-3.5-turbo",      "maxContext": 16000,      "avatar": "/imgs/model/openai.svg",      "maxResponse": 4000,      "quoteMaxToken": 13000,      "maxTemperature": 1.2,      "charsPointsPrice": 0,      "censor": false,      "vision": false,      "datasetProcess": true,      "usedInClassify": true,      "usedInExtractFields": true,      "usedInToolCall": true,      "usedInQueryExtension": true,      "toolChoice": true,      "functionCall": true,      "customCQPrompt": "",      "customExtractPrompt": "",      "defaultSystemChatPrompt": "",      "defaultConfig": {}    },    {      "model": "gpt-4-0125-preview",      "name": "gpt-4-turbo",      "avatar": "/imgs/model/openai.svg",      "maxContext": 125000,      "maxResponse": 4000,      "quoteMaxToken": 100000,      "maxTemperature": 1.2,      "charsPointsPrice": 0,      "censor": false,      "vision": false,      "datasetProcess": false,      "usedInClassify": true,      "usedInExtractFields": true,      "usedInToolCall": true,      "usedInQueryExtension": true,      "toolChoice": true,      "functionCall": false,      "customCQPrompt": "",      "customExtractPrompt": "",      "defaultSystemChatPrompt": "",      "defaultConfig": {}    },    {      "model": "gpt-4-vision-preview",      "name": "gpt-4-vision",      "avatar": "/imgs/model/openai.svg",      "maxContext": 128000,      "maxResponse": 4000,      "quoteMaxToken": 100000,      "maxTemperature": 1.2,      "charsPointsPrice": 0,      "censor": false,      "vision": true,      "datasetProcess": false,      "usedInClassify": false,      "usedInExtractFields": false,      "usedInToolCall": false,      "usedInQueryExtension": false,      "toolChoice": true,      "functionCall": false,      "customCQPrompt": "",      "customExtractPrompt": "",      "defaultSystemChatPrompt": "",      "defaultConfig": {}    }  ],  "vectorModels": [    {      "model": "text-embedding-ada-002",      "name": "Embedding-2",      "avatar": "/imgs/model/openai.svg",      "charsPointsPrice": 0,      "defaultToken": 512,      "maxToken": 3000,      "weight": 100,      "dbConfig": {},      "queryConfig": {}    },{      "model": "m3e",      "name": "m3e",      "avatar": "/imgs/model/openai.svg",      "charsPointsPrice": 0,      "defaultToken": 700,      "maxToken": 3000,      "weight": 100    }  ],  "reRankModels": [],  "audioSpeechModels": [    {      "model": "tts-1",      "name": "OpenAI TTS1",      "charsPointsPrice": 0,      "voices": [        {          "label": "Alloy",          "value": "alloy",          "bufferId": "openai-Alloy"        },        {          "label": "Echo",          "value": "echo",          "bufferId": "openai-Echo"        },        {          "label": "Fable",          "value": "fable",          "bufferId": "openai-Fable"        },        {          "label": "Onyx",          "value": "onyx",          "bufferId": "openai-Onyx"        },        {          "label": "Nova",          "value": "nova",          "bufferId": "openai-Nova"        },        {          "label": "Shimmer",          "value": "shimmer",          "bufferId": "openai-Shimmer"        }      ]    }  ],  "whisperModel": {    "model": "whisper-1",    "name": "Whisper1",    "charsPointsPrice": 0  }}

保存之后在你的windows系统或者Ubuntu中运行以下代码:

# windowsdocker-compose down && docker-compose pull && docker-compose up -d
# Ubuntusudo docker-compose down && sudo docker-compose pull && sudo docker-compose up -d

8. oneapi配置渠道

访问 http://localhost:3000/ 并登录。初始账号用户名为 root,密码为 123456,点击渠道 并添加新渠道,如图:

在这里插入图片描述

添加chatglm3和m3e渠道,
chatglm3渠道的默认key: sk-key
m3e渠道的默认key:sk-aaabbbcccdddeeefffggghhhiiijjjkkk

在这里插入图片描述
在这里插入图片描述

切记:Base Url后面的端口要是你docker或者api暴露端口,例如是m3e在docker run -p 6009:6008, 那么m3e模型的端口就是http://host.docker.internal:6009(只是举例)

在渠道列表页面点击测试,其中m3e没有chat测试,所以返回404为正常。如图所示:

在这里插入图片描述

9. fastgpt配置私有知识库

打开浏览器访问 http://localhost:3020, 输入账号root,密码1234

如图所示

在这里插入图片描述

这里的索引模型我们选择刚才添加的m3e,文件处理模型选择 chatglm3

在这里插入图片描述

我的示例文档是一个txt文件,所以我选择文本数据集

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
然后点击下一步,上传。上传之后你的文档会索引,这时候你开启的chatglm3的cmd窗口中会出现如图的训练代码,索引中你的显卡(因为之前m3e是显卡训练)占用率很高,直到训练完成,训练完成之后会出现下图的显示:

在这里插入图片描述在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

知识库已就绪之后,创建聊天应用。

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

这样我们就完成了整个部署。


点击全文阅读


本文链接:http://zhangshiyu.com/post/97965.html

<< 上一篇 下一篇 >>

  • 评论(0)
  • 赞助本站

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

关于我们 | 我要投稿 | 免责申明

Copyright © 2020-2022 ZhangShiYu.com Rights Reserved.豫ICP备2022013469号-1