CoolFace
Modelpublic

tiodh/granite3.2-8b-jssp-rslora

sourceHugging Facecc-by-sa-4.0updated 5mo agoView on Hugging Face
0likes7downloads
Model Card

Granite-3.2-8B-Instruct + rsLoRA — Job-Shop Scheduling

A rsLoRA adapter fine-tuned on the Starjob job-shop scheduling problem (JSSP) dataset. The model takes a natural-language description of jobs and machines and produces a feasible schedule that minimizes makespan.

Training

HyperparameterValue
MethodrsLoRA (use_rslora = true)
LoRA rank r32
LoRA alpha32
Max sequence length8192
Per-device batch1
Gradient accumulation8 (effective batch 8)
Epochs1
Learning rate2e-4
Base quantizationbnb 4-bit (Unsloth)

Evaluation

200 samples (seed 42) from the small+medium split of Starjob, identical pipeline for LoRA and rsLoRA. Feasibility validates routing order, machine non-overlap, and operation completeness.

MetricValue
Feasibility24.5% (49/200)
Exact makespan5.5% (11/200)
Mean gap215.27%
Median gap41.42%
Eval time147.9 min

Full head-to-head LoRA vs rsLoRA comparison and code: github.com/tiodh/slm_jssp.

Usage

python
from peft import PeftModel
from transformers import AutoModelForCausalLM, AutoTokenizer

base = AutoModelForCausalLM.from_pretrained(
    "ibm-granite/granite-3.2-8b-instruct",
    device_map="auto",
    torch_dtype="auto",
)
tok = AutoTokenizer.from_pretrained("ibm-granite/granite-3.2-8b-instruct")
model = PeftModel.from_pretrained(base, "tiodh/granite3.2-8b-jssp-rslora")

prompt = (
    "Optimize schedule for 3 Jobs (denoted as J) across 3 Machines (denoted as M) "
    "to minimize makespan...\nJ0:\nM0:5 M1:3 M2:4\nJ1:\nM1:2 M0:4 M2:3\nJ2:\nM2:6 M0:1 M1:5\n"
)
inputs = tok(prompt, return_tensors="pt").to(model.device)
out = model.generate(**inputs, max_new_tokens=512, temperature=0.1, top_p=0.95)
print(tok.decode(out[0], skip_special_tokens=True))

License

CC BY-SA 4.0 (inherits from the Starjob dataset).