Nilai Loss yang turun tajam setelah loading Checkpoint

By | January 5, 2024
Print Friendly, PDF & Email
479 Views

Checkpointing dalam konteks PyTorch mengacu pada penyimpanan dan pemulihan model serta status pelatihan pada titik tertentu selama pelatihan. Ini bermanfaat dalam beberapa skenario, terutama jika pelatihan model memakan waktu lama atau jika ada risiko kehilangan koneksi selama proses pelatihan. Dengan checkpoint, kalian dapat menyimpan kemajuan pelatihan model sehingga jika ada kegagalan atau perlu dilanjutkan dari titik tertentu, kalian tidak perlu memulai ulang dari awal.

Secara umum save dan loading checkpoint sudah pernah dibahas Menyimpan Check Point pada Proses Iterasi Machine Learning dengan kode singkat secara umumnya yaitu

checkpoint_dir = 'path/to/checkpoints'

num_epochs = 10

for epoch in range(num_epochs):
    # Iterasi melalui data pelatihan
    for batch in train_loader:
        # Forward pass
        # Hitung loss
        # Backward pass
        # Update parameters

    # Simpan checkpoint pada setiap epoch
    checkpoint = {
        'epoch': epoch,
        'model_state_dict': model.state_dict(),
        'optimizer_state_dict': optimizer.state_dict(),
        'loss': loss.item(),
    }

    torch.save(checkpoint, f'{checkpoint_dir}/checkpoint_epoch_{epoch}.pt')

memulihkan checkpoint

# Tentukan file checkpoint yang akan dimuat
checkpoint_path = 'path/to/checkpoints/checkpoint_epoch_5.pt'

# Muat checkpoint
checkpoint = torch.load(checkpoint_path)

# Muat model dan optimizer dengan status terakhir
model.load_state_dict(checkpoint['model_state_dict'])
optimizer.load_state_dict(checkpoint['optimizer_state_dict'])
epoch = checkpoint['epoch']
loss = checkpoint['loss']

Nilai Loss yang turun tajam setelah loading Checkpoint

Saya mendapatkan hal yang cukup aneh, ketika melakukan training model mobilenetV1 terdapat keanehan ketikan loading checkpoint seperti grafik loss berikut.

Pada grafik berikut yang smooth ketika pertama kali melakukan training

Nilai Loss yang smooth

Bisa dilihat dari semula 4 menjadi turun ke 0.7 (smooth)

Nilai loss yang smooth

Sampai pada akhirnya saya melakukan save checkpoint dan loading kembali, yang terjadi adalah nilai loss tiba-tiba turun tajam tak terkendali – Nilai Loss yang turun tajam setelah loading Checkpoint

Terjadi Falling Loss ketika loading Checkpoint

Kalian bisa lihat ketika epoch ke 33 (hasil dari loading checkpoint) nilai loss tiba2 turun menjadi 0.002

Nilai loss tiba2 turun tajam

Ini agak aneh, dan belum tahu kenapa hal ini bisa terjadi demikian!

See also  Akhirnya Torch versi R telah tersedia - Framework Machine Learning

Padahal sudah mengikuti referensi

Menurut forum tersebut hal ini karena https://discuss.pytorch.org/t/accuracy-of-the-model-drastically-drops/80388/5

Not actually, the problem was with high learning rate.
Thanks for pointing out the issue.

pun menggunakan learning rate yang rendah, tidak menghasilkan perubahan juga

https://discuss.pytorch.org/t/loss-changes-significantly-after-saving-and-loading-model/87266

 

Leave a Reply