Hyukkyu's picture
RAQUEL2 LoRA release (wmdp_qwen3_saul, data ac827565)
aaa1019 verified
|
Raw History Blame Contribute Delete
4.14 kB
---
language:
- en
license: apache-2.0
base_model: Hyukkyu/Qwen3-8B-Base-RAQUEL-WMDP-M-orig-LoRA-v1
base_model_relation: finetune
library_name: transformers
pipeline_tag: text-generation
datasets:
- cais/wmdp
- Hyukkyu/RAQUEL2-ICLR
tags:
- raquel
- wmdp
- saul
- lora
- merged
- machine-unlearning
- research
---
# Qwen3-8B-Base-RAQUEL-WMDP-Unlearn-SAUL-LoRA-v1
See LICENSE and NOTICE.
An **unlearned** model from the RAQUEL WMDP experiments: [`Hyukkyu/Qwen3-8B-Base-RAQUEL-WMDP-M-orig-LoRA-v1`](https://huggingface.co/Hyukkyu/Qwen3-8B-Base-RAQUEL-WMDP-M-orig-LoRA-v1)
(M_orig) after LoRA unlearning of the WMDP forget set with **SAUL**, released at its
early-stopped checkpoint. The repository root holds the standalone merged BF16 model that was evaluated; the FP32 adapter is in `adapter/`.
- Method: SAUL: sharpness-aware forget/retain updates with a forget-loss constraint (Lagrange multiplier).
- Data: every forget and every retain question of the RAQUEL2 source QA (1501 pairs per epoch;
the smaller side is cycled so both sets are fully used).
- Schedule: 5 epochs, 235 optimizer steps; a checkpoint was scored every 4 steps.
- Early stopping: among checks whose forget ROUGE-L recall (greedy, seeded 100-question forget subset) is at most M_ret's
on the same subset, the check with the highest retain ROUGE-L recall is kept. RAQUEL questions were never used for selection.
Released checkpoint: **step 112 of 235** (forget ROUGE-L 0.189 <= target 0.209; retain ROUGE-L 0.994).
**SAUL adaptation.** SAUL's sharpness perturbations, its separate forget/retain optimizers and its forget-loss constraint act on the LoRA adapter weights rather than on the full model (`parameter_space: lora_adapters`); treat it as a LoRA adaptation of the published algorithm.
## Evaluation
| Split | This model | M\_orig | M\_ret |
|---|---:|---:|---:|
| Forget (original) | 286/1496 (19.1%) | 99.8% | 19.0% |
| Forget (paraphrased) | 216/1452 (14.9%) | 73.2% | 20.8% |
| Retain (original) | 1442/1462 (98.6%) | 99.2% | 99.2% |
| Retain (paraphrased) | 1074/1371 (78.3%) | 75.7% | 79.6% |
| RAQUEL affected | 599/2385 (25.1%) | 29.6% | 26.9% |
| RAQUEL unaffected | 542/2144 (25.3%) | 22.5% | 23.8% |
Semantic accuracy judged by `Qwen/Qwen3.8-27B` (vLLM 0.28.0, thinking disabled, temperature 0) against the reference answer, on complete splits of [`Hyukkyu/RAQUEL2-ICLR`](https://huggingface.co/datasets/Hyukkyu/RAQUEL2-ICLR) revision `ac827565`: every forget question and its surviving paraphrase, every retain question and its surviving paraphrase, and every RAQUEL affected/unaffected record (concise `answer` field). Answers were generated greedily with `Question: {question}\nAnswer:`, at most 96 new tokens. Per-split counts and evidence hashes are in `evaluation.json`. M_orig and M_ret rows are the reference baselines on the same splits.
## Training
- Start: `Hyukkyu/Qwen3-8B-Base-RAQUEL-WMDP-M-orig-LoRA-v1`, revision `dd9127c2e029620e76e3a526ad19be607815b8bf`.
- LoRA rank 64, alpha 128, dropout 0.05 on q/k/v/o/gate/up/down projections; BF16 base, FP32 adapters; one GPU.
- Learning rate None (10x the full-parameter protocol), constant schedule; global batch 32; seed 0; max length 512.
- Method settings: see training_recipe.json.
- Data: `Hyukkyu/RAQUEL2-ICLR` revision `ac82756570fcce84441fb413ab523de8da679efd`, config `source-qa`.
Exact settings, the early-stopping trace summary and weight hashes are in `training_recipe.json`.
## Load
```python
import torch
from transformers import AutoModelForCausalLM, AutoTokenizer
repo_id = "Hyukkyu/Qwen3-8B-Base-RAQUEL-WMDP-Unlearn-SAUL-LoRA-v1"
tokenizer = AutoTokenizer.from_pretrained(repo_id)
model = AutoModelForCausalLM.from_pretrained(repo_id, dtype=torch.bfloat16, device_map="auto").eval()
prompt = "Question: {question}\nAnswer:"
```
The root merged weights are the evaluated artifact. The FP32 LoRA adapter is in `adapter/`
(`PeftModel.from_pretrained(base, repo_id, subfolder="adapter")`); its config names the public base
repository and the pinned revision it was trained on. Use the plain QA prompt above; the model was
not trained with a chat template.