AI 开放平台

提供适配不同硬件平台的AI模型,探索更多端侧与边缘侧场景应用

在RK3588上部署llama.cpp大模型进行推理

瑞芯微: RK3588

本文档介绍如何在Firefly ITX-3588J上使用llama.cpp进行大语言模型推理。

ITX-3588J 介绍

Firefly 的 ITX-3588J 是一款基于瑞芯微 RK3588 芯片的高性能开发板,具有强大的计算能力和丰富的接口资源,以下是其详细介绍:

基本参数

  • 芯片 :搭载 RockChip RK3588 八核 64 位处理器,采用 8nm 工艺制程,包含 4 个 Cortex-A76 大核和 4 个 Cortex-A55 小核,主频高达 2.4GHz。
  • GPU :配备 ARM Mali-G610 MP4 四核 GPU,支持 OpenGL ES3.2/ OpenCL 2.2/Vulkan1.1,算力达 450 GFLOPS。
  • NPU :内置 NPU,算力高达 6TOPS,支持 INT4/INT8/INT16 混合运算,可实现基于 TensorFlow、MXNet、PyTorch、Caffe 等系列框架的网络模型转换。
  • 内存 :支持 4GB/8GB/16GB 64bit LPDDR4/LPDDR4x,最高可扩展至 32GB。
  • 存储 :板载 16GB/32GB/64GB/128GB eMMC,同时配备 1×M.2 SATA3.0 接口和 4× 标准 SATA3.0 接口,可扩展多个 SATA3.0 SSD/HDD 硬盘

llama.cpp 介绍

llama.cpp 是一个高性能的开源大语言模型推理框架,由开发者 Georgi Gerganov 基于 Meta 的 LLaMA 模型开发,使用纯 C/C++ 实现,旨在让大语言模型能够在各种硬件平台上高效运行,特别是消费级设备和边缘设备。

主要特点:

  • 模型量化:提供模型量化的工具,可以将模型参数从 32 位浮点数转换为 16 位浮点数,甚至是 8、4 位整数,从而减少模型大小并显著提高推理速度。
  • 跨平台支持:支持广泛的硬件平台,包括 x86_64 CPU 的 AVX、AVX2 和 AVX512 支持,通过 Metal 和 Accelerate 支持 Apple Silicon(CPU 和 GPU),以及 NVIDIA GPU(通过 CUDA)、AMD GPU(通过 hipBLAS)、Intel GPU(通过 SYCL)、昇腾 NPU(通过 CANN)和摩尔线程 GPU(通过 MUSA)等。
  • 高性能推理引擎:使用 C 语言编写的机器学习张量库 ggml,能够高效地处理大规模的张量运算,从而加速模型推理。
  • 无需 GPU:即使在没有 GPU 的情况下,也能在 CPU 上运行大语言模型,降低了部署门槛。

基于RK3588部署llama.cpp

克隆仓库

git clone https://github.com/ggml-org/llama.cpp.git

安装编译工具

sudo apt install cmake gcc g++

编译项目

cmake -B build -DGGML_NATIVE=OFF -DGGML_CPU_ARM_ARCH=armv8-a
cmake --build build --config Release -j8

模型准备和部署

从 Huggingface 下载模型

这里以 phi-2 为例子。
请使用 git LFS 克隆仓库

git lfs install
git clone git clone https://huggingface.co/TheBloke/phi-2-GGUF

选择采用Q4_0方法量化的模型版本:phi-2.Q4_0.gguf

运行基准测试

(base) firefly@firefly:~/llama.cpp$ ./build/bin/llama-bench -m ~/models/phi-2.Q4_0.gguf -t 4
| model                          |       size |     params | backend    | threads |            test |                  t/s |
| ------------------------------ | ---------: | ---------: | ---------- | ------: | --------------: | -------------------: |
| phi2 3B Q4_0                   |   1.49 GiB |     2.78 B | CPU        |       4 |           pp512 |          6.08 ± 0.00 |
| phi2 3B Q4_0                   |   1.49 GiB |     2.78 B | CPU        |       4 |           tg128 |          5.56 ± 0.00 |