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

这篇具有很好参考价值的文章主要介绍了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

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

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 

参数说明:

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

我这里直接使用了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

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

进一步对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

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

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

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

在提示符 > 之后输入你的prompt,command+c中断输出,多行信息以\作为行尾。如需查看帮助和参数说明,请执行./main -h命令。文章来源地址https://www.toymoban.com/news/detail-422817.html

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

到了这里,关于llama.cpp一种在本地CPU上部署的量化模型(超低配推理llama)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 大模型在cpu上使用llama_cpp部署无法加载模型的问题

    错误:gguf_init_from_file: invalid magic characters \\\'tjgg\\\'等,也就是无法加载模型 因为最新版的llama-cpp-python不支持ggml文件格式了 解决方案: 1、降低版本(最简单): pip install llama-cpp-python==0.1.78 2、直接下载对应GGUF的模型 3、利用llama.cpp内部转换函数进行转换 参考出处:TheBloke/Llam

    2024年01月20日
    浏览(37)
  • llama.cpp LLM模型 windows cpu安装部署踩坑记录

    一直想在自己的笔记本上部署一个大模型验证,早就听说了llama.cpp,可是一直没时间弄。 今天终于有时间验证了。首先本机安装好g++,cmake.我下载的cmake版本是cmake-3.27.0-rc4-windows-x86_64.msi。安装时选择增加系统变量。接着GitHub - ggerganov/llama.cpp: Port of Facebook\\\'s LLaMA model in C/C++ 执行

    2024年02月15日
    浏览(31)
  • 使用go-llama.cpp 运行 yi-01-6b大模型,使用本地CPU运行,速度挺快的

    https://github.com/ggerganov/llama.cpp LaMA.cpp 项目是开发者 Georgi Gerganov 基于 Meta 释出的 LLaMA 模型(简易 Python 代码示例)手撸的纯 C/C++ 版本,用于模型推理。所谓推理,即是给输入-跑模型-得输出的模型运行过程。 那么,纯 C/C++ 版本有何优势呢? 无需任何额外依赖,相比 Python 代码

    2024年02月20日
    浏览(35)
  • AI-windows下使用llama.cpp部署本地Chinese-LLaMA-Alpaca-2模型

    生成的文件在 .buildbin ,我们要用的是 main.exe , binmain.exe -h 查看使用帮助 本项目基于Meta发布的可商用大模型Llama-2开发,是中文LLaMAAlpaca大模型的第二期项目,开源了中文LLaMA-2基座模型和Alpaca-2指令精调大模型。这些模型在原版Llama-2的基础上扩充并优化了中文词表,使用

    2024年04月25日
    浏览(39)
  • 【AI实战】llama.cpp 量化部署 llama-33B

    量化模型是将模型中的高精度浮点数转化成低精度的int或其他类型得到的新的,花销更小,运行更快的模型。 Inference of LLaMA model in pure C/C++。 llama.cpp 运行期占用内存更小,推断速度也更快,同样的模型,7B 基础模型举例,32位浮点数的模型占用空间 27G,llama.cpp 量化后占用内

    2024年02月16日
    浏览(28)
  • 【类ChatGPT】本地CPU部署中文羊驼大模型LLaMA和Alpaca

    昨天在github上看到一个在本地部署中文大模型的项目,和大家分享一下。先把地址po出来。 项目名称:中文LLaMAAlpaca大语言模型+本地部署 (Chinese LLaMA Alpaca LLMs) 项目地址:https://github.com/ymcui/Chinese-LLaMA-Alpaca 以下是原github中给出的体验GIF,可以看到这个模型还是具备一定的指令

    2023年04月23日
    浏览(39)
  • 手把手教你本地CPU环境部署清华大模型ChatGLM-6B,利用量化模型,本地即可开始智能聊天,达到ChatGPT的80%

    大家好,我是微学AI,今天教你们本地CPU环境部署清华大ChatGLM-6B模型,利用量化模型,每个人都能跑动大模型。ChatGLM-6B是一款出色的中英双语对话模型,拥有超过62亿个参数,可高效地处理日常对话场景。与GLM-130B模型相比,ChatGLM-6B在对话场景处理能力方面表现更加卓越。此

    2024年02月01日
    浏览(34)
  • 【大模型】大模型 CPU 推理之 llama.cpp

    描述 The main goal of llama.cpp is to enable LLM inference with minimal setup and state-of-the-art performance on a wide variety of hardware - locally and in the cloud. Plain C/C++ implementation without any dependencies Apple silicon is a first-class citizen - optimized via ARM NEON, Accelerate and Metal frameworks AVX, AVX2 and AVX512 support for x86 arc

    2024年04月14日
    浏览(34)
  • 【chatglm2】使用Python在CPU环境中运行 chatglm.cpp 可以实现本地使用CPU运行chatglm2模型,速度也特别的快可以本地部署,把现有项目进行AI的改造。

    https://github.com/li-plus/chatglm.cpp.git 这个项目和llama.cpp 项目类似,使用C++ 去运行模型的。 项目使用了 ggml 这个核心模块,去运行的。 可以支持在 cpu 上面跑模型。 ChatGLM2-6B 是开源中英双语对话模型 ChatGLM-6B 的第二代版本,在保留了初代模型对话流畅、部署门槛较低等众多优秀

    2024年02月08日
    浏览(80)
  • 【LLM】Windows本地CPU部署民间版中文羊驼模型(Chinese-LLaMA-Alpaca)踩坑记录

    目录 前言 准备工作 Git  Python3.9  Cmake 下载模型  合并模型 部署模型  想必有小伙伴也想跟我一样体验下部署大语言模型, 但碍于经济实力, 不过民间上出现了大量的量化模型, 我们平民也能体验体验啦~, 该模型可以在笔记本电脑上部署, 确保你电脑至少有16G运行内存 开原地址

    2024年02月04日
    浏览(55)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包