XCombinator โ€” Fab Process model (SFT, all-family)

โš ๏ธ Post-deadline upload notice. This Hugging Face repository was published after the Zero One Hack_01 submission deadline (2026-05-31 10:00 CET), solely to give judges download access. The weights are the exact checkpoint trained and submitted before the deadline โ€” they have not been retrained, fine-tuned further, or modified. Only the act of uploading/hosting happened after the deadline. File timestamps reflect the upload, not the training.

Full fine-tune of Qwen/Qwen2.5-1.5B-Instruct on semiconductor wafer-fab process logic for the Zero One Hack_01 Industrial AI (Infineon) track. One promptable model for all three graded tasks: next-step prediction, sequence completion, and anomaly (rule-violation) detection, over a fixed ~120-step uppercase fab vocabulary across three product families (MOSFET / IGBT / IC).

This is the team XCombinator headline checkpoint (sft-instruct-all).

Prompt format (important)

The model was trained on a unified JSON format: a system prompt that states the task + output schema, a numbered user sequence, and a single JSON answer:

  • next-step / completion โ†’ {"reasoning": "...", "steps": ["STEP", ...]}
  • anomaly โ†’ {"reasoning": "...", "valid": true|false, "rule": "RULE_..."|null}

Build the exact messages with zo_train.prompts.build_messages(task, item) from the project repo, then apply the tokenizer's chat template. Minimal next-step example:

from transformers import AutoModelForCausalLM, AutoTokenizer

tok = AutoTokenizer.from_pretrained("XCombinator/sft-fab-instruct-all")
model = AutoModelForCausalLM.from_pretrained("XCombinator/sft-fab-instruct-all", torch_dtype="auto")

system = (
    "You are a semiconductor wafer fabrication process-sequence assistant.\n"
    "TASK โ€” Next-step prediction. Reply with one JSON object: "
    '{"reasoning": "...", "steps": ["BEST", "ALT2", ...]} (exact fab step names).'
)
user = (
    "Product family: MOSFET\n"
    "Partial sequence (numbered in execution order):\n"
    "1. RECEIVE WAFER LOT\n2. CLEAN WAFER\n3. GROW FIELD OXIDE\n4. COAT RESIST\n5. EXPOSE PATTERN\n\n"
    "Respond with the JSON object described in OUTPUT FORMAT."
)
msgs = [{"role": "system", "content": system}, {"role": "user", "content": user}]
prompt = tok.apply_chat_template(msgs, tokenize=False, add_generation_prompt=True)
ids = tok(prompt, return_tensors="pt").to(model.device)
out = model.generate(**ids, max_new_tokens=128, do_sample=False)
print(tok.decode(out[0][ids["input_ids"].shape[1]:], skip_special_tokens=True))
# -> {"reasoning": "", "steps": ["DEVELOP PHOTORESIST"]}

Use the repo's zo-track / judge-eval harness for scored evaluation; pass --model XCombinator/sft-fab-instruct-all --predictor hf.

Evaluation (MOSFET labeled eval, nโ‰ˆ200)

task this model n-gram baseline frozen base
next-step (top-1) 0.475 0.69 ~0
sequence completion (block-acc) 0.555 0.637 ~0
anomaly (F1) 0.567 0.89 0

The data-scaled sibling checkpoints push completion block-accuracy to 0.745 (beating the n-gram). See the project repo + submissions/XCombinator/REPORT.md for the full study.

Notes

  • Full fine-tune (not a LoRA adapter) โ€” loads directly with from_pretrained.
  • Trained on Leonardo (CINECA) A100; deterministic data factory over the organizer grammar.
Downloads last month
19
Safetensors
Model size
2B params
Tensor type
F32
ยท
Inference Providers NEW
This model isn't deployed by any Inference Provider. ๐Ÿ™‹ Ask for provider support

Model tree for XCombinator/sft-fab-instruct-all

Finetuned
(1594)
this model