ONNX Runtime(简称 ORT)是一个跨平台、高性能的机器学习模型推理引擎。 它专门用来加载和运行 .onnx 格式的模型,让训练好的模型能在不同硬件和不同编程语言中高效执行。
核心特点
跨平台:Windows、Linux、macOS、Android、iOS、Web 都能用。
跨语言:提供 Python、C++、C#、Java、JavaScript、Objective-C、Swift 等 API。
高性能:底层用 C++ 实现,会对计算图做优化,比如算子融合、常量折叠、内存复用。
硬件加速 :通过 Execution Provider(执行提供者) 支持不同硬件:
CPU:默认,所有平台可用
CUDA / TensorRT:NVIDIA GPU
DirectML:Windows GPU
OpenVINO:Intel
CoreML:Apple
NNAPI:Android
ROCm:AMD
支持量化:可以把 FP32 模型转成 INT8,减小体积、提升速度。
主要做推理:也支持 ONNX Runtime Training,但绝大多数人用它做推理部署。
"模型→ ONNX → Java"
Java 代码里的这些对象都来自 ONNX Runtime:
OrtEnvironment env = OrtEnvironment.getEnvironment();
OrtSession session = env.createSession("decision_tree.onnx", options);
OnnxTensor inputTensor = OnnxTensor.createTensor(env, buffer, shape);
OrtSession.Result results = session.run(inputs);
OrtEnvironment:全局运行环境
OrtSession:加载模型后的会话,负责执行推理
OnnxTensor:输入/输出张量
session.run():真正执行计算
底层其实是 Java 通过 JNI 调用 ONNX Runtime 的 C++ 核心。
为什么需要它?
如果没有 ONNX Runtime,你有几种选择:
用 Python 部署:但 Java 项目不好直接调用。
自己写推理代码:决策树还好,深度学习模型几乎不可能。
用厂商专用推理框架:比如 TensorRT、OpenVINO,但会绑定硬件。
ONNX Runtime 的好处是:一次导出 ONNX,到处运行 。同一份
.onnx文件,可以在 Java、Python、C#、手机端、浏览器里用同一套运行时执行,硬件不同时只需切换 Execution Provider。
常见用途
把 PyTorch/TensorFlow/scikit-learn 模型部署到 Java 后端
移动端离线 AI 推理
浏览器内 Web AI
边缘设备、IoT
模型加速和量化
多框架模型统一部署
一句话总结
ONNX Runtime 是 ONNX 模型的官方级高性能推理引擎。
你训练模型时用什么框架都行,只要导出成 ONNX,就可以用 ONNX Runtime 在 Java、Python、C++ 等环境中加载执行。它不负责训练,只负责把模型跑起来,并且尽量跑得快、跑得跨平台。
补充:什么是边缘设备?
1、边缘设备是什么?
"边缘"是相对于"云端"说的。
可以粗略分三层:
层级 位置 例子 云端 数据中心 阿里云、AWS、Azure 服务器 边缘 靠近数据源 边缘网关、路由器、基站、工厂工控机 终端 直接接触用户/环境 手机、摄像头、手表、传感器、车机 边缘设备通常指:
边缘网关
工业电脑
智能路由器
基站设备
车载计算盒
带算力的摄像头
树莓派、Jetson Nano、Jetson Orin
手机、平板也可以算终端/边缘设备
2、 IoT 是什么?
IoT = Internet of Things,物联网。
它强调的是:普通物品也能联网、感知、上报数据、被控制。
例子:
智能门锁、智能灯泡、智能插座
智能手表、手环、健康监测设备
车载传感器、共享单车锁
农业里的土壤湿度传感器
工厂里的温度、振动、压力传感器
摄像头、烟感、水表、电表
这些设备通常有:
传感器:采集数据
网络模块:Wi-Fi、蓝牙、4G/5G、LoRa、Zigbee
少量计算能力:单片机、MCU、低功耗芯片
有时带 AI 推理能力
传统 IoT 很多只是"采集数据 → 上传云端 → 云端分析"。
现在越来越多 IoT 设备开始本地做 AI,比如智能摄像头直接识别人形,不再把所有视频传云。