llama.cpp一种在本地CPU上部署的量化模型(超低配推理llama)

0x00 背景

前不久,Meta前脚发布完开源大语言模型LLaMA,

随后就被网友“泄漏”,直接放了一个磁力链接下载链接。

然而那些手头没有顶级显卡的朋友们,就只能看看而已了

但是 Georgi Gerganov 开源了一个项目llama.cpp

ggerganov/llama.cpp: Port of Facebook’s LLaMA model in C/C++ (github.com)

次项目的牛逼之处就是没有GPU也能跑LLaMA模型

大大降低的使用成本,本文就是时间如何在我的 mac m1 pro 上面跑起来这个模型

llama.cpp:提供了一种模型量化和在本地CPU上部署方式

文本介绍了如何使用llama.cpp工具将深度学习模型进行量化并在本地CPU上部署的详细步骤。

以下是具体步骤的解释:

ç

0x01 Step1 环境准备

  1. 高版本python 3.10
pip install protobuf==3.20.0
pip install transformers  最新版
pip installsentencepiece (0.1.97测试通过)
pip install peft  (0.2.0测试通过)
pip install git+https://github.com/huggingface/transformers
pip install sentencepiece
pip install peft
  1. 确保机器有足够的内存加载完整模型 ,7B模型需要13-15G

  2. 下载原版LLaMA模型的权重和tokenizer.model文件

下载参考这个[PR]https://github.com/facebookresearch/llama/pull/73/files

压缩包内文件目录如下(LLaMA-7B为例):

chinese_llama_lora_7b/- adapter_config.json		# LoRA权重配置文件- adapter_model.bin		# LoRA权重文件- special_tokens_map.json	# special_tokens_map文件- tokenizer_config.json	# tokenizer配置文件- tokenizer.model		# tokenizer文件 

Step 2: 将原版LLaMA模型转换为HF格式

请使用transformers提供的脚本convert_llama_weights_to_hf.py

将原版LLaMA模型转换为HuggingFace格式。

将原版LLaMA的tokenizer.model放在--input_dir指定的目录,其余文件放在${input_dir}/${model_size}下。 执行以下命令后,--output_dir中将存放转换好的HF版权重。

python src/transformers/models/llama/convert_llama_weights_to_hf.py \--input_dir path_to_original_llama_root_dir \--model_size 7B \--output_dir path_to_original_llama_hf_dir

image-20230423155757686

Step 2: 合并LoRA权重,生成全量模型权重

使用ymcui/Chinese-LLaMA-Alpaca at v2.0 (github.com)里面的scripts/merge_llama_with_chinese_lora.py脚本

对原版LLaMA模型(HF格式)扩充中文词表,并与LoRA权重进行合并,生成全量模型权重consolidated.*.pth(建议检查生成模型的SHA256值)和配置文件params.json。请执行以下命令:

此处可有两种选择:

  • 输出PyTorch版本权重(.pth文件),使用merge_llama_with_chinese_lora.py脚本
    • 使用llama.cpp工具进行量化和部署
  • 输出HuggingFace版本权重(.bin文件),使用merge_llama_with_chinese_lora_to_hf.py脚本(感谢@sgsdxzy 提供)
    • 使用Transformers进行推理
    • 使用text-generation-webui搭建界面

以上两个脚本所需参数一致,仅输出文件格式不同。下面以生成PyTorch版本权重为例,介绍相应的参数设置。

python scripts/merge_llama_with_chinese_lora.py \--base_model path_to_original_llama_hf_dir \--lora_model path_to_chinese_llama_or_alpaca_lora \--output_dir path_to_output_dir 

参数说明:

image-20230423160603607

我这里直接使用了Model Hub上的模型,因为很小就直接下载了使用,懒惰下载到本地

  • --base_model:存放HF格式的LLaMA模型权重和配置文件的目录(Step 1生成)
  • --lora_model:这就是你要合并的 LoRA模型 所在目录,也可使用Model Hub上的模型名:ziqingyang/chinese-alpaca-lora-7bziqingyang/chinese-llama-lora-7b
  • --output_dir:指定保存全量模型权重的目录,默认为./
  • (可选)--offload_dir:对于低内存用户需要指定一个offload缓存路径

Step 3: llama.cpp 本地快速部署

大模型在自己的电脑上进行本地部署(CPU推理)

下载llama.cpp工具https://github.com/ggerganov/llama.cpp

推荐使用MacOS和Linux系统,Windows好像有bug

运行前请确保:

  1. 模型量化过程需要将未量化模型全部载入内存,请确保有足够可用内存(7B版本需要13G以上)
  2. 加载使用Q4量化后的模型时(例如7B版本),确保本机可用内存大于4-6G(受上下文长度影响)
  3. 系统应有make(MacOS/Linux自带)或cmake(Windows需自行安装)编译工具
  4. 推荐使用Python 3.9或3.10编译运行llama.cpp工具(因为sentencepiece还不支持3.11)

