humancompatible-train 0.1.2__tar.gz → 0.1.4__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {humancompatible_train-0.1.2/humancompatible_train.egg-info → humancompatible_train-0.1.4}/PKG-INFO +46 -20
- {humancompatible_train-0.1.2 → humancompatible_train-0.1.4}/README.md +39 -20
- humancompatible_train-0.1.4/experiments/run_dutch.py +439 -0
- humancompatible_train-0.1.4/experiments/run_experiment.py +196 -0
- {humancompatible_train-0.1.2 → humancompatible_train-0.1.4}/experiments/run_folktables.py +145 -108
- {humancompatible_train-0.1.2 → humancompatible_train-0.1.4}/humancompatible/train/algorithms/__init__.py +1 -0
- {humancompatible_train-0.1.2 → humancompatible_train-0.1.4}/humancompatible/train/algorithms/ssl_alm.py +1 -2
- humancompatible_train-0.1.4/humancompatible/train/algorithms/ssl_alm_adam.py +330 -0
- humancompatible_train-0.1.4/humancompatible/train/algorithms/test/test_ssl_alm_adam.py +146 -0
- {humancompatible_train-0.1.2 → humancompatible_train-0.1.4}/humancompatible/train/fairness/utils/balanced_batch_sampler.py +5 -4
- {humancompatible_train-0.1.2 → humancompatible_train-0.1.4}/humancompatible/train/fairness/utils/tests/test_balanced_batch_sampler.py +2 -0
- {humancompatible_train-0.1.2 → humancompatible_train-0.1.4/humancompatible_train.egg-info}/PKG-INFO +46 -20
- {humancompatible_train-0.1.2 → humancompatible_train-0.1.4}/humancompatible_train.egg-info/SOURCES.txt +4 -6
- {humancompatible_train-0.1.2 → humancompatible_train-0.1.4}/humancompatible_train.egg-info/requires.txt +8 -0
- {humancompatible_train-0.1.2 → humancompatible_train-0.1.4}/pyproject.toml +2 -1
- humancompatible_train-0.1.2/experiments/run_folktables_torchalgs.py +0 -956
- humancompatible_train-0.1.2/humancompatible/train/fairness/constraints/__init__.py +0 -15
- humancompatible_train-0.1.2/humancompatible/train/fairness/constraints/constraint.py +0 -97
- humancompatible_train-0.1.2/humancompatible/train/fairness/constraints/constraint_fns.py +0 -244
- humancompatible_train-0.1.2/humancompatible/train/fairness/constraints/torch/__init__.py +0 -1
- humancompatible_train-0.1.2/humancompatible/train/fairness/constraints/torch/constraints.py +0 -36
- {humancompatible_train-0.1.2 → humancompatible_train-0.1.4}/LICENCE.txt +0 -0
- {humancompatible_train-0.1.2 → humancompatible_train-0.1.4}/experiments/__init__.py +0 -0
- {humancompatible_train-0.1.2 → humancompatible_train-0.1.4}/experiments/calculate_iteration_values.py +0 -0
- {humancompatible_train-0.1.2 → humancompatible_train-0.1.4}/humancompatible/__init__.py +0 -0
- {humancompatible_train-0.1.2 → humancompatible_train-0.1.4}/humancompatible/train/__init__.py +0 -0
- {humancompatible_train-0.1.2 → humancompatible_train-0.1.4}/humancompatible/train/algorithms/ssw.py +0 -0
- {humancompatible_train-0.1.2 → humancompatible_train-0.1.4}/humancompatible/train/algorithms/test/__init__.py +0 -0
- {humancompatible_train-0.1.2 → humancompatible_train-0.1.4}/humancompatible/train/algorithms/test/test_ssl_alm.py +0 -0
- {humancompatible_train-0.1.2 → humancompatible_train-0.1.4}/humancompatible/train/algorithms/test/test_ssw.py +0 -0
- {humancompatible_train-0.1.2 → humancompatible_train-0.1.4}/humancompatible/train/fairness/__init__.py +0 -0
- {humancompatible_train-0.1.2 → humancompatible_train-0.1.4}/humancompatible/train/fairness/utils/__init__.py +0 -0
- {humancompatible_train-0.1.2 → humancompatible_train-0.1.4}/humancompatible/train/fairness/utils/tests/__init__.py +0 -0
- {humancompatible_train-0.1.2 → humancompatible_train-0.1.4}/humancompatible_train.egg-info/dependency_links.txt +0 -0
- {humancompatible_train-0.1.2 → humancompatible_train-0.1.4}/humancompatible_train.egg-info/top_level.txt +0 -0
- {humancompatible_train-0.1.2 → humancompatible_train-0.1.4}/setup.cfg +0 -0
- {humancompatible_train-0.1.2 → humancompatible_train-0.1.4}/setup.py +0 -0
{humancompatible_train-0.1.2/humancompatible_train.egg-info → humancompatible_train-0.1.4}/PKG-INFO
RENAMED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: humancompatible-train
|
|
3
|
-
Version: 0.1.
|
|
3
|
+
Version: 0.1.4
|
|
4
4
|
Summary: PyTorch-based package for constrained training of neural networks
|
|
5
5
|
Author: Gilles Bareilles, Jana Lepsova, Jakub Marecek
|
|
6
6
|
Author-email: Andrii Kliachkin <kliachkin.andrii@gmail.com>
|
|
@@ -10,6 +10,13 @@ Description-Content-Type: text/markdown
|
|
|
10
10
|
License-File: LICENCE.txt
|
|
11
11
|
Requires-Dist: torch
|
|
12
12
|
Requires-Dist: numpy
|
|
13
|
+
Provides-Extra: examples
|
|
14
|
+
Requires-Dist: ipykernel; extra == "examples"
|
|
15
|
+
Requires-Dist: ipympl; extra == "examples"
|
|
16
|
+
Requires-Dist: fairret; extra == "examples"
|
|
17
|
+
Requires-Dist: folktables; extra == "examples"
|
|
18
|
+
Requires-Dist: scikit-learn; extra == "examples"
|
|
19
|
+
Requires-Dist: matplotlib; extra == "examples"
|
|
13
20
|
Provides-Extra: benchmark
|
|
14
21
|
Requires-Dist: fairret; extra == "benchmark"
|
|
15
22
|
Requires-Dist: matplotlib; extra == "benchmark"
|
|
@@ -31,22 +38,23 @@ The toolkit implements algorithms for constrained training of neural networks ba
|
|
|
31
38
|
<!-- , as well as a tool to compare stochastic-constrained stochastic optimization algorithms on a _fair learning_ task in the `experiments` folder. -->
|
|
32
39
|
|
|
33
40
|
## Table of Contents
|
|
41
|
+
|
|
34
42
|
1. [Basic installation instructions](#basic-installation-instructions)
|
|
35
43
|
2. [Using the toolkit](#using-the-toolkit)
|
|
36
|
-
3. [Extending the toolkit](#extending-the-toolkit)
|
|
44
|
+
3. [Extending the toolkit](#extending-the-toolkit)
|
|
37
45
|
4. [Reproducing the Benchmark](#reproducing-the-benchmark)
|
|
38
46
|
5. [License and terms of use](#license-and-terms-of-use)
|
|
39
47
|
6. [References](#references)
|
|
40
48
|
|
|
41
49
|
humancompatible-train is still under active development! If you find bugs or have feature
|
|
42
50
|
requests, please file a
|
|
43
|
-
[Github issue](https://github.com/humancompatible/train/issues).
|
|
51
|
+
[Github issue](https://github.com/humancompatible/train/issues).
|
|
44
52
|
|
|
45
53
|
## Installation
|
|
46
54
|
|
|
47
55
|
Use
|
|
48
56
|
|
|
49
|
-
```
|
|
57
|
+
```bash
|
|
50
58
|
pip install humancompatible-train
|
|
51
59
|
```
|
|
52
60
|
|
|
@@ -56,11 +64,11 @@ The only dependencies of this package are `numpy` and `torch`.
|
|
|
56
64
|
|
|
57
65
|
The toolkit implements algorithms for constrained training of neural networks based on PyTorch.
|
|
58
66
|
|
|
59
|
-
The algorithms follow the `dual_step()` - `step()` framework: taking inspiration from PyTorch, the `
|
|
67
|
+
The algorithms follow the `dual_step()` - `step()` framework: taking inspiration from PyTorch, the `dual_step()` does updates related to the dual parameters and prepares for the primal update (by, e.g., saving constraint gradients), and `step()` updates the primal parameters.
|
|
60
68
|
|
|
61
69
|
In general, your code using `humancompatible-train` would look something like this:
|
|
62
70
|
|
|
63
|
-
```
|
|
71
|
+
```python
|
|
64
72
|
for inputs, labels in dataloader:
|
|
65
73
|
# inference
|
|
66
74
|
outputs = model(inputs)
|
|
@@ -79,6 +87,7 @@ for inputs, labels in dataloader:
|
|
|
79
87
|
```
|
|
80
88
|
|
|
81
89
|
Our idea is to
|
|
90
|
+
|
|
82
91
|
1. Deviate minimally from the usual PyTorch workflow
|
|
83
92
|
2. Make different stochastic-constrained stochastic optimization algorithms nearly interchangable in the code.
|
|
84
93
|
|
|
@@ -86,6 +95,12 @@ Our idea is to
|
|
|
86
95
|
|
|
87
96
|
You are invited to check out our new API presented in notebooks in the `examples` folder.
|
|
88
97
|
|
|
98
|
+
The example notebooks have additional dependencies, such as `fairret`. To install those, run
|
|
99
|
+
|
|
100
|
+
```
|
|
101
|
+
pip install humancompatible-train[examples]
|
|
102
|
+
```
|
|
103
|
+
|
|
89
104
|
*The legacy API used for the benchmark is presented in `examples/_old_/algorithm_demo.ipynb` and `examples/_old_/constraint_demo.ipynb`.*
|
|
90
105
|
|
|
91
106
|
## Extending the toolkit
|
|
@@ -99,21 +114,27 @@ You are invited to check out our new API presented in notebooks in the `examples
|
|
|
99
114
|
The code used in [our benchmark paper](https://arxiv.org/abs/2507.04033) is not migrated to the new API yet (WIP).
|
|
100
115
|
|
|
101
116
|
### Basic installation instructions
|
|
117
|
+
|
|
102
118
|
The code requires Python version ```3.11```.
|
|
103
119
|
|
|
104
120
|
1. Create a virtual environment
|
|
105
121
|
|
|
106
122
|
**bash** (Linux)
|
|
123
|
+
|
|
107
124
|
```
|
|
108
125
|
python3.11 -m venv fairbenchenv
|
|
109
126
|
source fairbenchenv/bin/activate
|
|
110
127
|
```
|
|
128
|
+
|
|
111
129
|
**cmd** (Windows)
|
|
130
|
+
|
|
112
131
|
```
|
|
113
132
|
python -m venv fairbenchenv
|
|
114
133
|
fairbenchenv\Scripts\activate.bat
|
|
115
134
|
```
|
|
135
|
+
|
|
116
136
|
2. Install from source.
|
|
137
|
+
|
|
117
138
|
```
|
|
118
139
|
git clone https://github.com/humancompatible/train.git
|
|
119
140
|
cd train
|
|
@@ -122,11 +143,12 @@ pip install .
|
|
|
122
143
|
```
|
|
123
144
|
|
|
124
145
|
If you wish to edit the code of the algorithms, install as an editable package:
|
|
146
|
+
|
|
125
147
|
```
|
|
126
148
|
pip install -e .
|
|
127
149
|
```
|
|
128
150
|
|
|
129
|
-
|
|
151
|
+
**Warning**: it is recommended to use Stochastic Ghost with the mkl-accelerated version of the scipy package with Stochastic Ghost; to install it, run
|
|
130
152
|
|
|
131
153
|
```pip install --force-reinstall -i https://software.repos.intel.com/python/pypi scipy```
|
|
132
154
|
|
|
@@ -140,12 +162,14 @@ after installing requirements.txt; otherwise, the algorithm will run slower. How
|
|
|
140
162
|
### Running the algorithms
|
|
141
163
|
|
|
142
164
|
The benchmark comprises the following algorithms:
|
|
165
|
+
|
|
143
166
|
- Stochastic Ghost [[2]](#2),
|
|
144
167
|
- SSL-ALM [[3]](#3),
|
|
145
168
|
- Stochastic Switching Subgradient [[4]](#4).
|
|
146
169
|
|
|
147
170
|
To reproduce the experiments of the paper, run the following:
|
|
148
|
-
|
|
171
|
+
|
|
172
|
+
```
|
|
149
173
|
cd experiments
|
|
150
174
|
python run_folktables.py data=folktables alg=sslalm
|
|
151
175
|
python run_folktables.py data=folktables alg=alm
|
|
@@ -154,23 +178,25 @@ python run_folktables.py data=folktables alg=ssg
|
|
|
154
178
|
python run_folktables.py data=folktables alg=sgd # baseline, no fairness
|
|
155
179
|
python run_folktables.py data=folktables alg=fairret # baseline, fairness with regularizer
|
|
156
180
|
```
|
|
181
|
+
|
|
157
182
|
Each command will start 10 runs of the `alg`, 30 seconds each.
|
|
158
183
|
The results will be saved to `experiments/utils/saved_models` and `experiments/utils/exp_results`.
|
|
159
184
|
<!-- In the repository, we include the configuration needed to reproduce the experiments in the paper. To do so, go to `experiments` and run `python run_folktables.py data=folktables alg=sslalm`. -->
|
|
160
185
|
<!-- Repeat for the other algorithms by changing the `alg` parameter. -->
|
|
161
186
|
|
|
162
|
-
This repository uses [Hydra](https://hydra.cc/) to manage parameters; see `experiments/conf` for configuration files.
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
187
|
+
This repository uses [Hydra](https://hydra.cc/) to manage parameters; see `experiments/conf` for configuration files.
|
|
188
|
+
|
|
189
|
+
- To change the parameters of the experiment, such as the number of runs for each algorithm, run time, the dataset used (*note: for now supports only Folktables*) - use `experiment.yaml`.
|
|
190
|
+
- To change the dataset settings - such as file location - or do dataset-specific adjustments - such as the configuration of the protected attributes - use `data/{dataset_name}.yaml`
|
|
191
|
+
- To change algorithm hyperparameters, use `alg/{algorithm_name}.yaml`.
|
|
192
|
+
- To change constraint hyperparameters, use `constraint/{constraint_name}.yaml`
|
|
167
193
|
|
|
168
194
|
<!-- ; it is installed as one of the dependencies. -->
|
|
169
195
|
<!-- To learn more about using Hydra, please check out the [official tutorial](https://hydra.cc/docs/tutorials/basic/your_first_app). -->
|
|
170
196
|
|
|
171
197
|
### Producing plots
|
|
172
|
-
The plots and tables like the ones in the paper can be produced using the two notebooks. `experiments/algo_plots.ipynb` houses the convergence plots, and `experiments/model_plots.ipynb` - all the others.
|
|
173
198
|
|
|
199
|
+
The plots and tables like the ones in the paper can be produced using the two notebooks. `experiments/algo_plots.ipynb` houses the convergence plots, and `experiments/model_plots.ipynb` - all the others.
|
|
174
200
|
|
|
175
201
|
## License and terms of use
|
|
176
202
|
|
|
@@ -180,7 +206,7 @@ The benchmark part of the package relies on the Folktables package, provided und
|
|
|
180
206
|
It provides code to download data from the American Community Survey
|
|
181
207
|
(ACS) Public Use Microdata Sample (PUMS) files managed by the US Census Bureau.
|
|
182
208
|
The data itself is governed by the terms of use provided by the Census Bureau.
|
|
183
|
-
For more information, see https://www.census.gov/data/developers/about/terms-of-service.html
|
|
209
|
+
For more information, see <https://www.census.gov/data/developers/about/terms-of-service.html>
|
|
184
210
|
|
|
185
211
|
<!-- ## Cite this work -->
|
|
186
212
|
|
|
@@ -206,7 +232,7 @@ For more information, see https://www.census.gov/data/developers/about/terms-of-
|
|
|
206
232
|
|
|
207
233
|
If you use this work, we encourage you to cite [our paper](https://arxiv.org/abs/2507.04033),
|
|
208
234
|
|
|
209
|
-
```
|
|
235
|
+
```bibtex
|
|
210
236
|
@misc{kliachkin2025benchmarkingstochasticapproximationalgorithms,
|
|
211
237
|
title={Benchmarking Stochastic Approximation Algorithms for Fairness-Constrained Training of Deep Neural Networks},
|
|
212
238
|
author={Andrii Kliachkin and Jana Lepšová and Gilles Bareilles and Jakub Mareček},
|
|
@@ -218,14 +244,14 @@ If you use this work, we encourage you to cite [our paper](https://arxiv.org/abs
|
|
|
218
244
|
}
|
|
219
245
|
```
|
|
220
246
|
|
|
221
|
-
<a id="1">[1]</a>
|
|
247
|
+
<a id="1">[1]</a>
|
|
222
248
|
Ding, Hardt & Miller et al. (2021) Retiring Adult: New Datasets for Fair Machine Learning, Curran Associates, Inc..
|
|
223
249
|
|
|
224
|
-
<a id="2">[2]</a>
|
|
250
|
+
<a id="2">[2]</a>
|
|
225
251
|
Facchinei & Kungurtsev (2023) Stochastic Approximation for Expectation Objective and Expectation Inequality-Constrained Nonconvex Optimization, arXiv.
|
|
226
252
|
|
|
227
|
-
<a id="3">[3]</a>
|
|
253
|
+
<a id="3">[3]</a>
|
|
228
254
|
Huang, Zhang & Alacaoglu (2025) Stochastic Smoothed Primal-Dual Algorithms for Nonconvex Optimization with Linear Inequality Constraints, arXiv.
|
|
229
255
|
|
|
230
|
-
<a id="4">[4]</a>
|
|
256
|
+
<a id="4">[4]</a>
|
|
231
257
|
Huang & Lin (2023) Oracle Complexity of Single-Loop Switching Subgradient Methods for Non-Smooth Weakly Convex Functional Constrained Optimization, Curran Associates Inc..
|
|
@@ -6,22 +6,23 @@ The toolkit implements algorithms for constrained training of neural networks ba
|
|
|
6
6
|
<!-- , as well as a tool to compare stochastic-constrained stochastic optimization algorithms on a _fair learning_ task in the `experiments` folder. -->
|
|
7
7
|
|
|
8
8
|
## Table of Contents
|
|
9
|
+
|
|
9
10
|
1. [Basic installation instructions](#basic-installation-instructions)
|
|
10
11
|
2. [Using the toolkit](#using-the-toolkit)
|
|
11
|
-
3. [Extending the toolkit](#extending-the-toolkit)
|
|
12
|
+
3. [Extending the toolkit](#extending-the-toolkit)
|
|
12
13
|
4. [Reproducing the Benchmark](#reproducing-the-benchmark)
|
|
13
14
|
5. [License and terms of use](#license-and-terms-of-use)
|
|
14
15
|
6. [References](#references)
|
|
15
16
|
|
|
16
17
|
humancompatible-train is still under active development! If you find bugs or have feature
|
|
17
18
|
requests, please file a
|
|
18
|
-
[Github issue](https://github.com/humancompatible/train/issues).
|
|
19
|
+
[Github issue](https://github.com/humancompatible/train/issues).
|
|
19
20
|
|
|
20
21
|
## Installation
|
|
21
22
|
|
|
22
23
|
Use
|
|
23
24
|
|
|
24
|
-
```
|
|
25
|
+
```bash
|
|
25
26
|
pip install humancompatible-train
|
|
26
27
|
```
|
|
27
28
|
|
|
@@ -31,11 +32,11 @@ The only dependencies of this package are `numpy` and `torch`.
|
|
|
31
32
|
|
|
32
33
|
The toolkit implements algorithms for constrained training of neural networks based on PyTorch.
|
|
33
34
|
|
|
34
|
-
The algorithms follow the `dual_step()` - `step()` framework: taking inspiration from PyTorch, the `
|
|
35
|
+
The algorithms follow the `dual_step()` - `step()` framework: taking inspiration from PyTorch, the `dual_step()` does updates related to the dual parameters and prepares for the primal update (by, e.g., saving constraint gradients), and `step()` updates the primal parameters.
|
|
35
36
|
|
|
36
37
|
In general, your code using `humancompatible-train` would look something like this:
|
|
37
38
|
|
|
38
|
-
```
|
|
39
|
+
```python
|
|
39
40
|
for inputs, labels in dataloader:
|
|
40
41
|
# inference
|
|
41
42
|
outputs = model(inputs)
|
|
@@ -54,6 +55,7 @@ for inputs, labels in dataloader:
|
|
|
54
55
|
```
|
|
55
56
|
|
|
56
57
|
Our idea is to
|
|
58
|
+
|
|
57
59
|
1. Deviate minimally from the usual PyTorch workflow
|
|
58
60
|
2. Make different stochastic-constrained stochastic optimization algorithms nearly interchangable in the code.
|
|
59
61
|
|
|
@@ -61,6 +63,12 @@ Our idea is to
|
|
|
61
63
|
|
|
62
64
|
You are invited to check out our new API presented in notebooks in the `examples` folder.
|
|
63
65
|
|
|
66
|
+
The example notebooks have additional dependencies, such as `fairret`. To install those, run
|
|
67
|
+
|
|
68
|
+
```
|
|
69
|
+
pip install humancompatible-train[examples]
|
|
70
|
+
```
|
|
71
|
+
|
|
64
72
|
*The legacy API used for the benchmark is presented in `examples/_old_/algorithm_demo.ipynb` and `examples/_old_/constraint_demo.ipynb`.*
|
|
65
73
|
|
|
66
74
|
## Extending the toolkit
|
|
@@ -74,21 +82,27 @@ You are invited to check out our new API presented in notebooks in the `examples
|
|
|
74
82
|
The code used in [our benchmark paper](https://arxiv.org/abs/2507.04033) is not migrated to the new API yet (WIP).
|
|
75
83
|
|
|
76
84
|
### Basic installation instructions
|
|
85
|
+
|
|
77
86
|
The code requires Python version ```3.11```.
|
|
78
87
|
|
|
79
88
|
1. Create a virtual environment
|
|
80
89
|
|
|
81
90
|
**bash** (Linux)
|
|
91
|
+
|
|
82
92
|
```
|
|
83
93
|
python3.11 -m venv fairbenchenv
|
|
84
94
|
source fairbenchenv/bin/activate
|
|
85
95
|
```
|
|
96
|
+
|
|
86
97
|
**cmd** (Windows)
|
|
98
|
+
|
|
87
99
|
```
|
|
88
100
|
python -m venv fairbenchenv
|
|
89
101
|
fairbenchenv\Scripts\activate.bat
|
|
90
102
|
```
|
|
103
|
+
|
|
91
104
|
2. Install from source.
|
|
105
|
+
|
|
92
106
|
```
|
|
93
107
|
git clone https://github.com/humancompatible/train.git
|
|
94
108
|
cd train
|
|
@@ -97,11 +111,12 @@ pip install .
|
|
|
97
111
|
```
|
|
98
112
|
|
|
99
113
|
If you wish to edit the code of the algorithms, install as an editable package:
|
|
114
|
+
|
|
100
115
|
```
|
|
101
116
|
pip install -e .
|
|
102
117
|
```
|
|
103
118
|
|
|
104
|
-
|
|
119
|
+
**Warning**: it is recommended to use Stochastic Ghost with the mkl-accelerated version of the scipy package with Stochastic Ghost; to install it, run
|
|
105
120
|
|
|
106
121
|
```pip install --force-reinstall -i https://software.repos.intel.com/python/pypi scipy```
|
|
107
122
|
|
|
@@ -115,12 +130,14 @@ after installing requirements.txt; otherwise, the algorithm will run slower. How
|
|
|
115
130
|
### Running the algorithms
|
|
116
131
|
|
|
117
132
|
The benchmark comprises the following algorithms:
|
|
133
|
+
|
|
118
134
|
- Stochastic Ghost [[2]](#2),
|
|
119
135
|
- SSL-ALM [[3]](#3),
|
|
120
136
|
- Stochastic Switching Subgradient [[4]](#4).
|
|
121
137
|
|
|
122
138
|
To reproduce the experiments of the paper, run the following:
|
|
123
|
-
|
|
139
|
+
|
|
140
|
+
```
|
|
124
141
|
cd experiments
|
|
125
142
|
python run_folktables.py data=folktables alg=sslalm
|
|
126
143
|
python run_folktables.py data=folktables alg=alm
|
|
@@ -129,23 +146,25 @@ python run_folktables.py data=folktables alg=ssg
|
|
|
129
146
|
python run_folktables.py data=folktables alg=sgd # baseline, no fairness
|
|
130
147
|
python run_folktables.py data=folktables alg=fairret # baseline, fairness with regularizer
|
|
131
148
|
```
|
|
149
|
+
|
|
132
150
|
Each command will start 10 runs of the `alg`, 30 seconds each.
|
|
133
151
|
The results will be saved to `experiments/utils/saved_models` and `experiments/utils/exp_results`.
|
|
134
152
|
<!-- In the repository, we include the configuration needed to reproduce the experiments in the paper. To do so, go to `experiments` and run `python run_folktables.py data=folktables alg=sslalm`. -->
|
|
135
153
|
<!-- Repeat for the other algorithms by changing the `alg` parameter. -->
|
|
136
154
|
|
|
137
|
-
This repository uses [Hydra](https://hydra.cc/) to manage parameters; see `experiments/conf` for configuration files.
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
155
|
+
This repository uses [Hydra](https://hydra.cc/) to manage parameters; see `experiments/conf` for configuration files.
|
|
156
|
+
|
|
157
|
+
- To change the parameters of the experiment, such as the number of runs for each algorithm, run time, the dataset used (*note: for now supports only Folktables*) - use `experiment.yaml`.
|
|
158
|
+
- To change the dataset settings - such as file location - or do dataset-specific adjustments - such as the configuration of the protected attributes - use `data/{dataset_name}.yaml`
|
|
159
|
+
- To change algorithm hyperparameters, use `alg/{algorithm_name}.yaml`.
|
|
160
|
+
- To change constraint hyperparameters, use `constraint/{constraint_name}.yaml`
|
|
142
161
|
|
|
143
162
|
<!-- ; it is installed as one of the dependencies. -->
|
|
144
163
|
<!-- To learn more about using Hydra, please check out the [official tutorial](https://hydra.cc/docs/tutorials/basic/your_first_app). -->
|
|
145
164
|
|
|
146
165
|
### Producing plots
|
|
147
|
-
The plots and tables like the ones in the paper can be produced using the two notebooks. `experiments/algo_plots.ipynb` houses the convergence plots, and `experiments/model_plots.ipynb` - all the others.
|
|
148
166
|
|
|
167
|
+
The plots and tables like the ones in the paper can be produced using the two notebooks. `experiments/algo_plots.ipynb` houses the convergence plots, and `experiments/model_plots.ipynb` - all the others.
|
|
149
168
|
|
|
150
169
|
## License and terms of use
|
|
151
170
|
|
|
@@ -155,7 +174,7 @@ The benchmark part of the package relies on the Folktables package, provided und
|
|
|
155
174
|
It provides code to download data from the American Community Survey
|
|
156
175
|
(ACS) Public Use Microdata Sample (PUMS) files managed by the US Census Bureau.
|
|
157
176
|
The data itself is governed by the terms of use provided by the Census Bureau.
|
|
158
|
-
For more information, see https://www.census.gov/data/developers/about/terms-of-service.html
|
|
177
|
+
For more information, see <https://www.census.gov/data/developers/about/terms-of-service.html>
|
|
159
178
|
|
|
160
179
|
<!-- ## Cite this work -->
|
|
161
180
|
|
|
@@ -181,7 +200,7 @@ For more information, see https://www.census.gov/data/developers/about/terms-of-
|
|
|
181
200
|
|
|
182
201
|
If you use this work, we encourage you to cite [our paper](https://arxiv.org/abs/2507.04033),
|
|
183
202
|
|
|
184
|
-
```
|
|
203
|
+
```bibtex
|
|
185
204
|
@misc{kliachkin2025benchmarkingstochasticapproximationalgorithms,
|
|
186
205
|
title={Benchmarking Stochastic Approximation Algorithms for Fairness-Constrained Training of Deep Neural Networks},
|
|
187
206
|
author={Andrii Kliachkin and Jana Lepšová and Gilles Bareilles and Jakub Mareček},
|
|
@@ -193,14 +212,14 @@ If you use this work, we encourage you to cite [our paper](https://arxiv.org/abs
|
|
|
193
212
|
}
|
|
194
213
|
```
|
|
195
214
|
|
|
196
|
-
<a id="1">[1]</a>
|
|
215
|
+
<a id="1">[1]</a>
|
|
197
216
|
Ding, Hardt & Miller et al. (2021) Retiring Adult: New Datasets for Fair Machine Learning, Curran Associates, Inc..
|
|
198
217
|
|
|
199
|
-
<a id="2">[2]</a>
|
|
218
|
+
<a id="2">[2]</a>
|
|
200
219
|
Facchinei & Kungurtsev (2023) Stochastic Approximation for Expectation Objective and Expectation Inequality-Constrained Nonconvex Optimization, arXiv.
|
|
201
220
|
|
|
202
|
-
<a id="3">[3]</a>
|
|
221
|
+
<a id="3">[3]</a>
|
|
203
222
|
Huang, Zhang & Alacaoglu (2025) Stochastic Smoothed Primal-Dual Algorithms for Nonconvex Optimization with Linear Inequality Constraints, arXiv.
|
|
204
223
|
|
|
205
|
-
<a id="4">[4]</a>
|
|
206
|
-
Huang & Lin (2023) Oracle Complexity of Single-Loop Switching Subgradient Methods for Non-Smooth Weakly Convex Functional Constrained Optimization, Curran Associates Inc..
|
|
224
|
+
<a id="4">[4]</a>
|
|
225
|
+
Huang & Lin (2023) Oracle Complexity of Single-Loop Switching Subgradient Methods for Non-Smooth Weakly Convex Functional Constrained Optimization, Curran Associates Inc..
|