Files

98 lines
3.5 KiB
Markdown
Raw Permalink Normal View History

---
license: apache-2.0
base_model:
- ibm-granite/granite-4.1-8b
library_name: transformers
pipeline_tag: text-generation
tags:
- unsloth
- lora
- trl
- sft
---
# Granite-4.1-8B-SFT-Fable5-Glint
A LoRA fine-tune of [`ibm-granite/granite-4.1-8b`](https://huggingface.co/ibm-granite/granite-4.1-8b), supervised fine-tuned on `ermiaazarkhalili/Fable-5-Glint-Clean` (private).
| | |
| --- | --- |
| **Base model** | [`ibm-granite/granite-4.1-8b`](https://huggingface.co/ibm-granite/granite-4.1-8b) |
| **Architecture** | `GraniteForCausalLM` |
| **Parameters** | 8.8B |
| **Training data** | `ermiaazarkhalili/Fable-5-Glint-Clean` (private) |
| **Method** | LoRA supervised fine-tuning via [Unsloth](https://github.com/unslothai/unsloth) + [TRL](https://github.com/huggingface/trl) |
| **License** | `apache-2.0` (inherited from the base model) |
## Usage
```python
from transformers import AutoModelForCausalLM, AutoTokenizer
model_id = "ermiaazarkhalili/Granite-4.1-8B-SFT-Fable5-Glint"
tokenizer = AutoTokenizer.from_pretrained(model_id)
model = AutoModelForCausalLM.from_pretrained(model_id, dtype='auto', device_map='auto')
messages = [{"role": "user", "content": "Explain gradient checkpointing in two sentences."}]
inputs = tokenizer.apply_chat_template(
messages, add_generation_prompt=True, return_tensors='pt'
).to(model.device)
outputs = model.generate(inputs, max_new_tokens=256)
print(tokenizer.decode(outputs[0], skip_special_tokens=True))
```
## Training configuration
| Setting | Value |
| --- | --- |
| LoRA rank (r) | 16 |
| LoRA alpha | 16 |
| Learning rate | 0.0002 |
| Epochs | 3 |
| Effective batch size | 8 (2 x 4 grad accum) |
| Max sequence length | 4096 |
| Base precision | 4-bit (QLoRA) |
| Target modules | `q_proj`, `k_proj`, `v_proj`, `o_proj`, `gate_proj`, `up_proj`, `down_proj` |
## Held-out evaluation
Next-token accuracy on a deterministic held-out split of `ermiaazarkhalili/Fable-5-Glint-Clean` (n = 199 samples), scored against the base model [`ibm-granite/granite-4.1-8b`](https://huggingface.co/ibm-granite/granite-4.1-8b). Assistant tokens only; both models are scored identically.
| Metric | Base | This model | Δ |
| --- | ---: | ---: | ---: |
| Top-1 accuracy | 0.5502 | 0.7258 | +0.1756 |
| Top-5 accuracy | 0.8136 | 0.9305 | +0.1169 |
A delta measures how far fine-tuning moved this model from its own starting point; it is not a ranking against other models, which start from different baselines.
## Observed training loss
Measured from our SLURM logs for this configuration. These are training-loss
observations only — see the held-out evaluation above for measured accuracy.
| SLURM job | Steps | First loss | Final loss |
| --- | --- | --- | --- |
| `46020984` | 1,557 | 1.2249 | 0.6531 |
| `45987985` | 900 | 1.3237 | 0.8099 |
## Limitations
- No benchmark evaluation has been run on this checkpoint. The only reported
numbers are training-loss observations.
- Inherits the biases, knowledge cutoff and failure modes of the base model.
- Fine-tuned on a single instruction-following dataset; behaviour outside that
distribution is untested.
- LoRA adapters were merged into the base weights, so the merged model cannot
be detached from this fine-tune.
## Reproducing
Trained by `notebooks/fable_distillation_granite41-8b_fable-glint_unsloth.ipynb`, executed non-interactively with
papermill on a SLURM H100 partition (Unsloth + TRL, LoRA).
---
*Card generated from the training run's own configuration and logs by*
*`scripts/generate_hub_model_card.py`.*