目录
目录README.md

赛题题目:面向大模型应用的RISC-V向量和矩阵扩展算子优化

赛题说明:

DeepSeek等模型的兴起推动了端侧大模型的发展,而RISC-V架构凭借其开放性和可扩展性,在端侧推理终端中逐步占据一席之地。优化RISC-V端侧大模型推理技术,不仅能提升推理性能,还能推动RISC-V操作系统AI生态的完善,加速RISC-V智能操作系统的发展。 本赛题旨在通过优化大模型应用中的核心算子,在 RISC-V 架构上实现高效的推理性能,充分利用RISC-V向量和矩阵扩展指令集,以及多核计算体系架构,进一步提升大模型推理的计算速度和吞吐量。 推理框架方面,参赛者可以选择llama.cpp开源框架。操作系统环境为开源操作系统,要求参赛者基于此系统进行开发,提供全方位的优化方案。

赛题要求:

  • 基于RISC-V架构的向量和矩阵扩展指令,针对llama.cpp推理框架进行大模型核心算子优化。
  • 利用多核并行计算技术,从算子层面加速推理性能,提高多核架构的资源利用率。
  • 基于开源操作系统上进行开发和测试,确保兼容性和稳定性。
  • 提供优化前后性能对比数据,展示优化效果。
  • 代码需遵循开源协议,提交至大赛指定代码仓库,并附带详细的文档说明,包括实现原理、优化思路和使用指南。

评分标准:

功能完整性(40%):

  • 提供针对性的优化方案,使用RISC-V向量以及矩阵两种扩展(30分);
  • 优化算子包括GEMM、激活函数、数学运算。算子在推理框架中能够正确执行,并输出正确的结果(20分);
  • 如优化其余算子,并保证其正确性,可额外加分(20分);
  • 利用RISC-V多核特性加速算子计算,优化技术包括多核协同计算、流水线并行等(30分)。

性能优化(30%):

  • 推理时间减少超过50%(40分);
  • 计算资源CPU占用降低超过10%(30分);
  • 吞吐量提升超过20%(30分)。

代码规范性(20%):

  • 代码结构清晰,模块化设计,便于维护和扩展,且必须完全开源(60分);
  • 注释完整性,特别是复杂逻辑部分(40分)。

文档质量(10%):

  • 文档详细清晰,包含安装方式及使用方法(50分);
  • 文档标明其创新性(50分)。

赛题联系人:

李可 li_ke@hl-it.cn

参考资料:

参赛资源支持:

════════════════════════════════════════════════════════════════════════════════════════════════

项目安装指南

硬件平台

本项目基于 Lichee Pi 4A 开发,配置如下表所示:

Lichee Pi 4A 参数说明
SoC SpacemiT TH1520
CPU 核心 4 × Xuantie C910,64-bit RISC-V
向量扩展 RVV 0.7,支持最大 m8 向量宽度
内存 16GB LPDDR4X
存储 128GB eMMC + 可扩展 NVMe
操作系统 OpenKylin 2.0 SP1

交叉编译链

新版 GCC 中虽然有了 XTheadVector 的支持,但部分指令与 RVV0p7 是不对应的。强行使用 XTheadVector 会导致编译错误。因此,我们需要使用 RVV0p7 的工具链。

cd ~
// 下载编译链压缩包
wget https://mirror.iscas.ac.cn/ruyisdk/dist/RuyiSDK-20240222-T-Head-Sources-T-Head-2.8.0-HOST-riscv64-linux-gnu-riscv64-plctxthead-linux-gnu.tar.xz

// 解压
tar -xvf RuyiSDK-20240222-T-Head-Sources-T-Head-2.8.0-HOST-riscv64-linux-gnu-riscv64-plctxthead-linux-gnu.tar.xz

cd RuyiSDK-20240222-T-Head-Sources-T-Head-2.8.0-HOST-riscv64-linux-gnu-riscv64-plctxthead-linux-gnu/bin

// 设置环境变量
export PATH=$(pwd):$PATH

下载项目源码

git clone https://gitlink.org.cn/cufish/mxdmxyydrvxlhjzkzszyh.git
//cd至项目根目录
cd

编译项目

// 构建
CC=riscv64-plctxthead-linux-gnu-gcc CXX=riscv64-plctxthead-linux-gnu-g++ cmake -B build -DGGML_XTHEADVECTOR=ON -DLLAMA_CURL=OFF  -DGGML_OPENMP=OFF -DCMAKE_BUILD_TYPE=Release

// 如果报错permission denied,就使用sudo运行,但sudo会使设置的临时环境变量失效,因此需要指定编译器的路径
sudo CC=path-to-riscv64-plctxthead-linux-gnu-gcc CXX=path-to-riscv64-plctxthead-linux-gnu-g++ cmake -B build -DGGML_XTHEADVECTOR=ON -DLLAMA_CURL=OFF  -DGGML_OPENMP=OFF -DCMAKE_BUILD_TYPE=Release

// 生成可执行文件,可在命令最后添加-j {线程数}
cmake --build build

Quick Start

以运行llama-cli为例。默认模型文件存放在models文件夹

./build/bin/llama-cli -m models/Qwen3-1.7B-f16.gguf  // 运行后会进入聊天交互

优化思路图

优化思路图

性能对比

模型以Qwen3-1.7B为例

吞吐量(tokens/s)

模型 Scalar RVV 加速比
f16 0.13 1.292557 8.942748
Q2_K 0.51 1.708 2.34902
Q3_K_M 0.39 1.700135 3.35932
Q4_K_M 0.5 1.717126 2.434252
Q5_K_M 0.37 1.714986 3.635098
Q6_K 0.47 1.713921 2.64664
Q8 0.93 1.222885 0.31493

推理时间(s)

模型 Scalar RVV 提升率
f16 1046.343 109.2639 89.56%
Q2_K 263.0219 74.07614 71.84%
Q3_K_M 347.5588 66.5046 80.87%
Q4_K_M 265.7534 82.11468 69.10%
Q5_K_M 364.155 82.21722 77.42%
Q6_K 289.8859 75.13979 74.08%
Q8 137.9625 115.3163 16.41%

CPU计算资源占用

模型 Scalar RVV CPU占用率下降比例
f16 97.24% 88.85% 8.63%
Q2_K 92.71% 79.39% 14.37%
Q3_K_M 94.61% 82.93% 12.35%
Q4_K_M 92.51% 86.74% 6.24%
Q5_K_M 77.06% 60.30% 21.75%
Q6_K 93.21% 83.93% 9.96%
关于
1.3 GB
邀请码
    Gitlink(确实开源)
  • 加入我们
  • 官网邮箱:gitlink@ccf.org.cn
  • QQ群
  • QQ群
  • 公众号
  • 公众号

©Copyright 2023 CCF 开源发展委员会
Powered by Trustie& IntelliDE 京ICP备13000930号