llama2+localGPT打造純私有知識助手

通過部署llama2系列,可以構建本地私有的知識小助手

用來輸出一寫週報、月報,甚至輔助數據分析都可以(想想都很輕鬆)

想要大模型支持特定的數據集,就需要進行專業的fine-turing

但是fine-turing工作,是需要一系列的數據工程,向量化等工作,不太便捷

PromtEngineer/localGPT 把這些工作就包裝好了,我們可以直接部署使用,甚至也可以跟本地的UI工具做一個集成

localGPT

https://github.com/PromtEngineer/localGPT

localGPT支持很多種本地環境部署方式cuda、cpu等(沒有NVIDIA也能跑)

大致工作原理,localGPT會先通過對本地的文件進行“向量”等處理(ingetst.py),會放到本地的一個向量數據庫中(sqlite DB)

然後通過運行run_localGPT.py啓動fine-turing過程

部署需要python3.0環境

conda create -n localGPT python=3.10.0

如果你本地有GPU,還需要安裝一個依賴(不太好裝,看你會不會遇到問題)

clone下來代碼,看下目錄裏的constants.py文件

MODEL_ID = "TheBloke/Llama-2-7b-Chat-GGUF"
MODEL_BASENAME = "llama-2-7b-chat.Q4_K_M.gguf"

注意如果本地運行的是GPU,就要找對應GPU版本的模型

拉取llama2 模型

(如果第一次使用 )先在huggingface 註冊自己的token,用來拉取模型使用(https://huggingface.co/settings/tokens)

然後安裝 huggingface-hub(重點:注意在windows shell工具登錄的時候,不要用鍵盤複製粘貼,一定要用鼠標右鍵paste)

pip3 install huggingface-hub>=0.17.1

模型提供了很多變體,可以用來在不同的環境下使用

https://huggingface.co/TheBloke/Llama-2-7B-Chat-GGUF

https://huggingface.co/TheBloke/Llama-2-7B-Chat-GGUF/tree/main

如果是第一次下載模型會需要點時間,大概5G左右

第一次使用還需要在模型首頁完成申請授權

demo工作報告

由於localGPT是基於本地文檔進行模型微調的,所以我們需要將數據放入文檔中SOURCE_DOCUMENTS目錄(這個工作也可以自動化)

假設模擬一家餐廳的每天的數據,然後形成日報信息,每天灌給他

然後輸出一週的週報(我們用GPT模擬生成)

將文檔放到SOURCE_DOCUMENTS目錄下

然後運行 ingest.py 腳本,記得--device_type參數要根據自己的機器情況選擇(我本地是NVIDIA卡)

python ingest.py --device_type cuda

會輸出如下信息

 python ingest.py --device_type cuda
2024-03-31 14:07:29,899 - INFO - ingest.py:147 - Loading documents from D:\localGPT-main\localGPT-main/SOURCE_DOCUMENTS
Importing: ABC餐廳本週數據.pdf
D:\localGPT-main\localGPT-main/SOURCE_DOCUMENTS\ABC餐廳本週數據.pdf loaded.

2024-03-31 14:07:38,279 - INFO - ingest.py:156 - Loaded 1 documents from D:\localGPT-main\localGPT-main/SOURCE_DOCUMENTS
2024-03-31 14:07:38,284 - INFO - ingest.py:157 - Split into 2 chunks of text
2024-03-31 14:07:39,104 - INFO - SentenceTransformer.py:66 - Load pretrained SentenceTransformer: hkunlp/instructor-large
load INSTRUCTOR_Transformer
max_seq_length  512
2024-03-31 14:07:40,384 - INFO - ingest.py:168 - Loaded embeddings from hkunlp/instructor-large

可以大致看到一些有用的信息,SentenceTransformer是一個強大的微調框架(https://www.sbert.net/https://huggingface.co/hkunlp/instructor-large)等

ingest順利完成之後,當前的文本就已經形成向量進入到向量DB中了

我們開始進行正式微調程序

python run_localGPT.py --device_type cuda

(如果你本地報錯ValueError: check_hostname requires server_hostname,記得關閉kx上網)

看到 “Enter a query:” 應該是順利成功了

我們問下 ”3月27日 3月28日 3月29日 3月30 3月31日 銷售額分別多少“

看上去沒啥問題(llama是英文的,如果需要跟本地工具集合,接一些翻譯庫就行了)

這個只是一個demo,如果要系統嚴謹的輸出,還是需要在數據格式、數據組織、prompt工程上好好打磨的

關注微信公衆號|收穫更多幹貨

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章