Web Analytics

FAC-Synthesis

⭐ 97 stars Portuguese by Zhongzhi660

🌐 Idioma

Menos é Suficiente: Sintetizando Dados Diversos no Espaço de Características de LLMs

Esta é a implementação oficial do artigo: Menos é Suficiente: Sintetizando Dados Diversos no Espaço de Características de LLMs.


Insight Central

Trabalhe de forma mais inteligente, não mais difícil.

Na fase de pós-treinamento de LLMs, ao invés de adicionar cegamente grandes quantidades de textos superficialmente diversos, é mais eficaz identificar e sintetizar precisamente aquelas características-chave realmente ausentes. Com apenas um pequeno número de amostras sintéticas direcionadas, podemos preencher significativamente as lacunas na Cobertura de Ativação de Características (FAC), levando a melhorias claras de desempenho em tarefas posteriores.

Por que este insight é simples, mas poderoso?

A síntese de dados tradicional foca em quantidade e diversidade superficial (vocabulário, padrões de sentença, distribuição de tópicos), mas estes são frequentemente apenas indicadores fracos. O que realmente determina o desempenho do modelo em tarefas posteriores é a cobertura das características-chave exigidas pela tarefa-alvo.

Nosso trabalho revela:

Figura 1: A Fronteira de Eficiência de Conjuntos de Dados de Seguimento de Instruções. Nosso método proposto atinge uma Taxa de Vitória no AlpacaEval 2.0 comparável ao MAGPIE usando apenas 2K amostras sintéticas (vs. 300K para MAGPIE).


Primeiros Passos

Instalação

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/

Pré-treinamento de Autoencoders Esparsos

A maioria dos scripts para pré-treinamento de SAE está localizada em sae_pretrain/. Fornecemos checkpoints de SAE pré-treinados no Hugging Face: Para pré-treinar SAEs, execute os seguintes comandos:

# 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

Analisando as características do SAE

Os scripts de análise de características estão localizados em sae_feature_analysis/. Para agrupar intervalos de ativação e gerar interpretações de características legíveis por humanos, execute:

# 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)

Síntese de dados orientada por cobertura

Os scripts de síntese orientada por cobertura estão localizados em fac_synthesis/. Para gerar consultas sintéticas, execute

# 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


Agradecimentos

Na etapa de avaliação, nossos scripts de treinamento e teste downstream foram adaptados dos seguintes repositórios open-source:

Citação

Se você achar este trabalho útil para sua pesquisa, por favor cite nosso artigo 🤩:

@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 ---