Skip to main content

zer_judge/
lib.rs

1//! `zer-judge`, ONNX-based neural judge for the zer entity-resolution pipeline.
2//!
3//! Loads a DeBERTa or MiniLM NLI cross-encoder model via ORT and uses it to
4//! adjudicate borderline record pairs that the Fellegi-Sunter scorer could not
5//! classify with high confidence.
6//!
7//! # Quick start
8//!
9//! ```rust,no_run
10//! use std::sync::Arc;
11//! use zer_judge::{
12//!     backend::JudgeBackend,
13//!     judge::{DebertaJudge, DebertaJudgeConfig},
14//!     spec::DebertaBaseSpec,
15//! };
16//!
17//! # fn main() -> Result<(), Box<dyn std::error::Error>> {
18//! // Backend reads --judge-target= from process args (separate from --target=).
19//! let backend      = JudgeBackend::auto_detect();
20//! let spec         = DebertaBaseSpec::from_dir("models/nli-base/fp16_fused/nli-deberta-v3-base-onnx");
21//! let record_store = Arc::new(zer_core::VecRecordStore::new());
22//! # let schema = zer_core::schema::Schema { fields: vec![] };
23//!
24//! let judge = DebertaJudge::new(
25//!     &spec,
26//!     &backend,
27//!     record_store,
28//!     schema,
29//!     DebertaJudgeConfig::default(),
30//! )?;
31//! # let _ = judge;
32//! # Ok(()) }
33//! ```
34//!
35//! # Feature flags
36//!
37//! | Flag               | Description                                                          |
38//! |--------------------|----------------------------------------------------------------------|
39//! | `judge_cpu`        | Scalar CPU execution provider for ORT (always available, no extras) |
40//! | `judge_cuda`       | NVIDIA CUDA execution provider for ORT                               |
41//! | `judge_tensorrt`   | NVIDIA TensorRT EP, FP16 + engine caching (requires `judge_cuda`)   |
42//! | `judge_rocm`       | AMD ROCm execution provider for ORT                                  |
43//! | `judge_directml`   | Windows DirectML execution provider for ORT                          |
44//! | `judge_openvino`   | Intel OpenVINO execution provider for ORT                            |
45//!
46//! These are **completely independent** from `zer-compute`'s `cuda`/`avx2`/`vulkan`
47//! feature flags.  Use `--judge-target=<name>` to select the ORT execution provider
48//! at runtime; use `--target=<name>` to select the comparison/EM compute backend.
49
50pub mod audit;
51pub mod backend;
52pub mod calibration;
53pub mod dummy;
54pub mod error;
55pub mod judge;
56pub mod serialize;
57pub mod session;
58pub mod spec;
59pub mod test_utils;
60pub mod tokenize;
61
62pub use backend::{JudgeBackend, TrtProfile};
63pub use calibration::CalibrationTable;
64pub use dummy::DummyJudge;
65pub use error::JudgeError;
66pub use judge::{DebertaJudge, DebertaJudgeConfig};
67pub use spec::{
68    default_models_dir, spec_from_env, spec_from_vram, DebertaBaseSpec, JudgeModelSpec, MiniLmSpec,
69    ModelPrecision, TokenizerSource,
70};
71pub use test_utils::NearDuplicateGenerator;