赞
踩
想当初图像生成从DELL到stable diffusion再到苹果的移动部署过了两三年吧
聊天bot才发展几个月就可以边缘部署了,如果苹果更新silicon,npu和运存翻倍,争取apple watch也能本地内置,最快ios18 mac、ipad、iPhone能内置吧
又是一个平民百姓都高兴的开源项目,chatGPT这种级别的模型甚至能部署到树莓派上运行,然后在操作的过程中也遇到一些问题,这篇就是记录步数的这个过程。
已经为最新版的github更新了(2024.02.23),可以放心食用,实测运行速度快了很多。
哈工大的chinese llama效果不如vicuna7b,所以我把这一块的内容给删掉了。
vicuna7b的合成需要高运行内存的电脑,如果你的电脑不足30个G,可以直接私信我要合成好的模型,只有vicuna-7b的q4.0版本。
最近很多人反应老的vicuna-7b已经没办法在新的llama.cpp上使用了(主要是q4版本),可以问我要新的。
都已经放在下面的链接里了
大佬的网址:https://github.com/ggerganov/llama.cpp
打开命令行输入下面的指令。
mac和linux使用123行。
win使用1278910行。
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
这里演示的是Mistral-7B模型。
链接: https://pan.baidu.com/s/1i2pE12BxuSo0DdKRn4NJFg?pwd=5dy8 提取码: 5dy8
–来自百度网盘超级会员v7的分享
然后安装python依赖,然后转换模型到FP16格式。然后第一个小bug会出现。
python3 -m pip install -r requirements.txt
python3 -m pip install torch numpy sentencepiece #如果第一个网络不够好,试试这一行
# convert the 7B model to ggml FP16 format
python3 convert.py models/mymodel/
会多出一个ggml-model-f16.gguf的文件。
# run the inference
./main -m ./models/mymodel/ggml-model-f16.gguf -n 128
内存不多的再降模型质量
# quantize the model to 4-bits (using Q4_K_M method)
./quantize ./models/mymodel/ggml-model-f16.gguf ./models/mymodel/ggml-model-Q4_K_M.gguf Q4_K_M
./main -m ./models/mymodel/ggml-model-Q4_K_M.gguf -n 128
想和chatGPT一样对话的话用下面这个指令,-n 控制回复生成的最大长度, --color是区分ai和人类的颜色,-i 作为参数在交互模式下运行, -r 是一种反向提示,-f 是一整段提示, --repeat_penalty 控制生成回复中对重复文本的惩罚力度,–temp 温度系数,值越低回复的随机性越小,反之越大。
更新了之后速度快了很多。
./main -m ./mymodels/ggml-model-f16.gguf -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 ./mymodels/ggml-model-f16.gguf -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:"
有点呆呆的,不过也算边缘部署的巨大进步了!
一个蛮有意思的发现,明明看得懂中文却跟我说不懂中文。。。。。
分享一段有意思的对话
把原始的llama模型转换成huggleface的格式,融合icuna模型需要llama 1的模型。
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
git clone https://github.com/google/gemma.cpp
cd gemma.cpp/build
cmake ..
make -j 4 gemma #使用四个核构建
下载模型文件,在build文件夹下运行
./gemma --tokenizer your_tokenizer.spm_path --model 2b-it --compressed_weights your_2b-it-sfp.sbs_path
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。