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

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

  • 相关阅读:
    2022年12月英语六级预测范文:情景作文-流行文化
    软件开发项目文档系列之九如何撰写测试方案
    Redis系列17:聊聊布隆过滤器(实践篇)
    基于Java+SpringBoot+Vue前后端分离秒杀系统设计和实现
    python pool.map进程池 如何给函数传多参数
    Llama3 中文通用 Agent 微调模型来啦!(附手把手微调实战教程)
    Markdown
    ceph分布式存储
    利用京东云Web应用防火墙实现Web入侵防护
    ESP32网络开发实例-非接触式水位监测
  • 原文地址:https://www.cnblogs.com/wangiqngpei557/p/18106840