LocateAnything-3B 实测:RTX 3090 vs Jetson AGX Thor
NVIDIA 的 LocateAnything-3B 是一个 30 亿参数的视觉语言模型,通过自然语言提示完成目标检测、短语定位、文字检测和 GUI 指向任务。与传统检测模型不同,它接受文字描述并返回边界框坐标,无需针对特定类别训练。
我在手头两台设备上分别运行了测试:RTX 3090 工作站和 Jetson AGX Thor 边缘设备。同一个模型,同一套代码,数据如实呈现。
硬件与软件环境
| RTX 3090 | Jetson AGX Thor | |
|---|---|---|
| GPU | GeForce RTX 3090 | NVIDIA Thor(集成) |
| 显存 / 内存 | 24 GB GDDR6X | 128 GB 统一内存 |
| CUDA | 12.4 | 13.0 |
| PyTorch | 2.6.0+cu124 | 2.12.0+cu130 |
| Transformers | 4.57.1 | 4.57.1 |
| 模型精度 | bfloat16 | bfloat16 |
| 模型位置 | 本地 NVMe | 本地 NVMe |
两台机器均从本地存储加载模型,推理数据中不含网络延迟。
LocateAnything-3B 能做什么
模型接受图像和自然语言查询,返回结构化的边界框坐标。支持的任务类型:
- 目标检测 —
"Locate all instances matching: person</c>car</c>bicycle" - 短语定位 —
"Locate a single instance: red handbag on the left side" - 文字检测 —
"Detect all text in box format" - 指向(Pointing) —
"Point to: the submit button" - GUI 定位 — 适合屏幕交互和 UI 自动化场景
输出格式为结构化 token 序列,如 <ref>标签</ref><box><x1><y1><x2><y2></box>,坐标归一化到 0–1000 范围。模型支持三种生成模式:fast(多 token 预测)、slow(标准逐 token)和 hybrid(自适应)。
测试结果
所有测试使用 640×480 合成测试图像。每个任务在完成一次预热推理(消除 JIT 编译开销)后计时。吞吐量测试对同一单类别检测查询运行 10 次。
模型加载时间
| RTX 3090 | Jetson AGX Thor | |
|---|---|---|
| 加载时间 | 8.1 s | 20.4 s |
| 加载后显存占用 | 7,406 MB | 7,406 MB |
| 显存峰值 | 7,938 MB | 7,938 MB |
Thor 的加载时间慢 2.5 倍,主要原因是从存储读取 checkpoint shard 的内存带宽较低。显存占用完全相同——Thor 的统一内存架构中不存在独立显存分配,7.4 GB 直接从共享的 128 GB 内存池中划出。
任务推理延迟(单次运行,hybrid 模式)
| 任务 | RTX 3090 | Jetson AGX Thor | 倍率 |
|---|---|---|---|
| 检测(2个类别) | 4,150 ms | 5,118 ms | 1.2× |
| 短语定位(单个) | 298 ms | 642 ms | 2.1× |
| 文字检测 | 299 ms | 643 ms | 2.1× |
| 指向 | 300 ms | 626 ms | 2.1× |
两类别检测任务远慢于单结果任务——模型需要生成更多 token。定位和指向类查询输出短小,在两台设备上均快速收敛,也最清晰地反映了设备性能差距。
生成模式对比(检测任务)
| 模式 | RTX 3090 | Jetson AGX Thor |
|---|---|---|
| Hybrid | 4,150 ms | 5,118 ms |
| Fast(多 token 预测) | 2,020 ms | 2,694 ms |
| Slow(逐 token) | 966 ms | 1,399 ms |
Slow 模式(标准逐 token)在检测任务上最快,因为多 token 预测的开销只在更长序列时才能摊薄。在生产部署中,针对固定查询类型测试三种模式是值得的。
吞吐量(10次运行,单类别检测,hybrid 模式)
| RTX 3090 | Jetson AGX Thor | |
|---|---|---|
| 平均延迟 | 301 ms | 674 ms |
| 吞吐量 | 3.32 fps | 1.48 fps |
| 稳定性(标准差) | ~3 ms | ~120 ms |
3090 极其稳定,10 次运行全部落在 297–307 ms 之间。Thor 表现出更大的方差(596–1004 ms),可能与热管理和统一内存带宽被系统其他进程共享有关。
关键发现
1. Thor 全精度 bf16 运行,无需压缩
模型以完整 bfloat16 精度在 Thor 上加载并运行,无需量化、剪枝或任何模型改动。内存余量充足——7.4 GB 仅占 Thor 128 GB 统一内存的 6%,完全可以同时运行感知、LLM 推理等其他任务。
2. 3090 吞吐量约是 Thor 的 2.2 倍
对于不需要实时速度的批量检测流程,Thor 的 1.48 fps 完全可用。674 ms/帧的速度意味着每小时可处理约 5,300 张图像——适合质量检测、数据集标注或无人值守的文档分析流水线。
3. 生成模式选择比换设备更有效
在 3090 上,从 hybrid 切换到 slow 模式可将检测延迟从 4,150 ms 降到 966 ms——单靠模式选择就提速 4.3 倍,远超设备差距本身。在 Thor 上同样如此(5,118 ms → 1,399 ms,3.7 倍)。做硬件优化之前,应先完成任务级模式调优。
4. Thor 是非实时视觉定位的可行部署平台
以 1.48 fps,Thor 能胜任帧率在 1–2 fps 或允许批处理的检测和定位任务。在未量化的情况下,它不适合用于实时视频目标定位。
5. 输出结果完全一致
两台设备在所有任务类型上产出了相同的边界框坐标。模型的检测质量在 Thor 的 ARM+CUDA 软件栈上没有任何退化。
预热行为
首次推理延迟与稳定状态有显著差异:
| 首次推理(预热) | 稳定状态 | |
|---|---|---|
| RTX 3090 | 6,760 ms | 300 ms |
| Jetson AGX Thor | 4,696 ms | 640 ms |
有趣的是,Thor 的预热时间反而更短(4.7s vs 3090 的 6.8s),尽管其稳定态推理更慢。3090 的预热包含更复杂的 CUDA 内核编译过程。生产中建议保持模型常驻内存并保温,避免重复预热开销。
部署场景建议
| 场景 | 推荐硬件 | 备注 |
|---|---|---|
| 实时视频(≥10 fps) | RTX 3090 或更强 | Thor 需量化才能达到 |
| 批量检测(1–3 fps) | 两者均可 | Thor 成本效益更高 |
| 边缘部署、无云端 | Jetson AGX Thor | 全精度,数据不出设备 |
| 摄像头侧定位 | Jetson AGX Thor | 本地推理,数据不上传 |
| 交互式演示 | RTX 3090 | 响应时间低于 300ms |
| 多任务并行流水线 | Thor(128 GB 共享) | 定位 + LLM 同时运行 |
环境说明
LocateAnything-3B 需要 Python 3.10+、torch、transformers ≥4.51(Qwen3 支持)、peft 和 lmdb。在 Jetson(aarch64)上,decord 没有预编译包——可用 stub 包满足 import 检查,因为定位任务不涉及视频加载功能。
测试环境中两台设备均未启用 magi_attention(NVIDIA 自定义注意力内核),均回退到 PyTorch SDPA。启用 magi_attention 可能进一步降低两台设备的延迟。
汇总对比
| 指标 | RTX 3090 | Jetson AGX Thor |
|---|---|---|
| 模型加载 | 8.1s | 20.4s |
| 显存占用 | 7.4 GB | 7.4 GB / 128 GB |
| 单次查询(hybrid) | ~300 ms | ~640 ms |
| 吞吐量 | 3.32 fps | 1.48 fps |
| 最佳检测模式延迟 | Slow: 966ms | Slow: 1,399ms |
| 能否实时处理 | 勉强可以 | 不行(仅批处理) |
| 是否需要量化 | 否 | 实时场景需要 |
| 峰值功耗 | ~350W | ~60W |
LocateAnything-3B 在工作站 GPU 和边缘 AI 设备上均可无修改直接运行。3090 提供约 2.2 倍的吞吐量优势,但 Thor 在功耗(~60W vs ~350W)、统一内存架构和边缘部署场景下的综合优势,使其成为检测和定位流水线中不需要实时响应速度时的有力选择。