1. 下载和编译llama.cpp

运行以下命令对llama.cpp项目进行编译,生成./main./quantize二进制文件。

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

2.生成量化版本模型

把合并模型(选择生成.pth格式模型)中最后一步生成的tokenizer.model文件放入xx-models目录下,模型文件consolidated.*.pth和配置文件params.json放入xx-models/7B目录下。

请注意LLaMA和Alpaca的tokenizer.model不可混用

目录结构类似:

   - 7B/- consolidated.00.pth- params.json- tokenizer.model

将上述.pth模型权重转换为ggml的FP16格式,生成文件路径为xx-models/7B/ggml-model-f16.bin

python3 ./llama.cpp/convert-pth-to-ggml.py ./xx_model/7B/ 1

image-20230423170929505

进一步对FP16模型进行Q4量化,生成量化模型文件路径为zh-models/7B/ggml-model-q4_0.bin

./quantize ./xx-models/7B/ggml-model-f16.bin ./xx-models/7B/ggml-model-q4_0.bin 2

image-20230423170909655

3.加载并启动模型

运行./main二进制文件,-m命令指定Q4量化模型(也可加载ggml-FP16的模型)。以下是解码参数示例:

./main -m xx-models/7B/ggml-model-q4_0.bin --color -f prompts/alpaca.txt -ins -c 2048 --temp 0.2 -n 256 --repeat_penalty 1.3

image-20230423171755989

在提示符 > 之后输入你的prompt,command+c中断输出,多行信息以\作为行尾。如需查看帮助和参数说明,请执行./main -h命令。

重要参数说明:
-ins 启动类ChatGPT的对话交流模式
-f 指定prompt模板,alpaca模型请加载prompts/alpaca.txt
-c 控制上下文的长度,值越大越能参考更长的对话历史
-n 控制回复生成的最大长度
--repeat_penalty 控制生成回复中对重复文本的惩罚力度
--temp 温度系数,值越低回复的随机性越小,反之越大
--top_p, top_k 控制采样的相关参数

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/42809.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

ChatGPT全球最大开源平替:回复更受欢迎,但中文对话一塌糊涂

关注并星标 从此不迷路 计算机视觉研究院 公众号ID|ComputerVisionGzq 学习群|扫码在主页获取加入方式 计算机视觉研究院专栏 作者:Edison_G 在众多开源项目中脱颖而出,OpenAssistant 有两把刷子。 转自《机器之心》 事实证明&…

续集来了!我让 GPT-4 用 Laf 三分钟写了个完整的待办事项 App

书接前文,上篇文章我们教大家如何三分钟时间用 Laf 实现一个自己的 ChatGPT。 一觉醒来,GPT-4 已经发布了! GPT-4 实现了真正的多模态,可以把纸笔画的原型直接写出网页代码。读论文时还能理解插图含意。 好消息是,Chat…

七夕情人节该送女朋友什么礼物,推荐五款让女朋友超惊喜的礼物

七夕情人节又快到了,在这有爱的日子里,相信又有一大群男同胞不知该送女朋友什么礼物,又担心送到女朋友不喜欢的,但又不想敷衍了事,没关系,那就跟着我一起来看看这五款适合送给女朋友的礼物。 一、西圣F1气…

七夕礼物送女生什么好?颜值在线又有心意的礼物推荐

七夕是我国的传统节日,就在8月4号,有女朋友的赶紧准备起来了,表达爱意的时刻就要到了。现在提前准备礼物才能“有备无患”。那么该准备哪些礼物呢?送什么礼物才会给到女朋友惊喜呢?小编为大家精选几款不错的礼物。 一…

情人节礼物推荐排行榜、这6款好物值得你考虑

一年一度的情人节又即将到来,相信有不少人在苦恼该送什么样的礼物给自己的另一半,一份好的礼物可以在节日给彼此留下一个美好的回忆,也可以让感情更加温,如果实在不知道送什么,在这里精选了比较实用的适合情人节的礼物…

七夕送什么礼物好?小众又高级的产品礼物推荐

看看日历,是不是七夕情人节就快到了,是时候把口袋里的零花钱拿出来,给家里的“小朋友”买礼物啦~所有的节日都不是为了红包和礼物而生,而是提醒我们不要忘记爱与被爱,七夕礼物推荐帮你准备好了,一起来感受下…

七夕有哪些送女朋友的小众又高级的礼物?小众又高级的礼物推荐

一年的七夕又要来了,普通的生活不免寡淡,因为有爱人的存在,我们便会给节日们覆上彩色滤镜,在充满爱的的节日去表达爱,表达爱的方式也有很多种,其中送礼物也是一种非常能提升爱的幸福感的方式,如…

重磅:ChatGPT全栈开发发布了!颤抖吧...

