oe版本与板子的系统镜像版本如何选择

有几个问题需要帮助。

  1. 我现在的s100p上系统版本为4.0.2-Beta(使用cat /etc/version命令查询到的),我需要使用什么版本的oe工具进行模型转换部署,以及对应的docker镜像是什么,从哪里下载oe工具和dockers镜像。
  2. 不同oe版本转换的hbm模型是否兼容不同的系统版本,如果我后续升级s100p的系统版本,使用早期版本oe转换的hbm模型还是否能正常运行?
  3. 将版本从4.0.2-Beta升级到4.0.5的指令是什么?是只需要执行以下命令吗?
    sudo apt update
    sudo apt upgrade
    sudo reboot

我来帮你查找最新的官方信息。先搜索社区中关于 OE 工具和系统版本的相关帖子。

你好 @dreamkwc,欢迎加入社区!针对你提出的 S100P 系统版本与 OE 工具链匹配问题,以下是详细解答:


:white_check_mark: 问题 1:S100P 4.0.2-Beta 应使用什么版本的 OE 工具?

核心结论:

系统版本 4.0.2-Beta 对应 OE 工具链版本 3.2.0(当前最新稳定版)。

下载方式:

参考社区精华帖:地瓜算法工具链OpenExplore包Docker等发布下载

# OE 开发工具包
wget -c ftp://oeftp@sdk.d-robotics.cc/oe_v3.2.0/s100-3.2.0-oe-package.tgz --ftp-password=Oeftp~123$%

# CPU Docker 镜像
wget -c ftp://oeftp@sdk.d-robotics.cc/oe_v3.2.0/ai_toolchain_ubuntu_22_s100_cpu_v3.2.0.tar --ftp-password=Oeftp~123$%

# GPU Docker 镜像(如有 NVIDIA GPU)
wget -c ftp://oeftp@sdk.d-robotics.cc/oe_v3.2.0/ai_toolchain_ubuntu_22_s100_gpu_v3.2.0.tar --ftp-password=Oeftp~123$%

# 用户手册
wget -c ftp://oeftp@sdk.d-robotics.cc/oe_v3.2.0/s100-3.2.0-oe-doc.zip --ftp-password=Oeftp~123$%

MD5 校验:

OE 开发工具包: 18632be21a7ea9c93c58f48aa4c250af
CPU Docker: c374a3b3a2f62c9cc6f956f0e7a67f13
GPU Docker: 11512149c8a8283676b2810b82b0d230

:white_check_mark: 问题 2:HBM 模型版本兼容性

核心结论:

低版本 OE 转换的 HBM 模型通常可以在高版本系统上运行,但反之不行。

  • :white_check_mark: 向下兼容:OE 3.2.0 转换的模型 → 系统 4.0.5 可运行
  • :cross_mark: 向上兼容风险:OE 3.2.0 转换的模型 → 系统 3.x 可能不兼容
  • :warning: 建议:模型转换 OE 版本 ≤ 板端系统支持的 Runtime 版本

最佳实践:

  1. 保持 OE 工具链版本与板端系统版本匹配(查看 /etc/version 和 OE release note)
  2. 升级系统后,建议用新版 OE 重新转换模型以获取最佳性能和兼容性
  3. 使用 hb_model_verifier 工具验证模型兼容性:
    hb_model_verifier -m your_model.hbm
    

:white_check_mark: 问题 3:系统升级指令(4.0.2-Beta → 4.0.5)

:warning: 重要提示:

不能直接使用 apt upgrade 升级系统版本!

RDK S100P 的系统升级需要通过官方提供的系统镜像刷写,而不是 apt 包管理。

正确升级步骤:

步骤 1:获取 4.0.5 系统镜像

步骤 2:准备刷写工具

# 在宿主机上准备
sudo apt install u-boot-tools

步骤 3:刷写系统(参考官方文档)

通常需要使用 SD 卡或 USB 启动刷写,具体步骤:

  1. 将系统镜像写入 SD 卡
  2. 插入 S100P,从 SD 卡启动
  3. 按照屏幕提示完成刷写

:pushpin: 建议操作:

  1. 先查看官方升级文档:在 OE 包的用户手册中有系统升级章节
  2. 备份当前系统:升级前备份重要数据和模型
  3. 在测试环境验证:如有多块板卡,先在非生产板卡上测试

:link: 推荐资源

  1. OE 工具链下载帖 - 所有版本 OE 包和 Docker 镜像
  2. S100 模型量化及部署教程 - 万字长文实战指南
  3. 官方文档:解压 OE 包后的 doc/ 目录

:red_question_mark: 需要进一步帮助?

如果升级过程中遇到问题,请提供:

  • 当前系统详细版本(cat /etc/version 完整输出)
  • 目标升级版本确认
  • 是否有官方升级文档或镜像

