add more sections authored by Sven Michael Lechner's avatar Sven Michael Lechner
A list of commands that you might want to use/modify during development.
# gRPC
Generate protobufs
``` shell
python3 -m grpc_tools.protoc -I./edml/proto --python_out=./edml/generated --pyi_out=./edml/generated --grpc_python_out=./edml/generated ./edml/proto/datastructures.proto
```
``` shell
python3 -m grpc_tools.protoc -I./edml/proto --python_out=./edml/generated --pyi_out=./edml/generated --grpc_python_out=./edml/generated ./edml/proto/connection.proto
```
# Experiments
## 50 devices
It is better to run W&B offline and sync afterward to not reach the bandwidth limit with a high number of processes.
```shell
export WANDB_MODE=offline
# experiment here
wandb sync --sync-all
```
### FL
```shell
python3 main.py dataset=cifar100 experiment=cifar loss_fn=cross_entropy model_provider=resnet110 optimizer=sdg_with_momentum scheduler=multistep topology=50_devices battery=resnet20_cifar100_cost +controller=fed wandb.enabled=True wandb.key_path=wandb_key.txt wandb.entity=swarmsl experiment.project=50_devices_unlimited_new +experiment.load_weights=False
```
### Vanilla SL
```shell
python3 main.py dataset=cifar100 experiment=cifar loss_fn=cross_entropy model_provider=resnet110 optimizer=sdg_with_momentum scheduler=multistep topology=50_devices battery=resnet20_cifar100_cost +controller=split wandb.enabled=True wandb.key_path=wandb_key.txt wandb.entity=swarmsl experiment.project=50_devices_unlimited_new +experiment.load_weights=False
```
### Swarm SL Seq
```shell
python3 main.py dataset=cifar100 experiment=cifar loss_fn=cross_entropy model_provider=resnet110 optimizer=sdg_with_momentum scheduler=multistep topology=50_devices battery=resnet20_cifar100_cost +controller=swarm controller/scheduler=sequential wandb.enabled=True wandb.key_path=wandb_key.txt wandb.entity=swarmsl experiment.project=50_devices_unlimited_new +experiment.load_weights=False
```
### PSSL Seq
```shell
python3 main.py dataset=cifar100 experiment=cifar experiment.batch_size=3 loss_fn=cross_entropy model_provider=resnet110 optimizer=sdg_with_momentum scheduler=multistep topology=50_devices battery=resnet20_cifar100_cost +controller=parallel_swarm controller/scheduler=sequential wandb.enabled=True wandb.key_path=wandb_key.txt wandb.entity=swarmsl experiment.project=50_devices_unlimited_new +experiment.load_weights=False
```
### PSSL Seq AE
```shell
python3 main.py dataset=cifar100 experiment=cifar experiment.batch_size=3 loss_fn=cross_entropy model_provider=resnet110-with-autoencoder optimizer=sdg_with_momentum scheduler=multistep topology=50_devices battery=resnet20_cifar100_cost +controller=parallel_swarm controller/scheduler=sequential wandb.enabled=True wandb.key_path=wandb_key.txt wandb.entity=swarmsl experiment.project=50_devices_unlimited_new +experiment.load_weights=False
```
### PSSL Seq AE Static
```shell
python3 main.py dataset=cifar100 experiment=cifar experiment.batch_size=3 loss_fn=cross_entropy model_provider=resnet110-with-autoencoder optimizer=sdg_with_momentum scheduler=multistep topology=50_devices battery=resnet20_cifar100_cost +controller=parallel_swarm controller/scheduler=sequential controller/adaptive_threshold_fn=static controller.adaptive_threshold_fn.threshold=0.7 wandb.enabled=True wandb.key_path=wandb_key.txt wandb.entity=swarmsl experiment.project=50_devices_unlimited_new +experiment.load_weights=False
```
## 5 devices
```shell
export WANDB_MODE=online
```
### FL
```shell
python3 main.py dataset=cifar100 experiment=cifar experiment.batch_size=26 loss_fn=cross_entropy model_provider=resnet110 optimizer=sdg_with_momentum scheduler=multistep topology=equal_batteries battery=resnet20_cifar100_cost +controller=fed wandb.enabled=True wandb.key_path=wandb_key.txt wandb.entity=swarmsl experiment.project=5_devices_unlimited_new +experiment.load_weights=False
```
### Vanilla SL
```shell
python3 main.py dataset=cifar100 experiment=cifar loss_fn=cross_entropy model_provider=resnet110 optimizer=sdg_with_momentum scheduler=multistep topology=equal_batteries battery=resnet20_cifar100_cost +controller=split wandb.enabled=True wandb.key_path=wandb_key.txt wandb.entity=swarmsl experiment.project=5_devices_unlimited_new +experiment.load_weights=False
```
### Swarm SL Seq
```shell
python3 main.py dataset=cifar100 experiment=cifar loss_fn=cross_entropy model_provider=resnet110 optimizer=sdg_with_momentum scheduler=multistep topology=equal_batteries battery=resnet20_cifar100_cost +controller=swarm controller/scheduler=sequential wandb.enabled=True wandb.key_path=wandb_key.txt wandb.entity=swarmsl experiment.project=5_devices_unlimited_new +experiment.load_weights=False
```
### PSSL Seq
```shell
python3 main.py dataset=cifar100 experiment=cifar experiment.batch_size=26 loss_fn=cross_entropy model_provider=resnet110 optimizer=sdg_with_momentum scheduler=multistep topology=equal_batteries battery=resnet20_cifar100_cost +controller=parallel_swarm controller/scheduler=sequential wandb.enabled=True wandb.key_path=wandb_key.txt wandb.entity=swarmsl experiment.project=5_devices_unlimited_new +experiment.load_weights=False
```
### PSSL Seq AE
```shell
python3 main.py dataset=cifar100 experiment=cifar experiment.batch_size=26 loss_fn=cross_entropy model_provider=resnet110-with-autoencoder optimizer=sdg_with_momentum scheduler=multistep topology=equal_batteries battery=resnet20_cifar100_cost +controller=parallel_swarm controller/scheduler=sequential wandb.enabled=True wandb.key_path=wandb_key.txt wandb.entity=swarmsl experiment.project=5_devices_unlimited_new +experiment.load_weights=False
```
### PSSL Seq AE Static
```shell
python3 main.py dataset=cifar100 experiment=cifar experiment.batch_size=26 loss_fn=cross_entropy model_provider=resnet110-with-autoencoder optimizer=sdg_with_momentum scheduler=multistep topology=equal_batteries battery=resnet20_cifar100_cost +controller=parallel_swarm controller/scheduler=sequential controller/adaptive_threshold_fn=static controller.adaptive_threshold_fn.threshold=0.7 wandb.enabled=True wandb.key_path=wandb_key.txt wandb.entity=swarmsl experiment.project=5_devices_unlimited_new +experiment.load_weights=False
```
\ No newline at end of file