目录
目录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 |

交叉编译链

新版 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  // 运行后会进入聊天交互

优化思路图

优化思路图

关于
602.5 MB
邀请码
    Gitlink(确实开源)
  • 加入我们
  • 官网邮箱:gitlink@ccf.org.cn
  • QQ群
  • QQ群
  • 公众号
  • 公众号

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