关于征程 S100 BPU 对 Transformer 算子支持的需求

您好,

我们在 S100 平台上评估单目深度估计方案,遇到一个核心障碍想请教:

1. 背景

当前业界 SOTA 的深度估计模型(Depth Anything 系列、Depth Pro 等)全部采用 ViT(Vision Transformer)作为 encoder 骨干,精度远超传统 CNN 方案(FastDepth、Lite-Mono)。同时目标检测领域(DETR 系)和 BEV 感知(BEVFormer 系)也在快速转向 Transformer 架构。

我们目前只能使用纯 CNN 模型,在精度上存在明显差距,难以满足产品指标。

2. 具体瓶颈

S100 BPU 目前不支持以下 Transformer 核心算子:

算子 PyTorch 对应 用途
Multi-Head Self-Attention F.scaled_dot_product_attention Transformer 基础模块
Layer Normalization nn.LayerNorm Transformer 标配
GELU 激活 nn.GELU ViT 常用激活函数
Patch Embedding nn.Conv2d(stride=patch_size) 图像转 token,纯卷积但参数大
Position Embedding nn.Parameter 位置编码

导出 ONNX 后经 hb_mapper 检查,这些算子全部 fallback 到 CPU,无法利用 BPU 加速,实测推理速度无法满足实时要求(目标 ≥ 30 FPS)。

3. 需求与影响

  • 需求:BPU 支持上述 Transformer 算子(至少 Self-Attention + LayerNorm + GELU)

  • 影响范围:不仅限于深度估计,还覆盖目标检测、BEV 感知、端到端自动驾驶等多个方向

  • 量化支持:希望 QAT 插件同步支持这些算子的 INT8 量化

4. 优先级参考

建议优先支持 Self-AttentionLayerNorm,这两个是所有 ViT 变体的基础算子。GELU 和 Position Embedding 可以在模型侧做替换(GELU→ReLU、可学习位置编码→固定正弦编码)来规避。

5. 想确认

  1. 地平线是否有 Transformer 算子支持的路线图?预计哪个 SDK 版本能支持?

  2. 短期内有无 workaround 方案(比如 CPU/BPU 混合调度、自定义插件等)?

  3. 如果有内部 Beta 版本,我们愿意配合测试验证。

期待您的回复,谢谢。

1.无算子支持路线图
2.方案可以参考手册进行算子替换等优化,自定义算子也只能CPU运行
3.S100内部最新版本与外部保持一致

若有具体项目上的需求合作 可以 https://horizonrobotics.feishu.cn/share/base/form/shrcnpxBa3PjdjFmtxZS3tBXw0e 尝试对接