# 					 				   llama.cpp

![cover](imgs/cover.png)

## 简介

**项目目标**

*llama.cpp*主要目标是在最小化设置和硬件上实现大规模语言模型（LLM）的推理，并在本地和云端都能达到最先进的性能.

**技术特点**

- **无依赖的 C/C++ 实现**：项目提供了纯 C/C++ 实现，没有外部依赖。
- **DCU 支持**：通过 HIP 和 Moore Threads 支持 DCU。
- **CPU+DCU 混合推理**：支持 CPU+DCU 混合推理，用于部分加速模型，特别是当模型大小超过显存容量时。
- **整数量化**：支持 1.5 位、2 位、3 位、4 位、5 位、6 位和 8 位整数量化，以加快推理速度并减少内存使用。



## 环境准备

**docker**

```shell
docker pull image.sourcefind.cn:5000/dcu/admin/base/pytorch:2.3.0-py3.10-dtk24.04.3-ubuntu20.04

docker run -i -t -d  --device=/dev/kfd --privileged --network=host --device=/dev/dri --cap-add=SYS_PTRACE --security-opt seccomp=unconfined -v 容器外地址:容器内地址 -v /opt/hyhal:/opt/hyhal:ro  --group-add video --shm-size 16G --name {容器名} {镜像ID}
```

**下载源码**

```bash
git clone http://developer.sourcefind.cn/codes/OpenDAS/llama.cpp.git -b branch #分支号
```

**安装依赖**

```bash
cd llama.cpp
pip install -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple
```

**编译**

```bash
export LIBRARY_PATH=/opt/dtk/llvm/lib/clang/15.0.0/lib/linux/:$LIBRARY_PATH
sh bianyi.sh
```



## **模型格式转换**

```bash
python convert_hf_to_gguf.py  /path/to/model    #同目录下生成model.gguf
```



## **运行**

```bash
cd build/bin

#方式一 命令行界面：
./llama-cli -m /path/to/model.gguf -ngl 9999 -fa -co -p "You are a helpful assistant" -cnv

#方式二 server：
./llama-server -m /path/to/model.gguf -ngl 9999 -fa --port 8080  
```



## **性能测试**

```bash
./llama-batched-bench -m /path/to/model.gguf -pps -c 0 -ngl 9999 -npp 2 -ntg 2000 -npl 1 -fa
```

> [!NOTE]
>
> 参数含义可--help查看



**参考资料**

[https://github.com/ggerganov/llama.cpp/tree/b4160?tab=readme-ov-file](/path/to/model.gguf)