AI 양재 허브 인공지능 오픈소스 경진대회

모델 버전 관리 및 학습 진행상황 모니터링 툴

2022.09.15 13:37 2,043 Views

안녕하세요,

AI 양재 허브 인공지능 오픈소스 경진대회에 참여하고 있는 맥대장입니다.


다른 분들은 어떤 방법으로 모델 버전 관리 그리고 학습 진행상황을 실시간으로 체크하기 위한 모니터링 툴은 어떤 것을 사용하시는지 궁금하여 글을 작성하였습니다.


먼저, 저 같은 경우는 모델 버전 관리는 페이스북에서 제공하는 hydra-core를 통해 학습에서 사용했던 configurations 정보를 저장하는 방식으로 사용하고 있습니다.

그리고 모니터링 툴은 wandb를 사용하고 있습니다.


모델버전 관리, 모니터링 및 다른 유용한 AI 툴, 라이브러리, 프레임워크 등이 있으시다면 댓글로 공유해주시면 감사하겠습니다.

로그인이 필요합니다
0 / 1000
Jinns
2022.09.15 13:59

튜닝의 끝은 순정이랄까요. 저는 이번 대회 같은 경우 .log 파일로 로그 관리, 폴더명으로 모델 버전, config 관리, 엑셀로 실험 관리를 진행하고 있습니다 ㅎㅎ

맥대장
2022.09.15 14:28

순정파셨군요 ㅎㅎㅎㅎ
순정으로 관리하기 정말 힘든데 대단하신것 같습니다!
실험 결과는 확실히 엑셀 파일로 정리하면 더 좋겠네요!
감사합니다! 많이 배웠습니다.

Jinns
2022.09.15 15:28

네 ㅎㅎ 저도 다른 프로젝트에서는 wandb랑 hydra-core 사용중에 있습니다. 프로젝트 목적에 따라 다르겠지만, 저는 주로 사용하는 툴킷에서 제공하는 기능을 따라갑니다. 이번 대회 같은 경우 툴킷을 사용하고 있어서 툴킷에서 제공하고 있는 로거(.log)와 config관리(os.makedirs) 등을 사용하고 있습니다.
사내 프로젝트 같은 경우 hydra-core 문법을 사용해서.yaml 파일을 관리하는것도 좋지만 저수준으로 코드를 많이 구현해야하는 대회에서는 유연성이 조금 떨어지는 경우도 있었습니다. 대회 참가가 목적이고, 다양한 실험을 해야되는 경우에는 https://github.com/ChristofHenkel/kaggle-birdclef2021-2nd-place/tree/main/configs 이런식으로 config 자체를 .py 모듈로 관리하는 방법도 추천드립니다. 캐글 competition 랭킹 1위이신 Dieter님이 쓰시는 코딩 스타일인데 개인적으로 굉장히 유연해서 다양한 실험하기에 적합했습니다! 

맥대장
2022.09.15 15:49

대회는 참가해본 경험이 많이 없어서 잘 몰랐습니다!
좋은 정보 공유 정말 감사드립니다!!

혹시 바쁘시지 않으시다면 대회에서 .yaml 때문에 유연성이 떨어지는 이유를 좀 자세히 알 수 있을까요?
예로 추후에 제출하는 코드부분에서 유연성이 떨어지는 것일까요?

Jinns
2022.09.15 17:14

네 yaml 파일이라기 보다는 hydra-core 때문에 유연성이 떨어졌던 것 같습니다. 제가 느꼈던 부분은 두가지정도였었는데, 첫번째는 그 당시 hydra-core 자체를 배우는데 러닝커브가 있어서 저수준 코드를 구현할 때 시간이 더 걸렸던 점이였습니다. 예를 들어 Albumentations을 사용해서 augmenation 코드를 썼었는데, 기존에 익숙한 코드로는 그냥 A.Compose([A.Aug, A.Aug, ...])로 정의해서 사용하면 되는데 이걸 hydra __target__ 문법을 사용해서 구현하려고 하니까 instance(List[instance, instance]) 이런 느낌이라 공식 문서에서 구현 방법을 찾는데 시간이 조금 걸렸습니다(이건 배움의 시간이 지나면 큰 문제가 되지 않을거라고 생각합니다) 두번째로는 첫번째랑 비슷한 이유인데 대회 중간에 팀을 합치게 될 경우 팀원이 hydra-core에 익숙하지 않으면 제가 투자한 배움의 시간을 똑같이 투자해야 된다는거였습니다. 저는 캐글 대회 참가할 때 겪었는데, 대회가 얼마남지 않은 시점에서 제 코드를 빨리 이해시키고 같이 개발을 진행해야하는데 그 과정에서 hydra 문법을 모를 경우 팀원별로 디버깅의 시간을 거쳐야한다는게 불편했었습니다 ㅎㅎ

맥대장
2022.09.16 00:30

아하! 충분히 이해가 가는 상황인 것 같습니다!
현재 저는 Albumentations을 사용을 안해서 말씀하신 문제에 봉착하지 않았는데 그런 경우가 있었군요!
다음에 팀플을 하게 되면 아무래도 다 아는 환경에서 개발을 하는 것이 필요하겠네요! 위에 설명주신 config 자체를 모듈로 관리하는 방법도 차근차근 공부해봐야겠습니다!! 
경험에서 나온 불편한 점을 공유해주셔서 감사합니다! 
Jinns님 덕분에 많이 배웠습니다!

라미라미
2022.09.15 14:44

저도 Jinns님과 비슷하게 텍스트 파일에 로그기록 하고 있습니다.
하이퍼 파라미터 같은 것들은 그냥 argparse로 간단히 만들어놓고 모델 상세내용 텍스트 파일에 저장 중입니다.
추후 제출물에 포함하여 제출할 예정입니다.

다른 툴을 익히기에 귀찮고 그럴 시간도 없고 몇시간에 한번씩 로스 확인 정도만 하면 충분해서 위처럼 하게 되네요.

맥대장
2022.09.15 15:15

텍스트 파일로 저장하는 게 보통 일이 아닐 텐데 대단하십니다!
나중에 시간되실 때 한번 wandb 랑 hydra-core 사용해보세요! 꽤 괜찮습니다 ㅎㅎ