Downloads · 30 days
110
46% of all-time downloads
Okyanus/pomona-tomato-risk-reasoner-v0.1.7-lora
pomona-tomato-risk-reasoner-v0.1.7-lora is a text generation model from Okyanus. Use it when you need the model to write or continue text. It is set up for peft. The card lists the license as apache-2.0.
This is Pomona's first compact tomato greenhouse risk-label reasoner. It is a LoRA adapter trained for a narrow task:
Downloads · 30 days
110
46% of all-time downloads
All-time downloads
239
Public
Repo size
46.7 MB
Likes
0
Public
Click a slice to open those files.
.safetensors35.2 MB · 75%
From the Hugging Face model README
This is Pomona's first compact tomato greenhouse risk-label reasoner. It is a LoRA adapter trained for a narrow task:
Pomona tomato greenhouse sensor JSON -> JSON list of risk labels
It is not a general chat model and it is not safe as a standalone controller. Use it with Pomona's deterministic tomato safety/rule checker.
Known limitation (found 2026-11-07): this adapter learned a training-template shortcut, not the thresholds. In its training data every example with a risk label uses the same fixed background values (for example CO₂ 600, light 350, water temperature 21.0; only the risky reading changes), while every example with varied, realistic readings has no risk. The adapter learned "fixed background means risk". On realistic packets it answers
[]almost always: on a separate 153-case threshold benchmark with varied readings, it returned[]for 146 cases and found 6 of 150 expected labels. When the same cases are rewritten onto the fixed background, it finds labels again but also flags every normal case. The staged-test scores below come from the same templates as training, so they measure template recall, not threshold knowledge. In Pomona this is safe because the deterministic rules make the decision; do not use the adapter's labels on their own. Details: see "Evaluation Snapshot" and "Limitations".
This model is part of Pomona's small-model factory experiment: instead of relying on one large general-purpose LLM for every agriculture task, Pomona trains compact specialists for narrow, verifiable jobs and wraps them with deterministic safety logic.
This direction is inspired by recent small-reasoner work such as:
Pomona does not use VibeThinker code, weights, or training data. The connection is conceptual: VibeThinker-style work suggests that small models can become useful when the task is narrow, the output is verifiable, and evaluation is strict. Pomona applies that idea to agriculture by pairing a small LoRA reasoner with deterministic tomato safety rules.
In this release, the small model handles the learned risk-label classification behavior, while Pomona's rule checker enforces hard thresholds for missing data, impossible sensor values, water risk, fungal pressure, and actuator conflicts.
Qwen/Qwen2.5-0.5B-Instruct[
"high_ph",
"low_ph",
"high_ec",
"low_ec",
"heat_stress",
"cold_stress",
"fungal_pressure",
"nutrient_uptake_issue",
"sensor_anomaly",
"missing_critical_data",
"water_level_risk",
"actuator_conflict"
]
sensor input
-> v0.1.7 adapter predicts risk labels
-> Pomona deterministic rule checker validates/corrects labels
-> guarded hybrid output is used by API/dashboard
Do not use this adapter for direct pesticide dosage, autonomous fertigation changes, direct actuator control, definitive disease diagnosis, or unsafe chemical recommendations.
This example uses the training template's fixed background values, which is the only input shape the adapter handles (see the known limitation above).
{
"system_type": "controlled_greenhouse",
"crop": "tomato",
"growth_stage": "flowering",
"air_temperature_c": 24.0,
"humidity_pct": 89.0,
"co2_ppm": 600,
"light_ppfd": 350,
"ph": 6.2,
"ec_ms_cm": 2.4,
"water_temperature_c": 21.0,
"substrate_temperature_c": 23.0,
"substrate_moisture_pct": 45.0,
"actuator_states": {
"screen_energy_pct": 90
},
"symptoms": []
}
Expected guarded Pomona output:
["fungal_pressure", "actuator_conflict"]
Clone the platform and run the guarded route end to end — no extra dependencies, no private files required:
git clone https://github.com/okyanu/pomona.git
cd pomona
cp .env.example .env
./scripts/up.sh
python3 examples/tomato_risk_quickstart.py
Runtime status: local Ollama inference for this adapter is wired into
the platform (schema-constrained JSON decoding via format in the Ollama
/api/chat request, so the model can only emit valid label lists), but it
is off by default (REASONER_BACKEND=rules). Enable it with
REASONER_BACKEND=ollama once pomona-tomato-risk:v0.1.7-local is built
and running locally — see
docs/LOCAL_MODEL_RUNTIMES.md
in the platform repo. Even with it enabled, hybrid_guarded mode validates
the model's output but keeps the deterministic rules as the final decision;
only model_only (evaluation) mode surfaces raw model output, currently at
0.60 label F1 on the 15-case golden smoke suite — well below the rules'
1.0, which is why the guardrail stays authoritative.
Prompt format. The adapter was trained on a raw text prompt (no chat template). Ollama's /api/generate
wraps the prompt in the GGUF's ChatML template with Qwen's default system message, even though
ollama show --modelfile prints TEMPLATE {{ .Prompt }}. On training-style inputs this costs little
(52 versus 56 correct labels on 45 test rows). Pomona's platform route currently sends a different, shorter
prompt over /api/chat, which roughly halves correct labels even on training-style inputs (24 versus 52 to 56).
Neither changes the template shortcut above.
Best standalone adapter from the local iteration:
v0.1.7 staged risk F1: 0.924 on its original staged test
v0.1.7 golden risk F1: 0.667
Hybrid guarded evaluation with Pomona deterministic tomato rules:
golden eval:
model-only risk F1: 0.667
hybrid risk F1: 1.000
corrections: 5 / 15
v0.1.7 staged test:
model-only risk F1: 0.902
hybrid risk F1: 1.000
corrections: 59 / 473
The hybrid score is measured on a rule-derived eval set, so it should be interpreted as a guardrail integration check, not as an independent real-world agronomy benchmark. Future releases should add human-reviewed field cases.
What the staged test measures. The staged test split is built from the same templates as the training data: all 228 of its positive rows use the fixed background values, as do all 1,835 positive training rows. A high staged score therefore shows that the adapter recalls the templates, not that it compares readings with thresholds.
Independent threshold benchmark (153 synthetic cases with varied, realistic readings; 103 expect at least one label; GGUF under Ollama, card evaluation prompt, greedy decoding; 2026-11-07):
answered []: 146 / 153
labels found: 6 / 150 expected
wrong labels: 4
Diagnostics on the same cases (training prompt):
as given: 2 correct, 9 wrong, 145 empty
rewritten onto the fixed background: 73 correct, 107 wrong, 1 empty (flags 50 of 50 normal cases)
The FP32 adapter in transformers and the GGUF give the same answers on 37 or 38 of 38 cases in every prompt
variant compared, so this is not a quantisation or runtime effect. All cases are synthetic; the sample is small.
[] (146 of 153 benchmark cases). Rely on Pomona's deterministic rules, which make the decision.seedling, substrate temperature outside 18 to 29.4 °C, or background readings with more
than 1 decimal.This adapter is one small specialist in the Pomona small-model factory:
small task model + deterministic safety rules = practical local AI component
The platform repository keeps code, schemas, docs, and rule logic. Hugging Face stores model adapter weights.
If you discuss the design motivation, cite the VibeThinker papers as related small-reasoner inspiration, not as the source of this model:
@article{xu2025vibethinker15b,
title = {Tiny Model, Big Logic: Diversity-Driven Optimization Elicits Large-Model Reasoning Ability in VibeThinker-1.5B},
author = {Xu, Sen and Zhou, Yi and Wang, Wei and Min, Jixin and Yin, Zhibin and Dai, Yingwei and Liu, Shixi and Pang, Lianyu and Chen, Yirong and Zhang, Junlin},
journal = {arXiv preprint arXiv:2511.06221},
year = {2025}
}
@article{xu2026vibethinker3b,
title = {VibeThinker-3B: Exploring the Frontier of Verifiable Reasoning in Small Language Models},
author = {Xu, Sen and Liu, Shixi and Wang, Wei and Min, Jixin and Dai, Yingwei and Yin, Zhibin and Chen, Yirong and Zhou, Xin and Zhang, Junlin},
journal = {arXiv preprint arXiv:2606.16140},
year = {2026}
}