이 글은 회상글이다. 지금은 2020년이지만 2019년에 수행했던 프로젝트에 대해 회상해보려고 한다.
강화학습을 처음 접해봤던 프로젝트였고, 개인적으로 느낀 점도 많았던 경험이었다.

시작

2019년도 봄에 IITP(link) 측에서 관련 학교에 공지를 내렸던 것 같고, 나는 4월 15일에 학교에다 K-SW 스퀘어 신청서랑 자소서 써서 냈던 기억이 난다.
중간고사 보고 있는 와중에 정시보 전날 갑자기 면접 일이 잘못 공지되어서 과사에서 지금 면접 가능하냐고 전화왔었는데, 그 날 휴강이었지만 다행히 친구 집에 있어서 면접 보러 갔었다.. 들어오자마자 영어로 3분 동안 자기소개 하래서 했는데, 너무 당황해서 횡설수설했지만, 3분이 안 끝나서 엄청 정적ㅡ이었고 친구집에 돌아와서 망했다고 했었다ㅋㅋㅋㅋㅋ.. 아무튼 그러고 나서 나중에 문자로 합격이라고 해서 학교 OT도 가고, IITP 측 OT도 갔었다..! 지원금은 학교마다 달랐고, 표 끊는거나 그런것도 학교마다 달랐는데, 우리는 학교 측 지원금은 없었고, 표도 알아서 개인적으로 끊어왔다.

OT에서는 비자 뭐로 해야하는지 등이나 가서 할 거 없으니까 뭐라도 할 거 가져가라고 알려줬었고, 그 밖의 현지 거주지에 대한 자세한 주소나 프로젝트 주제 리스트 등은 에릭이 IITP에 첨부해줬던 문서 등을 IITP를 통해(담당자분 메일) 받았었다. 뭐 대충 여름이라 옷도 별로 안 가져갔었고, 없으면 살 생각으로 환전도 적당히 해서 아무 생각없이 26JUN19 19:00 ICN -> ORD 비행기로 출발했었다.

일단 원래 난 비행기에서 시끄러워서 잘 못자기 때문에 마찬가지로 거의 못자고 시카오 오헤어에 도착했었는데, 입국 심사 줄 기다리다가 핸드폰 없어진 줄 알고.. 아이패드로 기기제거 해버려서 핸드폰이 몽땅 초기화됐다… 그래서 아이폰에서 내 첫 사진은 시카고..^^ 그리고 숙소 들어갔는데 인천공항에서 만나서 인사했던 사람이 룸메였다>ㅁ<

과정

^^..많이 고생했었지만, 재밌었고 느낀 점도 많았다!

프로젝트를 한마디로 정리하자면, 시뮬레이션 로봇 게임 프로그램(Webots)에 강화 학습을 적용시켜 월드컵(축구)을 하는 방식이었다. 인터페이스나 게임 룰 등은 카이스트 측에서 제공을 해주었다.

팀 선정

원래 IITP에서 프젝 주제들을 줬었는데, 그거랑 상관없이 현지에 가서 다시 팀을 정했다. 난 원래 어플 만드는 거 아니면, 농업 쪽이 Security와 관련이 있을 것 같아서 프젝 주제로 하려고 했는데, 가서 한국에서도 도움이 되는 것을 고르자고 생각해서 AI World Cup 프젝으로 바꿔서 신청했다.
팀 선정 이후에 바로 프젝을 시작한 건 아니고, 각자 공부해올 것들을 정하고, 주말에 공부해서 만나서 이야기하고 이런 식으로 진행했던 것 같다.

환경구축

Webots으로 결과를 확인해야 했어서 GUI 인터페이스로 환경 구축을 하려고 했고, 그래서 DockerWSL로는 안했었다.. 아마 제공받은 뭔가가 우분투 전용이어서 우분투를 깔려했다. 처음엔 vm으로 구축하려다가 webots키는거 조차도 메모리때문에 안되길래 접고 에릭이 필요하면 PC 맞춰준다길래 해달라고 했다..^^

PC가 와도 설치해준 OS가 생 우분투(18.04)여서 인터넷 연결, apt설치 등을 설치하고 필요 라이브러리들도 설치했었는데, 중간에 컴파일이 안되는 것…! 그리고 그래픽 드라이버 충돌 때문에 키보드가 안먹히기도 했다..

컴파일 이슈

컴파일 문제이긴 했지만, cmake 파일도 문제가 없고 해서 주최 측 다른 대회 이슈들을 찾아보니, 라이브러리 충돌이었다. Ubuntu 18.04(사실 여기부터 문제였다)와 기존에 제공받은 미리 컴파일된 라이브러리랑 충돌이 생겨서 일어난 일이었는데, 해당되는 컴파일된 라이브러리 들을 지우고 재빌드하여 해결하였다.

NVIDIA 그래픽 드라이버 충돌 이슈

