AI 开放平台

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

在此芯P1上使用Vulkan加速llama.cpp推理

此芯: P1

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上运行大语言模型,降低了部署门槛。

Vulkan:高性能跨平台图形与计算 API

Vulkan是由Khronos Group主导开发的下一代跨平台图形与计算API,于 2016年正式发布。它被视为OpenGL的继任者,专注于提供更低开销更细粒度硬件控制多平台支持,适用于游戏引擎、专业图形工具和高性能计算场景。

核心特性

  • 跨平台兼容性

    • 支持WindowsLinuxAndroidmacOS/iOS(通过 MoltenVK 转换层)等系统
    • 覆盖PC移动设备嵌入式系统游戏主机(如Nintendo Switch)
  • 显式硬件控制

    • 开发者直接管理内存分配线程同步GPU 指令队列
    • 减少驱动层抽象开销,最大化发挥硬件性能(相比OpenGL性能提升可达30%+)
  • 多线程友好设计

    • 原生支持 并行命令录制,充分利用多核CPU资源
    • 突破传统图形API的单线程瓶颈
  • 统一图形与计算

    • 集成 计算着色器(Compute Shader)支持通用GPU计算(GPGPU)
    • 可替代OpenCL进行机器学习推理加速等任务
  • 现代GPU功能支持

    • 光线追踪(Vulkan Ray Tracing,需VK_KHR_ray_tracing扩展)
    • 网格着色器(Mesh Shader)、可变速率着色(VRS)等次世代渲染技术

基于星睿O6部署llama.cpp

克隆仓库

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

安装编译工具

sudo apt install cmake gcc g++

编译项目

瑞莎星睿O6搭载Mali-G720-Immortalis GPU。可以使用GGGML_VULKAN打开Vulkan相关编译选项。

cmake -B build -DGGML_VULKAN=ON
cmake --build build --config Release -j8

模型准备和部署

下载 Huggingface模型

这里以 DeepSeek-R1-Distill-Qwen-1.5B 为例子。

请使用 git LFS 克隆仓库

git lfs install
git clone https://huggingface.co/deepseek-ai/DeepSeek-R1-Distill-Qwen-1.5B

生成GGUF模型

:::tip
推荐使用python3.11以上版本
:::

cd llama.cpp
pip3 install -r ./requirements.txt
python3 convert_hf_to_gguf.py DeepSeek-R1-Distill-Qwen-1.5B/

量化模型

cd build/bin
./llama-quantize DeepSeek-R1-Distill-Qwen-1.5B-F16.gguf DeepSeek-R1-Distill-Qwen-1.5B-Q4_K_M.gguf Q4_K_M

运行 GGUF 模型

cd build/bin
./llama-cli -m DeepSeek-R1-Distill-Qwen-1.5B-Q4_K_M.gguf
> hi, who are you
<think>

</think>

Hi!I'm DeepSeek-R1, an artificial intelligence assistant created by DeepSeek. I'm at your service and would be delighted to assist you with any inquiries or tasks you may have.

GGUF 基准测试

radxa@orion-o6:~/llama.cpp$ ./build/bin/llama-bench -m ~/models/DeepSeek-R1-Distill-Qwen-1.5B-Q4_K_M.gguf -t 8
ggml_vulkan: Found 1 Vulkan devices:
ggml_vulkan: 0 = Mali-G720-Immortalis (Mali-G720-Immortalis) | uma: 1 | fp16: 1 | warp size: 16 | shared memory: 32768 | matrix cores: none
| model                          |       size |     params | backend    | ngl | threads |          test |                  t/s |
| ------------------------------ | ---------: | ---------: | ---------- | --: | ------: | ------------: | -------------------: |
| qwen2 1.5B Q4_K - Medium       |   1.04 GiB |     1.78 B | Vulkan     |  99 |       8 |         pp512 |        232.45 ± 0.22 |
| qwen2 1.5B Q4_K - Medium       |   1.04 GiB |     1.78 B | Vulkan     |  99 |       8 |         tg128 |         21.93 ± 0.67 |

通过与CPU推理对比,使用Mali GPU + Vulkan,可以使得llama.cpp Prefill阶段的速度提升明显,同时也能减少宝贵CPU资源占用。