win10's picture
Update README.md
7cfa7b9 verified
|
Raw
History Blame Contribute Delete
4.87 kB
---
license: gemma
language:
- en
- zh
library_name: peft
tags:
- lora
- peft
- distillation
- svd
- cross-architecture
- adaptive-rank
- gemma
- llama
- nemotron
base_model: Changgil/google-gemma-3-27b-it-text
---
# Nemotron-70B → Gemma-3 27B (Text) SVD-LoRA Adapter (Adaptive Rank)
中文版本請見:**[README_ZH.md](README_ZH.md)**
This repository provides a **PEFT LoRA adapter** for `Changgil/google-gemma-3-27b-it-text`, distilled from `nvidia/Llama-3.1-Nemotron-70B-Instruct-HF` using **weight-delta SVD-LoRA distillation** (cross-architecture).
- **Base model (student / required):** `Changgil/google-gemma-3-27b-it-text`
- **Teacher model (reference):** `nvidia/Llama-3.1-Nemotron-70B-Instruct-HF`
- **Artifact:** LoRA adapter (PEFT) — *not* a full merged model
- **Scope:** Applies to attention + MLP modules (`self_attn|mlp`)
---
## What is this?
This adapter approximates the teacher→student **weight delta** (Δ) with low-rank factors, and stores them as LoRA matrices. It is designed for **cross-architecture** distillation where teacher/student differ in layer count and hidden size.
Key build characteristics (as used for this adapter):
- **SVD backend:** `aurora` (AURORA-SVD)
- **Adaptive rank:** enabled via energy threshold
- **Teacher mixing:** `lsq` (per-matrix least-squares mixing)
- **Calibration:** RMS-based calibration from Alpaca-format samples
---
## Quickstart (Transformers + PEFT)
> This is an adapter. You must load the base model first.
```python
import torch
from transformers import AutoTokenizer, AutoModelForCausalLM
from peft import PeftModel
base_id = "Changgil/google-gemma-3-27b-it-text"
adapter_id = "win10/Nemotron2Gemma-AURORA-LoRA-27B-IT-0p95"
tokenizer = AutoTokenizer.from_pretrained(base_id, use_fast=True)
base = AutoModelForCausalLM.from_pretrained(
base_id,
torch_dtype=torch.bfloat16,
device_map="auto",
)
model = PeftModel.from_pretrained(base, adapter_id)
model.eval()
messages = [
{"role": "system", "content": "You are a helpful assistant."},
{"role": "user", "content": "Explain knowledge distillation in 5 bullet points."},
]
inputs = tokenizer.apply_chat_template(
messages,
add_generation_prompt=True,
tokenize=True,
return_tensors="pt",
)
with torch.no_grad():
out = model.generate(
inputs.to(model.device),
max_new_tokens=512,
do_sample=False,
)
print(tokenizer.decode(out[0], skip_special_tokens=True))
```
---
## Optional: Merge the adapter into the base weights
If you need a single merged checkpoint for inference:
```python
from peft import PeftModel
merged = model.merge_and_unload()
merged.save_pretrained("./merged_model", safe_serialization=True)
tokenizer.save_pretrained("./merged_model")
```
---
## Reproducibility (build command)
The adapter was produced with a command equivalent to:
```bash
python universal_distill_v4_1_0_aurora_svd_innovations.py \
--teacher E:\text-generation-webui-1.14\user_data\models\Llama-3.1-Nemotron-70B-Instruct-HF \
--student E:\text-generation-webui-1.14\user_data\models\google-gemma-3-27b-it-text \
--output ./Llama-3.1-Nemotron-70B-Instruct-HF-gemma-3-27b-it-text-lora-adaptive \
--svd-mode aurora \
--energy-threshold 0.95 \
--min-rank 256 \
--max-rank 5376 \
--interp-mode lsq \
--svd-rand-iter 2 \
--svd-rand-oversamples 8 \
--svd-aurora-steps 100 \
--svd-aurora-order 2 \
--calib-format alpaca \
--calib-alpaca-template classic \
--calib-max-samples 128 \
--calib-max-length 65536 \
--calib-batch-size 2 \
--calib-save .\calib_stats_Yi-70B-200k_alpaca-taiwan-dataset.safetensors \
--calib-mode rms \
--include "self_attn|mlp"
```
Observed run summary (example log):
- Teacher tensors: 723
- Student tensors: 808
- Teacher: GQA + SwiGLU, 80 layers, hidden 8192
- Student: GQA + standard FFN, 62 layers, hidden 5376
- TIES: enabled (density=0.3)
- DARE: disabled
---
## Compatibility notes
- This adapter targets the exact module naming / shapes of `Changgil/google-gemma-3-27b-it-text`.
- If you use a different Gemma-3 27B variant, it must be shape-compatible (otherwise adapter load will fail).
---
## Limitations
- This is **weight-space distillation** (delta approximation). It can transfer behavior/style partially, but it is not guaranteed to fully match the teacher across all tasks.
- Output quality depends on base model prompting/chat template and decoding settings.
---
## Source models
- Base model: https://huggingface.co/Changgil/google-gemma-3-27b-it-text
- Teacher model: https://huggingface.co/nvidia/Llama-3.1-Nemotron-70B-Instruct-HF
---
## License
Please follow the license and usage terms of the **base model** and **teacher model** as listed on their Hugging Face pages. This repository only provides an adapter; downstream usage must remain compliant with upstream terms.