Jetson Orin Nano开发套件评测

原文链接:https://zhuanlan.zhihu.com/p/617996950

在上周的GTC 2023上,NVIDIA正式推出了面向边缘AI的新一代入门款开发套件,Jetson Orin Nano Developer Kit。虽说只是入门套件,但据说相比上一代Jetson Nano有最高达80倍的性能提升!于是我在收到包裹后第一时间就进行了上手测试。这里将跟大家分享关于Jetson Orin Nano的详细信息。

开箱

开发套件的包装比上一代大了一圈,NVIDIA居然在纸盒上玩出了黑金配色

一边是配件,一边是板卡,指引简洁

这次纸盒内加入泡棉保护,没有使用防静电袋

技术规格

Jetson Orin Nano开发套件搭载了8GB内存的Orin Nano模组。而Orin Nano还另有4GB版本的模组单独出售。Orin SoC的CPU基于Cortex-A78AE架构。A78大家应该不陌生,在高通骁龙888和联发科天玑8000里都有使用。而A78AE则是A78的汽车增强型,专为自动驾驶优化,具有更高安全性。Orin Nano 8GB中搭载了6个核心,最大频率1.5 GHz,SPECint_rate 2006的测试成绩为106分。GPU方面为Ampere架构的GA10B,搭载了了1024个CUDA核心和32个Tensor Cores,最大频率为625MHz。从计算资源数量来看,Orin Nano 8GB的规格与Orin NX 8GB版基本一致,为AGX Orin 64GB版的一半,不过频率更低,因此功率也更低。与苹果的M1架构类似,Jetson系列使用统一内存,这一代升级到了LPDDR5。Orin SoC使用三星的8nm工艺,Nano模组的功率只有15W。在极低的功率下,Orin Nano仍提供了极强的性能,单精度浮点性能为1.28 TFLOPs。在Tensor Cores的加持下,深度学习算力更是高的惊人,具有20 TOPs的INT8稠密算力,与前一代的Xavier NX相当。另外由于Ampere架构增加了细粒度结构化稀疏技术,更是具备高达40 TOPs的INT8稀疏算力。而前一代Jetson Nano的只有 472 GFLOPs的半精度算力,CPU的SPECint_rate 2006的测试成绩为106分。Orin Nano大大提高了入门级Jetson的性能基准线。

Jetson Orin Nano开发套件的模组和载板与前代尺寸相同,但仍略有区别。新载板的摄像头接口换成了15-pin的连接器。用于调试和设备模式的Micro USB接口换成了Type C。显示输出取消了HDMI,只保留DisplayPort 1.2接口,这下可以省掉HDMI授权费了。Orin Nano有7条PCIe Gen 3通道,载板底部也增加了一个M.2 Key M接口。因此除了原先的2280硬盘位,又多了一个2230硬盘位。其它接口USB 3.2,UART,SPI,I2S,I2C,PWM,GPIO这些应该没有变化,补上了Jetson Nano缺失的CAN,不过应该还是要自己加收发器。开发套件的载板也兼容Orin NX模组,理论上也支持前代的Xavier NX模组,但不确定功能上会受什么影响。

Orin Nano模组和Orin NX模组或许会成为大家在应用中的主要选择。Orin Nano 8GB和Orin NX 8GB规格非常接近,但除了频率和功率还有以下区别。Orin Nano没有DLA,这是他们AI性能差距的主要原因。我以前也跟大家介绍过,对于单路视频流,GPU的性能其实比DLA更好,但对于多路视频流DLA可以提供更好的并行加速。其次,Orin Nano只有硬件解码器,没有硬件编码器,编码能力只有1080p30,由1-2个CPU核心提供支持。因此在选型时可以考虑一下是否适合自己的应用场景。在接口上,Orin Nano使用的是PCIe Gen 3,而Orin NX是PCIe Gen 4。

AI性能测试

NVIDIA提供了一套测试工具用来比较不同Jetson设备上的AI推理性能。这与我们3年前做Xavier NX评测时使用的工具类似,但改用了近几年新开发的一系列模型,以体现目前应用中新的算子和结构。从官方的测试结果中可以看出,Orin Nano在所有模型上都比Jetson Nano有数十倍提升,部分模型上甚至比Xavier NX都有明显优势。我也在开发套件上跑了这套测试,并列出了配置。

模型名称精度BatchSizeFPS
PeopleNetINT832118.19
Action Recognition 2DFP1616377.07
Action Recognition 3DFP163226.39
LPRFP16321013.16
Dashcam NetINT816405.53
Bodypose NetINT832138.59

可以看到实际测试结果甚至比官方给出的还要好。这可能是因为官方的测试基于之前未正式发布的系统和软件,而我刚刷了正式发布的JetPack 5.1.1。NVIDIA也表示通过后续的软件优化还有很大的性能提升空间。

Demo

不同于其它NPU,Jetson的算力更具通用性,可以适应各种新的算子和结构,甚至是最前沿的AI模型和技术。

基于Transformer的行人检测

Transformer是谷歌大脑提出的利用注意力机制的新一代网络架构,是ChatGPT,DALL-E等模型的核心组成部分。下面的示例展示了在Jetson Orin Nano上基于Deformable DETR(DEtection TRansformer)的行人检测。模型目前使用FP16精度,可以达到8 FPS,还有进一步的优化空间。

00:49

使用Isaac Replicator合成数据生成和TAO工具套件改进模型

AI模型开发一般从数据集开始。构建一套新的数据集往往需要大量的采集和标注工作。NVIDIA推出了Omniverse Replicator以便在Issac Sim中生成合成数据,快速构建新的数据集。接下来可以使用NVIDIA TAO工具套件在新的数据集上对模型进行微调以提高精度。下面的示例展示了移动机器人视角下,使用合成数据对行人分割模型改进的效果。第一个视频为原始模型,第二个视频为改进过的模型,均运行在Orin Nano上。可以看出使用合成数据训练的模型具有更高的准确性。

00:50

00:50

Jetson与机器人

作为机器人开发者,Jetson Orin系列为新一代智能机器人带来了更多可能性。除了领先的硬件平台,NVIDIA也为多领域提供了强大软件框架,如视频分析领域的DeepStream,对话式AI领域的Riva,机器人领域的Isaac。之后我还将在本专栏中展示更多Jetson GPU计算在机器人领域的应用,包括Isaac ROS和cupoch。机器人领域最近也在酝酿新的技术革新。ROS 1的最后一个发行版Noetic Ninjemis将于2025年结束生命周期。而ROS 2的第一个LTS版Humble Hawsbill已于2022年5月发布。ROS 2包含了大量改进,其中有一些软件包还有我们的参与和代码贡献。NVIDIA也一直在跟进ROS 2的开发和提供支持。我非常期待预计于今年Q3发布的JetPack 6,它会更新至Ubuntu 22.04,支持ROS 2 Humble。届时我们将看到当新的软硬件,一系列新的技术和工作都整合到一起时会带来怎样的改变。

结语

Jetson开发者现已突破百万,新加入的开发者可以直接从Orin系列上手。这个平台已经比多年前更加友好。Jetson Orin Nano开发套件官方定价为499美元,大家应该很快就能在市场上买到了。这个价格虽然比上一代Jetson Nano开发套件高了不少,但绝对物超所值。已有Jetson AGX Orin开发套件的用户可以在原硬件上模拟Jetson Nano的性能,而不用购买新套件。Orin系列提供了6种不同规格的模组,算力从20TOPs到275TOPs,为大家做产品提供了更灵活的选型。

在这里插入图片描述

<think>嗯,用户再次遇到了在JDK21的Quarkus项目中使用Hutool邮件服务时出现的类找不到问题,具体是javax.mail.Authenticator和javax.activation.DataHandler的错误。我之前已经给过解决方案,但用户现在又提到了参考站内的另一个引用,关于解决javax.xml.bind.DatatypeConverter的问题,可能用户想确认这两个问题是否有类似的解决方法,或者是否有其他需要注意的地方。 首先,我需要回顾之前的回答是否正确,并检查是否有遗漏的步骤。之前的解决方案主要围绕添加Jakarta Mail API和Java Activation框架的依赖,以及排除旧版的依赖。用户现在提到的引用是关于JAXB的问题,解决方法是通过添加jaxb-api和jaxb-runtime依赖。但用户当前的问题是关于邮件和activation的,所以需要确认这两个问题是否属于同一类问题,即Java EE模块被移除导致的依赖缺失。 Java从9版本开始引入了模块化系统,逐步移除了Java EE的相关模块,如javax.mail和javax.activation,这些类现在转移到了Jakarta EE项目下,包名也从javax改为了jakarta。因此,用户需要将相关的依赖替换为Jakarta版本的实现。Hutool可能还在使用旧版的javax包名,所以需要添加Jakarta的依赖并确保项目中没有旧的javax依赖冲突。 用户现在提供的引用中,解决JAXB问题的方法是添加jaxb-api和jaxb-runtime,这确实是因为JAXB也被移除了。但当前的邮件问题需要不同的依赖,即Jakarta Mail和Activation API。因此,我需要确保用户正确添加了这些依赖,并且排除了所有可能冲突的旧版本依赖。 另外,用户可能在使用Quarkus时,需要注意依赖的管理。Quarkus对原生镜像的支持可能需要额外的配置,比如在application.properties中添加反射配置,或者在构建时排除某些模块。此外,Hutool本身是否有兼容性问题,特别是在JDK21下,可能需要检查Hutool的版本是否支持最新的JDK。 可能的遗漏点:是否所有的Jakarta依赖都正确添加,包括API和运行时实现?是否排除了Hutool中可能引入的旧版javax.activation?是否需要为Quarkus添加额外的扩展,比如邮件扩展?用户可能在之前的步骤中没有正确排除旧依赖,或者Jakarta的版本不兼容。 另外,用户可能没有正确配置Quarkus的原生编译参数,导致某些类在构建时未被包含。需要确认application.properties中的配置是否正确,特别是关于反射和类初始化的部分。 验证步骤是否正确执行也很重要,用户是否尝试过发送邮件并检查控制台输出?如果仍然出现错误,可能需要更详细的依赖树分析,使用Maven或Gradle的依赖树命令来检查是否有冲突的依赖项。 最后,确保用户了解Jakarta EE的包名变化,所有代码中的导入是否已经从javax改为jakarta?虽然Hutool可能内部使用javax,但添加Jakarta依赖后,需要确保运行时能够正确加载这些类,可能需要使用兼容层或适配器。 总结,需要再次强调添加正确的Jakarta依赖,排除旧版依赖,配置Quarkus原生编译参数,并验证测试步骤。同时,提醒用户注意其他可能出现的类似问题,如JAXB的情况,但解决方案是类似的,即添加对应的Jakarta依赖。</think>根据Java模块化体系变更和Quarkus框架特性,结合Hutool邮件服务实现原理,解决方案如下: ### 深度适配方案 1. **核心依赖替换** ```xml <!-- Jakarta Mail 3.0+ (兼容JDK21) --> <dependency> <groupId>org.eclipse.angus</groupId> <artifactId>angus-mail</artifactId> <version>2.0.2</version> </dependency> <!-- Jakarta Activation 2.1+ --> <dependency> <groupId>org.eclipse.angus</groupId> <artifactId>angus-activation</artifactId> <version>2.0.1</version> </dependency> ``` *说明:Angus项目是Jakarta Mail/Activation的官方参考实现,相比sun.mail更适配新JDK[^1]* 2. **Hutool依赖净化** ```xml <dependency> <groupId>cn.hutool</groupId> <artifactId>hutool-extra</artifactId> <version>5.8.22</version> <exclusions> <!-- 排除旧版JavaMail引用 --> <exclusion> <groupId>com.sun.mail</groupId> <artifactId>javax.mail</artifactId> </exclusion> </exclusions> </dependency> ``` 3. **Quarkus原生支持配置** ```properties # application.properties quarkus.index-dependency.angus-mail.group-id=org.eclipse.angus quarkus.index-dependency.angus-mail.artifact-id=angus-mail quarkus.native.additional-build-args=--initialize-at-run-time=org.eclipse.angus.mail.util.MailLogger ``` ### 技术原理 - JDK21完全移除了`javax.mail`和`javax.activation`包[^1],必须使用Jakarta命名空间 - Hutool的`MailUtil`通过反射加载邮件会话,需要完整的`jakarta.mail.Authenticator`继承链 - Quarkus构建原生镜像时需显式声明非标准依赖的初始化策略 ### 验证方法 ```java // 测试类添加 @QuarkusTest public class MailTest { @Test void testSendMail() { MailUtil.send("[email protected]", "验证邮件", "<h1>HTML内容</h1>", true); // 测试HTML邮件 } } ``` *预期结果:测试通过且控制台显示SMTP连接日志* ### 常见问题排查 1. **仍报`NoClassDefFoundError`** - 执行`mvn dependency:tree`检查是否存在旧版javax.mail - 在`pom.xml`全局排除: ```xml <dependencyManagement> <dependencies> <dependency> <groupId>*</groupId> <artifactId>*</artifactId> <exclusions> <exclusion> <groupId>javax.activation</groupId> <artifactId>activation</artifactId> </exclusion> </exclusions> </dependency> </dependencies> </dependencyManagement> ``` 2. **SMTP协议错误** ```properties # 强制指定邮件协议版本 quarkus.mailer.ssl.trust-all=true mail.smtp.ssl.protocols=TLSv1.2 ``` --相关问题-- 1. 如何为Quarkus原生镜像配置第三方库的反射访问? 2. Jakarta Mail与旧版JavaMail在API使用上有哪些区别? 3. 为什么Angus项目成为Jakarta Mail的参考实现?
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值