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

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

llama2+localGPT打造纯私有知识助手的更多相关文章

  1. Django+小程序技术打造微信小程序助手 ✌✌

    Django+小程序技术打造微信小程序助手 (一个人学习或许会很枯燥,但是寻找更多志同道合的朋友一起,学习将会变得更加有意义✌✌) 从零到一的完整项目开发实战过程,项目开发聚焦重要知识点,先原理后实战 ...

  2. 挑战以Dropbox为代表的传统“同步网盘”,Seafile推出“分布式文件同步技术”打造的私有云服务

    挑战以Dropbox为代表的传统“同步网盘”,Seafile推出“分布式文件同步技术”打造的私有云服务#36氪开放日# 其他 JasonZheng • 2012-04-07 15:14 来自36氪开放 ...

  3. Seafile 推出 “分布式文件同步技术” 打造的私有云服务

    近两年来 Dropbox 等云储存服务迅速窜红,各大巨头纷纷推出自家的云储存服务(苹果的 iCloud, 微软的 SkyDrive, Google 即将推出的 GDrive),国内也有类似的服务(金山 ...

  4. 天池平台再升级,打造产业AI知识共享、技术共享平台

    在5月23日的云栖大会·武汉峰会上,天池发布“全球AI开发者计划”,打造一站式人工智能知识共享平台,计划2年内在平台上集聚30万AI工程师.同时,阿里云天池正式升级,成为从产业机会到实施交付一站式解决 ...

  5. Django2.0+小程序技术打造微信小程序助手✍✍✍

    Django2.0+小程序技术打造微信小程序助手  整个课程都看完了,这个课程的分享可以往下看,下面有链接,之前做java开发也做了一些年头,也分享下自己看这个视频的感受,单论单个知识点课程本身没问题 ...

  6. Django+小程序技术打造微信小程序助手

    Django+小程序技术打造微信小程序助手   整个课程都看完了,当前这个课程的分享可以往下看,下面有某盘的链接,之前做java开发也做了一些年头,也分享下自己看这个视频的感受,同时也分享下自己的总结 ...

  7. Django2.0+小程序技术打造微信小程序助手百度云

    加Q[965546358]获取资源 第1章 课程导学 第2章 小程序开发入门 从几个方面介绍小程序开发相关的内容,包括小程序开发者账号注册.小程序开发流程.小程序开发规范.小程序常用的API,例如网络 ...

  8. 如何打造个人km知识管理系统

    经常有朋友会遇到这样一种情况,在网络中看到一篇很好的文章,但后来因为关键字想不起来,结果怎么都搜索不到.还有些朋友虽然平时也会做一些记录,把有用的资料进行保存,但他们往往将保存的资料分散在不同的地方, ...

  9. FreeNAS插件打造ownCloud私有云网盘

    ownCloud 是一个自由开源的个人云存储解决方案,可以自由获取无需付费,但用户需要自行架设服务器,好在FreeNAS可以通过插件轻松的构建ownCloud服务器. ownCloud 分为服务器端和 ...

  10. 恒天云 3.0:打造基于OpenStack的私有云新模式

    摘自恒天云官网:http://www.hengtianyun.com/download-show-id-17.html 云计算在当今IT世界中已发展地如火如荼,越来越多的企业利用云计算改造传统的数据中 ...

随机推荐

  1. ghost方式批量安装win7

    1.   需求介绍: 最近工作中需要给几百台PC安装win7操作系统,同时需要安装系统驱动和一些办公软件.刚开始是使用U盘制作的win7启动盘安装,发现效率太低,因为中间需要人监控安装进度以待安装好系 ...

  2. DVWA XSS

    XSS Store hign level <?php if( isset( $_POST[ 'btnSign' ] ) ) { // Get input $message = trim( $_P ...

  3. 理解[].forEach.call()并说明为什么要使用[].forEach.call()

    [].forEach.call(elems, callback) 相当于: Array.prototype.forEach.call(elems, callback) 又相当于: function(e ...

  4. tempfile创建临时文件或目录

    import tempfile tempfile.TemporaryFile() # 创建文件,返回文件对象 tempfile.NamedTemporaryFile() # 同上,不过会生成带有文件名 ...

  5. 【Azure Redis 缓存】Azure Redis 异常 - 因线程池Busy而产生的Timeout异常问题

    问题描述 StackExchange.Redis在使用线程池后,偶尔会出现Timeout awaiting response 或者 No connection is available to serv ...

  6. java GUI 快速入门

    java 中编写 GUI 有两中工具包,分别为 AWT.Swing. Swing 是 AWT 的拓展,Swing 具有比 AWT 丰富的组件和方法. AWT 和 Swing 都能跨平台使用:AWT 会 ...

  7. Java ----多线程 案例

    1 package bytezero.threadtest2; 2 3 /** 4 * 银行有一个账户 5 * 有两个储户分别向同一个账户存 3000元,每次存1000,存三次,每次存完打印账户余额 ...

  8. Java 手动抛异常

    1 package com.bytezero.throwable; 2 3 import java.io.File; 4 import java.io.FileInputStream; 5 impor ...

  9. Ubuntu20下安装NFS

    安装nfs-kernel-server apt install nfs-kernel-server 想好自己要把哪个目录作为NFS共享目录,创建目录 mkdir /mydata vim /etc/ex ...

  10. Codeforces Round 914 (Div. 2)A~C

    A 反过来考虑,由皇后和国王的位置去寻找骑士的位置,当一个点既可以被皇后找到,也可以被国王找到时就说明这个点是满足条件的 #include <bits/stdc++.h> #define ...