네이버 부스트캠프 5기 8일차

김태민·2023년 3월 16일
1

boostcamp

목록 보기
36/36

Model save&load

model.state_dict()

model의 가중치를 담아내고 있으며 딕셔너리 형태로 저장된다.

model.save()

학습 결과를 저장하기 위한 함수로 모델의 architecture와 모델의 weight를 저장한다.

torch.save(model.state_dict(),os.path.join(Model_path,'model.pt'))

모델의 state_dict(파라미터)를 pt파일의 형식으로 저장한다.

모델의 아키텍쳐까지 함께 저장하는 코드

torch.save(model,os.path.join(Model_path,'model.pt'))

model.load()

모델의 레이어는 동일할경우 파라미터만 load 한다.

model.load_state_dict(torch.load(os.path.join(Model_path,'model.pt')))

모델의 아키텍쳐와 함께 load

model = torch.load(os.path.join(Model.path,'model.pt'))

Checkpoints

모델을 저장시 일반적으로 가중치만 저장하게되는데 이를 epoch,optimizer등 다양한 정보를 함께 저장 일반적으로 사용 시 매 epoch마다 기존의 loss가 작거나 acc가 높을경우 계속 해서 파일을 갱신시킨다.

torch.save({
'epoch':e,'model_state_dict':model.state_dict(),
'optimizer_state_dict':optimizer.state_dict(),'loss':epoch_loss
},f"saved/checkpoint_model{e}_{epoch_loss/len(dataloader)_{epoch_acc/len(dataloader)}}.pt")

여러가지 정보 load

checkpoint = torch.load(PATH)
model.load_state_dict(checkpoint['model_tate_dict'])
optimizer.load_state_dict(checkpoint['optimizer_state_dict'])
epoch = checkpoint['epoch']
loss = checkpoint['loss']

Pretrained model

일반적으로 우리는 모델을 직접 만들어서 사용하는 경우와 pretrained model을 불러와 쓰는 경우가 있다.
다른 데이터에 훈련된 모델을 내가 가진 현재 데이터에 적용시킨다.
일반적으로 pretrained 모델은 다른 대규모 데이터 셋에 훈련되어 있어 모델을 성능이 높다.

Transfer learning

transfer learning은 불러온 모델의 일부분을 freeze 시키고 일부분의 레이어는 학습을 시켜 우리가 가진 데이터에 새로 학습을 하는 것이다.

freeze

레이어는 일반적으로 학습이 이루어지면 가중치를 업데이트하게 되는데 이를 막아 학습이 안되게끔 만든다.

for param in model.parameters():
	param.requires_grad = False
for param in model.linear_layers.parameters():
	param.requires_grad = True

Finetuning

finetuning은 일반적으로 pretraiend 모델을 불러오고 이를 freeze 없이 전부 다 학습시키는것을 의미한다.

pretraiend library

Pytorch

기본적으로 Pytorch에서 각종 pretraiend 모델을 지원해준다. 장점은 굉장히 사용하기 편리하게 되어있지만 모델의 갯수가 적다.

HuggingFace

대회떄 많이 사용하던 라이브러리인데 모델의 종류 및 최근 SOTA모델까지 등록이 되어 있으며 NLP의 도서관이라고 보면 될것 같다. 모델마다 쓰는 방법이 나와있어 깃허브의 코드보다 비교적 사용하기 편리하다는 장점이 있다. 물론 NLP말고도 CV등 너무 다양하다 https://huggingface.co/

Wandb

wandb는 일종의 Tensorboard와 같은것으로 학습과정을 관찰하기가 매우 편리하다.
아마 학습 시 필요하다 싶으면 가져와 쓰면 될것 같다.
튜토리얼 링크 : https://docs.wandb.ai/guides/integrations/pytorch

회고

이번에는 save&load 기초적인 pretrained 모델 불러오기와 wandb에 대해 강의를 해주 셨는데 솔직히 대회를 몇번해보아서 이미 huggingface와 깃허브는 다 돌려봐서 굉장히 쉬웠다 Wandb도 예전에 써본적이 있어 그냥 다시 되짚는 느낌이 매우 강하게 들었다.

profile
한성대학교 네이버 AI Tech 5기 NLP

0개의 댓글