#auto_lr_find #최적의 학습률 구하기
PyTorch Lightning 사용하면서 Trainer 모듈에서 다양한 옵션을 설정하는 것을 볼 수 있었는데, 그 중에서 바로 auto_lr_find 에 대해서 살펴보려고 한다
초기 Init Learning Rate 를 어떻게 해야할지 가끔 고민할 때가 있긴 있다.
사실 지금까지는 느낌적인 느낌으로 0.001 정도? 써보고 그 다름에 수정하면서 알맞은 학습률을 찾아왔었다.
알다시피 학습률은 Deep Learning 에서 정말 중요한 H.P 이다. 이제 걱정없이 초기 학습률을 계산해서 사용할 수 있게되었다.
사용법은 코드를 참고해서,
trainer = Trainer(
precision=32,
auto_lr_find=True,
gpus=AVAIL_GPUS,
accelerator="dp",
max_epochs=50,
progress_bar_refresh_rate=10,
callbacks=[chk_callback, earlystop_callback, lrmonitor_callback]
)
기존 코드와 동일하고 auto_lr_find 옵션을 True로 변경했다.
trainer.tune(model)
lr_finder = trainer.tuner.lr_find(model)
이러면 자동으로 tune이 진행되고
최고의 초기 학습률을 찾는 작업 진행이 pregress_bar 로 표시된다.
그래서 어떤 학습률이 선택되었을까?
new_lr = lr_finder.suggestion()
결과는 0.00229 정도로 나왔다.
이제 이 learning rate 를 초기 학습률로 지정하고 모델 학습을 진행
model.hparams.lr = new_lr
trainer.fit(model)
학습은 대략 21번째 Epoch 에서 종료되었으며,
trainer.test()
위의 테스트를 진행한 결과는
지난번과 비슷한 결과를 볼 수 있다.