Skip to main content

LiteRT RISC-V 架构适配与 RVV 优化

项目描述

LiteRT(原 TensorFlow Lite)是 Google 开源的轻量级机器学习推理框架,专为移动端和边缘设备设计,广泛应用于图像分类、目标检测、自然语言处理等 AI 推理场景。LiteRT 内置了针对 ARM Neon/SVE 的高度优化推理内核,在 ARM 平台上拥有出色的推理性能。

随着 RISC-V 生态的快速发展,RISC-V Vector Extension(RVV 1.0)已成为高性能计算的重要标准。然而 LiteRT 目前对 RISC-V 平台的支持仍较为初级,缺乏系统性的 RVV 向量化优化。

本题要求参赛者将 LiteRT 完整移植至 RISC-V 平台,并利用 RVV 1.0 向量指令对推理内核进行性能加速,填补 RISC-V 在端侧 AI 推理领域的工程空白。

  • 目标架构:RISC-V(RV64GCV,支持 RVV 1.0)
  • 推荐测试环境:QEMU virt 机器(-cpu rv64,v=true,vlen=256)或真实 RISC-V 开发板(如 SG2044、A210 等)
  • 验证平台:A210

评分要求

必做任务

参赛者需完成 LiteRT 的 RISC-V 平台移植,并对 LiteRT 中所有已有 ARM Neon/SVE 优化实现的推理内核完成对应的 RVV 向量化加速。

  • 所有移植内核需通过精度验证,推理结果与参考实现(x86 或 ARM 标量版本)的误差在允许范围内
  • 已实现 ARM Neon/SVE 优化的算子中,至少 90% 需提供 RVV 或内联汇编加速版本实现
  • 支持不同 VLEN(128/256/512 bit)的自适应实现,可利用 RVV 的 vsetvl 灵活向量长度特性
  • 也可实现自动向量长度调优(VLEN 探测 + 运行时分发)
  • 与 ARM Neon 版本进行对比基准测试,并提供完整 benchmark 数据(测试模型不少于 MobileNetV1、MobileNetV2、EfficientDet-Lite0)
  • 适配真实 RISC-V 硬件并提供实测数据,附板卡型号及测试截图/日志
  • 使用 CMake 构建,支持 riscv64-unknown-linux-gnu 交叉编译工具链
  • 验证文档:记录测试方案,用于组委会验证参赛选手的优化成果。

精度要求

验证项标准
FP32 推理(模型级)Top-1 精度与 x86 参考差异 ≤ 0.1%
INT8 量化推理(模型级)Top-1 精度与 x86 参考差异 ≤ 1%
算子级输出(FP32)相对误差 ≤ 1e-5
算子级输出(INT8)差值 ≤ 1 LSB

性能验证

验证项算法
推理延迟(Latency)要求 ≤ 110 ms ,包含:avg(平均)、p50(中位数)、p95(尾延迟)
吞吐率(Throughput)throughput = FPS = batch_size x 1000 / latency_ms
稳定性须包含:std (标准差)、p95 / avg 比值
内存占用Overall footprint 值
启动时间Model initialization 值

代码规范

  • 语言:C/C++(C++17 或以上)
  • RVV 实现:优先使用 RVV Intrinsics<riscv_vector.h>),可辅以内联汇编
  • 必须包含标量(scalar)回退实现,保证无 RVV 环境下可编译运行
  • 代码风格参考 LiteRT 原始代码规范(Google C++ Style Guide)
  • 新增 RVV 内核须通过条件编译(#ifdef __riscv_vector)与通用代码隔离

注意事项

  1. 请确保遵循相关的开源协议和版权规范。
  2. 参赛者需要自行准备开发环境,组委会后续会对参赛者提供 A210 远程调试环境。
  3. 禁止直接搬运已有第三方 RISC-V TFLite/LiteRT 移植代码,须自主实现或明确标注引用来源
  4. 允许参考 LiteRT 原始 ARM Neon 内核实现逻辑,但需进行 RISC-V/RVV 适配
  5. 所有代码须以 Apache 2.0 协议开源(与 LiteRT 保持一致)
  6. 若使用 AI 辅助编写代码,需在提交报告中说明使用方式及占比

参考资料

资源链接
LiteRT v2.1.4 源码https://github.com/rv2036/rvspoc-S2602-litert/tree/v2.1.4
LiteRT 官方文档https://ai.google.dev/edge/litert
RISC-V RVV 1.0 规范https://github.com/riscv/riscv-v-spec
RVV Intrinsics 参考手册https://github.com/riscv-non-isa/rvv-intrinsic-doc
RISC-V GNU 工具链https://github.com/riscv-collab/riscv-gnu-toolchain
QEMU RISC-V 文档https://www.qemu.org/docs/master/system/target-riscv.html
LiteRT ARM Neon 内核参考https://github.com/google-ai-edge/LiteRT/tree/main/tflite/kernels/internal/optimized
MobileNetV1 FP32 模型http://download.tensorflow.org/models/mobilenet_v1_2018_08_02/mobilenet_v1_1.0_224.tgz
MobileNetV1 INT8 模型http://download.tensorflow.org/models/mobilenet_v1_2018_08_02/mobilenet_v1_1.0_224_quant.tgz
MobileNetV2 FP32 模型https://storage.googleapis.com/download.tensorflow.org/models/tflite_11_05_08/mobilenet_v2_1.0_224.tgz
MobileNetV2 INT8 模型https://storage.googleapis.com/download.tensorflow.org/models/tflite_11_05_08/mobilenet_v2_1.0_224_quant.tgz
EfficientDet-Lite0 FP32 模型https://www.kaggle.com/models/tensorflow/efficientnet/tfLite/lite0-fp32
EfficientDet-Lite0 INT8 模型https://www.kaggle.com/models/tensorflow/efficientnet/tfLite/lite0-int8

提交说明

1. 提交仓库

参赛者需将代码提交至以下仓库:

https://github.com/rv2036/rvspoc-S2602-litert

2. 提交方式

请通过 Pull Request(PR) 的方式将结果提交至上述仓库。

下文中所提及的「PR」均指针对该仓库创建的 Pull Request。

3. PR 中需包含的内容

创建 PR 时,必须提供用于复现移植及优化结果的全部必要内容,包括但不限于:

  • 完整的源代码或二进制文件(* 详见第 5 条说明)
  • 配置文件(若有)
  • 依赖的库文件(若有)
  • 补丁文件(若有)
  • 其他对验证提交结果所必需的内容

4. 必须附带的说明文件

创建 PR 时,须同时附带一份说明文件,内容应包含用于验证优化成果的详细步骤与信息,包括但不限于:

  • 验证平台说明:是否限定特定平台?若限定,请注明操作系统名称、版本及安装说明
  • 依赖库说明:是否限定特定依赖库?若限定,请注明相关信息及安装说明
  • 程序编译及安装步骤
  • 程序运行步骤
  • 程序运行结果
  • 其他对验证提交结果所必需的信息

5. 关于源代码的特别说明(优化类赛题)

针对第 3 条中「完整的源代码或二进制文件」一项,补充说明如下:

  • 若参赛者在比赛截止时间前仅提交了二进制文件用于结果验证,则必须在之后通过 PR 的方式补充提交完整的源代码,方可视为完成本赛题。
  • 补充提交的完整源代码必须与先前提交的二进制文件 100% 对应(即由该源代码编译生成)。
  • 比赛截止时间后提交的源代码,其验证结果不计入比赛成绩,组委会仅会核实其是否与对应的二进制文件一致。

6. 成绩认定时间节点

组委会将在比赛结束后(即 2026 年 8 月 31 日 (AoE) 之后)统一对提交内容进行验证。

自该时间点起,新增或修改的 PR 内容均不计入比赛成绩

获胜条件:精度符合产出要求,性能评分最高的选手。

7. 评判与争议处理

比赛组委会与赞助商将共同委派技术代表,组成 「联合评判组」

评判组的职责包括:

  1. 对比赛过程及评判结果进行技术评判
  2. 受理并处理所有与比赛相关的争议

验收说明

  • 2026 年 9 月 20 日后,由 RVSPOC 组委会公布。
  • 由于赛题的开放性和软件的复杂性,赛题发布时可能存在未解释或需要修正的部分。针对未考虑到的方面,随着比赛进程的推进可能根据选手的反馈会有调整,请保持对赛事网站的关注。最终解释权归属于比赛的赛题评审委员会。

知识产权及开源协议要求

所有参赛结果要求开源,并提交至主办方指定仓库。参赛者(作者)持有作品的所有权。主办方鼓励参赛者将结果回馈贡献至 upstream。