无需GPU无需网络“本地部署chatGPT”(更新StableVicuna)

2023-11-17

想当初图像生成从DELL到stable diffusion再到苹果的移动部署过了两三年吧
聊天bot才发展几个月就可以边缘部署了,如果苹果更新silicon,npu和运存翻倍,争取apple watch也能本地内置,最快ios18 mac、ipad、iPhone能内置吧
又是一个平民百姓都高兴的开源项目,chatGPT这种级别的模型甚至能部署到树莓派上运行,然后在操作的过程中也遇到一些问题,这篇就是记录步数的这个过程。
已经为最新版的github更新了(2023.5.23),可以放心食用,实测运行速度快了很多。
哈工大的chinese llama效果不如vicuna7b,所以我把这一块的内容给删掉了。
vicuna7b的合成需要高运行内存的电脑,如果你的电脑不足30个G,可以直接私信我要合成好的模型,只有vicuna-7b的q4.0版本。
最近很多人反应老的vicuna-7b已经没办法在新的llama.cpp上使用了(主要是q4版本),可以问我要新的。

大佬的网址:https://github.com/ggerganov/llama.cpp

下载及生成

打开命令行输入下面的指令

git clone https://github.com/ggerganov/llama.cpp
cd llama.cpp
make

#对于Windows和CMake,使用下面的方法构建:
cd <path_to_llama_folder>
mkdir build
cd build
cmake ..
cmake --build . --config Release

在这里插入图片描述

模型下载

我觉得模型下载是最麻烦的,还好有别人给了

git clone https://huggingface.co/nyanko7/LLaMA-7B

好吧我直接给百度云
链接: https://pan.baidu.com/s/1ZC2SCG9X8jZ-GysavQl29Q 提取码: 4ret
–来自百度网盘超级会员v6的分享

在这里插入图片描述

然后安装python依赖,然后转换模型到FP16格式。然后第一个小bug会出现。

python3 -m pip install torch numpy sentencepiece

# convert the 7B model to ggml FP16 format
python3 convert-pth-to-ggml.py models/7B/ 1

在这里插入图片描述

他会报找不到文件。
在这里插入图片描述
打开convert-pth-to-ggml.py文件,修改"/tokenizer.model"的路径,再运行python3 convert-pth-to-gaml.py ./models/7B 1,我顺便名字也改了。
在这里插入图片描述

文件找到了,然后出现第二个bug。。。。。
在这里插入图片描述

我一开始找不出问题,后来对比原网址和7B文件夹里的文件,才发现文件大小根本都不一样,我说几十个G的东西怎么git这么。
打开网站下图这个网址,点红色框的那两个下载。替换掉7B文件夹里的那两个文件。
在这里插入图片描述

在这里插入图片描述

将模型再转换成4位格式

# quantize the model to 4-bits
./quantize ./models/7B/ggml-model-f16.bin ./models/7B/ggml-model-q4_0.bin 2

在这里插入图片描述

推理

# run the inference
./main -m ./models/7B/ggml-model-q4_0.bin -n 128

在这里插入图片描述

想和chatGPT一样对话的话用下面这个指令,-n 控制回复生成的最大长度, --color是区分ai和人类的颜色,-i 作为参数在交互模式下运行, -r 是一种反向提示,-f 是一整段提示, --repeat_penalty 控制生成回复中对重复文本的惩罚力度,–temp 温度系数,值越低回复的随机性越小,反之越大。
更新了之后速度快了很多。

./main -m ./models/7B/ggml-model-q4_0.bin -n 256 --repeat_penalty 1.0 --color -i -r "User:" -f prompts/chat-with-bob.txt

让我们打开prompts/chat-with-bob.txt来看一下。
在这里插入图片描述

我们可以看到这相当于给了ai模型一个场景话题,然后你和ai之间就可以接着这个话题聊天。

我英文名叫zale,然后我把这个机器人叫作kangaroo,这样的身份和他聊天,你可以按自己的喜欢自己修改下面的代码。

./main -m ./models/7B/ggml-model-q4_0.bin -n 256 --repeat_penalty 1.0 --color -i -r "Zale:" \

写一个txt文件

"Transcript of a dialog, where the Zale interacts with an Assistant named Kangaroo. Kangaroo is helpful, kind, honest, good at writing, and never fails to answer the Zale's requests immediately and with precision.

Zale: Hello, Kangaroo.
Kangaroo: Hello. How may I help you today?
Zale: Please tell me the largest city in Europe.
Kangaroo: Sure. The largest city in Europe is Moscow, the capital of Russia.
Zale:"

在这里插入图片描述

有点呆呆的,不过也算边缘部署的巨大进步了!
一个蛮有意思的发现,明明看得懂中文却跟我说不懂中文。。。。。
在这里插入图片描述
分享一段有意思的对话
在这里插入图片描述

Vicuna-7B

