--- language: - en license: apache-2.0 base_model: Hyukkyu/Qwen3-8B-Base-RAQUEL-TOFU-M-orig-LoRA-v1 base_model_relation: finetune library_name: transformers pipeline_tag: text-generation datasets: - locuslab/TOFU - Hyukkyu/RAQUEL2-ICLR tags: - raquel - tofu - ga - lora - merged - machine-unlearning - research --- # Qwen3-8B-Base-RAQUEL-TOFU-Unlearn-GA-GD-LoRA-v1 See LICENSE and NOTICE. An **unlearned** model from the RAQUEL TOFU experiments: [`Hyukkyu/Qwen3-8B-Base-RAQUEL-TOFU-M-orig-LoRA-v1`](https://huggingface.co/Hyukkyu/Qwen3-8B-Base-RAQUEL-TOFU-M-orig-LoRA-v1) (M_orig) after LoRA unlearning of the TOFU forget set with **GA+GD**, 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: GA+GD: gradient ascent on forget answers, plus a retain cross-entropy term. - Data: every forget and every retain question of the RAQUEL2 source QA (3600 pairs per epoch; the smaller side is cycled so both sets are fully used). - Schedule: 5 epochs, 565 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 352 of 565** (forget ROUGE-L 0.002 <= target 0.390; retain ROUGE-L 0.998). ## Evaluation | Split | This model | M\_orig | M\_ret | |---|---:|---:|---:| | Forget (original) | 0/400 (0.0%) | 99.8% | 22.2% | | Forget (paraphrased) | 0/400 (0.0%) | 64.5% | 21.8% | | Retain (original) | 3548/3600 (98.6%) | 99.9% | 99.9% | | Retain (paraphrased) | 2228/3504 (63.6%) | 64.9% | 64.4% | | RAQUEL affected | 174/2025 (8.6%) | 38.6% | 35.4% | | RAQUEL unaffected | 784/2937 (26.7%) | 27.8% | 27.7% | 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-TOFU-M-orig-LoRA-v1`, revision `4f55767275e481122f80a29a53fc0bacf07b859a`. - 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 0.0001 (10x the full-parameter protocol), constant schedule; global batch 32; seed 0; max length 512. - Method settings: retain_weight=4.0. - 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-TOFU-Unlearn-GA-GD-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.