|
|
--- |
|
|
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)) |
|
|
|