본문 바로가기
Backend MLOps/MyTemplate

[DLTemplate] #4 trainer 정리 -2 model

by SteadyForDeep 2021. 9. 27.
반응형

이번엔 모델을 정리하고 불러올 수 있게 모듈화 한 다음 적절한 unittest를 줘서 관리해보자.

 

완전히 독립된 객체로 다룰 수 있게 코딩된 모델을 복붙해서 py파일로 만든다.

 

이렇게 하고 불러오기만 하면 된다.

동작을 확인하자.

무리없이 학습이 진행된다.

이제는 모델이 적절하게 평가될 수 있는 테스트를 만들어줘야 한다.

 

우선은 입력크기가 정해지면 적절한 출력 크기가 나오는지 알 수 있어야 한다.

sweep_config에서 config_gennerator 가 공통 config를 가지고 있으니 활용하도록 하자.

data shape을 넣어줬다.

그리고 dummy_input을 만들고 그것을 넣어 문제가 생기지 않는지 확인한다.

 

이상이 없다면 모델의 레이어 중간중간마다 원하는 값이 나오는지 출려력해 볼수도 있어야겠다.

모델에 레이어들 마다 훅을 달아줄 수 있도록 해주고

훅을 통해서 output들을 리스트에 모두 담은 다음 하나씩 꺼내보면서 비교하도록 했다.

아래에는 파라미터들의 크기를 비교해 주는 함수도 달아줬다.

 

mnist를 불러올때 발생하는 경고문 빼고 에러가 없이 돌아간다.

리포트를 통해서 내 파이썬 프로젝트의 구조와 그에 따른 커버리지를 확인할 수 있다.

역시 정상적으로 수행된다.

 

이제는 모델을 저장하고 다시 불러오는 과정만 추가하면 모델에 대해서는 거의 끝이 난다.

한번 커밋하자.

 

이제 모델을 저장하고 불러와서 결과 이미지를 뽑도록 해보자.

우선은 학습이 끝나면 모델이 저장되도록 해야한다.

트레이닝이 끝나는 부분에 모델을 저장하는 내용을 넣어준다.

재사용가능한 모델 파일이 있으므로 state_dict만 저장해줘도 된다.

 

그 아래 부분은 결과를 보여주는 plot을 그리는 부분인데 이 부분도 따로 py파일로 만들어주자.

 

training에는 포함되지 않는 부분이므로 inference라고 따로 패키지를 만들어주었다.

그리고 부족한 부분은 arg로 받는 함수로 바꿔준다.

역시나 확인해보면 잘 돌아간다.

좀 더 하드하게 이렇게 바꾸더라도

아무 문제 없이 학습이 잘 돌아간다.

save_path 는 좀 더 다듬을 필요가 있다.

나중에 쓰임에 맞게 다듬도록 하자.

반응형

댓글