이 전에도 Ubuntu 18.04가 파이썬3를 공식적으로 지원하지 않기 때문에 써드파티 프로퍼티를 통해 설치했어야 했는데, 텐서플로 gpu 베타 라이브러리를 설치하는 과정에서 셧다운을 한 이후에 갑자기 키보드가 먹히지 않는 일이 발생했다.. NVIDIA 그래픽 드라이버를 적용하면서, nouveau 드라이버와 충돌이 일어나느 것 같았는데, 복구 모드로 부팅해서 모두 삭제 후 블랙리스트에도 추가시키고 하면서 어떻게 어떻게 겨우 복구했다..
사실 위에 컴파일 이슈도 우분투 18.04여서 pre컴파일 라이브러리들이 문제가 된 것이어서, 이후에 우분투 16.04로 다시 깔아서 적용했다.

강화학습 모델 설계

사실 환경구축과 동시에 저녁에는 각자 강화학습 모델에 대해 공부했었는데, Q-learning이랑 DQN에 대해서 공부했었다.
배운대로 Q-tableaction, state, reward들을 어떻게 짤지에 대해 토의하고 코드도 짰었다. 그리고 우리에게 도움이 되 준 대학원생에게 피드백도 받으면서 적용했었지만, 잘 학습이 되지 않았다.
정확한 원인은 모르겠지만, 우리는 학습 시간이 너무 짧거나 리워드로 주는 것들이 너무 디테일해서 잘 먹히지 않는다고 생각했던 것 같다.
사실 기억이 잘 안나지만, 어쨌든 리워드와 액션 쪽을 많이 수정했었고, 휴가기간(4일? 일주일이었나?)에 맞춰서 코드 짠 다음에 모델학습을 시켜놨다.

결과

여행에서 돌아오고 난 이후 바로 확인했지만, 사실 크게 변화가 없었다. 마지막날은 거기서 했던 것들로 영어 PT도 하면서 마무리했다.

그 동안 해왔던 코드와 ckpt등은 깃헙에 올리고 한국에 돌아와서도 몇 번 만나면서 진행했다. 학습은 학교에 문의했더니 고사양 노트북은 빌려줄 수 있다 하여 그걸로 다시 환경 구축해서 학습시켰다. 대회 전날까지 학습 시켰다가 다들 새 학기 중간고사 이전에는 내고 싶다해서 학습시킨 데까지 해서 제출했다.
계속 노트북에서 학습시켜서 ckpt 파일은 따로 백업을 하거나 하지 않았는데, 제출하고 나니 주최측에서 ckpt파일이 빠졌다며 재제출하라고 했었다…
노트북은 학교에 이미 반납했는데, 전산실에서는 노트북을 받자마자 싹 밀어버린다고 해서 결국 파일을 찾을 수 없었고, 주최 측에서는 이대로 포기하시겠냐고 하셔서 그러겠다고 했다… 아쉬웠지만 어쩔 수 없었고, 백업의 중요성을 뼈저리게 느꼈닿ㅎ하하ㅏㅎ…

지금 생각하면 여름방학 동안 열심히했지만, 프로젝트 성과가 중요한 게 아니라 얼만큼 배우고 뭘 느꼈는지가 중요하다고 생각해서 크게 아쉽지는 않다. 냈다고 해서 성과가 좋았을 거라고 생각하지는 않았고 그저 재밌었으니 좋았다 ^~^

느낀점

뭔가 쓰고나니 프로젝트에 대한 느낀점이 많다기 보다는 K-SW Summer Program에 대한 느낀점이 더 많은 것 같다. 그래서 일부러 제목도 AIWC라고 짓지 않았다. 거기에서의 하루하루들과 사소한 것들이 그저 꿈같았던 것 같다. PMU 스벅이나 지하 볼링장, south avenue의 헬스장이나 수영장, 월마트 메론이랑 마이어 치즈, 그리고 난생 처음 필름끊기게 마신 기억들ㅋㅋㅋ..생각하니까 추억이 엄청엄청 많다. 여행도 정말 좋았고, 특히 뉴욕 정말 좋았다..ㅠ_ㅠ 돈 벌고 살면서 꼭 한 번은 더 갈 것이다.

사실 거기서의 마지막 날이 내 생일날이었는데, 받은 편지에 미국에서의 내가 한국과 달리 여유로워서 좋아보였다고 했다.. 사실 주변 환경들이 모두 여유롭고, 한 가지에 집중할 수 있는 구조여서 좋았다. 음.. 학기 중에 간다면, 퍼듀도 북적북적이고 바빴겠지만, 상점도 일찍 닫고, 6시에 저녁 먹고 모든 일이 끝나고, 운동도 꼬박꼬박 할 수 있어서 행복했던 것 같다.

그리고 다양한 사람들을 많이 만날 수 있어서 좋았다. ㅎ_ㅎ… 좋은 인연들을 더 많이 만들 수 있지 않았을까 하는 생각도 들지만, 어쩔 수 없다고 생각한다. 지금까지 연락하는 사람은 별로 없지만 다들 너무 그립다. (에릭도 너무 보고싶다)ㄴ

어떻게 끝내지? 아무튼 프로젝트 결과야 다시 각잡고 시작하면 할 수 있는 것일 테지만 프로그램은 살면서 다시 할 수 있을까 싶다. 졸업하고 취직을 하든 대학원을 가든 하면 다시 경험한다고 해도 그 때와 같은 느낌이 들지도 않을 프로그램이어서 더 아쉬움이 남는다. 지금 가면 사람들도 더 많이 사귀고, 더 많은 걸 해보러 다닐 것 같다.