저장하고 불러오기
프로그램을 끄면 훈련한 모델은 어떻게 될까요?
훈련이 남긴 것
훈련의 결과는 숫자입니다
훈련은 모델 안의 숫자를 조금씩 고치는 일이었습니다. 이 숫자를 가중치라고 부릅니다. 모델이 배운 것은 모두 여기에 들어 있습니다.
6강에서 파라미터라고 부른 것과 같은 숫자들입니다.
문제
숫자는 메모리에만 있습니다
프로그램을 끄면 메모리가 비워져 훈련한 숫자가 사라집니다. 파일로 적어 두면 꺼도 남습니다.
저장
이름표와 숫자를 짝지어 적습니다
모델의 부품마다 이름표를 붙이고 그 부품의 숫자를 함께 적습니다. 실습에서는 파일 하나, 622MB가 됐습니다.
토큰 임베딩, 블록 같은 말은 모델을 이루는 부품의 이름표입니다. 이름은 지금 몰라도 됩니다. 이 짝 목록을 state_dict(상태 사전)라고 부릅니다.
불러오기
빈 모델을 만들고 숫자를 채워 넣습니다
파일에는 숫자만 있고 모델의 설계는 없습니다. 그래서 같은 설계로 빈 모델을 만든 다음, 이름표가 같은 자리에 숫자를 넣습니다.
쓰기 전에
사용 모드로 바꿉니다
훈련할 때는 값의 10%를 무작위로 꺼서 모델이 한쪽에만 기대지 않게 합니다. 글을 쓸 때 이것이 켜져 있으면 결과가 흔들리므로 끕니다.
무작위로 끄는 장치가 5강에서 본 드롭아웃입니다. 5강의 예제는 절반을 껐고, 이 모델은 10%를 끕니다. 코드에서는 model.eval()이 사용 모드로 바꾸는 말입니다.
훈련을 이어 가려면
옵티마이저의 기록도 함께 저장합니다
옵티마이저는 숫자를 얼마나 고칠지 정하는 장치입니다. 숫자마다 그동안의 기록을 갖고 있어서, 이것까지 저장해야 멈춘 곳에서 그대로 이어 갈 수 있습니다.
두 가지를 한 파일에 묶은 중간 저장본을 체크포인트라고 부릅니다.
다음 편