5.llama.cpp编译及使用

本文详细介绍了如何下载并编译llama.cpp项目,包括依赖库的安装、CUDA支持、模型下载、量化、转换和推理过程,以及不同模型如Meta-LLama和Linly的使用方法和关键参数设置。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

llama.cpp的编译及使用

下载源码

  • llama.cpp
https://github.com/ggerganov/llama.cpp
  • ggml 向量库
https://github.com/ggerganov/ggml

安装依赖库

  • cmake 编译:版本稍高一些,我的是3.22

编译

支持cuda

cd llama.cpp
mkdir build
cd build
cmake .. -DLLAMA_CUBLAS=ON
make -j8

最后在build/bin目录下生成

下载模型

  • meta官网下载,贼麻烦
https://ai.meta.com/llama/
https://huggingface.co/meta-llama
  • huggingface下载
https://huggingface.co/
  • Linly: 国内Linly开源
https://github.com/CVI-SZU/Linly

模型量化

模型量化的python代码在llama.cpp下面找到。在硬件资源有限的情况下才对模型进行量化。
在build/bin找到quantize

  • 模型下载
https://huggingface.co/meta-llama/Llama-2-7b-hf
  • 模型转换
    convert the 7B model to ggml FP16 format 默认做当前目录下生成ggml模型ggml-model-f16.bin
python convert.py models/llama-2-7b-hf/ 

在较新版本默认生成的是ggml-model-f16.gguf

  • 模型量化
    quantize the model to 4-bits (using q4_0 method) 进一步对FP16模型进行4-bit量化
./quantize ./models/llama-2-7b-hf/ggml-model-f16.bin ./models/llama-2-7b-hf/ggml-model-q4_0.bin q4_0

模型推理

在build/bin找到main

./main -ngl 30 -m ./models/llama-2-7b-hf/ggml-model-q4_0.bin --color -f  ./prompts/chat-with-vicuna-v0.txt -ins -c 2048 --temp 0.2 -n 4096 --repeat_penalty 1.0

Linly模型

自己动手处理

运行测试

  • 测试用脚本
#!/bin/bash

# llama 推理
#./main -ngl 30 -m ./models/7B/ggml-model-alpaca-7b-q4_0.gguf --color  -f  ./prompts/chat-with-vicuna-v0.txt -ins -c 2048 --temp 0.2 -n 4096 --repeat_penalty 1.3

# linly 基础模型
#./main -ngl 30 -m ./models/7B/linly-ggml-model-q4_0.bin --color  -f  ./prompts/chat-with-vicuna-v0.txt -ins -c 2048 --temp 0.2 -n 4096 --repeat_penalty 1.0

# linly chatflow模型
./main -ngl 30 -m ./models/chatflow_7b/linly-chatflow-7b-q4_0.bin --color  -f  ./prompts/chat-with-vicuna-v0.txt -ins -c 2048 --temp 0.2 -n 4096 --repeat_penalty 1.0

# whisper llama
#./whisper/talk-llama -l zh -mw ./models/ggml-small_q4_0.bin -ml ./models/7B/ggml-model-alpaca-7b-q4_0.gguf -p "lfrobot" -t 8 -c 0 -vth 0.6 -fth 100 -pe
  • 参数说明
    比较重要的参数:
-ins    启动类ChatGPT的对话交流模式
-f      指定prompt模板,alpaca模型请加载prompts/alpaca.txt 指令模板
-c      控制上下文的长度,值越大越能参考更长的对话历史(默认:512)
-n      控制回复生成的最大长度(默认:128)
--repeat_penalty 控制生成回复中对重复文本的惩罚力度
--temp  温度系数,值越低回复的随机性越小,反之越大
--top_p, top_k  控制解码采样的相关参数
-b      控制batch size(默认:512)
-t      控制线程数量(默认:8),可适当增加
-ngl    使用cuda核心数
-m      指定模型
### 编译 llama.cpp 的教程 为了成功编译 `llama.cpp`,需要按照特定的操作系统环境准备依赖项并执行相应的构建命令。以下是详细的说明: #### 准备工作 首先克隆 `llama.cpp` 仓库到本地环境中: ```bash git clone https://github.com/ggerganov/llama.cpp cd llama.cpp ``` 此操作获取项目源码[^1]。 #### 安装必要的工具链 对于基于 Linux 的系统,可能需要安装 CMake 和其他开发工具包。如果系统的默认版本较旧,则可以手动更新至最新稳定版。例如,在 CentOS 或 RHEL 上可以通过以下方式完成安装: ```bash yum install -y gcc-c++ ncurses-devel openssl-devel wget https://cmake.org/files/v3.16/cmake-3.16.3.tar.gz tar xzf cmake-3.16.3.tar.gz cd cmake-3.16.3 ./bootstrap --prefix=/usr/local/cmake-3.16.3 make -j$(nproc) make install export PATH=/usr/local/cmake-3.16.3/bin:$PATH ``` 上述脚本确保了所需的编译器支持以及适当配置后的 CMake 工具可用性[^2]。 #### 构建过程 进入已下载的目录后运行 Makefile 来生成二进制文件: ```bash make ``` 如果有 GPU 加速需求或者希望优化性能参数设置时,还可以通过传递额外选项给 make 命令来定制化构建流程。比如启用 AVX 指令集加速推理速度等高级特性。 另外需要注意的是,当处理大规模模型如 LLaMA70B 并将其部署于多节点集群上时,除了基本的单机编译外还需要考虑分布式计算框架的支持情况。这通常涉及调整分区策略(tensor parallelism & pipeline parallelism),并通过专门设计好的转换脚本来预处理权重数据以便适配目标硬件架构[^3]。 最终得到可执行程序位于当前路径下,默认名称为`main`或其他指定输出名。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值