《面向ChatGPT全栈开发实战》专栏上线了,写这个专栏的过程中,我真有点恐慌,感觉我得失业,因为ChatGPT实在太牛逼了。 ChatGPT如何和编程完美整合到一起?这个问题老赵研究很久了,这不,我利用假期…

Fay控制器及数字人模型,可灵活组合出不同的应用场景:虚拟主播、现场推销货、商品导购、语音助理、远程语音助理、数字人互动、数字人面试官及心理测评、贾维斯、Her

FAY 数 字 人 Fay 控 制 器(这是元宇宙吗?) Fay是一个完整的开源项目,包含Fay控制器及数字人模型,可灵活组合出不同的应用场景:虚拟主播、现场推销货、商品导购、语音助理、远程语音助理、数字人互动、数字人面试官及心理测评、…

虚拟数字人制作应用场景持续拓宽,3D数字人满足了用户全新需求

12月12日晚,由快手StreamLake助力蒙牛打造的3D写实虚拟人“奶思”,通过“蒙牛牛奶旗舰店”快手账号带来直播首秀。本场直播吸引近300万人观看,相较于该账号过去30天内的均值表现,互动量提升明显,直播间点赞数和评论数分…

虚拟形象动作捕捉+虚拟数字人制作技术,推动虚拟偶像代言人热潮

前不久,速途网速途元宇宙研究院《2022虚拟人产业研究报告》显示,虚拟偶像仍然是当下主流,一方面得益于较为成熟的技术能力,即虚拟数字人采用的建模与动作捕捉技术;另一方面得益于虚拟偶像鲜明的外观及人设,…

虚拟数字人几近真人?“造假”过程大公开

近来虚拟人呈现井喷式发展,银行、媒体、美妆等不同行业纷纷推出自己的虚拟人,一时之间AYAYI、Ling、柳夜熙等各式各样风格鲜明的虚拟人类走进了大众视野。那么到底什么是虚拟数字人?根据中国人工智能产业发展联盟发布的《2020年虚拟数字人发展…

虚拟数字人有哪些应用场景和用途?

近几年,元宇宙概念下的重要资产“虚拟数字人”崛起,作为未来人类进入元宇宙的媒介,虚拟数字人随着理论与技术的革新,应用范围正在不断扩大。那么虚拟数字人都有哪些应用场景和用途呢? 一、教育 虚拟数字人可以辅助老师…

怎么利用AI虚拟数字人创业,都有哪些AI数字虚拟人项目可操作。

随着数字化的快速发展,数字人成为了越来越受欢迎的创业领域。数字人是指由人工智能技术和人工智能算法构建而成的虚拟人物,可以模拟人类的语言、思维和情感等能力。数字人的出现给我们带来了创新的商业模式和巨大的商业机会。那么,如何利用数…

想知道同声翻译在线翻译怎么操作吗?很简单,只需4步

你知道同声翻译在线翻译怎么操作吗?随着全球化的不断发展,越来越多的人需要与来自不同国家的人交流。为了实现跨语言的沟通,同声翻译技术越来越受到欢迎。 下面将介绍4款支持同声翻译在线翻译功能的软件,希望可以帮助到大家。 方法…

如何进行同声翻译?这些同声翻译在线翻译方法大家都在用

在座的各位以后有没有出国求学或者旅游的计划呀,像我英语不太好,话到嘴边常常不知道怎么表达,在国内路上遇到热情的外国人也只会一句“How are you”外加肢体语言连比带画的,但是坚定想要出国的小伙伴们也不要担心自己语言不通&am…

手机同声传译软件有哪些?推荐四款软件实时翻译软件

小伙伴们有时候会在街上或者旅游景点遇到外国人吗?他们有可能向我们问路、问好玩的地方、问美食推荐等等,但如果我们因为外语水平不好,而导致语言不通,很难跟他们进行交流,这个时候应该怎么办呢?其实可以借…

同声传译在线软件有什么?推荐这些实时翻译软件给你

当在街上遇到问路的外国友人或者想要去国外游玩的时候,我们就可以借助同声传译软件将说的话进行实时翻译,流利的解答外国友人问的问题以及不用担心去国外会语音不通了。 那么小伙伴们知道同声传译在线软件有什么吗?不知道的话,可…

【经验分享】PC端免费高效的同声翻译

2022.09.26 谷歌翻译退出中国市场 translate.googleapis.com 与 谷歌翻译web translate.google.cn现在无法用了 最新解决方法见 https://blog.csdn.net/sinat_24092079/article/details/127133879 疫情期间上网课,对于英语听力较差或者需要观看英文视频&#xff0c…

这3个好用的同声传译app,让你知道有什么同声传译软件推荐

随着社会生活质量的提升,跨文化交流越来越频繁,现在市面上有许多功能丰富、操作简单、翻译准确的同声传译软件,只要使用其中的“同声传译”,就可以实现跨语种和外国人进行沟通了。那么有什么同声传译app推荐呢?今天我就…