cronlm

Tiny natural-language to cron model. Pluggable into @huggingface/transformers.

  • Base: google/t5-efficient-tiny (~16M params)
  • Shipped: INT8 ONNX (encoder + decoder + decoder-with-past), ~36 MB total
  • Accuracy: 99.2% on 4 000 fresh synthetic samples Β· 97.3% on a hand-crafted adversarial set
  • Validity: 100% of outputs are parseable 5-field cron
  • Latency: ~3 ms / item on a laptop CPU

Usage

Browser / Node β€” transformers.js

import { pipeline } from "@huggingface/transformers";
const cron = await pipeline("text2text-generation", "pavstev/cronlm");
const out = await cron("every weekday at 9am".toLowerCase());
console.log(out[0].generated_text); // "0 9 * * 1-5"

Lowercase the input before passing β€” bumps accuracy on Title-Case inputs by ~2.5 pp.

Python β€” transformers

from transformers import pipeline
cron = pipeline("text2text-generation", model="pavstev/cronlm")
print(cron("every weekday at 9am")[0]["generated_text"])  # "0 9 * * 1-5"

Examples

Input Output
every 5 minutes */5 * * * *
every weekday at 9am 0 9 * * 1-5
at 10:30 PM on Sundays 30 22 * * 0
every 15 minutes between 9 and 17 */15 9-17 * * *
every Mon and Wed at noon 0 12 * * 1,3
on the 1st of every month 0 0 1 * *
every quarter 0 0 1 1,4,7,10 *
at midnight 0 0 * * *
@daily 0 0 * * *
MWF at 9am 0 9 * * 1,3,5
every December 25 0 0 25 12 *
from the 1st to the 5th at noon 0 12 1-5 * *
every 30 minutes during business hours */30 9-17 * * 1-5

Validation

A pure-Python validator/fixer is included in the cronlm package β€” wrap model output to catch any rare invalid generation:

from cronlm import fix
fix("0 25 * * 1")  # "0 23 * * 1"

Training

Source, dataset generator, and training scripts: https://github.com/pavstev/cronlm

License

MIT

Downloads last month
-
Inference Providers NEW
This model isn't deployed by any Inference Provider. πŸ™‹ Ask for provider support

Model tree for pavstev/cronlm

Quantized
(2)
this model