用 llama.cpp 体验 Meta 的 Llama AI 模型

继续体验 Meta 开源的 Llama 模型,前篇 试用 Llama-3.1-8B-Instruct AI 模型 直接用 Python 的 Tranformers 和 PyTorch 库加载 Llama 模型进行推理。模型训练出来的精度是 float32, 加载时采用的精度是 torch.bfloat16。

注:数据类型 torch.float32, torch.bfloat16, 与 torch.float16 有不同的指数(Exponent),尾数(Fraction)宽度, 它们都有一位是符号位,所以剩下的分别为指数位和尾数位宽度, torch.float32(8, 23), torch.bfloat16(8, 7), torch.float16(5, 10)。

模型依赖于 GPU 的显存,根据经验, 采用 16 位浮点数加载模型的话,推理所需显存大小(以 GB 为单) 是模型参数量(以 10 亿计) 的两倍,如 3B 模型需要约 6G 显存。如果对模型进一步量化,如精度量化到 4 位整数,则所需显存大小降为原来的 1/4 到 1/3, 意味着 3B 模型只要 2 G 显存就能进行推理。所以我们可以把一个 3B 的模型塞到手机里去运行,如果是 1B 的模型 int4 量化后内存占用不到 1G(0.5 ~ 0.67)。

本文体验 llama.cpp 对模型进行推理,在 Hugging Face 的用户设置页面 

`llama.cpp` 是一个用 C/C++ 实现的、可以在 CPU 上运行大语言模型(如 LLaMALlama2、Llama3 等)的开源项目,它支持量化模型以在消费级设备上高效运行。要使用 `llama.cpp` 下载并运行大模型,你需要完成以下步骤: --- ### ✅ 步骤 1:克隆 `llama.cpp` 仓库 ```bash git clone https://github.com/ggerganov/llama.cpp cd llama.cpp ``` --- ### ✅ 步骤 2:编译 `llama.cpp` #### Linux/macOS 编译: ```bash make clean && make -j ``` #### Windows(使用 MSYS2 或 MinGW): ```bash mingw32-make clean && mingw32-make -j ``` > 或者使用 CMake 构建(推荐用于高级用户)。 --- ### ✅ 步骤 3:下载大模型(Hugging Face) `llama.cpp` 本身不提供模型权重,你需要从 Hugging Face 或其他可信渠道获取模型(需申请 Meta 授权才能下载原始 LLaMA 模型)。但社区有许多基于 LLaMA 微调的开放模型,例如: - **TheBloke/Llama-2-7B-Chat-GGUF** - **TheBloke/Mistral-7B-Instruct-v0.1-GGUF** - **TheBloke/Phi-3-mini-4K-instruct-GGUF** 这些模型已经由 [TheBloke](https://huggingface.co/TheBloke) 量化为 GGUF 格式(`llama.cpp` 所需格式),可直接使用。 #### 示例:下载 TheBloke 的 Llama-2-7B-Chat-GGUF 模型 ```bash # 进入 models 目录(建议创建) mkdir models && cd models # 使用 wget 或 curl 下载(以 q4_0 量化为例) wget https://huggingface.co/TheBloke/Llama-2-7B-Chat-GGUF/resolve/main/llama-2-7b-chat.Q4_0.gguf # 或使用 hf-cli(推荐方式) pip install huggingface-hub huggingface-cli download TheBloke/Llama-2-7B-Chat-GGUF llama-2-7b-chat.Q4_0.gguf --local-dir ./llama-2-7b-chat ``` > ⚠️ 注意:你必须遵守 Meta 和 Hugging Face 的许可协议。 --- ### ✅ 步骤 4:运行模型 回到 `llama.cpp` 根目录,运行: ```bash ./main -m models/llama-2-7b-chat/llama-2-7b-chat.Q4_0.gguf -p "Hello, how are you?" -n 512 ``` #### 参数说明: - `-m`: 指定模型路径 - `-p`: 输入提示(prompt) - `-n`: 最多生成 token 数量 - `--interactive`: 启用交互模式 - `--color`: 彩色输出 #### 交互模式示例: ```bash ./main -m models/llama-2-7b-chat/llama-2-7b-chat.Q4_0.gguf --interactive --color ``` --- ### ✅ 完整脚本示例(自动下载 + 运行) ```bash #!/bin/bash # download_and_run.sh MODEL_DIR="models/llama-2-7b-chat" MODEL_FILE="$MODEL_DIR/llama-2-7b-chat.Q4_0.gguf" URL="https://huggingface.co/TheBloke/Llama-2-7B-Chat-GGUF/resolve/main/llama-2-7b-chat.Q4_0.gguf" mkdir -p $MODEL_DIR if [ ! -f "$MODEL_FILE" ]; then echo "Downloading model..." wget -O "$MODEL_FILE" "$URL" else echo "Model already exists." fi echo "Running model..." ./main -m "$MODEL_FILE" -p "Tell me a joke about AI" -n 256 --temp 0.7 ``` --- ### 🔍 补充说明 - **GGUF**:是 `llama.cpp` 使用的新格式,取代旧的 GGML,支持更多元数据和模型结构。 - **量化等级**: - `Q4_0`: 4-bit,小体积,性能尚可(推荐入门) - `Q5_0`, `Q6_0`: 更高质量 - `Q8_0`: 接近 FP16,体积大 - 可通过 [TheBloke 页面](https://huggingface.co/TheBloke) 查找你喜欢的模型的 GGUF 版本。 --- ### 🧰 常见问题排查 | 问题 | 解决方法 | |------|---------| | `No such file or directory` | 确保模型路径正确 | | `bad magic number` | 文件损坏或不是 GGUF 格式 | | 编译失败 | 安装 build-essential / Xcode command line tools | --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值