Web Analytics

FAC-Synthesis

⭐ 97 stars German by Zhongzhi660

🌐 Sprache

Weniger ist genug: Synthese vielfältiger Daten im Merkmalsraum von LLMs

Dies ist die offizielle Implementierung des Papers: Weniger ist genug: Synthese vielfältiger Daten im Merkmalsraum von LLMs.


Zentrale Erkenntnis

Arbeite intelligenter, nicht härter.

Im Post-Training-Stadium von LLMs ist es effektiver, statt blind eine riesige Menge oberflächlich unterschiedlicher Texte hinzuzufügen, gezielt jene wirklich fehlenden Schlüsselfunktionen zu identifizieren und zu synthetisieren. Mit nur wenigen zielgerichteten synthetischen Beispielen können wir die Lücken in der Feature Activation Coverage (FAC) deutlich schließen, was zu klaren Leistungssteigerungen bei nachgelagerten Aufgaben führt.

Warum ist diese Erkenntnis einfach und zugleich kraftvoll?

Traditionelle Datensynthese konzentriert sich auf Menge und oberflächliche Diversität (Wortschatz, Satzmuster, Themenverteilung), doch dies sind oft nur schwache Stellvertreter. Was die Leistung eines Modells bei nachgelagerten Aufgaben wirklich bestimmt, ist die Abdeckung der Schlüsselfunktionen, die für die Zielaufgabe erforderlich sind.

Unsere Arbeit zeigt:

Abbildung 1: Die Effizienzgrenze von Datensätzen zur Befolgung von Anweisungen. Unsere vorgeschlagene Methode erreicht eine Win Rate bei AlpacaEval 2.0, die mit MAGPIE vergleichbar ist, und verwendet dabei nur 2K synthetische Beispiele (im Vergleich zu 300K bei MAGPIE).


Einstieg

Installation

git clone https://github.com/Zhongzhi660/FAC-Synthesis.git
cd FAC-Synthesis
pip install -r requirements.txt


Repository Structure

FAC-Synthesis/
├── LICENSE
├── README.md
├── requirements.txt
│
├── sae_pretrain/                 # SAE pretraining
│   ├── datasets/                 # pretraining corpora (constructed from public sources)
│   └── outputs/                  # SAE pre-trained weights
│
├── sae_feature_analysis/         # SAE feature analysis pipeline
│   ├── interpret_features/       # feature interpretation (span collection + annotation)
│   ├── identify_task_relevant_features/   # task-relevant feature identification
│   └── identify_missing_features/         # missing-feature discovery (coverage gap)
│
├── fac_synthesis/                # FAC synthesis pipeline
│   ├── step1_contrastive_pair_construction/      # Step-1: contrastive pair construction
│   └── step2_feature_covered_sample_synthesis/   # Step-2: feature-covered synthesis
│
└── training_scripts/             # Downstream training / evaluation scripts
    ├── toxicity_detection/
    ├── reward_modeling/
    ├── instruction_following/
    └── behavior_steering/

Vortrainierte Sparse Autoencoder

Die meisten Skripte für das SAE-Vortraining befinden sich in sae_pretrain/. Wir stellen vortrainierte SAE-Checkpoints auf Hugging Face bereit: Um SAEs vorzutrainieren, führen Sie die folgenden Befehle aus:

# Step-1: Collect hidden activations from the backbone LLM (e.g., layer 16)
python create_actvs_uni.py 0 0 1 meta-llama/Llama-3.1-8B-Instruct 16

Step-2: Train SAEs on the target layer (e.g., layer 16)

python train_SAEs.py 0 16 meta-llama/Llama-3.1-8B-Instruct /sae_input/prompt_actvs_l16

Analyse der Merkmale von SAE

Merkmalsanalyse-Skripte befinden sich in sae_feature_analysis/. Um Aktivierungsspannen zu gruppieren und menschenlesbare Merkmalsinterpretationen zu erzeugen, führen Sie Folgendes aus:

# Step-1: Group extracted activation spans
python groupby_textspans.py /xxx/threshold_0.0

Step-2: Annotate feature explanations based on grouped spans

python annotate_explanations.py /xxx/threshold_0.0.tsv

Step-3: Identify task-relevant features from the explanations

python annotate_toxicity.py /xxx/threshold_0.0_explained.tsv

Step-4: Identify missing features via FAC analysis

python identify_fac.py anchor_features.tsv (complete) task_features.tsv (currently available)

Abdeckungsgeführte Datensynthese

Abdeckungsgeführte Syntheseskripte befinden sich in fac_synthesis/. Um synthetische Abfragen zu erzeugen, führen Sie Folgendes aus

# Step-1 (1): Contrastive Pair Construction
python generate_data_llama_r1.py \
  --features xxx.tsv \
  --out xxx \
  --temperature 0.8

Step-1 (2): Feature-Covered Sample Synthesis

python analyze_step1_synthetic_data.py python merge_step1_failed_cases.py

Step-2: Feature-Covered Sample Synthesis

python generate_data_llama_r2.py \ --features xxx.tsv \ --out xxx \ --temperature 0.8


Danksagungen

In der Evaluierungsphase wurden unsere Downstream-Trainings- und Testskripte aus den folgenden Open-Source-Repositorien adaptiert:

Zitation

Wenn Sie diese Arbeit für Ihre Forschung hilfreich finden, zitieren Sie bitte unser Paper 🤩:

@article{li2026less,
  title={Less is Enough: Synthesizing Diverse Data in Feature Space of LLMs},
  author={Li, Zhongzhi and Wu, Xuansheng and Li, Yijiang and Hu, Lijie and Liu, Ninghao},
  journal={arXiv preprint arXiv:2602.10388},
  year={2026}
}

--- Tranlated By Open Ai Tx | Last indexed: 2026-05-27 ---