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配
<think>好的,用户现在问的是关于DeepSeek 1.5b模型的不同GGUF文件之间的区别。之前他们遇到了Ollama报错不支持`from`关键字的问题,现在转向模型权重文件的问题,可能他们在尝试加载或转换模型时遇到了问题,或者在选择合适的GGUF文件时感到困惑。 首先,我需要回忆GGUF是什么。GGUF是GGML团队推出的新格式,替代了之前的GGML,支持更好的扩展性和元数据。用户可能知道GGUF用于在CPU上高效推理,尤其是在资源有限的环境下。 接下来,用户提到的DeepSeek 1.5b模型,我需要确认这个模型是否存在不同的GGUF变体。通常,同一个模型会有不同量化级别的GGUF文件,比如Q4_K_M、Q5_K_S等。不同量化影响模型大小和推理速度、内存需求以及精度。 需要解释每个量化级别的含义,比如Q4、Q5中的数字代表位数,后缀如K_M或K_S代表不同的量化方法。例如,Q4_K_M可能比Q5_K_S更小但精度更低。同时,可能需要提到不同量化对硬件的要求,比如低量化需要更多内存但更快,而高量化可能更慢但更精确。 另外,用户可能想知道如何选择适合自己需求的GGUF文件。需要根据他们的硬件置(如RAM大小、是否使用GPU)和需求(速度vs精度)来推荐。比如,如果内存有限,Q4可能更合适;如果追求质量,Q5或Q6更好。 还要考虑是否有其他因素影响GGUF文件的不同,比如是否包含或不包含某些层的优化,或者是否针对特定指令集编译。例如,AVX2或CUDA加速的支持,这可能影响文件的选择。 可能需要提醒用户查看模型的文档或来源(如Hugging Face),确认不同GGUF文件的具体信息,因为命名可能因发布者而异。此外,建议用户测试不同量化版本,观察性能和效果的平衡。 最后,用户可能在使用Ollama时遇到问题,之前的问题是关于Modelfile的,现在可能在尝试加载不同的GGUF文件时遇到问题,所以需要确保他们正确置了Ollama的Modelfile,引用了正确的GGUF文件路径,并使用了适当的参数。 总结回答的结构:先介绍GGUF格式,然后解释量化级别及其影响,再具体到DeepSeek 1.5b的不同GGUF文件,最后给出选择建议和注意事项。</think>看到 **DeepSeek-1.5B** 模型的不同 **GGUF** 文件(如 `Q4_K_M`、`Q5_K_S` 等)时,这些文件的主要区别在于 **量化方法** 和 **精度级别**。量化是为了在保持模型性能的同时,减少模型体积和内存占用,使其能在 CPU 或低显存 GPU 上高效运行。 以下是不同 GGUF 文件的常见区别: --- ### **1. 量化方法(Quantization Method)** GGUF 文件通常以 `Q{X}_{Y}` 格式命名(例如 `Q4_K_M`、`Q5_K_S`),其中: - **`Q{X}`**:表示量化的比特位数,数值越小,模型体积越小,但精度损失越大。 - **`_{Y}`**:表示量化算法的变体(如 `K_M`、`K_S`),不同变体在精度和速度之间权衡不同。 #### **常见量化级别** | 量化级别 | 比特数 | 典型体积 | 适用场景 | |--|----------| | `Q2_K` | 2-bit | 最小 | 超低内存设备,但精度损失明显 | | `Q3_K` | 3-bit | 较小 | 内存紧张,可接受一定误差 | | `Q4_K` | 4-bit | 中等 | 平衡体积与精度(推荐大多数场景) | | `Q5_K` | 5-bit | 较大 | 接近原始 FP16 精度,需要更多内存 | | `Q6_K` | 6-bit | 最大 | 几乎无损,适合高质量生成 | #### **量化变体** - **`K_S`(K-Small)**:更小的体积,但精度稍低。 - **`K_M`(K-Medium)**:平衡体积与精度。 - **`K_L`(K-Large)**:更大体积,更高精度。 --- ### **2. DeepSeek-1.5B 的 GGUF 文件区别** 以常见的 DeepSeek-1.5B GGUF 文件为例: - **`deepseek-1.5b-Q4_K_M.gguf`** 使用 4-bit 量化,中等体积和精度,适合大多数 CPU 推理场景。 - **`deepseek-1.5b-Q5_K_S.gguf`** 5-bit 量化,体积略大但精度更高,适合需要更高质量输出的场景。 - **`deepseek-1.5b-Q6_K.gguf`** 6-bit 接近无损量化,体积最大,适合对生成质量要求极高的任务。 -- ### **3. 如何选择?** - **低内存/轻量化需求**:选 `Q4_K_M` 或 `Q3_K_M`。 - **平衡性能与质量**:选 `Q5_K_M`。 - **追求最高质量**:选 `Q5_K_S` 或 `Q6_K`(需确保内存足够)。 - **嵌入式设备/边缘计算**:选 `Q2_K`。 --- ### **4. 实际影响** - **推理速度**:量化级别越低(如 Q2),计算速度通常越快。 - **内存占用**:量化级别越低,内存占用越少(例如 Q4 比 Q6 节省约 30% 内存)。 - **生成质量**:低量化可能导致输出重复、逻辑错误或细节丢失(尤其在复杂任务中)。 --- ### **5. 使用建议** 1. **测试对比**:如果资源允许,尝试不同量化版本,观察生成质量是否符合需求。 2. **硬件匹**: - 内存 < 8GB:优先选 Q4 或更低。 - 内存 ≥ 16GB:可尝试 Q5/Q6。 3. **任务类型**: - 简单问答/摘要:Q4 足够。 - 代码生成/逻辑推理:建议 Q5 或更高。 -- ### **附:GGUF 文件命名示例** ``` deepseek-1.5b-Q4_K_M.gguf # 4-bit 中等量化 deepseek-1.5b-Q5_K_S.gguf # 5-bit 小体积量化 deepseek-1.5b-f16.gguf # 原始 FP16 未量化(需高性能 GPU) ``` 如果需要下载或转换 GGUF 文件,可以参考 [llama.cpp](https://github.com/ggerganov/llama.cpp) 或 [Hugging Face 社区模型库](https://huggingface.co/models)
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值