0

llama2+localGPT打造纯私有知识助手 - 王清培

 1 month ago
source link: https://www.cnblogs.com/wangiqngpei557/p/18106840
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

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工程上好好打磨的

关注微信公众号|收获更多干货

202205-20231207105220558-1550182460.jpg

About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK