metadata
language: en
license: gemma
tags:
- lora
- peft
- adapters
- unsloth
- gemma-3
- chess
- instruction-tuning
- sft
- trl
- 270m
base_model: unsloth/gemma-3-270m-it
library_name: transformers
pipeline_tag: text-generation
datasets:
- Thytu/ChessInstruct
model-index:
- name: gemma3-270m-chess-lora
results: []
Gemma-3 270M — Chess Coach (LoRA Adapters)
Author: @codertrish
Base model: unsloth/gemma-3-270m-it
Type: LoRA adapters (attach to base at load-time)
Task: Conversational chess tutoring (rules, openings, beginner tactics)
This repo contains only the LoRA adapter weights (ΔW). You must also load the base model and then attach these adapters to reproduce the fine-tuned behavior.
✨ Intended Use
- Direct use: Teach or explain beginner chess concepts, opening principles, and simple tactics in plain English.
- Downstream use: As a lightweight add-on for apps where distributing full weights isn’t desired or allowed.
Out-of-scope: Engine-grade move calculation or authoritative evaluations of complex positions. For strong analysis, pair with a chess engine (e.g., Stockfish).
🔧 How to Use (attach adapters)
Option A — Unsloth (simplest)
# pip install "unsloth[torch]" transformers peft accelerate bitsandbytes sentencepiece
from unsloth import FastModel
from unsloth.chat_templates import get_chat_template
BASE = "unsloth/gemma-3-270m-it" # base checkpoint
ADAPTER= "codertrish/gemma3-270m-chess-lora" # this repo
model, tok = FastModel.from_pretrained(
BASE, max_seq_length=2048, load_in_4bit=True, full_finetuning=False
)
tok = get_chat_template(tok, "gemma3") # Gemma-3 chat formatting
model.load_adapter(ADAPTER) # <-- attach LoRA
messages = [
{"role":"system","content":"You are a helpful chess coach. Answer in plain text."},
{"role":"user","content":"List 3 opening principles for beginners."},
]
prompt = tok.apply_chat_template(messages, tokenize=False, add_generation_prompt=True)
out = model.generate(**tok([prompt], return_tensors="pt").to(model.device),
max_new_tokens=200, do_sample=False)
print(tok.decode(out[0], skip_special_tokens=True))