把原始的llama模型转换成huggleface的格式

python3 ~/anaconda3/envs/pytorch2/lib/python3.10/site-packages/transformers/models/llama/convert_llama_weights_to_hf.py \
	--input_dir ./llama-7b \
	--model_size 7B \
	--output_dir ./llama-7b-hf

这样生成的文件放在llama-7b-hf之中。
在这里插入图片描述

下载vicuna7b的权重文件,也可以理解为补丁。
注意融合vicuna7b模型需要30个G的内存,我特意买128G内存和4090的电脑,
如果有需要,可以私信我我看到的话直接把生成的模型发给你。
还有就是现在的模型是v1.1的版本,必须搭配使用transformers>=4.28.0 and fschat >= 0.2.0

python3 -m fastchat.model.apply_delta \
	--base-model-path ./llama-7b-hf/ \
	--target-model-path ./vicuna-7b/ \
	--delta-path ./vicuna-7b-delta-v1.1/

这样融合的模型就在vicuna-7b的文件夹下。
在这里插入图片描述

可以直接用fastchat用测试一下,速度好快哦!!!确实fast

python3 -m fastchat.serve.cli --model-path ./vicuna-7b

回到llama.cpp之中,老三样

python3 convert-pth-to-ggml.py models/vicuna-7b/ 1

./quantize ./models/vicuna-7b/ggml-model-f16.bin ./models/vicuna-7b/ggml-model-q4_0.bin 2

./main -m ./models/vicuna-7b/ggml-model-q4_0.bin -n 256 --repeat_penalty 1.0 --color -i -r "User:" -f prompts/chat-with-bob.txt

在这里插入图片描述

在这里插入图片描述

实测理解能力和中文水平我认为都是目前最佳的边缘部署的模型,我觉得我可以把哈工大的中文模型部分给删了。目前使用下来不错,很有chatGPT那味。
我又试了一下i9-13900KF,速度是快了一些。
在这里插入图片描述

来点好玩的例子。
在这里插入图片描述

在这里插入图片描述

多模态部署

这个需要12g的显存,没有的朋友就图个乐。
用到的是miniGPT这个库。

1.准备环境

git clone https://github.com/Vision-CAIR/MiniGPT-4.git
cd MiniGPT-4
conda env create -f environment.yml
conda activate minigpt4

在这里插入图片描述
2.修改文件指向电脑里的vicuna-7b路径
在这里插入图片描述
3.下载pretrained MiniGPT-4 checkpoint
在这里插入图片描述
4.修改文件指向电脑里的pretrained MiniGPT-4 checkpoint路径
在这里插入图片描述
5.运行demo

python demo.py --cfg-path eval_configs/minigpt4_eval.yaml  --gpu-id 0

在这里插入图片描述

StableVicuna

据说效果远超原版vicuna,实测直接用transformer4.8.0即可转换,然后转换的原模型是huggle face格式的llama原模型。
之后的步骤不再重复和上面一样,运行起来似乎失去了中文能力,然后数学能力等有提升,感觉像文科生变成理科生。
在这里插入图片描述

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

无需GPU无需网络“本地部署chatGPT”(更新StableVicuna) 的相关文章

