Weights and Biases Callback

Defines a fastai Callback for specifically tracking image-to-image translation experiments in Weights and Biases.

source

SaveModelAtEndCallback

 SaveModelAtEndCallback (fname='model', with_opt=False)

Basic class handling tweaks of the training loop by changing a Learner in various events


source

log_dataset

 log_dataset (main_path, folder_names=None, name=None, metadata={},
              description='raw dataset')

Log dataset folder


source

UPITWandbCallback

 UPITWandbCallback (log='gradients', log_preds=True, log_model=True,
                    log_dataset=False, folder_names=None,
                    dataset_name=None, valid_dl=None, n_preds=36,
                    seed=12345, reorder=True)

Saves model topology, losses & metrics

import tempfile
horse2zebra = untar_data('https://people.eecs.berkeley.edu/~taesung_park/CycleGAN/datasets/horse2zebra.zip')
folders = horse2zebra.ls().sorted()
trainA_path = folders[2]
trainB_path = folders[3]
testA_path = folders[0]
testB_path = folders[1]
dls = get_dls(trainA_path, trainB_path, num_A=100, num_B=100, load_size=286)

#os.environ['WANDB_MODE'] = 'dryrun' # run offline
wandb.init()
cycle_gan = CycleGAN(3,3,64)
learn = cycle_learner(dls, cycle_gan,opt_func=partial(Adam,mom=0.5,sqr_mom=0.999),
                    cbs=[UPITWandbCallback(log_preds=True, log_model=True, log_dataset=horse2zebra, folder_names=[trainA_path.name,trainB_path.name])],
                    metrics=[FrechetInceptionDistance()])

learn.fit_flat_lin(1,1,2e-4)
wandb.finish()
wandb: Currently logged in as: tmabraham. Use `wandb login --relogin` to force relogin
wandb: Adding directory to artifact (/home/tmabraham/.fastai/data/horse2zebra/trainA)... Done. 0.3s
wandb: Adding directory to artifact (/home/tmabraham/.fastai/data/horse2zebra/trainB)... Done. 0.1s
/home/tmabraham/anaconda3/envs/UPIT/lib/python3.9/site-packages/fastprogress/fastprogress.py:74: UserWarning: Your generator is empty.
  warn("Your generator is empty.")
wandb version 0.12.21 is available! To upgrade, please run: $ pip install wandb --upgrade
Tracking run with wandb version 0.12.17
Run data is saved locally in /home/tmabraham/UPIT/nbs/wandb/run-20220801_234826-umaf3jfa
Could not gather input dimensions
Adding SaveModelAtEndCallback()
Saving training set predictions
WandbCallback was not able to get prediction samples -> To be implemented
epoch train_loss id_loss_A id_loss_B gen_loss_A gen_loss_B cyc_loss_A cyc_loss_B D_A_loss D_B_loss frechet_inception_distance time
0 9.819530 1.455294 1.471061 0.432893 0.477370 3.085176 3.139654 0.405227 0.405442 93.815806 00:17
1 8.568236 1.112963 1.203730 0.294678 0.299053 2.385156 2.604889 0.257748 0.254994 93.795887 00:16
Waiting for W&B process to finish... (success).

Run history:


D_A_loss █▁
D_B_loss █▁
cyc_loss_A █▁
cyc_loss_B █▁
epoch ▁▁▁▁▂▂▂▂▂▃▃▃▃▃▃▄▄▄▄▄▅▅▅▅▅▅▆▆▆▆▆▆▇▇▇▇▇███
eps_0 ▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁
frechet_inception_distance █▁
gen_loss_A █▁
gen_loss_B █▁
id_loss_A █▁
id_loss_B █▁
lr_0 ██████████████████████▇▇▇▆▆▆▅▅▅▄▄▃▃▃▂▂▂▁
mom_0 ▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁
raw_loss █▇▆▅▄▄▃▃▄▂▂▂▃▄▂▃▂▂▃▂▃▂▂▃▂▂▂▃▂▃▂▂▃▂▁▂▂▂▁▂
sqr_mom_0 ▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁
train_loss █▇▆▆▅▄▄▄▃▃▃▃▃▃▂▂▂▂▂▂▂▂▂▂▂▂▂▂▂▂▁▁▁▁▁▁▁▁▁▁
wd_0 ▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁

Run summary:


D_A_loss 0.25775
D_B_loss 0.25499
cyc_loss_A 2.38516
cyc_loss_B 2.60489
epoch 2
eps_0 1e-05
frechet_inception_distance 93.79589
gen_loss_A 0.29468
gen_loss_B 0.29905
id_loss_A 1.11296
id_loss_B 1.20373
lr_0 1e-05
mom_0 0.5
raw_loss 7.13516
sqr_mom_0 0.999
train_loss 8.56824
wd_0 0.01

Synced floral-voice-43: https://wandb.ai/tmabraham/UPIT-nbs/runs/umaf3jfa
Synced 7 W&B file(s), 0 media file(s), 1 artifact file(s) and 1 other file(s)
Find logs at: ./wandb/run-20220801_234826-umaf3jfa/logs
b = dls.one_batch()
_,_,preds = learn.get_preds(dl=[b], with_decoded=True)
dls.show_batch((b[0], b[1]), max_n=2, show=True)
plt.suptitle('Input')
dls.show_batch((preds[1],preds[0]), max_n=2, show=True)
plt.suptitle('Predictions')
Text(0.5, 0.98, 'Predictions')