Downloads · 30 days
15
19% of all-time downloads
rufatronics/farmbot-crop-assistant
farmbot-crop-assistant is a machine learning model from rufatronics. Use it for the machine learning task on the model card, and read the license before you ship it in a product. The card lists the license as mit.
Developed by rufatronics (Aga) <br/Ahmad Garba Adamu
Downloads · 30 days
15
19% of all-time downloads
All-time downloads
78
Public
Parameters
138M
112 MB on disk
Likes
0
Public
Click a slice to open those files.
.safetensors112 MB · 96%
How the weights are stored.
U8110M · 79%
From the Hugging Face model README
Developed by rufatronics (Aga) <br/>Ahmad Garba Adamu
A LoRA finetune of SmolLM2-135M-Instruct for crop disease assistance, covering 9 crops common in West/Central Africa. Quantized to INT4 (~111MB) for low-resource deployment. Built for the USAII Global AI Hackathon 2026.
Cassava, Cocoa, Cowpea, Maize, Groundnut, Mango, Plantain, Rice, Tomato
| Bucket | Score |
|---|---|
| Overall | 7/15 (46.7%) |
| Crop knowledge | 6/9 (67%) |
| Greetings | 1/2 (50%) |
| Out-of-scope | 0/4 (0%) |
See benchmark_results.json for full per-question results.
This is not a polished production model. Crop-knowledge answers are generally accurate and on-topic (correctly identifies fall armyworm, cassava mosaic, black pod disease, bunchy top, rice blast, cowpea aphids with reasonable treatment advice). Out-of-scope detection is weak in raw model output — the model often starts the correct decline phrase but drifts into unrelated crop advice instead of stopping. Greetings handling is inconsistent.
temperature=0.3, top_k=20, repetition_penalty=1.2
max_new_tokens=120, min_new_tokens=15
eos_token_id=tokenizer.convert_tokens_to_ids('<|im_end|>')
from transformers import AutoTokenizer, AutoModelForCausalLM
tokenizer = AutoTokenizer.from_pretrained("rufatronics/farmbot-crop-assistant")
model = AutoModelForCausalLM.from_pretrained("rufatronics/farmbot-crop-assistant", device_map="auto")
prompt = "<|im_start|>user\nmy maize leaves have holes<|im_end|>\n<|im_start|>assistant\n"
inputs = tokenizer(prompt, return_tensors="pt").to(model.device)
out = model.generate(
**inputs, max_new_tokens=120, min_new_tokens=15,
temperature=0.3, top_k=20, do_sample=True, repetition_penalty=1.2,
pad_token_id=tokenizer.eos_token_id,
eos_token_id=tokenizer.convert_tokens_to_ids('<|im_end|>'),
)
print(tokenizer.decode(out[0][inputs['input_ids'].shape[1]:], skip_special_tokens=True))