随机推荐

  • 前端页面之间url传参

    function getUrlParam name var reg new RegExp name var r window location search substr 1 match reg ECMAScript v3 已从标准中删除了
  • 如何设置office2003为默认打开方式

    如何设置office2003为默认打开方式 当系统同时安装 office 2003和 office 2007 或2010 两个版本的 office办公软件的时候 双击打开一个office文档 Word Excel Powerpoint 默认
  • 【CV with Pytorch】第 10 章 :计算机视觉的可解释人工智能

    大多数机器学习和深度学习模型都缺乏解释和解释结果的方法 由于深度学习模型的动态特性和不断增加的最先进模型 当前的模型评估基于准确度分数 这使得机器学习和深度学习成为黑盒模型 这导致对应用模型缺乏信心 对生成的结果缺乏信任 有多个库可以帮助我
  • 刷题统计(蓝桥杯)

    刷题统计 问题描述 小明决定从下周一开始努力刷题准备蓝桥杯竞赛 他计划周一至周五每天 做 a 道题目 周六和周日每天做 b 道题目 请你帮小明计算 按照计划他将在 第几天实现做题数大于等于 n 题 输入格式 输入一行包含三个整数 a b 和
  • 数据结构基础:2.顺序表。

    顺序表的介绍和实现 一 线性表 1 基本概念 二 顺序表 1 基本概念 分类 1 静态顺序表 分类 2 动态顺序表 2 动态顺序表的功能接口的实现 0 顺序表打印 1 初始化和删除 2 尾插尾删 3 头插头删 4 任意位置插入删除 5 查找
  • 面试题 01.08. 零矩阵

    难度中等 编写一种算法 若M N矩阵中某个元素为0 则将其所在的行与列清零 示例 1 输入 1 1 1 1 0 1 1 1 1 输出 1 0 1 0 0 0 1 0 1 示例 2 输入 0 1 2 0 3 4 5 2 1 3 1 5 输出
  • 并发编程相关面试题(持续更新)

    1 juc包提供了哪些工具 用在什么场景 1 提供了比 synchronized 更加高级的各种同步结构 包括 CountDownLatch CyclicBarrier Semaphore 等 场景 可以实现更加丰富的多线程操作 比如利用
  • TTL反相器、OC门、TS门、推挽输出、开漏输出

    TTL反相器 这是一个TTL反相器 这是经过了很多工程师多种设计最终沉淀出来的电路 这个电路是比较成熟的 我们只需要对这个电路进行解析即可 不需要再去研究当初是如何设计出来的 学过CMOS应该知道 右侧的输出级其实也是个推挽输出 因为长得像
  • 记录一次小问题!ssh脚本打包vue 执行 cnpm run build 无法继续向下走

    问题 ssh脚本打包vue 执行 cnpm run build 无法继续向下走 发现一直停留在 DONE Build complete The dist directory is ready to be deployed INFO Chec
  • JS内存泄漏排查

    定义 内存泄漏 应用程序不再需要的内存 由于某种原因 内存没有返回到操作系统或可用内存池中 原因 1 意外的全局变量 JS 在处理未声明的变量时 对未声明的变量的引用会在全局对象内创建一个新变量 这些全局变量是无法进行垃圾回收的 除非将它们
  • 东方财富四千余支股票2023年度上半年收盘价格走势涨跌可视化分析

    本文数据和图表内容仅供参考 数据仅供参考 数据仅供参考 数据仅供参考 如下是案例A300028的股票2023年收盘价走势及涨跌幅曲线 案例 A股300024 案例 600182走势图 走势分析图谱 原始结果已保存到压缩文件 通过python
  • Python+Selenium练习篇之18-自定义浏览器窗口大小

    本文来学习下如何通过Selenium方法 设置符合不同测试场景浏览器窗口大小 例如 你有一台机器 最大支持1366 768 你完全可以利用这个机器测试不同分辨率下的场景 相关测试脚本代码如下 coding utf 8 import time
  • 区块链技术的应用和数字资产,将会是未来不可阻挡的趋势和潮流

    前言 数字资产的发展 很可能是人类近千年金融史上又一次激动人心的变革 如果让你回到七年前重新选择一次投资机会的话 你可能会选择投资股票 然后坐等15年大牛市资产翻几倍 你也可能会投资房地产 然后坐等16年房地产爆发 资产翻番 但你万万想不到
  • javascript正则表达式学习

    REGEXP对象 javascript通过内置对象RegExp支持正则表达式 有两种方法实例化RegExp对象 1 字面量 var reg bis b var reg2 bis b g 正则规则放在 内 bv表示单词边界 g表示全文搜索 如
  • 树莓派作为客户端与WemosD1作为服务器的无线通信(局域网通信)

    参考 树莓派作为客户端与WemosD1作为服务器的无线通信 局域网通信 作者 图触靓 发布时间 2020 07 26 21 50 39 网址 https blog csdn net bhbhhyg article details 10759
  • 2023年“大湾区杯” AI for Science正式开赛!

    2023年 大湾区杯 粤港澳 AI for Science 科技竞赛 赛题发布 01 AI for Science 赛题设置 本次竞赛设置三大赛道 分别为常规赛道 题号CG2301 CG2312 百度赛道 题号BD2301 BD2308 华
  • SonarQube代码扫描

    一 代码质量测试 1 代码测试工具 SonarQube 官方网站 https www sonarqube org SonarQube 是一个用于代码质量管理的开放平台 通过插件机制 SonarQube 可以集成不同的测试工具 代码分析工具
  • 华为OD机试 C++ 整数编码

    描述 我们想要一种特殊的整数编码方式 让数字小的时候 编码占的空间也小 编码的方法如下 我们每7位组成一部分来编码 在每个字节里 用前7位来存数字 如果后面还有数据 最高的那一位就是1 否则就是0 数据要按小端序保存 也就是说 小的数据部分
  • HTML中所有基本标签

    1 h1 h6 为标题标签 h1 我是一个标题 h1 h2 我是一个标题 h2 h3 我是一个标题 h3 h4 我是一个标题 h4 h5 我是一个标题 h5 h6 我是一个标题 h6 网页显示效果 h1 h6 数字越大 字体越小 且独占一行
  • 无需GPU无需网络“本地部署chatGPT”(更新StableVicuna)

    想当初图像生成从DELL到stable diffusion再到苹果的移动部署过了两三年吧 聊天bot才发展几个月就可以边缘部署了 如果苹果更新silicon npu和运存翻倍 争取apple watch也能本地内置 最快ios18 mac