https://github.com/chris-santiago/scarf
Reproducing the SCARF framework with PyTorch
https://github.com/chris-santiago/scarf
contrastive-learning hydra pytorch pytorch-lightning scarf self-supervised-learning taskfile
Last synced: 4 months ago
JSON representation
Reproducing the SCARF framework with PyTorch
- Host: GitHub
- URL: https://github.com/chris-santiago/scarf
- Owner: chris-santiago
- License: mit
- Created: 2024-03-08T03:05:10.000Z (over 2 years ago)
- Default Branch: master
- Last Pushed: 2024-08-28T17:53:24.000Z (almost 2 years ago)
- Last Synced: 2026-01-26T13:58:27.287Z (4 months ago)
- Topics: contrastive-learning, hydra, pytorch, pytorch-lightning, scarf, self-supervised-learning, taskfile
- Language: Python
- Homepage:
- Size: 30 MB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- License: LICENSE.txt
Awesome Lists containing this project
README
# SCARF - PyTorch
This repo reproduces the SCARF (Self-Supervised Contrastive Learning Using Random Feature Corruption) framework for self-supervised learning with tabular data.
*Authors: Dara Bahri, Heinrich Jiang, Yi Tay, Donald Metzler*
*Reference: Bahri, Dara, et al. "Scarf: Self-supervised contrastive learning using random feature corruption." arXiv preprint arXiv:2106.15147 (2021).*
Original paper: https://research.google/pubs/scarf-self-supervised-contrastive-learning-using-random-feature-corruption/
Original repo: --
## Install
Clone this repository, create a new Conda environment and
```bash
git clone https://github.com/chris-santiago/scarf.git
conda env create -f environment.yml
cd scarf
pip install -e .
```
## Use
### Prerequisites
#### Hydra
This project uses [Hydra](https://hydra.cc/docs/intro/) for managing configuration CLI arguments. See `scarf/conf` for full
configuration details.
#### Task
This project uses [Task](https://taskfile.dev/) as a task runner. Though the underlying Python
commands can be executed without it, we recommend [installing Task](https://taskfile.dev/installation/)
for ease of use. Details located in `Taskfile.yml`.
#### Current commands
```bash
> task -l
task: Available tasks for this project:
* check-config: Check Hydra configuration
* compare: Compare using linear baselines
* train: Train a model
* wandb: Login to Weights & Biases
```
Example: Train model and for `adult-income` dataset experiment
*The `--` forwards CLI arguments to Hydra.*
```bash
task train -- experiment=income
```
#### PDM
This project was built using [this cookiecutter](https://github.com/chris-santiago/cookie) and is
setup to use [PDM](https://pdm.fming.dev/latest/) for dependency management, though it's not required
for package installation.
#### Weights and Biases
This project is set up to log experiment results with [Weights and Biases](https://wandb.ai/). It
expects an API key within a `.env` file in the root directory:
```toml
WANDB_KEY=
```
Users can configure different logger(s) within the `conf/trainer/default.yaml` file.