Skip to content

Commit

Permalink
feat: add ignite loggers in sidebar [wip] (#29)
Browse files Browse the repository at this point in the history
* feat: add ignite loggers in sidebar

* add loggers handler in main.py

* fix: tensorboard -> tb, define optimizers, evaluators

* fix: missing arg in tb logging

* fix: clear template variable name for requirements
  • Loading branch information
Jeff Yang committed Mar 27, 2021
1 parent 099d470 commit 78b0def
Show file tree
Hide file tree
Showing 5 changed files with 104 additions and 17 deletions.
67 changes: 59 additions & 8 deletions templates/_base/_handlers.pyi
Original file line number Diff line number Diff line change
Expand Up @@ -4,16 +4,67 @@
trainer=trainer,
train_sampler=None,
to_save=to_save,
output_path='{{ output_path }}',
save_every_iters={{ save_every_iters }},
n_saved={{ n_saved }},
log_every_iters={{ log_every_iters }},
with_pbars={{ with_pbars }},
with_pbar_on_iters={{ with_pbar_on_iters }},
stop_on_nan={{ stop_on_nan }},
clear_cuda_cache={{ clear_cuda_cache }},
output_path=config.output_path,
save_every_iters=config.save_every_iters,
n_saved=config.n_saved,
log_every_iters=config.log_every_iters,
with_pbars=config.with_pbars,
with_pbar_on_iters=config.with_pbar_on_iters,
stop_on_nan=config.stop_on_nan,
clear_cuda_cache=config.clear_cuda_cache,
lr_scheduler=None,
with_gpu_stats=False,
output_names=None,
)
{% endif %}
{% if logger_deps == 'clearml' %}
logger_handler = common.setup_clearml_logging(
trainer=trainer,
optimizers=optimizers,
evaluators=evaluators,
log_every_iters=config.logger_log_every_iters,
)
{% elif logger_deps == 'mlflow' %}
logger_handler = common.setup_mlflow_logging(
trainer=trainer,
optimizers=optimizers,
evaluators=evaluators,
log_every_iters=config.logger_log_every_iters,
)
{% elif logger_deps == 'neptune-client' %}
logger_handler = common.setup_neptune_logging(
trainer=trainer,
optimizers=optimizers,
evaluators=evaluators,
log_every_iters=config.logger_log_every_iters,
)
{% elif logger_deps == 'polyaxon' %}
logger_handler = common.setup_plx_logging(
trainer=trainer,
optimizers=optimizers,
evaluators=evaluators,
log_every_iters=config.logger_log_every_iters,
)
{% elif logger_deps == 'tensorboard' %}
logger_handler = common.setup_tb_logging(
output_path=config.filepath,
trainer=trainer,
optimizers=optimizers,
evaluators=evaluators,
log_every_iters=config.logger_log_every_iters,
)
{% elif logger_deps == 'visdom' %}
logger_handler = common.setup_visdom_logging(
trainer=trainer,
optimizers=optimizers,
evaluators=evaluators,
log_every_iters=config.logger_log_every_iters,
)
{% elif logger_deps == 'wandb' %}
logger_handler = common.setup_wandb_logging(
trainer=trainer,
optimizers=optimizers,
evaluators=evaluators,
log_every_iters=config.logger_log_every_iters,
)
{% endif %}
34 changes: 30 additions & 4 deletions templates/gan/_sidebar.py
Original file line number Diff line number Diff line change
Expand Up @@ -8,8 +8,6 @@ def dataset_options(config):
["cifar10", "lsun", "imagenet", "folder", "lfw", "fake", "mnist"],
)
config["data_path"] = st.text_input("Dataset path (data_path)", "./")

config["filepath"] = st.text_input("Logging file path (filepath)", "./logs")
st.markdown("---")


Expand Down Expand Up @@ -79,10 +77,10 @@ def ignite_handlers_options(config):
)
config["n_saved"] = st.number_input("Number of best models to store (n_saved)", min_value=1, value=2)
config["log_every_iters"] = st.number_input(
"Logging interval for iteration progress bar",
"Logging interval for iteration progress bar (log_every_iters)",
min_value=1,
value=100,
help="Setting to a lower value can cause tqdm" " to fluch quickly for fast trainings",
help="Setting to a lower value can cause `tqdm` to fluch quickly for fast trainings",
)
config["with_pbars"] = st.checkbox(
"Show two progress bars",
Expand All @@ -106,6 +104,33 @@ def ignite_handlers_options(config):
)
st.markdown("---")
config["setup_common_training_handlers"] = True
if config["with_pbars"]:
config["handler_deps"] = "tqdm"


def ignite_loggers_options(config):
st.markdown("## Ignite Loggers Options")
config["filepath"] = st.text_input(
"Logging file path (filepath)",
"./logs",
help="This option will be used by both python logging and ignite loggers if possible",
)
if st.checkbox("Use experiment tracking system ?", value=True):
config["logger_deps"] = st.selectbox(
"Select experiment eracking system",
["ClearML", "MLflow", "Neptune", "Polyaxon", "TensorBoard", "Visdom", "WandB"],
index=4,
).lower()
# for logger requirement
if config["logger_deps"] in ("neptune", "polyaxon"):
config["logger_deps"] += "-client"
config["logger_log_every_iters"] = st.number_input(
"Logging interval for experiment tracking system (logger_log_every_iters)",
min_value=1,
value=100,
help="This logging interval is iteration based.",
)
st.markdown("---")


def model_options(config):
Expand Down Expand Up @@ -143,6 +168,7 @@ def get_configs() -> dict:
training_options(config)
distributed_options(config)
ignite_handlers_options(config)
ignite_loggers_options(config)
model_options(config)

return config
2 changes: 2 additions & 0 deletions templates/gan/main.pyi
Original file line number Diff line number Diff line change
Expand Up @@ -91,6 +91,8 @@ def run(

# attach ignite handlers
to_save = {'netD': netD, 'netG': netG, 'optimizerD': optimizerD, 'optimizerG': optimizerG, 'trainer': trainer}
optimizers = {'optimizerD': optimizerD, 'optimizerG': optimizerG}
evaluators = None
{% include "_handlers.pyi" %}

# attach progress bar
Expand Down
2 changes: 2 additions & 0 deletions templates/gan/requirements.txt
Original file line number Diff line number Diff line change
Expand Up @@ -3,3 +3,5 @@ torchvision
pytorch-ignite
matplotlib
pandas
{{ handler_deps }}
{{ logger_deps }}
16 changes: 11 additions & 5 deletions templates/gan/utils.pyi
Original file line number Diff line number Diff line change
Expand Up @@ -13,11 +13,6 @@ DEFAULTS = {
"type": str,
"help": "datasets path ({{ data_path }})",
},
"filepath": {
"default": "{{ filepath }}",
"type": str,
"help": "logging file path ({{ filepath }})",
},
# dataloader options
"batch_size": {
"default": {{batch_size}},
Expand Down Expand Up @@ -134,6 +129,17 @@ DEFAULTS = {
"type": bool,
"help": "clear cuda cache every end of epoch",
},
# ignite logger options
"logger_log_every_iters": {
"default": {{logger_log_every_iters}},
"type": int,
"help": "logging interval for experiment tracking system ({{logger_log_every_iters}})",
},
"filepath": {
"default": "{{ filepath }}",
"type": str,
"help": "logging file path ({{ filepath }})",
},
# model options
"z_dim": {
"default": {{z_dim}},
Expand Down

0 comments on commit 78b0def

Please sign in to comment.