bio-acdc / README.md
AliSaadatV's picture
Upload README.md
0a41df7 verified
|
Raw History Blame Contribute Delete
4.8 kB
# Bio-ACDC: Biological Sequence Model Coevolution
An adaptation of [AC/DC (Assessment Coevolving with Diverse Capabilities)](https://acdc-llm.github.io) for biological language models.
## Overview
Bio-ACDC coevolves populations of biological language models (for DNA, RNA, and Protein sequences) with synthetic sequence tasks to discover specialized model experts.
## Core Components
### 1. Coevolution Loop (`core.py`)
- **Initialization**: Seed models are evaluated on base tasks
- **Offspring Generation**: Parents are merged and optionally mutated
- **Evaluation**: New models are tested on current task pool
- **Archive Update**: Dominated Novelty Search (DNS) maintains diverse Pareto archive
- **Task Generation**: New tasks target weaknesses discovered in the archive
### 2. Task Pool (`tasks.py`)
Generates and manages biological sequence tasks:
- **Protein tasks**: Motif recognition, sequence completion, structure prediction
- **DNA tasks**: Regulatory element detection, motif localization
- **RNA tasks**: Secondary structure prediction, motif finding
Tasks are auto-generated targeting archive weaknesses.
### 3. Model Merging (`mergers.py`)
Multiple merging strategies:
- **Linear Merge**: Weighted average of parent parameters
- **SLERP**: Spherical linear interpolation
- **Task Vector**: Arithmetic with base model subtraction
### 4. Mutation (`mutators.py`)
Controlled perturbation operators:
- **Gaussian Noise**: Add random noise to weights
- **Layer Scale**: Randomly scale specific layers
- **Dropout**: Structured pruning of weights
### 5. Archive (`archive.py`)
Dominated Novelty Search maintains a Pareto archive:
- Maximizes fitness + novelty
- Novelty based on unique capabilities vs fitter solutions
- Difficulty-aware weighting
### 6. Evaluator (`evaluator.py`)
Evaluates models on biological tasks:
- Sequence identity/similarity
- Motif containment
- Perplexity
- RNA structure prediction
## Usage
### Quick Start
```python
from bio_acdc import BioACDC, BioACDCConfig
from bio_acdc.tasks import BioTaskPool
from bio_acdc.mergers import LinearMerge
from bio_acdc.mutators import GaussianNoiseMutator
from bio_acdc.evaluator import BioEvaluator
# Configuration
config = BioACDCConfig(
seed_model_paths=[
"facebook/esm2_t33_650M_UR50D",
"InstaDeepAI/nucleotide-transformer-v2-500m-multi-species",
],
archive_size=20,
num_generations=10,
offspring_per_gen=5,
output_dir="./bio_acdc_output",
)
# Components
task_pool = BioTaskPool(seed=42)
evaluator = BioEvaluator()
merger = LinearMerge()
mutator = GaussianNoiseMutator(std=0.01)
# Create Bio-ACDC
bio_acdc = BioACDC(
config=config,
task_pool=task_pool,
evaluator=evaluator,
merger=merger,
mutator=mutator,
)
# Run evolution
final_archive = bio_acdc.evolve()
# Best model
best = bio_acdc.archive.get_best()
print(f"Best model: {best.model_path}, Fitness: {best.fitness:.4f}")
```
### Using with Custom Models
```python
# For ESM-2 protein models
config = BioACDCConfig(
seed_model_paths=[
"facebook/esm2_t33_650M_UR50D",
"facebook/esm2_t30_150M_UR50D",
],
)
# For Nucleotide Transformer DNA models
config = BioACDCConfig(
seed_model_paths=[
"InstaDeepAI/nucleotide-transformer-v2-500m-multi-species",
"InstaDeepAI/nucleotide-transformer-v2-100m-multi-species",
],
)
```
## Architecture Comparison: ACDC vs Bio-ACDC
| Feature | ACDC (SakanaAI) | Bio-ACDC |
|---------|-----------------|----------|
| Domain | General NLP (text) | Biological sequences |
| Seed Models | Qwen/Llama LLMs | ESM-2, NT, protein/DNA LMs |
| Tasks | Synthetic code/math/text | Motif detection, sequence completion, structure prediction |
| Evaluation | LLM-as-judge + code sandbox | Sequence similarity, biological metrics |
| Merging | SLERP, Linear, Task Vectors | Same (adapted for masked LMs) |
| Archive | Dominated Novelty Search | Same |
| Task Gen | LLM-based task creation | Rule-based + evolutionary targeting |
## Key Biological Adaptations
1. **Sequence-Specific Tasks**: Motifs, regulatory elements, structure prediction
2. **Token-Aware Evaluation**: Handles amino acids (20 AA), nucleotides (4 NT)
3. **Masked LM Support**: Works with ESM-2 and Nucleotide Transformer (masked language models)
4. **Motif-Based Difficulty**: Tasks target specific biological motifs
5. **Structure Evaluation**: RNA secondary structure comparison
## Requirements
```
torch>=2.0
transformers>=4.30
datasets
numpy
safetensors
biopython # Optional, for advanced sequence analysis
```
## Citation
```bibtex
@software{bio_acdc_2024,
title = {Bio-ACDC: Coevolution of Biological Language Models and Sequence Tasks},
author = {Adapted from SakanaAI AC/DC},
year = {2024},
url = {https://acdc-llm.github.io}
}
```