茴香豆實戰

宜家数据小哥發表於2024-04-09

一、租用GPU伺服器(我這邊選擇便宜一些的Autodl)

  Autodl:https://www.autodl.com/

  智星雲:https://gpu.ai-galaxy.cn/

二、登入伺服器,下載模型

1、處理vim時出現的中文亂碼問題

vim /etc/vim/vimrc
#在檔案末尾新增如下內容,處理vim時出現的中文亂碼問題
set fileencodings=utf-8,ucs-bom,gb18030,gbk,gb2312,cp936
set termencoding=utf-8
set encoding=utf-8

2、檢視python的env情況

conda env list

3、更新工具包

apt-get update
apt install net-tools

4、建立一個python3.8.5的環境,名稱設定為huixiangdou,再建立一個modelscope環境

(1)建立

conda create -n huixiangdou python=3.8.5
conda create -n modelscope python=3.8.5

(2)啟用

source activate modelscope

(3)在此環境中安裝modelscope依賴包

pip install modelscope

5、下載千問7B模型

(1)參考地址

  https://huggingface.co/internlm/internlm2-chat-7b/tree/main

  https://github.com/QwenLM/Qwen

(2)建立目錄,建立之前先檢視資料盤掛載在哪,我們在資料盤上進行操作

source ~/.bashrc && source activate modelscope

cd /root/autodl-tmp/ && mkdir -p model/qwen_7B

(3)下載原始碼

cd /root/autodl-tmp/model/qwen_7B && git clone https://github.com/QwenLM/Qwen.git

(4)安裝依賴

cd Qwen && pip install -r requirements.txt

(5)下載模型

mkdir -p /root/autodl-tmp/model/qwen_7B/Qwen/modelPath && cd /root/autodl-tmp/model/qwen_7B/Qwen/modelPath
vim qwen_7B_chat_download.py
from modelscope.hub.snapshot_download import snapshot_download
model_dir = snapshot_download('Qwen/Qwen-7B-Chat', cache_dir='/root/autodl-tmp/model/qwen_7B/Qwen/modelPath/', revision='v1.1.9')
chmod +x qwen_7B_chat_download.py
python qwen_7B_chat_download.py

6、執行cli_demo.py

(1)修改cli_demo.py中的模型路徑為你自己的模型路徑。

vim /root/autodl-tmp/model/qwen_7B/Qwen/cli_demo.py
DEFAULT_CKPT_PATH = '/root/autodl-tmp/model/qwen_7B/Qwen/modelPath/Qwen/Qwen-7B-Chat'
cd /root/autodl-tmp/model/qwen_7B/Qwen/ && python cli_demo.py

三、茴香豆

0、參考地址

  https://github.com/InternLM/HuixiangDou/blob/main/README_zh.md

1、建立目錄並啟用huixiangdou的python環境

mkdir -p /root/autodl-tmp/huixiangdou && cd /root/autodl-tmp/huixiangdou && source activate huixiangdou

2、下載程式碼及依賴

# 下載 repo
git clone https://github.com/internlm/huixiangdou --depth=1 && cd huixiangdou

# 下載聊天話題
mkdir repodir
git clone https://github.com/open-mmlab/mmpose --depth=1 repodir/mmpose
git clone https://github.com/tpoisonooo/huixiangdou-testdata --depth=1 repodir/testdata

# 安裝解析 word 文件所需依賴
apt update
apt install python-dev libxml2-dev libxslt1-dev antiword unrtf poppler-utils pstotext tesseract-ocr flac ffmpeg lame libmad0 libsox-fmt-mp3 sox libjpeg-dev swig libpulse-dev
# 安裝 python 依賴
pip install -r requirements.txt

3、下載embedding模型

(1)建立資料夾

mkdir -p /root/autodl-tmp/model/bce-embedding-base_v1
mkdir -p /root/autodl-tmp/model/bce-reranker-base_v1

(2)由於bce模型需要驗證,並且需要梯子訪問huggingface,我這邊手動將檔案下載下來上傳到伺服器上

  百度網盤下載地址:https://pan.baidu.com/s/1pDgKoR_UQNH53oVz9ZVZVQ  提取碼:kn3c

(3)修改配置檔案中bce模型的路徑

vim /root/autodl-tmp/huixiangdou/huixiangdou/config.ini
[feature_store]
embedding_model_path = "/root/autodl-tmp/model/bce-embedding-base_v1"
reranker_model_path = "/root/autodl-tmp/model/bce-reranker-base_v1"

4、把 repodir 的特徵儲存到 workdir

cd /root/autodl-tmp/huixiangdou/huixiangdou && mkdir workdir
python3 -m huixiangdou.service.feature_store

5、獲取Serper搜尋的API Key並修改配置檔案

  Serper官網地址:https://serper.dev/api-key

vim /root/autodl-tmp/huixiangdou/huixiangdou/config.ini
[web_search]
# check https://serper.dev/api-key to get a free API key
x_api_key = "你的API Key"

6、修改LLM模型路徑(你自己下載的模型在哪個目錄你就填哪個目錄)

vim /root/autodl-tmp/huixiangdou/huixiangdou/config.ini
[llm]
enable_local = 1
enable_remote = 0
client_url = "http://127.0.0.1:8888/inference"

[llm.server]
local_llm_path = "/root/autodl-tmp/model/qwen_7B/Qwen/modelPath/Qwen/Qwen-7B-Chat"
local_llm_max_text_length = 3000
local_llm_bind_port
= 8888

6、執行基礎版技術助手

cd /root/autodl-tmp/huixiangdou/huixiangdou && python3 -m huixiangdou.main --standalone

7、Web服務

(1)安裝Redis

apt update
# 安裝
apt install redis-server redis-tools
vim /etc/redis/redis.conf
# 將requirepass註釋開啟並進行如下設定
requirepass your_password_here
# 啟動redis
redis-server /etc/redis/redis.conf
# 檢視redis是否啟動成功
netstat -nlpt | grep redis

(2)設定環境變數

vim ~/.bashrc

  先使用工具生成JWT_SECRET

openssl rand -base64 32

  將如下內容新增至檔案末尾

export PYTHONUNBUFFERED=1
export REDIS_HOST=127.0.0.1
export REDIS_PASSWORD=redis123
export REDIS_PORT=6379
# 一個JWT_SECRET是指用於簽名JSON Web Token (JWT) 的金鑰或金鑰對 export JWT_SECRET=pZOzhGzAlIbWydElxJLGNu6e5yKsdRyW6srUmTMOrPQ=
# 茴香豆的後臺服務埠,因為我租用的GPU伺服器開放的埠是8804,所以我這邊選擇填寫8804 export SERVER_PORT=8804
# 這兩個引數是飛書的Key,我不接入飛書,忽略即可 export HUIXIANGDOU_LARK_ENCRYPT_KEY=thisiskey export HUIXIANGDOU_LARK_VERIFY_TOKEN=sMzyjKi9vMlEhKCZOVtBMhhl8x23z0AG # set your service endpoint(open to Internet callback from lark and wechat)
# 微信回撥地址,填寫8804即可 export HUIXIANGDOU_MESSAGE_ENDPOINT
=http://127.0.0.1:8804 unset COOKIE_SECURE

  重新整理環境變數

source ~/.bashrc && source activate huixiangdou

(3)編譯前端 & 執行後端服務

  a. 安裝 Node.js npm (需要版本為 20.x , 安裝時, 可根據使用者許可權需要自行新增 sudo + 命令)

apt update
apt install nodejs npm
node -v # v20.12.0

  b. 如果 node -v 版本太老 (10.x),則需要升級 node 版本

npm install n -g
n stable
hash -r
node -v # v20.12.0

  c. 編譯專案

cd /root/autodl-tmp/huixiangdou/huixiangdou/web/front-end
npm install && npm run build

  d. 安裝依賴、執行後端服務

# 安裝依賴
cd /root/autodl-tmp/huixiangdou/huixiangdou/ &&
python3 -m pip install -r web/requirements.txt
# 啟動後端服務
cd /root/autodl-tmp/huixiangdou/huixiangdou/ && python3 -m web.main

  e. 啟動過程中如果遇到報錯,就將list型別修改為List(即將小寫list型別改為List,不然報python語法錯誤),如果檔案沒有匯入List,就在檔案開頭匯入List

/root/autodl-tmp/huixiangdou/huixiangdou/web/service/cache.py
/root/autodl-tmp/huixiangdou/huixiangdou/web/model/huixiangdou.py
/root/autodl-tmp/huixiangdou/huixiangdou/web/service/chat.py
/root/autodl-tmp/huixiangdou/huixiangdou/web/service/agent.py

  匯入語法為:

from typing import List

(4)執行演算法 pipeline

  a. 先開個終端視窗,啟動 LLM hybrid proxy

source ~/.bashrc && source activate huixiangdou
cd /root/autodl-tmp/huixiangdou/huixiangdou/ && python3 -m huixiangdou.service.llm_server_hybrid --config_path config.ini

  b. 再開個視窗,監聽服務

source ~/.bashrc && source activate huixiangdou
cd /root/autodl-tmp/huixiangdou/huixiangdou/ && python3 -m web.proxy.main

(5)測試 開啟伺服器 埠,建立知識庫測試效果(我這邊的公網IP是36.139.234.89,訪問11286埠時,系統會自動轉發到本地的8804埠)

  http://36.139.234.89:11286/

四、新整合個人微信

1、參考地址

  https://github.com/InternLM/HuixiangDou/blob/main/docs/add_wechat_accessibility_zh.md

2、注意事項

  需要將回撥地址中的IP和埠修改為你的公網IP埠,比如我的回撥地址就是這個:http://36.139.234.89:11286/api/v1/message/v1/wechat/W6Zq。

  當透過公網IP36.139.234.89的11286埠進行回撥時,會轉發到內網的127.0.0.1:8804埠。