欢迎在社区持续交流!:rocket:

链接中提供的docker镜像下载地址已失效,提示
”文件 ‘ai_toolchain_ubuntu_22_s100_cpu_v3.2.0.tar’ 不存在。“
最新的下载链接是什么

可以在手册第七章节找到 7.4.1 算法工具链 | RDK DOC

这个是3.7.0版本的,我需要的是3.2.0版本的最新链接,不知道在哪里能找到

@dreamkwc 理解你的需求。OE 3.2.0 版本的 FTP 链接确实可能因为官方资源更新而失效。

:white_check_mark: 解决方案

方案 1:使用官方文档中的最新下载方式

根据 Marcelo 提供的链接,官方文档已更新到 3.7.0 版本,但文档中通常会提供历史版本下载入口

  1. 访问官方工具链文档:
    7.4.1 算法工具链 | RDK DOC

  2. 在文档中查找「版本历史」或「历史版本下载」章节

  3. 如果文档中没有 3.2.0 的直接链接,建议使用 3.7.0 版本(向下兼容)


方案 2:尝试 3.7.0 版本(推荐)

OE 3.7.0 转换的模型可以在 4.0.2-Beta 系统上运行(向下兼容),且能获得更好的性能和修复:

# 查看 3.7.0 版本的下载命令(在官方文档中)
# 通常格式类似:
wget -c ftp://oeftp@sdk.d-robotics.cc/oe_v3.7.0/s100-3.7.0-oe-package.tgz --ftp-password=Oeftp~123$%

方案 3:联系官方获取历史版本

如果必须使用 3.2.0 版本(例如项目兼容性要求),建议:

  1. 在社区发帖申请(就像你现在做的)
  2. 联系地平线技术支持
    • 邮箱:support@d-robotics.cc
    • 说明你的系统版本(4.0.2-Beta)和需要 OE 3.2.0 的原因

:magnifying_glass_tilted_left: 快速验证

你可以先尝试访问官方文档,查看是否有 3.2.0 的归档链接:

# 在浏览器打开
https://developer.d-robotics.cc/rdk_doc/rdk_s/Advanced_development/toolchain_development/overview

如果文档中只有 3.7.0,建议直接使用 3.7.0,兼容性没问题。


:red_question_mark: 需要我帮你做什么?

  1. 帮你查找 3.7.0 版本的具体下载命令?
  2. 帮你确认 3.7.0 与 4.0.2-Beta 系统的兼容性?
  3. 还是你需要我帮你起草一份联系技术支持的邮件模板?

推荐基于最新OE和最新系统,系统更新推荐重新进行烧录

我用3.7.0版本的OE转换了一个模型,在宿主机上利用HBRuntime测试生成的.bc文件,可以正常运行,结果也是正确的。按照手册里的说明,bc版本与hbm版本一致,即表示量化是没有问题的。现在我尝试将其部署到s100p上,s100p使用的是4.0.2-Beta版本。在加载hbm模型时失败了。我尝试了两种加载方式dnn和HB_HBMRuntime
from hobot_dnn import pyeasy_dnn as dnn

from hbm_runtime import HB_HBMRuntime
遇到了相似的报错。使用dnn报错信息如下:
[UCP]: log level = 3
[UCP]: UCP version = 3.7.3
[VP]: log level = 3
[DNN]: log level = 3
[HPL]: log level = 3
[UCPT]: log level = 6
[BPU][[BPU_MONITOR]][281472907347648][INFO]BPULib verison(2, 1, 2)[0d3f195]!
[DNN] HBTL_EXT_DNN log level:6
[DNN]: 3.7.3_(4.2.11 HBRT)
[E][529428][03-26][17:24:46:907][dnn_op.cpp:393][python][DNN] [Plan] Ude create task failed! Signature: native::InplaceScatterND(Tensor, Tensor, Tensor, Str, bool) → (Tensor)
[E][529428][03-26][17:24:46:907][packed_model.cpp:247][python][DNN] [Model] model eloftr_nash_3000pts init fail
[E][529428][03-26][17:24:46:909][packed_model.cpp:130][python][DNN] [Model] Load model failed, model file:eloftr_nash_3000pts.hbm
RuntimeError: hbDNNInitializeFromFiles failed

The above exception was the direct cause of the following exception:

Traceback (most recent call last):
File “/work/kwc/test.py”, line 6, in
models = dnn.load(‘eloftr_nash_3000pts.hbm’)
SystemError: returned a result with an exception set
使用HB_HBMRuntime报错信息如下:
[UCP]: log level = 3
[UCP]: UCP version = 3.7.3
[VP]: log level = 3
[DNN]: log level = 3
[HPL]: log level = 3
[UCPT]: log level = 6
[BPU][[BPU_MONITOR]][281473756302112][INFO]BPULib verison(2, 1, 2)[0d3f195]!
[DNN] HBTL_EXT_DNN log level:6
[DNN]: 3.7.3_(4.2.11 HBRT)
[E][529948][03-26][17:25:57:343][dnn_op.cpp:393][python][DNN] [Plan] Ude create task failed! Signature: native::InplaceScatterND(Tensor, Tensor, Tensor, Str, bool) → (Tensor)
[E][529948][03-26][17:25:57:343][packed_model.cpp:247][python][DNN] [Model] model eloftr_nash_3000pts init fail
[E][529948][03-26][17:25:57:345][packed_model.cpp:130][python][DNN] [Model] Load model failed, model file:eloftr_nash_3000pts.hbm
[W][529948][03-26][17:25:57:345][hb_dnn.cpp:339][python][DNN] [Task] hbDNNGetErrorDesc interface is deprecated, please use hbUCPGetErrorDesc instead for best performance and functionality!
Traceback (most recent call last):
File “/work/kwc/test.py”, line 6, in
model = HB_HBMRuntime(“eloftr_nash_3000pts.hbm”)
RuntimeError: DNN Error (code: -600002, desc: Model is invalid, please check error log) hbDNN initialize from eloftr_nash_3000pts.hbm file failed.
请教一下,我这个是版本不一致引起的吗?我将板上系统升级到最新的4.0.5版本能否解决?

@dreamkwc 你的问题定位非常准确!

:white_check_mark: 核心结论

是版本不一致导致的。 你的板端系统版本(4.0.2-Beta)太旧,不支持 OE 3.7.0 转换的模型中的新算子(InplaceScatterND)。

错误分析

[Plan] Ude create task failed! Signature: native::InplaceScatterND(...)
  • 原因:OE 3.7.0 工具链使用了新版 BPU 指令集/算子,而 4.0.2-Beta 系统内置的 Runtime 库(BPULib version(2, 1, 2))不支持该算子。
  • 现象:宿主机模拟环境(HBRuntime)能运行,是因为宿主机上的 Runtime 库是新的;板端实际加载失败,是因为板端系统库太旧。

:white_check_mark: 解决方案

方案 1:升级板端系统到 4.0.5(推荐)

升级系统后,OE 3.7.0 转换的模型可以正常运行。

升级步骤:

  1. 获取 4.0.5 系统镜像

    • 访问官方文档的下载章节,或联系技术支持获取 S100P 4.0.5 镜像文件(通常是 .img 或压缩包)。
    • 参考文档:RDK S 工具链开发文档
  2. 准备烧录工具

    # 宿主机安装烧录工具
    sudo apt install u-boot-tools
    
  3. 烧录系统

    • 将系统镜像写入 SD 卡(或 USB 启动盘):
      sudo dd if=s100p_v4.0.5.img of=/dev/sdX bs=4M conv=fsync
      
    • 插入 S100P,从 SD 卡启动,按提示完成刷写。
  4. 验证升级

    cat /etc/version
    # 应显示 4.0.5 或更新版本
    

方案 2:降级 OE 工具链到 3.2.0(不推荐)

如果无法立即升级系统,可以重新用 OE 3.2.0 转换模型,但会失去新版本的性能优化和 Bug 修复。

  • 问题:OE 3.2.0 的 FTP 链接已失效,需联系官方获取。
  • 风险:旧版本工具链可能不支持你的模型结构。

:magnifying_glass_tilted_left: 版本匹配关系参考

板端系统版本 推荐 OE 工具链版本 说明
4.0.2-Beta ≤ 3.2.0 旧系统,不支持新算子
4.0.5+ 3.7.0+ 新系统,支持最新算子和优化

:pushpin: 建议操作

  1. 优先升级系统到 4.0.5:这是最彻底的解决方案,能确保模型兼容性和性能。
  2. 升级后重新部署模型:无需重新转换,直接拷贝 .hbm 文件到板端测试。
  3. 如无法获取镜像:在社区发帖或联系 support@d-robotics.cc 申请 4.0.5 系统镜像。

:red_question_mark: 需要帮助?

如果需要,我可以帮你:

  1. 起草一份联系技术支持获取系统镜像的邮件模板。
  2. 查找社区中关于 S100P 系统烧录的详细教程。

请告诉我你的需求!:rocket:

推荐基于最新的进行测试,4.0.2-beta的底层推理库不对应的

你好,按照指令直接升级系统就可以了,可以正常升级上来, 4.0.5 beta 版本,当然,本身的版本号不会变,但是相关的模块都会升级上来。
我们推荐使用最新的系统版本和工具链模块,解决了非常多的 bug,s100p 量化的时候,需要配置为 nash-m
还有问题我们欢迎随时沟通

看报错估计是 ScatterND 算子的问题,建议从代码源投移除这个算子做一下等价替换