4.6 KiB
Backend Selection
Purpose
This document defines backend selection as a first-class concern for
whetstone_RSA.
The key distinction is:
- RSA decides whether a problem should be handled as a bounded decision contract
- backend selection decides which implementation family should fill that contract
These are different questions and should not be collapsed together.
Core Rule
Do not define RSA by one backend family.
RSA is model-agnostic. The backend should be selected based on gate characteristics, deployment needs, and measured results.
Decision Layers
There are three separate decisions:
1. Layer Suitability
Question:
Should this problem be:
deterministicrsaslmllmhuman
This is handled by suitability assessment.
2. Gate Shape Selection
Question:
If the problem is an RSA candidate, what shape should the gate take?
binarymulticlassfactorizedhierarchical
This is handled by gate design and diagnosis.
3. Backend Selection
Question:
If the problem is an RSA gate, what implementation family should fill it?
transformergradient_boostingrandom_forestbayesianlinear_modelrl_policyhybrid
This document is about the third decision.
Why This Matters
Different gates have different data characteristics.
Examples:
-
unstructured + textual + bounded- transformer may be the natural default
-
structured + numeric + bounded- gradient boosting, random forest, or linear models may be stronger and cheaper
-
small data + strong priors- Bayesian or simpler classifiers may be better
-
reward-shaped routing with delayed payoff- RL or bandit-style policies may become useful
So backend choice should not be hard-coded.
What RSA Should Own
whetstone_RSA should own:
- the gate contract
- suitability assessment
- diagnosis
- policy behavior
- the runtime interface for backends
It should not assume:
- transformer by default in all cases
- one training stack
- one benchmark methodology
What Backend Selection Should Do
Backend selection should answer:
- which backend families are plausible for this gate?
- which should be tried first?
- which benchmark signals matter?
- whether existing model-selection tooling should be used
Selection Variables
Backend recommendation should consider at least these variables:
Contract variables
input_structureinput_modalityoutput_topologyoutput_constraintpolicy_stability
Data variables
- dataset size
- class balance
- feature sparsity
- sequence length
- label noise
- factorization availability
Deployment variables
- latency budget
- memory budget
- retraining frequency
- calibration needs
- explainability needs
- online adaptation needs
Runtime variables
- deterministic fallback availability
- confidence thresholding support
- retry/escalation policy
- traceability requirements
Suggested Types
Future implementation should likely include types along these lines:
BackendFamily
transformer
gradient_boosting
random_forest
bayesian
linear_model
rl_policy
hybrid
BackendSuitability
gate_id
candidate_backends
recommended_backend
rationale
confidence
BackendBenchmarkResult
gate_id
backend_family
metrics
training_cost
runtime_cost
calibration
notes
Use Existing Tools Where Practical
Backend selection is not a place to reinvent the entire applied ML ecosystem.
In many cases, existing tools or benchmark harnesses can already compare:
- random forest
- boosted trees
- linear models
- Naive Bayes
- simple neural models
So whetstone_RSA should be willing to consume benchmark results from external
model-selection or AutoML-style workflows instead of owning every search strategy
itself.
The important thing is that the result plugs back into the RSA contract layer.
Recommended Architectural Boundary
Keep backend selection adjacent to the RSA core, not inside the core identity.
That means:
GateSuitabilityanswers whether RSA is the right containerGateDiagnosishelps debug and restructure the gateBackendSuitabilityrecommends what implementation family should fill it
This separation keeps the architecture clean.
Immediate Follow-Up
This should eventually be reflected in code by:
- adding a backend family enum
- adding backend suitability types
- extending the runtime contract so gates do not assume one backend
- optionally adding hooks for external benchmark/model-selection tooling
Until then, this document is the explicit placeholder so the work does not get lost.