核心结论(RDK X5,地瓜机器人产品线,区分车载地平线 J5/J6

RDK X5 仅支持【X5 工具链编译生成的 .bin】;原生不支持车载平台的 .hbm 不能同时加载 bin + hbm 两类模型,二者分属两条完全隔离的技术路线:

  1. .binBayes-e(RDK X5) 机器人产品线格式
  2. .hbmNash-e/Nash-m(征程 5/J5、征程 6/J6、RDK S100) 车载产品线格式

极易混淆的概念澄清:

地平线集团内部两套独立工具链、两套 Runtime、两套模型封装规范,互不互通

  • 机器人端:D-Robotics(地瓜)OpenExplorer OE Toolchain → .bin
  • 车载端:Horizon Auto 天工开物 HBDK → .hbm

一、底层隔离原因

  1. BPU 指令集完全不同

    • RDK X5:Bayes-e
    • J5/J6 hbm 目标架构:Nash-e/Nash-m 微指令编码、硬件流水线不兼容,没有任何办法直接转换。
  2. Runtime 推理库割裂

    • X5 板端:libdnn.so / hbm_runtime(Python),接口只解析 .bin
    • J5/S100:libhbucp.so,专门加载 .hbm

    注意:X5 Python 包名叫 hbm_runtime只是包名,不代表支持 hbm 文件!大量开发者踩这个坑

  3. 编译链路互相独立

    • X5:hb_mapper makertbin 一步输出 .bin
    • J5:compile → .hbo → link → .hbm 两段式编译链接

二、一张表理清边界

表格

文件 目标架构 能否在 RDK X5 加载 归属产品线
X3 旧版 xxx.bin bernoulli2 ❌ 失败 旧机器人 RDK X3
X5 OE 工具链生成 xxx.bin bayes-e ✅ 正常运行 RDK X5 机器人
J5/J6 工具链输出 xxx.hbm nash-e/nash-m ❌ 解析失败 车载征程 5/6、S100

三、高频工程误区

误区 1:hbm_runtime 名字带 hbm,就能加载 hbm 文件

重大陷阱! RDK X5 Python API 包名称为hbm_runtime仅仅是命名传承,底层仍然只接收.bin模型; .hbm只能在 RDK S100(Nash 架构)使用。

误区 2:把 X5 bin 改名 hbm、hbm 改名 bin 即可运行

二进制文件头、指令集、元数据全部不一样,修改后缀直接报模型校验错误。

误区 3:同一套 ONNX 既能编译 X5 bin,又能编译 hbm

可以用同一 ONNX 源文件,但须使用两套独立工具链分别编译,产物不能跨板复用。

四、工程实操建议

  1. RDK X5 项目:全程只用 .bin yaml 必须配置 march: 'bayes-e',使用 OpenExplorer (OE) 工具链。 校验命令:

bash

运行

hrt_model_exec model_info --model_file xxx.bin

正常打印张量信息 = X5 合法模型。

  1. 如果你手上只有.hbm 模型(源自 J5/S100) 无法移植到 X5;解决方案:原始 ONNX 模型,用 X5 OE 工具链重新 PTQ 编译生成.bin

  2. 如果你想要 “多模型打包、权重共享” 能力 RDK X5 当前没有官方 hbm 方案;只能加载多个独立.bin,多模型并发时权重无法自动共享。

多任务方案优化方向:手动把多分支网络合并进单个 ONNX,编译为单.bin间接实现权重复用。

Logo

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。

更多推荐