当前位置:网站首页 > R语言数据分析 > 正文

rknn模型介绍(rknn模型转换)



过去几周,我对高性能 ARM 开发板的追求进展有些不顺,但经过近三个月的测试,以下是我对Banana Pi BPI-M7的笔记。

这是一个早就该发布的帖子,由于多种原因而被推迟了,但简而言之,我认为这是RK3588迄今为止我测试过的最好、最紧凑的主板。

免责声明: Banana Pi 向我发送了一个评测单元(对此我表示感谢),本文遵循我的评测政策。此后,我购买了官方外壳(尚未到达,但到货后我会更新帖子),并提供了自己的 NVMe 驱动器进行测试。

第一印象

如果您曾经使用过任何近期的RK3588主板,那么M7会让您觉得它很密集 - 这是因为它仅比Raspberry Pi稍大一点,并且 PCB 的两侧都相当拥挤:

请注意底部强大的 LAN 驱动器,以及 BPI-M7 设法在边缘处封装的连接器数量。

使用低调的连接器(并且,面对现实,连接器更少,因为它只有一个 HDMI 输出)使其比Orange Pi 5+更紧凑,同时仍然能够在下面安装全尺寸 NVMe,这增加了密度感。

我的丝网印刷掩模版上写着“Bpi v1.1”,但主板装在标有“ArmSoM Sige7”的盒子里,因为ArmSoM是 Banana Pi 的合作公司。

硬件规格

与我最近看过的大多数 Rockchip SBC 一样,M7遵循非常熟悉的模式:

    我的样品配备 16GB RAM 和 128GB ,并且在大部分测试中eMMC我使用了1TB Corsair NVMe 。

    冷却和电源

    与往常一样,主板没有配备冷却解决方案(附加的金属外壳似乎有一个内部凸起用于散热,但我的还没有到货),所以我使用了我的商标铜块:

    M7 刚从我的测试台上取下,带有串行控制台适配器和 Wi-Fi 尾纤(不包括在内)。

    与之前的主板一样,M7使用100W 桌面 USB-C PD 充电器供电时空闲温度约为 40摄氏度,常规使用(浏览或中等至轻度桌面负载)时平均功耗为 2-3W,空闲时功耗为 1W 或更低 - 也与其他主板一致。

    事实上,我花了一点功夫才让它的功耗超过 6W,只有在运行ollama或进行 WebGL 基准测试时它的功耗才会超过 10W。

    操作系统支持

    我对M7非常感兴趣的原因之一是,它是极少数支持 Armbian Platinum 的主板之一,因此我测试了它的两个版本:

      为了新颖性(和更主流的体验),我也尝试了Ubuntu Rockchip 24.02(一个试图为 Rockchip 设备提供更新的 Ubuntu 映像的新发行版),但我所有的基准测试都是在Armbian Bookworm 中完成的(稍后会详细介绍)。

      更新: 在我进行测试后的几周内,Armbian发布了新版本的Ubuntu Noble,据说它有更好的MESA支持VPU。我还没有时间测试它,但我会在测试后更新这篇文章。

      这两款产品都搭载了内核 6.1.43,与所有仍搭载 5.x 内核的 SBC 相比,差距不大。

      总体而言,Armbian体验非常好,但RK3588GPU 驱动程序存在一些常见问题(仍然有点不稳定,但在使用中很明显)。我毫不费力地启动并运行了一个可用的 GNOME 桌面,M7反应非常灵敏。

      从服务器的角度来看,将 Bookworm 安装升级到Proxmox很顺利,并且我能够毫无问题地将其加入到我的集群中。

      基准测试

      到目前为止,我已经测试了相当多的RK3588主板,我不得不说没有任何意外——在运行 Armbian Bookworm 时,M7 的得分与 Orange Pi 5 和 YeeYooToo 的得分相差 5% 以内,NVMe 吞吐量的得分几乎完全相同(因为,嗯,我实际上使用了相同的驱动器):

      NVME 性能

      我决定跳过对内部 EMMC 的基准测试,因为我正在从 NVMe 驱动器启动和运行操作系统,甚至没有文件系统。

      像往常一样,我使用了fio:

      # fio --filename=/<path>/file --size=5GB --direct=1 --rw=randrw --bs=64k --ioengine=libaio --iodepth=64 --runtime=120 --numjobs=4 --time_based --group_reporting --name=random-read-write --eta-newline=1

      ...结果相当不错,M7在吞吐量方面略胜于Orange Pi 5+ ,但差距并不大:

      机器

      IOPS(64K随机读取)

      IOPS(64K随机写入)

      香蕉派 M7 (NVME SSD)

      13460

      13326

      英特尔 N5105 (SATA 固态硬盘)

      2741

      2743

      英特尔 i7-12700 (NVMe SSD)

      42926

      42908

      英特尔 i7-6700(SATA 固态硬盘 1)

      2280

      2280

      英特尔 i7-6700(SATA 固态硬盘 2)

      2328

      2329

      Orange Pi 5+ (NVMe SSD)

      13372

      13371

      树莓派 4 (USB 3.0 SSD)

      2001

      2003

      优易通 R1 (NVME SSD)

      4670

      4677

      OLLAMA CPU 性能

      然后我继续进行ollama,在 CPU 模式下测量tinyllama和的令牌生成dolphin-phi(这是我在之前的测试中使用的模型):

      for run in {1..10}; do echo "Why is the sky blue?" | ollama run tinyllama --verbose 2>&1 >/dev/null | grep "eval rate:"; done

      得出了以下结果:

      机器

      模型

      评估令牌/秒

      香蕉派 M7

      海豚

      4.25

      蒂尼拉马

      10.3

      英特尔 i7-6700

      海豚

      7.57

      蒂尼拉马

      16.61

      香橙派 5+

      海豚

      4.65

      蒂尼拉马

      11.3

      树莓派 4

      海豚

      1.51

      蒂尼拉马

      3.77

      优易图 R1

      海豚

      3.9

      蒂尼拉马

      10.5

      令我最初感到惊讶的是,M7比Orange Pi 5+稍慢一些,我花了一段时间才弄明白原因——我怀疑这与热节流有关,因为 M7在这些测试中变得非常热(当温度超过 80摄氏度时,时钟速度就会降低),并且Orange Pi 5+不仅在二月份进行了测试(当时温度较低),而且还安装在一个有利于对流冷却的外壳中。

      所以我实际上称之为平局 - 因为我现在有 16GB RAM 可以在M7上使用,并且官方案例正在进行中(这应该可以改善冷却效果)我将重新审视这一点phi3:instruct(初步结果还可以,但我想看看更好的冷却是否真的有所不同)。

      RKNN 工具包

      像往常一样,我调查了支持状态rknn。RKNN -LLM现在已经存在,但它有几个怪癖:

        ...所以我无法真正让它工作——当我有更多时间时我会重新审视这个问题。

        关于 UBUNTU ROCKCHIP 的说明

        但我的大部分测试(以及我停滞了一段时间的地方)都是在Ubuntu Rockchip 24.02 上进行的,这是一个新的发行版,它试图为 Rockchip 设备提供更新的 Ubuntu 映像。

        它看起来很有希望,但我遇到了一些问题:

          相比之下,即使两者都设置为这样,Armbianperformance内核的平均运行温度也要低得多(并且我的所有基准测试都是使用调节器在Armbian Bookworm中完成的ondemand)。

          我花了几个星期的时间,但最终我能够通过重新刷新官方 Wikiuboot中的映像来解决启动问题,但需要注意的是,这还要求我使用真正的 Windows 机器来刷新它——使用 VM 非常困难,因为端口会改变 USB ID,而且我无法在 Linux 上的 Windows VM 中工作。OTGRKDevTool

          支线任务:设置 RKDEVTOOL 语言

          能够使用的一个关键步骤RKDevTool(除了ADB在 Windows 中安装驱动程序)是能够以英语使用它,因为我可以获得的所有最新版本都默认为中文。

          诀窍是将随附的Selected语言设置为:config.ini2

          #选择工具语言:Selected=1(中文);Selected=2(英文)

          [Language]

          Kinds=2

          Selected=2

          LangPath=Language

          Lang1File=Chinese.ini

          Lang1FontName=宋体

          Lang1FontSize=9

          Lang2File=English.ini

          Lang2FontName=Arial

          Lang2FontSize=9

          否则,界面导航会有点困难——但与实际弄清楚我必须重新刷新图像相比,这是一个小问题uboot……

          我使用 RKDevTool 3.19 和 1.15.1 uboot 镜像来修复我的主板

          支线任务:有效使用 VS CODE 串行监视器

          在调试启动问题时,我使用了带有扩展的 USB-TTL 适配器ms-vscode.vscode-serial-monitor。

          但是,该扩展不支持目前似乎所有的范围的 1.5Mbps 波特率,所以我不得不将其添加到 VS Code 配置中以使用自定义波特率:

          "vscode-serial-monitor.customBaudRates":[]

          媒体转码

          尽管我还没有找到用途rknn-toolkit2并且ollama仍然无法利用RK3588先进的硬件,但我终于能够在支持下测试Jellyfin——RK3588它有点崩溃(有时很难弄清楚是客户端还是服务器崩溃),但 CPU 负载的减少明显,并且使其作为媒体服务器更具吸引力——尽管它很难与英特尔的 QuickSync 竞争。

          请记住,您必须选择正确的 Docker 映像才能实现这一点,并且它不是全面的 GPU 支持——似乎只是ffmpeg进行了修补以执行此操作,而且我还没有让HandBrake工作(这将是一个更有趣的测试)。

          但我打算在Jellyfin发布一两次之后回到这个主题并进行更系统的测试,因为VPU同时RK3588支持硬件解码和/硬件编码。H.265AV1H.264H.265

          我们只需要软件支持再改进一点,我想我们就会处于一个良好的状态。

          更新: 正如我上面提到的,在我充实这份草案后的几周内,Armbian推出了一个具有改进的 MESA/VPU 支持的 Ubuntu Noble 版本,但我还没有时间对其进行测试。我会在测试后更新这篇文章。

          结论

          不难看出M7的吸引力–主板上包含了很多可以立即使用的功能,而这些功能在其他主板上要么是附加的,要么根本不存在:

            令我失望的一件事(这在当前的 SBC 中很正常)是缺少单线操作来将其插入显示器以此方式供电 —— 这感觉像是错失了机会。

            但是,如果您想要一台可以实际开发的 ARM Linux 机器,那么硬件功能和官方的ArmbianRK3588支持使它比 Raspberry Pi 5 更具吸引力——Pi 5在原始 CPU 能力或吞吐量(无论是网络还是存储)方面无法与任何主板相匹敌,而 M7至少与我测试过的其他 Rockchip 主板相当。

            是的,文档和软件支持仍然有点混乱,但这对于这些主板来说是正常的 - 并且 M7至少比大多数主板得到更好的支持。

            我真的很好奇它在更好的冷却条件下会表现如何,一旦我拿到正式的机壳,我会重新进行一些测试,看看它的表现如何。不过,可能需要一段时间。

            到此这篇rknn模型介绍(rknn模型转换)的文章就介绍到这了,更多相关内容请继续浏览下面的相关推荐文章,希望大家都能在编程的领域有一番成就!

            版权声明


            相关文章:

          • j flash(j flash报错 ram check fail)2025-12-04 23:27:12
          • nonetype对象没有属性lowvram(对象类型purchaseorder没有被创建)2025-12-04 23:27:12
          • nfs server用到的文件和目录(nfs-server.service canceled)2025-12-04 23:27:12
          • list 转string数组(list<string>转string)2025-12-04 23:27:12
          • vmware虚拟机安装步骤指导书(vmware虚拟机安装步骤指导书Ubuntu)2025-12-04 23:27:12
          • dtr英文缩写(英文缩写dtp的中文含义)2025-12-04 23:27:12
          • seatedrow中文(searves中文)2025-12-04 23:27:12
          • 群晖设置root密码(群晖开启root权限)2025-12-04 23:27:12
          • gridview自适应宽度(gridview列宽自适应)2025-12-04 23:27:12
          • redis 连接哨兵(redis连接哨兵命令)2025-12-04 23:27:12
          • 全屏图片