# yandex-research/rtdl-revisiting-models architecture

> Architecture diagram of the GitHub repository yandex-research/rtdl-revisiting-models, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-11-12). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/yandex-research/rtdl-revisiting-models
- Repository: https://github.com/yandex-research/rtdl-revisiting-models

## Overview

This repository is the official research implementation for comparing deep-learning architectures on tabular data and reproducing the paper’s benchmark results. The principal workflow is to load and preprocess a dataset, train a configured model, record metrics, tune hyperparameters, and optionally ensemble results; a separate analysis compares FT-Transformer and ResNet using synthetic data. The graph preserves the major model families and experiment stages. Source excerpts show only parts of the runtime, so links between model runners and shared utilities rely on the README’s description of `lib` as their common tools.

Main entry points: [`lib/data.py`](https://github.com/yandex-research/rtdl-revisiting-models/blob/main/lib/data.py) (Dataset processing), [`bin/resnet.py`](https://github.com/yandex-research/rtdl-revisiting-models/blob/main/bin/resnet.py) (MLP and ResNet), [`bin/analysis_ft_transformer_vs_resnet.py`](https://github.com/yandex-research/rtdl-revisiting-models/blob/main/bin/analysis_ft_transformer_vs_resnet.py) (Architecture comparison), [`bin/tune.py`](https://github.com/yandex-research/rtdl-revisiting-models/blob/main/bin/tune.py) (Hyperparameter tuning)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_experiments["Experiments"]
  node_tuning["Hyperparameter tuning<br/>[tune.py]"]
  node_ensembling["Ensembling<br/>[ensemble.py]"]
end

subgraph group_models["Model runners"]
  node_mlp_resnet["MLP and ResNet<br/>[resnet.py]"]
  node_ft_transformer["FT-Transformer<br/>[ft_transformer.py]"]
  node_autoint["AutoInt<br/>[autoint.py]"]
  node_dcn2["DCN v2<br/>[dcn2.py]"]
  node_grownet["GrowNet<br/>[grownet.py]"]
  node_node["NODE<br/>[node.py]"]
  node_snn["SNN<br/>[snn.py]"]
  node_tabnet["TabNet<br/>[tabnet.py]"]
  node_tree_models["Tree models<br/>[catboost_.py]"]
end

subgraph group_runtime["Shared runtime"]
  node_data["Dataset processing<br/>[data.py]"]
  node_deep["Training utilities<br/>[deep.py]"]
  node_metrics["Metrics<br/>[metrics.py]"]
  node_node_arch["NODE architecture<br/>[arch.py]"]
  node_odst["Differentiable trees<br/>[odst.py]"]
  node_node_nn["NODE NN utilities<br/>[nn_utils.py]"]
end

subgraph group_analysis["Analysis"]
  node_comparison["Architecture comparison"]
  node_synthetic["Synthetic data<br/>[synthetic_data.py]"]
end

node_researcher(("Researcher"))
node_dataset["Tabular dataset"]
node_outputs[("Experiment outputs")]

node_researcher -->|"configures runs"| node_tuning
node_tuning -->|"tunes model"| node_mlp_resnet
node_researcher -->|"runs experiments"| node_mlp_resnet
node_dataset -->|"provides inputs"| node_data
node_mlp_resnet -->|"uses common tools"| node_data
node_ft_transformer -->|"uses common tools"| node_data
node_autoint -->|"uses common tools"| node_data
node_dcn2 -->|"uses common tools"| node_data
node_grownet -->|"uses common tools"| node_data
node_node -->|"uses common tools"| node_data
node_snn -->|"uses common tools"| node_data
node_tabnet -->|"processes dataset"| node_data
node_tree_models -->|"uses common tools"| node_data
node_mlp_resnet -->|"uses training tools"| node_deep
node_ft_transformer -->|"uses training tools"| node_deep
node_mlp_resnet -.->|"reports metrics"| node_metrics
node_mlp_resnet -->|"writes results"| node_outputs
node_ensembling -->|"reads run results"| node_outputs
node_ensembling -->|"writes ensembles"| node_outputs
node_tuning -->|"records configurations"| node_outputs
node_node -->|"uses architecture"| node_node_arch
node_node_arch -->|"builds layers"| node_odst
node_odst -->|"uses operators"| node_node_nn
node_comparison -->|"compares model"| node_ft_transformer
node_comparison -->|"compares model"| node_mlp_resnet
node_comparison -->|"uses generated data"| node_synthetic

click node_tuning "https://github.com/yandex-research/rtdl-revisiting-models/blob/main/bin/tune.py"
click node_ensembling "https://github.com/yandex-research/rtdl-revisiting-models/blob/main/bin/ensemble.py"
click node_mlp_resnet "https://github.com/yandex-research/rtdl-revisiting-models/blob/main/bin/resnet.py"
click node_ft_transformer "https://github.com/yandex-research/rtdl-revisiting-models/blob/main/bin/ft_transformer.py"
click node_autoint "https://github.com/yandex-research/rtdl-revisiting-models/blob/main/bin/autoint.py"
click node_dcn2 "https://github.com/yandex-research/rtdl-revisiting-models/blob/main/bin/dcn2.py"
click node_grownet "https://github.com/yandex-research/rtdl-revisiting-models/blob/main/bin/grownet.py"
click node_node "https://github.com/yandex-research/rtdl-revisiting-models/blob/main/bin/node.py"
click node_snn "https://github.com/yandex-research/rtdl-revisiting-models/blob/main/bin/snn.py"
click node_tabnet "https://github.com/yandex-research/rtdl-revisiting-models/blob/main/bin/tabnet.py"
click node_tree_models "https://github.com/yandex-research/rtdl-revisiting-models/blob/main/bin/catboost_.py"
click node_data "https://github.com/yandex-research/rtdl-revisiting-models/blob/main/lib/data.py"
click node_deep "https://github.com/yandex-research/rtdl-revisiting-models/blob/main/lib/deep.py"
click node_metrics "https://github.com/yandex-research/rtdl-revisiting-models/blob/main/lib/metrics.py"
click node_node_arch "https://github.com/yandex-research/rtdl-revisiting-models/blob/main/lib/node/arch.py"
click node_odst "https://github.com/yandex-research/rtdl-revisiting-models/blob/main/lib/node/odst.py"
click node_node_nn "https://github.com/yandex-research/rtdl-revisiting-models/blob/main/lib/node/nn_utils.py"
click node_comparison "https://github.com/yandex-research/rtdl-revisiting-models/blob/main/bin/analysis_ft_transformer_vs_resnet.py"
click node_synthetic "https://github.com/yandex-research/rtdl-revisiting-models/blob/main/lib/synthetic_data.py"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_tuning,node_ensembling toneBlue
class node_mlp_resnet,node_ft_transformer,node_autoint,node_dcn2,node_grownet,node_node,node_snn,node_tabnet,node_tree_models,node_outputs toneAmber
class node_data,node_deep,node_metrics,node_node_arch,node_odst,node_node_nn toneMint
class node_comparison,node_synthetic toneRose
class node_researcher,node_dataset toneIndigo
```

## Components

### Experiments

- [Hyperparameter tuning](https://github.com/yandex-research/rtdl-revisiting-models/blob/main/bin/tune.py): `bin/tune.py`
- [Ensembling](https://github.com/yandex-research/rtdl-revisiting-models/blob/main/bin/ensemble.py): `bin/ensemble.py`

### Model runners

- [MLP and ResNet](https://github.com/yandex-research/rtdl-revisiting-models/blob/main/bin/resnet.py): `bin/resnet.py`
- [FT-Transformer](https://github.com/yandex-research/rtdl-revisiting-models/blob/main/bin/ft_transformer.py): `bin/ft_transformer.py`
- [AutoInt](https://github.com/yandex-research/rtdl-revisiting-models/blob/main/bin/autoint.py): `bin/autoint.py`
- [DCN v2](https://github.com/yandex-research/rtdl-revisiting-models/blob/main/bin/dcn2.py): `bin/dcn2.py`
- [GrowNet](https://github.com/yandex-research/rtdl-revisiting-models/blob/main/bin/grownet.py): `bin/grownet.py`
- [NODE](https://github.com/yandex-research/rtdl-revisiting-models/blob/main/bin/node.py): `bin/node.py`
- [SNN](https://github.com/yandex-research/rtdl-revisiting-models/blob/main/bin/snn.py): `bin/snn.py`
- [TabNet](https://github.com/yandex-research/rtdl-revisiting-models/blob/main/bin/tabnet.py): `bin/tabnet.py`
- [Tree models](https://github.com/yandex-research/rtdl-revisiting-models/blob/main/bin/catboost_.py): `bin/catboost_.py`

### Shared runtime

- [Dataset processing](https://github.com/yandex-research/rtdl-revisiting-models/blob/main/lib/data.py): `lib/data.py`
- [Training utilities](https://github.com/yandex-research/rtdl-revisiting-models/blob/main/lib/deep.py): `lib/deep.py`
- [Metrics](https://github.com/yandex-research/rtdl-revisiting-models/blob/main/lib/metrics.py): `lib/metrics.py`
- [NODE architecture](https://github.com/yandex-research/rtdl-revisiting-models/blob/main/lib/node/arch.py): `lib/node/arch.py`
- [Differentiable trees](https://github.com/yandex-research/rtdl-revisiting-models/blob/main/lib/node/odst.py): `lib/node/odst.py`
- [NODE NN utilities](https://github.com/yandex-research/rtdl-revisiting-models/blob/main/lib/node/nn_utils.py): `lib/node/nn_utils.py`

### Analysis

- [Architecture comparison](https://github.com/yandex-research/rtdl-revisiting-models/blob/main/bin/analysis_ft_transformer_vs_resnet.py): `bin/analysis_ft_transformer_vs_resnet.py`
- [Synthetic data](https://github.com/yandex-research/rtdl-revisiting-models/blob/main/lib/synthetic_data.py): `lib/synthetic_data.py`

### Other components

- **Researcher**
- **Tabular dataset**
- **Experiment outputs**

## Connections

- Researcher → Hyperparameter tuning: configures runs (evidence: `README.md`)
- Hyperparameter tuning → MLP and ResNet: tunes model (evidence: `README.md`)
- Researcher → MLP and ResNet: runs experiments (evidence: `README.md`)
- Tabular dataset → Dataset processing: provides inputs (evidence: `README.md`)
- MLP and ResNet → Dataset processing: uses common tools (evidence: `README.md`)
- FT-Transformer → Dataset processing: uses common tools (evidence: `bin/ft_transformer.py`)
- AutoInt → Dataset processing: uses common tools (evidence: `bin/autoint.py`)
- DCN v2 → Dataset processing: uses common tools (evidence: `bin/dcn2.py`)
- GrowNet → Dataset processing: uses common tools (evidence: `bin/grownet.py`)
- NODE → Dataset processing: uses common tools (evidence: `bin/node.py`)
- SNN → Dataset processing: uses common tools (evidence: `bin/snn.py`)
- TabNet → Dataset processing: processes dataset (evidence: `bin/tabnet.py`)
- Tree models → Dataset processing: uses common tools (evidence: `bin/catboost_.py`)
- MLP and ResNet → Training utilities: uses training tools (evidence: `README.md`)
- FT-Transformer → Training utilities: uses training tools (evidence: `README.md`)
- MLP and ResNet → Metrics: reports metrics
- MLP and ResNet → Experiment outputs: writes results (evidence: `README.md`)
- Ensembling → Experiment outputs: reads run results (evidence: `README.md`)
- Ensembling → Experiment outputs: writes ensembles (evidence: `README.md`)
- Hyperparameter tuning → Experiment outputs: records configurations (evidence: `README.md`)
- NODE → NODE architecture: uses architecture (evidence: `bin/node.py`)
- NODE architecture → Differentiable trees: builds layers (evidence: `lib/node/arch.py`)
- Differentiable trees → NODE NN utilities: uses operators (evidence: `lib/node/odst.py`)
- Architecture comparison → FT-Transformer: compares model (evidence: `bin/analysis_ft_transformer_vs_resnet.py`)
- Architecture comparison → MLP and ResNet: compares model (evidence: `bin/analysis_ft_transformer_vs_resnet.py`)
- Architecture comparison → Synthetic data: uses generated data (evidence: `bin/analysis_ft_transformer_vs_resnet.py`)
