一、租用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埠。