Etc - Code Cleaning, 언제 해도 끝나지 않고, 언제 해도 생기는 그 일.

Posted by Young Han Lee on January 28, 2020 · 2 mins read

Code 재구조화를 (또) 맡다.

좋은 것인지, 나쁜 것인지, 또 재구조화를 맡았다.

이렇게 반복해서 유사한 업무를 맡는 경우는 드물다.

워낙 연구 과제라는 것이 다양한 주제를 다루고 있고,

주제에 따라서 잘하는 부분이 다르니까,

맡게 되는 부분도 달라지니 말이다.

반대로 연속 2번으로 서포트를 하는 역할을 맡았다고 봐도 되는데,

이게 일반적이면 나한테 넘어올 일은 아니긴 하다.

(그만큼 코드를 잘 짜지도 못하기 때문에..)

그럼에도 주변에 잘 짜는 사람이 더 드물기 때문인지,

기대보다 심심치 않게 이 업무가 주어진다.

이번엔 Pytorch이다. 얼마나 다행인가! 그러나..

지난번에는 tensorflow였던데 반해

이번에는 pytorch이다.

지난번에 tensorflow를 보면서 얼마나 torch가 그리웠던지..

torch면 금방 하겠다 싶었다.

그런데, 코드를 보다보니,

framework도 중요하지만,

그 전에 누가 작업을 했는지도 code cleaning 에는 영향을 미치는구나 싶었다.

확실히 code가 돌아가는 것을 목적으로 짜는 것과

관리 목적으로 코드를 짜는 것은 차이가 발생한다.

그래도 이번에는 코드 작성자에게 수정한 내용을 공유하면서 최종 반영을 했다.

다음에 완전히 적용되진 않겠지만 그래도 일부라도 적용되길 바라면서 :)

역시 deep learning framework에서 항상 문제가 되는 부분은 데이터 처리

여러 부분에서 당연히 문제가 발생하지만,

그리고 누가 짜더라도 계속 보다보면 고칠 부분이 발생하지만,

딥러닝 코드를 짜다보면 결국은 대부분의 최적화할 부분은 data handling하는 쪽에서 발생한다.

실제로 붙어서 돌아갈만한 기능도 많은 편이고,

개발/연구자의 코드가 많이 필요하기 때문이겠다.

이번에는 train/test에 대해서 각각 함수가 다른 형태로 되어 있는 것들을 통합하는 것을

주 내용으로 진행했다.

재미난 것은 내가 수정하는대도 불구하고,

설날 연휴 전에 작업했던 내용을 연휴 후에 보니,

고칠 부분이 더 보였다.

물론 끝도 없이 나올테니 어느 정도에서 끊어야겠지만,

그래도 얼마 되지 않았음에도 큰 부분이 보이는 것을 보며 여전히 실력이 부족하구나..싶기도 했다.

확실히 Pytorch가 신경 쓸 부분이 덜하다.

코드가 스페이스가 적당히 없는 상태에서 300 라인이 넘어갔다.

오늘까지 정리하고 나니,

옵션처리 및 적당한 스페이스를 넣어주고도 150 라인 이하로 구성되었다.

겹치는 코드는 최대한 제한하였고, 덕분에 (?) 코드를 이해하기 훨씬 편해졌다.

사실 이정도 줄이면 매우 많은 부분을 수정한 것인데도 (그나마) torch라서

시간을 상대적으로 많이 소비하지 않으면서 작업을 할 수 있었다.

(torch 만세)

이젠 개선 작업이 남았네.

이제는 data handling 부분도 개발의 막바지라서,

확실히 모델에 집중할 수 있는 상황이 나오고 있는 것 같다.

이제는 성능 개선에 집중해야지 :)