Skip to content

About

Code for NeurIPS '25 Bandit Guided Adaptive Subset Selection

Resources

Contributing

Stars

0 stars

Watchers

1 watching

Forks

Latest commit

Β 

History

8 Commits

Folders and files

Repository files navigation

Bandit Guided Submodular Curriculum for Adaptive Subset Selection

NeurIPS 2025 License: MIT Python 3.8+ PyTorch

Official implementation of "Bandit Guided Submodular Curriculum for Adaptive Subset Selection" accepted at NeurIPS 2025.

Authors: Prateek Chanda, Prayas Agrawal, Saral Sureka, Lokesh Reddy Polu, Atharv Kshirsagar, Ganesh Ramakrishnan

Table of Contents

New to the project? Check out our Quick Start Guide for a 5-minute introduction!

Overview

This repository contains the implementation of a novel bandit-guided submodular curriculum learning framework for adaptive data subset selection during training of deep learning models. Our method combines multi-armed bandits with submodular optimization to create an adaptive curriculum that selects informative data subsets throughout training, significantly reducing computational costs while maintaining or improving model performance.

Installation

Prerequisites

  • Python 3.8 or higher
  • CUDA 11.8+ (for GPU support)
  • PyTorch 2.0+

Clone the Repository

git clone https://github.com/efficiency-learning/banditsubmod.git
cd banditsubmod

Environment Setup

We recommend using separate environments for vision and LLM experiments.

For Vision Tasks

cd OnlineSubmod-vision
pip install -e .
pip install -r requirements.txt

For LLM Tasks

cd OnlineSubmod-LLM
pip install -r requirements.txt

Quick Start

πŸ“– Detailed Guide: See QUICKSTART.md for a complete 5-minute tutorial!

Vision Tasks (CIFAR-10 Example)

cd OnlineSubmod-vision

# Install dependencies
pip install -e .
pip install -r requirements.txt

# Run example with bandit-guided curriculum
python example_cifar10.py

LLM Fine-tuning (LLaMA-2 on MMLU)

cd OnlineSubmod-LLM

# Install dependencies  
pip install -r requirements.txt

# Set up Hugging Face (required for LLaMA-2)
huggingface-cli login

# Run example
bash example_mmlu.sh

Repository Structure

banditsubmod/
β”œβ”€β”€ OnlineSubmod-vision/          # Computer vision experiments
β”‚   β”œβ”€β”€ cords/                    # Data selection strategies
β”‚   β”‚   β”œβ”€β”€ selectionstrategies/  # Core selection algorithms
β”‚   β”‚   └── utils/                # Utility functions and models
β”‚   β”œβ”€β”€ configs/                  # Configuration files
β”‚   β”‚   β”œβ”€β”€ SL/                   # Supervised learning configs
β”‚   β”‚   β”œβ”€β”€ SSL/                  # Semi-supervised learning configs
β”‚   β”‚   └── HPO/                  # Hyperparameter optimization configs
β”‚   β”œβ”€β”€ train_online_submod_sl4_gradbatch.py  # Main training script
β”‚   └── setup.py                  # Package installation
β”‚
β”œβ”€β”€ OnlineSubmod-LLM/             # Large language model experiments
β”‚   β”œβ”€β”€ less/                     # LLM data selection framework
β”‚   β”‚   β”œβ”€β”€ data_selection/       # Data preprocessing and selection
β”‚   β”‚   β”œβ”€β”€ train/                # Training utilities
β”‚   β”‚   β”‚   β”œβ”€β”€ gctrainer.py      # Gradient-based trainer
β”‚   β”‚   β”‚   β”œβ”€β”€ submod.py         # Submodular optimization
β”‚   β”‚   β”‚   └── train.py          # Main training loop
β”‚   β”‚   └── layers/               # Custom layers (LoRA, etc.)
β”‚   β”œβ”€β”€ online_batch_select_mmlu.sh  # MMLU experiment script
β”‚   └── run.sh                    # Main run script
β”‚
β”œβ”€β”€ README.md                     # This file
β”œβ”€β”€ LICENSE                       # MIT License
└── CONTRIBUTING.md              # Contribution guidelines

