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 推理领域的工程空白。
- 参考仓库:https://github.com/google-ai-edge/LiteRT
- 目标架构:RISC-V(RV64GCV,支持 RVV 1.0)
- 推荐测试环境:QEMU
virt机器(-cpu rv64,v=true,vlen=256)或真实 RISC-V 开发板(如 SG2044、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)与通用代码隔离
注意事项
- 请确保遵循相关的开源协议和版权规范。
- 参赛者需要自行准备开发环境,组委会后续会对参赛者提供 A210 远程调试环境。
- 禁止直接搬运已有第三方 RISC-V TFLite/LiteRT 移植代码,须自主实现或明确标注引用来源
- 允许参考 LiteRT 原始 ARM Neon 内核实现逻辑,但需进行 RISC-V/RVV 适配
- 所有代码须以 Apache 2.0 协议开源(与 LiteRT 保持一致)
- 若使用 AI 辅助编写代码,需在提交报告中说明使用方式及占比
参考资料
| 资源 | 链接 |
|---|---|
| LiteRT 源码 | https://github.com/google-ai-edge/LiteRT |
| 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 模型 | https://github.com/tensorflow/models/blob/master/research/slim/nets/mobilenet_v1.md |
提交说明
- 提交仓库为 https://github.com/rv2036/rvspoc-S2601-litert
- 请以 Pull request 的形式,将结果提交到上述仓库中。
- 以下条件中的「PR」均指代相对应于条件 1 仓库链接的 Pull request。
- 在创建 PR 时,请提供用于复现移植及优化的必要内容,包括但不限于:
- 完整的源码或二进制文件 *
- 配置文件(若有)
- 额外的库文件(若有)
- 额外的补丁(若有)
- 其他对提交进行验证时所必要的内容
- 在创建 PR 时,请同时创建说明文件,写明用于验证优化成果的详细信息,包括但不限于:
- 是否限定验证平台,若限定,请注明对应 OS 名称、版本和安装说明
- 是否限定验证平台的依赖库,若限定,请注明相关信息及安装说明
- 程序编译及安装步骤
- 程序运行步骤
- 程序运行结果
- 其他对提交进行验证时所必要的信息
- 此题为优化类赛题
- 针对条件 3 的第一条 * ,若选手在比赛时间截止 前仅提供了完整的二进制文件(以下简称「二进制」)以用于结果的验证,
则选手必须在之后通过 PR 的方式完整提交所有源代码才算完成本赛题,且
- 此提交的完整源代码要 100% 符合二进制所用源代码。
- 组委会不会将比赛时间截止后所提交内容的验证结果计入比赛成绩,仅验证其是否匹配对应二进制。
- 针对条件 3 的第一条 * ,若选手在比赛时间截止 前仅提供了完整的二进制文件(以下简称「二进制」)以用于结果的验证,
则选手必须在之后通过 PR 的方式完整提交所有源代码才算完成本赛题,且
- 组委会会在比赛结束后(即 2026 年 8 月 31 日 (AoE) 后),开始对提交内容进行验证,自此时间点后新增的 PR 内容不计入比赛成绩。
验收说明
- 2026 年 8 月 31 日后,由 RVSPOC 组委会公布。
- 由于赛题的开放性和软件的复杂性,赛题发布时可能存在未解释或需要修正的部分。针对未考虑到的方面,随着比赛进程的推进可能根据选手的反馈会有调整,请保持对赛事网站的关注。最终解释权归属于比赛的赛题评审委员会。
知识产权及开源协议要求
所有参赛结果要求开源,并提交至主办方指定仓库。参赛者(作者)持有作品的所有权。主办方鼓励参赛者将结果回馈贡献至 upstream。