Calculet NPU CALVX 算子与端到端模型移植黑客松

选手赛题文档

1. 简介

Calculet 是自研 NPU 算子开发套件,上层基于 Rust + Cargo 进行算子开发。开发者编写 Rust 算子代码,通过自定义编译目标 npu-calculet-unknown-calvx 编译,输出 CALVX 虚拟指令中间表示(.calvx)。

CALVX 是硬件无关的虚拟指令层,定位类似 CUDA PTX;CALVX 经过后端编译器 lower 后,生成 Calculet NPU 原生硬件指令,才能在真机上执行。

为了节约珍贵的真机资源,我们提供 calvx-verifier:运行在 CPU 上,做静态合法性校验(指令格式、数据流、资源约束、内存访问规则检查)。

⚠️ verifier 只做静态检查,不做数值仿真。verifier 通过 ≠ 真机运行结果正确。

当前 Calculet 内置算子库优先面向大语言模型,Stable Diffusion、SAM 图像分割、视频生成等 CV / 多模态模型依赖的大量算子尚未实现,无法直接在 NPU 上部署推理。

本次黑客松邀请开发者补齐算子生态,你可以任选两条路线参赛:实现独立算子,或是补齐整套依赖算子、打通开源推理前端,完成端到端模型 NPU 推理。端到端打通模型、对接 ComfyUI 等生态的成果,拥有更高的评价权重。

技术链路

  1. 选手编写 Rust 算子代码
  2. cargo build --target=npu-calculet-unknown-calvx 产出 CALVX(.calvx)
  3. calvx-verifier 在 CPU 上做静态校验,本地不限次数
  4. 校验通过后提交真机队列
  5. 后端编译器将 CALVX lower 为 NPU 原生硬件指令
  6. 真机执行,采集精度、性能与端到端输出效果

真机资源有限,存在排队延迟,请优先使用本地 verifier 自测。

2. 开发环境与工具链

报名审核通过后,你将获取完整开发包,包含:

编译命令:

cargo build --target=npu-calculet-unknown-calvx

编译产物:target/npu-calculet-unknown-calvx/release/*.calvx

配套 .cargo/config.toml 模板(样例自带):

[target.npu-calculet-unknown-calvx]
linker = "calculet-calvx-linker"
runner = "calvx-verifier"
开发边界:你不需要手写 CALVX 指令,只编写 Rust 算子代码;CALVX 仅用于调试、排查问题。禁止修改、逆向工具链、verifier、后端编译器。

3. 参赛路线(自由选择,可迭代升级)

路线 A:算子开发

实现官方算子库中不存在的算子,支持单算子或 Fused 融合算子。

算子可以是 Diffusion、SAM、视频模型依赖的基础运算、归一化、采样、卷积变种、多维张量运算等。

要求:编译产出合法 CALVX,verifier 校验通过,真机运行输出和 CPU Golden 参考满足精度要求,算子可以独立注册到算子库、被图推理框架调用。

路线 B:端到端模型移植(高价值方向)

补齐目标模型所缺失的全部算子,并完成推理前端桥接适配,最终在 Calculet NPU 上跑通完整模型推理。

推荐目标:

判定重点不是零散的算子集合,而是由 ComfyUI 等原生前端下发任务、计算全部在 NPU 上完成、产出符合模型预期的图像 / 掩码,不依赖 CPU 兜底大量算子。能一键拉起 ComfyUI 工作流、稳定出图、支持多尺寸输入的方案,是本次赛事的标杆成果。

你可以从路线 A 起步,截止前迭代升级到路线 B;评审以最终提交包的最高阶成果判定路线,报名时不锁定赛道。

4. 提交方式与 FAQ

待组委会发布。代码仓库:git.calculet.t12e.cc(账号在报名审核通过后发放)。