通过部署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工程上好好打磨的

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