用途:ort 是 ONNX Runtime 的 Rust 绑定,用于在本地运行 ONNX 格式模型(文本嵌入、语音、分类器等),并支持 CPU、CoreML(Apple Silicon)与 CUDA(Linux/Windows)执行提供者加速。资料针对 ort 2.x,示例锁定 ort = "=2.0.0-rc.12"。
主要能力:通过 Session 加载模型;按注册顺序选择执行提供者,首个可用者生效,CPU 作为兜底;与 ndarray 互操作进行张量输入输出(TensorRef::from_array_view 为零拷贝,Tensor::from_array 拥有数据);支持动态批大小(关闭 memory pattern);可通过全局线程池统一控制线程数。
使用方式:在 Cargo.toml 中按库或二进制需求选择 features(如 std、api-24、coreml、cuda、load-dynamic、ndarray),注意 default-features = false 时需显式加回 "std"。务必在任何 Session 创建前调用 ort::init() 与全局线程池 commit,且只提交一次。Session 由 commit_from_file、commit_from_memory 或 commit_from_memory_directly 构建。由于 run() 需要 &mut self,应使用 Mutex<Session> 或会话池,并在 spawn_blocking 中执行推理,避免阻塞异步运行时。
适用场景:本地 ONNX 推理服务、嵌入生成、需要 GPU 或 Apple 神经引擎加速的 Rust 应用。
限制与注意事项:执行提供者不可用时会静默回退到 CPU;CoreML 可能静默把 FP32 转 FP16,且首次运行会编译为 .mlmodelc,建议设置持久 model_cache_dir;CPU 默认 BFCArena 可能预留大量虚拟地址,建议关闭;ONNX opset 建议不超过 16;Windows 使用 load-dynamic 时需避免多个 onnxruntime.dll 冲突;推理不可在 tokio 线程直接运行,且不应使用 Mutex<Option<Session>> 懒初始化,应启动时立即初始化。集成测试可标记 #[ignore],用 cargo test 加 --include-ignored 运行。其余细节资料未提供。