從文檔處理角度來看,實現(xiàn)流程如下:

本項目未涉及微調(diào)、訓練過程,但可利用微調(diào)或訓練對本項目效果進行優(yōu)化。核心部分代碼為:

 執(zhí)行初始化    
init_cfg(LLM_MODEL, EMBEDDING_MODEL, LLM_HISTORY_LEN)
# 使用 ChatGLM 的 readme 進行測試
vector_store = init_knowledge_vector_store("/home/mw/project/test_chatglm_readme.md")

中vector_store的初始化可以傳遞 txt、docx、md 格式文件,或者包含md文件的目錄。更多知識庫加載方式可以參考langchain文檔,通過修改 init_knowledge_vector_store 方法進行兼容。

官方注:ModelWhale GPU機型需要從云廠商拉取算力資源,耗時5~10min,且會預扣半小時資源價格的鯨幣。如果資源未啟動成功,預扣費用會在關(guān)閉編程頁面后五分鐘內(nèi)退回,無需緊張,如遇問題歡迎提報工單,客服會及時處理。

硬件需求

ChatGLM-6B 模型硬件需求

注:如未將模型下載至本地,請執(zhí)行前檢查$HOME/.cache/huggingface/文件夾剩余空間,模型文件下載至本地需要15GB存儲空間。?

MOSS 模型硬件需求

注:如未將模型下載至本地,請執(zhí)行前檢查$HOME/.cache/huggingface/文件夾剩余空間,模型文件下載至本地需要70GB存儲空間

Docker 部署

為了能讓容器使用主機GPU資源,需要在主機上安裝?NVIDIA Container Toolkit。具體安裝步驟如下:

sudo apt-get update
sudo apt-get install -y nvidia-container-toolkit-base
sudo systemctl daemon-reload
sudo systemctl restart docker

安裝完成后,可以使用以下命令編譯鏡像和啟動容器:

docker build -f Dockerfile-cuda -t chatglm-cuda:latest .
docker run --gpus all -d --name chatglm -p 7860:7860 chatglm-cuda:latest

#若要使用離線模型,請配置好模型路徑,然后此repo掛載到Container
docker run --gpus all -d --name chatglm -p 7860:7860 -v ~/github/langchain-ChatGLM:/chatGLM chatglm-cuda:latest

開發(fā)部署

軟件需求

本項目已在 Python 3.8.1 – 3.10,CUDA 11.7 環(huán)境下完成測試。已在 Windows、ARM 架構(gòu)的 macOS、Linux 系統(tǒng)中完成測試。

vue前端需要node18環(huán)境

從本地加載模型

請參考 THUDM/ChatGLM-6B#從本地加載模型

1. 安裝環(huán)境

環(huán)境檢查

# 首先,確信你的機器安裝了 Python 3.8 及以上版本
$ python --version
Python 3.8.13

# 如果低于這個版本,可使用conda安裝環(huán)境
$ conda create -p /your_path/env_name python=3.8

# 激活環(huán)境
$ source activate /your_path/env_name
$ pip3 install --upgrade pip

# 關(guān)閉環(huán)境
$ source deactivate /your_path/env_name

# 刪除環(huán)境
$ conda env remove -p /your_path/env_name

項目依賴

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

# 進入目錄
$ cd langchain-ChatGLM

# 項目中 pdf 加載由先前的 detectron2 替換為使用 paddleocr,如果之前有安裝過 detectron2 需要先完成卸載避免引發(fā) tools 沖突
$ pip uninstall detectron2

# 檢查paddleocr依賴,linux環(huán)境下paddleocr依賴libX11,libXext
$ yum install libX11
$ yum install libXext

# 安裝依賴
$ pip install -r requirements.txt

# 驗證paddleocr是否成功,首次運行會下載約18M模型到~/.paddleocr
$ python loader/image_loader.py

2. 設置模型默認參數(shù)

在開始執(zhí)行 Web UI 或命令行交互前,請先檢查?configs/model_config.py?中的各項模型參數(shù)設計是否符合需求。

如需通過 fastchat 以 api 形式調(diào)用 llm,請參考?fastchat 調(diào)用實現(xiàn)

3. 執(zhí)行腳本體驗 Web UI 或命令行交互

注:鑒于環(huán)境部署過程中可能遇到問題,建議首先測試命令行腳本。建議命令行腳本測試可正常運行后再運行 Web UI。

執(zhí)行?cli_demo.py?腳本體驗命令行交互:

$ python cli_demo.py

或執(zhí)行?webui.py?腳本體驗?Web 交互

$ python webui.py

或執(zhí)行?api.py?利用 fastapi 部署 API

$ python api.py

或成功部署 API 后,執(zhí)行以下腳本體驗基于 VUE 的前端頁面

$ cd views 

$ pnpm i

$ npm run dev

VUE 前端界面如下圖所示:

知識問答界面

bing搜索界面

WebUI 界面如下圖所示:

知識庫測試Beta?Tab界面

模型配置Tab界面

Web UI 可以實現(xiàn)如下功能:

  1. 運行前自動讀取configs/model_config.py中LLM及Embedding模型枚舉及默認模型設置運行模型,如需重新加載模型,可在 模型配置 Tab 重新選擇后點擊 重新加載模型 進行模型加載;
  2. 可手動調(diào)節(jié)保留對話歷史長度、匹配知識庫文段數(shù)量,可根據(jù)顯存大小自行調(diào)節(jié);
  3. 對話 Tab 具備模式選擇功能,可選擇 LLM對話 與 知識庫問答 模式進行對話,支持流式對話;
  4. 添加 配置知識庫 功能,支持選擇已有知識庫或新建知識庫,并可向知識庫中新增上傳文件/文件夾,使用文件上傳組件選擇好文件后點擊 上傳文件并加載知識庫,會將所選上傳文檔數(shù)據(jù)加載至知識庫中,并基于更新后知識庫進行問答;
  5. 新增 知識庫測試 Beta Tab,可用于測試不同文本切分方法與檢索相關(guān)度閾值設置,暫不支持將測試參數(shù)作為 對話 Tab 設置參數(shù)。
  6. 后續(xù)版本中將會增加對知識庫的修改或刪除,及知識庫中已導入文件的查看。

本文章轉(zhuǎn)載微信公眾號@計算機視覺研究院

上一篇:

實戰(zhàn)PG vector 構(gòu)建DBA 個人知識庫之三: LLM+LangChain+pgvector 整合篇

下一篇:

LangChain-Chatchat:基于LangChain和ChatGLM2-6B構(gòu)建本地離線私有化知識庫
#你可能也喜歡這些API文章!

我們有何不同?

API服務商零注冊

多API并行試用

數(shù)據(jù)驅(qū)動選型,提升決策效率

查看全部API→
??

熱門場景實測,選對API

#AI文本生成大模型API

對比大模型API的內(nèi)容創(chuàng)意新穎性、情感共鳴力、商業(yè)轉(zhuǎn)化潛力

25個渠道
一鍵對比試用API 限時免費

#AI深度推理大模型API

對比大模型API的邏輯推理準確性、分析深度、可視化建議合理性

10個渠道
一鍵對比試用API 限時免費