codertrish's picture
Update README.md
7fc5cd3 verified
|
raw
history blame
2.39 kB
---
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](https://huggingface.co/codertrish)
**Base model:** [`unsloth/gemma-3-270m-it`](https://huggingface.co/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)
```python
# 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))