Instructions to use emrevrg/AUBIN-12B with libraries, inference providers, notebooks, and local apps. Follow these links to get started.
- Libraries
- PEFT
How to use emrevrg/AUBIN-12B with PEFT:
from peft import PeftModel from transformers import AutoModelForCausalLM base_model = AutoModelForCausalLM.from_pretrained("google/gemma-4-12B-it") model = PeftModel.from_pretrained(base_model, "emrevrg/AUBIN-12B") - Notebooks
- Google Colab
- Kaggle
Download code/control_train.py from emrevrg/AUBIN-12B: direct link, hf CLI and curl.
- Browser
- Download file 5.04 kB
-
https://huggingface.co/emrevrg/AUBIN-12B/resolve/main/code/control_train.py
- Command line
-
hf download hf://emrevrg/AUBIN-12B/code/control_train.py
-
curl -L -o control_train.py https://huggingface.co/emrevrg/AUBIN-12B/resolve/main/code/control_train.py
5.04 kB
| """AUBIN Control eğitimi: komutlu ızgara oyunundan sınırsız, doğru etiketli örnek → LoRA (kev_llm.train_lora). | |
| Örnekler control_bench'in AYNI biçiminden gelir ama FARKLI tohumlardan (eğitim 1000+, ölçüm 0) → ölçüm bölümleri eğitimde görülmez. | |
| Her örnek: bir bölümde en kısa yol boyunca bir konum; doğru hamle(ler) BFS'ten; birden çok en-kısa hamle varsa yumuşak etiket | |
| (eşit dağılım, `teacher` sözlüğü). Durum, AubinController.act ile birebir aynı biçimde kurulur (observation + recent_actions). | |
| python control_train.py --init_adapter aubin12-plain --episodes 3000 --train 1200 --adapter /kaggle/working/lora_ctl | |
| """ | |
| import argparse, json, math, os, random, sys | |
| HERE = os.path.dirname(os.path.abspath(__file__)) | |
| sys.path.insert(0, HERE) | |
| import control_bench as CB | |
| import kev_llm as KL | |
| INSTR = ("Choose the next move that follows the command along a shortest safe path " | |
| "(never step on lava, objects block movement).") | |
| def examples(n_eps, seed, offpath=0): | |
| """offpath: bölüm başına en kısa yol DIŞINDAKİ rastgele erişilebilir konumlardan ek örnek (sapınca toparlanmayı öğretir; | |
| ölçümde model kendi hamleleriyle yoldan çıkabilir — yalnız yol üstü örnekler bu durumu hiç göstermez).""" | |
| rng = random.Random(seed); out, teacher = [], {} | |
| keys = list(CB.ACTIONS); texts = [f"{k}: {v}" for k, v in CB.ACTIONS.items()] | |
| for e in range(n_eps): | |
| ep = CB.make(rng); pos = ep["agent"]; tp, col, k = ep["target"]; block = {p for p, _, _ in ep["items"][1:]} | |
| free = [(r, c) for r in range(1, ep["n"] + 1) for c in range(1, ep["n"] + 1) | |
| if (r, c) not in ep["lava"] and (r, c) not in block and (r, c) != tp] | |
| for j, q in enumerate(rng.sample(free, min(offpath, len(free)))): | |
| d, best = CB.optimal(q, tp, ep["lava"], block, ep["n"]) | |
| if not best: | |
| continue | |
| state = {"observation": CB.render(ep, q)} | |
| if rng.random() < 0.5: # bazen geçmiş de ver (modelin kendi önceki hamleleri gibi) | |
| state["recent_actions"] = [rng.choice(keys) for _ in range(rng.randint(1, 5))] | |
| key = f"ctl/{seed}/{e}/off{j}" | |
| out.append({"key": key, "src": "control_grid_off", "state": json.dumps(state, ensure_ascii=False), | |
| "q": f"Command: go to the {col} {k}. " + INSTR, "type": "choice", "keys": keys, "texts": texts, | |
| "y": keys.index(sorted(best)[0])}) | |
| teacher[key] = [0.0 if a in best else -30.0 for a in keys] | |
| hist = [] | |
| while True: | |
| d, best = CB.optimal(pos, tp, ep["lava"], block, ep["n"]) | |
| if not best: | |
| break | |
| state = {"observation": CB.render(ep, pos)} | |
| if hist: | |
| state["recent_actions"] = hist[-5:] | |
| key = f"ctl/{seed}/{e}/{len(hist)}" | |
| y = keys.index(sorted(best)[0]) | |
| out.append({"key": key, "src": "control_grid", "state": json.dumps(state, ensure_ascii=False), | |
| "q": f"Command: go to the {col} {k}. " + INSTR, "type": "choice", "keys": keys, "texts": texts, "y": y}) | |
| teacher[key] = [0.0 if a in best else -30.0 for a in keys] # eşit dağılım en kısa hamleler üzerinde | |
| a = rng.choice(sorted(best)); dr, dc = CB.MOVES[a]; pos = (pos[0] + dr, pos[1] + dc); hist.append(a) | |
| if pos == tp: | |
| break | |
| return out, teacher | |
| def main(): | |
| ap = argparse.ArgumentParser() | |
| ap.add_argument("--model", default="google/gemma-4-12B-it"); ap.add_argument("--init_adapter", default="") | |
| ap.add_argument("--episodes", type=int, default=3000); ap.add_argument("--train", type=int, default=1200) | |
| ap.add_argument("--lr", type=float, default=5e-5); ap.add_argument("--bs", type=int, default=4) | |
| ap.add_argument("--adapter", default="lora_ctl"); ap.add_argument("--no4bit", action="store_true") | |
| ap.add_argument("--work", default=""); ap.add_argument("--save_every", type=int, default=400) | |
| ap.add_argument("--offpath", type=int, default=0) | |
| a = ap.parse_args() | |
| tr, teach = examples(a.episodes, 1000, a.offpath) | |
| dev, _ = examples(60, 900, a.offpath) # seçim: ayrı tohum (ölçüm tohumu 0'a hiç dokunulmaz) | |
| print({"train_examples": len(tr), "dev_examples": len(dev)}, flush=True) | |
| S = KL.Scorer(a.model, four_bit=not a.no4bit) | |
| S.tok.padding_side = "left" | |
| if S.tok.pad_token is None: | |
| S.tok.pad_token = S.tok.eos_token | |
| KL.train_lora(S, tr, a.train, a.lr, a.bs, a.adapter, seed=0, init_adapter=KL.resolve_adapter(a.init_adapter), | |
| dev=dev[:300], eval_every=200, teacher=teach, alpha=0.5, save_every=a.save_every) | |
| json.dump({"best_dev": getattr(S, "best_dev", None), "train_examples": len(tr)}, open(a.adapter.rstrip("/") + "_train.json", "w")) | |
| print("EGITIM BITTI", getattr(S, "best_dev", None), flush=True) | |
| if __name__ == "__main__": | |
| main() | |