# Walkthrough: GPT-2 Fine-Tuning on no_robots Dataset

We have completed the full supervised fine-tuning of GPT-2 on the human-curated **`HuggingFaceH4/no_robots`** SFT dataset. This walkthrough documents the training outcomes, GGUF conversion, importance matrix calibration, quantization file sizes, and final coherence outputs.

---

## 1. Fine-Tuning Metrics

- **Dataset**: `HuggingFaceH4/no_robots` (Full `train` split, ~9,500 conversations).
- **Training Setup**: 2 epochs, batch size of 16 (micro batch size 2, gradient accumulation 8).
- **Disk Cache Management**: Safely purged ~26 GB of stale model checkpoints from the Hugging Face cache to ensure 46 GB of free storage headroom.
- **Evaluation Outcomes**:
  - **Final Eval Loss**: `2.671` (Improved from `2.795` on the test split).
  - **Eval Perplexity**: `14.46` (Improved from `16.36` on the test split).

---

## 2. GGUF Conversion & Importance Matrix Calibration

1. **GGUF Conversion**:
   - Converted the final HF model weights using `convert_hf_to_gguf.py` under the `ggify` conda environment.
   - Result: `gpt2-f32.gguf` (252.5 MB). (Note: Newer llama.cpp scripts automatically convert token embeddings and specific weights to F16, resulting in a much more compact baseline).
2. **Importance Matrix**:
   - Generated using `llama-imatrix` with ChatML tags parsed.
   - **Calibration Perplexity**: `22.1067 +/- 0.17597`
   - Result: `imatrix.gguf` (260 KB).

---

## 3. Final GGUF Model Sizes

All GGUF files are located in `/home/maxgn/outputs/gpt2-chatml-no-robots/`:

| Model Filename | Quantization Type | Size | Description |
| :--- | :--- | :--- | :--- |
| [gpt2-f32.gguf](file:///home/maxgn/outputs/gpt2-chatml-no-robots/gpt2-f32.gguf) | F16-Embeddings baseline | 252.5 MB | Full precision baseline model |
| [ggml-model-Q8_0.gguf](file:///home/maxgn/outputs/gpt2-chatml-no-robots/ggml-model-Q8_0.gguf) | Q8_0 | 136.7 MB | High-fidelity 8-bit quantization |
| [ggml-model-IQ4_NL.gguf](file:///home/maxgn/outputs/gpt2-chatml-no-robots/ggml-model-IQ4_NL.gguf) | IQ4_NL (imatrix) | 84.8 MB | Highly-optimized 4-bit non-linear quantization |
| [ggml-model-IQ3_XXS.gguf](file:///home/maxgn/outputs/gpt2-chatml-no-robots/ggml-model-IQ3_XXS.gguf) | IQ3_XXS (imatrix) | 64.8 MB | Imatrix 3-bit quantization (Chromebook-compatible) |

---

## 4. Coherence Testing Results

Testing was performed using `llama-cli -st` on the final GGUF models.

### Prompt A: "What is the capital of France?"
* **FP32 (`gpt2-f32.gguf`)**: 
  > `The capital of France is Paris.` (Coherent & Correct, exited cleanly).
* **Q8_0 (`ggml-model-Q8_0.gguf`)**: 
  > `The capital of France is Paris.` (Coherent & Correct, exited cleanly).
* **IQ4_NL (`ggml-model-IQ4_NL.gguf`)**: 
  > `The capital of France is Paris.` (Coherent & Correct, exited cleanly).
* **IQ3_XXS (`ggml-model-IQ3_XXS.gguf`)**: 
  > `The capital of France is Paris, France.` (Coherent & Correct, exited cleanly).

### Prompt B: "Why is the sky blue? Explain in one short sentence."
* **FP32 (`gpt2-f32.gguf`)** (temp 0.1, repeat-penalty 1.15):
  > `The sun's rays have been shining brightly for millions of years, and it has always had its own unique color scheme that reflects sunlight well into space!` (Coherent & Confidently Incorrect).
* **IQ3_XXS (`ggml-model-IQ3_XXS.gguf`)**:
  > `The Sky Blue, or "Blue Moon" as it's commonly known from its origins to be called by some people an ancient symbol of wisdom and beauty, has been a popular choice for centuries...` (Coherent & Confidently Incorrect).

### Prompt C: "What is gravity?"
* **FP32 (`gpt2-f32.gguf`)** (temp 0.1, repeat-penalty 1.15):
  > `Gravity is the force that pulls us around on our own accord. It's not just an ordinary object like air or water; it can be anything from rocks to atoms in a vacuum, and even molecules.` (Coherent & Confidently Incorrect).
* **IQ3_XXS (`ggml-model-IQ3_XXS.gguf`)**:
  > `Gravity is the force that drives us through our bodies!` (Coherent & Confidently Incorrect/Hilarious).

---

## 5. Conclusion & Recommendations

1. **Stop-Token Obedience**: The full training run successfully taught the model to obey the `<|im_end|>` token, terminating generation cleanly instead of looping endlessly (which occurred during the test split).
2. **Quantization Integrity**: With the full 9,500 sample SFT, even the aggressive **IQ3_XXS** (64.8 MB) quantization remained stable and generated coherent sentences without getting stuck in infinite token loops.
3. **Chromebook Deployment**: The **IQ3_XXS** is highly recommended for ultra-low storage limits (such as Chromebook non-system partitions), while **IQ4_NL** (84.8 MB) offers the highest intelligence-to-size ratio.
