BLANK/slm-rl-box-1

PEFT LoRA adapter that warm-starts Boxing play for LiquidAI/LFM2.5-350M in the SLM-RL workshop.

Game boxing
Base model LiquidAI/LFM2.5-350M
Adapter layout adapter/ (PEFT adapter_config.json + weights)
Training reject_sft on DQN teacher demos
Champion generation 3
Promoted True (primary -1.5000 -> -1.2500, invalid_rate 0.0000, intervention_rate 0.0000)
Dataset pack BLANK/slm-rl-boxing
DQN teacher BLANK/slm-rl-boxing-dqn

Paste BLANK/slm-rl-box-1 as the playground adapter URL (and usually the same id as the dataset URL).

Install

pip install "transformers>=4.46" peft accelerate torch

Load with transformers + PEFT

Weights live under the adapter/ subfolder — pass subfolder="adapter".

import torch
from transformers import AutoModelForCausalLM, AutoTokenizer
from peft import PeftModel

BASE = "LiquidAI/LFM2.5-350M"
ADAPTER = "BLANK/slm-rl-box-1"  # this repo

device = (
    "cuda" if torch.cuda.is_available()
    else "mps" if torch.backends.mps.is_available()
    else "cpu"
)
dtype = torch.bfloat16 if device != "cpu" else torch.float32

tokenizer = AutoTokenizer.from_pretrained(BASE)
if tokenizer.pad_token is None:
    tokenizer.pad_token = tokenizer.eos_token

model = AutoModelForCausalLM.from_pretrained(BASE, torch_dtype=dtype)
model = PeftModel.from_pretrained(model, ADAPTER, subfolder="adapter")
model.to(device).eval()

messages = [
    {"role": "system", "content": "You play Boxing. Reply with ACTION: <id>."},
    {"role": "user", "content": "Legal actions: 1) NOOP 2) UP\nChoose."},
]
prompt = tokenizer.apply_chat_template(
    messages, add_generation_prompt=True, tokenize=False,
)
inputs = tokenizer(prompt, return_tensors="pt").to(device)
with torch.inference_mode():
    out = model.generate(**inputs, max_new_tokens=24, do_sample=False)
print(tokenizer.decode(out[0][inputs["input_ids"].shape[-1]:], skip_special_tokens=True))

Download only the adapter files

from huggingface_hub import snapshot_download

path = snapshot_download("BLANK/slm-rl-box-1", allow_patterns="adapter/*")
# then: PeftModel.from_pretrained(base_model, f"{path}/adapter")

Workshop / SLM-RL CLI

slm-rl evolve --game boxing \
  --dataset-url BLANK/slm-rl-boxing \
  --adapter-url BLANK/slm-rl-box-1 \
  --dqn-url BLANK/slm-rl-boxing-dqn \
  --generations 2

Train metrics (if recorded)

{
  "eval": {
    "episodes": 2,
    "intervention_rate": 0.0,
    "invalid_rate": 0.0,
    "mean_entropy": null,
    "mean_score": -1.25,
    "primary": -1.25,
    "win_rate": 0.0
  },
  "gate": {
    "promoted": true,
    "reason": "primary -1.5000 -> -1.2500, invalid_rate 0.0000, intervention_rate 0.0000"
  },
  "train": {
    "entropy": 2.231227457523346,
    "frac_reward_zero_std": 0.5,
    "kl": 0.07457640510983765,
    "loss": -0.010800236463546753,
    "num_prompts": 32,
    "reward": 0.0
  }
}

Trained with SLM-RL.

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

Model tree for BLANK/slm-rl-box-1

Adapter
(27)
this model