Experiments

Vision Experiments

Our framework supports various vision benchmarks:

CIFAR-10/100

# CIFAR-10 with 30% data selection
python train_online_submod_sl4_gradbatch.py \
    --config configs/SL/config_onlinesubmod_cifar10.py

# CIFAR-100 with different selection fractions
python train_online_submod_sl4_gradbatch.py \
    --config configs/SL/config_onlinesubmod_cifar100.py

MNIST

python train_online_submod_sl4_gradbatch.py \
    --config configs/SL/config_onlinesubmod_mnist.py

TinyImageNet

python train_online_submod_sl4_gradbatch.py \
    --config configs/SL/config_onlinesubmod_tinyimagenet.py

LLM Experiments

MMLU Benchmark

cd OnlineSubmod-LLM
bash online_batch_select_mmlu.sh onlineSubmod 8 0.05 2 mmlu llama2 1 2e-05 42 1 high_school_chemistry PREFIX 2

Custom Dataset Fine-tuning

# Edit run.sh to specify your parameters
PREFIX=your_experiment_name
METHOD=onlineSubmod  # or SBERT, random, etc.
GPU=0
EVAL=your_evaluation_task
BS=8  # batch size
NVAL=2  # validation samples
FRAC=0.05  # data fraction

bash run.sh

Configuration Options

Key configuration parameters for data selection:

  • Selection Strategy: OnlineSubmod, OnlineSubmodPB (Per-Batch), Random, CRAIG, GradMatch, GLISTER
  • Submodular Function: facilityLocation, graphCut, logDeterminant, disparity-min, disparity-sum
  • Selection Fraction: Proportion of data to select (e.g., 0.3 for 30%)
  • Selection Frequency: How often to perform selection (e.g., every epoch)
  • Bandit Parameters:
    • epsilon: Exploration rate for Ξ΅-greedy
    • eta: Learning rate for bandit updates
    • lambda: Mixing parameter for importance sampling

See configs/README.md for detailed configuration documentation.

Citation

If you find this work useful, please cite our NeurIPS 2025 paper:

@inproceedings{chanda2025bandit,
  title={Bandit Guided Submodular Curriculum for Adaptive Subset Selection},
  author={Chanda, Prateek and Agrawal, Prayas and Sureka, Saral and Polu, Lokesh Reddy and Kshirsagar, Atharv and Ramakrishnan, Ganesh},
  booktitle={Advances in Neural Information Processing Systems (NeurIPS)},
  year={2025}
}

License

This project is licensed under the MIT License - see the LICENSE file for details.

🀝 Contributing

We welcome contributions! Please see CONTRIBUTING.md for guidelines.

Development Setup

# Clone the repository
git clone https://github.com/efficiency-learning/banditsubmod.git
cd banditsubmod

# Create a development environment
python -m venv venv
source venv/bin/activate  # On Windows: venv\Scripts\activate

# Install in development mode
pip install -e OnlineSubmod-vision/
pip install -e OnlineSubmod-LLM/

Acknowledgments

  • Built on top of the CORDS framework for data subset selection
  • LLM experiments adapted from LESS framework
  • Submodular optimization using submodlib
  • Thanks to the NeurIPS 2025 reviewers for their valuable feedback

Contact

For questions or issues, please:

Star History

If you find this repository useful, please consider giving it a star ⭐!


Keywords: Data Selection, Submodular Optimization, Multi-Armed Bandits, Curriculum Learning, Efficient Deep Learning, Online Learning, Computer Vision, Natural Language Processing, LLM Fine-tuning

About

Code for NeurIPS '25 Bandit Guided Adaptive Subset Selection

Resources

Contributing

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages