当前位置:AIGC资讯 > AIGC > 正文

llama.cpp本地部署大模型

llama.cpp 是一个C++库,用于简化LLM推理的设置,它使得在本地机器上运行大模型(GGUF格式)成为可能。

官网:https://github.com/ggerganov/llama.cpp

模型库:

https://huggingface.co/

HF-Mirror

魔搭社区

安装并且使用llama.cpp

0.安装llama.cpp

官方文档:https://github.com/ggerganov/llama.cpp/blob/master/docs/build.md

git clone https://github.com/ggerganov/llama.cpp

cd llama.cpp

make -j 8

1. 下载模型(HF)

# obtain the official LLaMA model weights and place them in ./models/mymodels

sudo yum install git-lfs

git lfs install

git clone 魔搭社区

2. 转换与量化

官方文档:https://github.com/ggerganov/llama.cpp/blob/master/examples/quantize/README.md

将HuggingFace的safetensors格式的模型文件转换成gguf格式才能使用llama.cpp推理。最新版本只能用convert-hf-to-gguf.py来转换,convert.py已经过期了。

#install Python dependencies

python -m pip install -r requirements.txt

#convert the model to ggml FP16 format

python3 convert_hf_to_gguf.py ./models/mymodels/glm-4-9b-chat

#quantize the model to 4-bits (using Q4_K_M method)

./llama-quantize ./models/mymodels/glm-4-9b-chat/glm-4-9B-chat-F16.gguf ./models/mymodels/glm-4-9b-chat/glm-4-9B-chat_Q4_K_M.gguf Q4_K_M

3.模型加载与推理

官方文档: https://github.com/ggerganov/llama.cpp

#You can run a basic completion using this command

./llama-cli -m ./models/mymodels/glm-4-9B-chat/glm-4-9B-chat_Q4_K_M.gguf -p "I believe the meaning of life is" -n 2048

#Like ChatGPT-like experience, you can run in conversation mode by passing -cnv as a parameter

./llama-cli -m ./models/mymodels/glm-4-9B-chat/glm-4-9B-chat_Q4_K_M.gguf -cnv -c 2048 --temp 0.2 -n 2048 -p "你是一个作家助手"

# If you want to use another chat template, pass --chat-template NAME as a parameter../llama-cli -m ./models/mymodels/glm-4-9B-chat/glm-4-9B-chat_Q4_K_M.gguf -p "You are a helpful assistant" -cnv --chat-template chatml -cnv -c 2048 --temp 0.2 -n 2048

#Web server

./llama-server -m ./models/mymodels/gemma_2_chinese_chat_q8_0.gguf --port 8080 --host 192.168.19.180 -c 2048 --temp 0.2 -n 2048

-c 2048: 设置上下文长度为 2048。这决定了模型在推理时可以参考的上下文范围。 --temp 0.2: 设置采样温度为 0.2。较低的温度通常会使输出更加保守和确定性更高。 -n 2048: 设置生成的最大token数为 2048。即模型生成的文本最多包含2048 个 token。

# Basic web UI can be accessed via browser: http://192.168.19.180:18080

# Chat completion endpoint: http://192.168.19.180:18080/v1/chat/completions

#关闭web server

使用 Ctrl+C 组合键 或者 ps aux | grep llama-server 再kill.

总结

**文章总结:llama.cpp——C++库简化大模型推理**
`llama.cpp` 是一个C++库,旨在轻松配置和运行大语言模型(LLMs),特别是在本地机器上,支持GGUF格式的模型。该库的 GitHub 仓库为:[https://github.com/ggerganov/llama.cpp](https://github.com/ggerganov/llama.cpp)。模型资源可以从多个源获取,包括 Hugging Face 模型库([https://huggingface.co/](https://huggingface.co/))及其镜像,以及魔搭社区。
### 安装与使用步骤
1. **安装llama.cpp**
- 克隆 GitHub 仓库并编译:`git clone https://github.com/ggerganov/llama.cpp` 后进入目录并执行 `make -j 8` 完成编译。
2. **下载模型**
- 通过 `git lfs` 安装并使用,获取 Hugging Face 模型并放置在指定文件夹(例如 ./models/mymodels)。
- 注意:根据版本要求,可能需要特别注意模型的下载和放置路径。
3. **模型转换与量化**
- 使用 Python 脚本 `convert_hf_to_gguf.py` 将 Hugging Face 的 safetensors 格式模型转化为 llama.cpp 支持的 gguf 格式。
- 进行模型量化,使用 `llama-quantize` 工具进一步优化模型大小和执行效率,例如通过 Q4_K_M 方法将模型量化为 4 位。
4. **模型加载与推理**
- 使用命令行工具 `llama-cli` 进行基础或对话模式的推理,通过命令行参数调整模型参数,如输出长度、采样温度和上下文长度。
- 示例命令展示了如何进行基础文本补全和对话模式输入,并且提供了如何使用不同聊天模板的选项。
5. **运行Web服务器**
- 使用 `llama-server` 启动 Web 服务器,通过 HTTP 接口提供模型推理服务,可以选择指定端口和主机地址。
- 提供基本的 Web UI 访问地址和聊天补全 API 端点。
- 关闭 Web 服务器时,可以使用 Ctrl+C 或通过系统命令找到进程并杀死。
### 关键点与参数解释
- `-c 2048`: 设置上下文长度为 2048 tokens。
- `--temp 0.2`: 设置采样温度,数值越小输出结果越保守。
- `-n 2048`: 生成的最大 token 数为 2048。
通过这些步骤,用户教师可以在本地部署并运行大语言模型,享受如同 ChatGPT 般的对话体验和功能。

更新时间 2024-09-12