연구실에서 살아남기 -4- 랩 컨택하기

서론

 이 졸문을 읽는 누군가가 있다면, 아마 대학원 초년생 이거나, 대학원에 대한 걱정과 기대로 부푼 준비생일 것이다. 그런 분들께 꼭 해주고 싶은 이야기가 있다. 바로, 연구실 컨택에 대한 얘기이다. 그럼 오늘도 꿈과 희망(이 없는)의 대학원 생활로 들어가보자.


본론

 라면을 끓일때 뭐부터 넣어야 할까? 스프? 면? 채소? 아니다, 정답은 바로 이다. 그럼, 대학원에 들어가기 위해 가장 먼저 무엇을 해야 할까? 입학원서 지원? 아니다. 바로 연구실 컨택이다.


[라면을 끓일땐 물부터 넣어야 한다]


 혹자는 왜 아직 대학원 합격도 하기 전 부터, 연구실에 컨택을 하냐고 물을지도 모른다. 그건 경기도 오산이다. 뭐 아재개그가 재미없다고? 나도 안다. 그리고 왜 연구실에 컨택부터 해야 하는지도 알고있다. 대학원 생활은 앞선 글들에서 계속 말했듯, 교수님과의    생활이다. 즉, 이제부터 날 지도해주실 교수님의 밑에 도제로 들어가는 것에 가까운 생활이다. 그러니까 해당 교수님의 허락이 필요하다.


노예 12년

[판사님 그냥 제가 좋아하는 영화 포스터일 뿐입니다. 본문과 관계 없습니다.]


 누군가는 또 이렇게 생각한다. "사전 컨택을 통해 합격에 확율을 높히는건 불공평해, 나는 사전컨택하지 않을거야." 절대 아니라고 단언할수 있다. 우선 사전 컨택을 하면 대학원에 합격율이 높아지는가? 이건 교수님들 이외엔 모르는 문제라고 생각한다. 그럼, 사전 컨택을 하면 해당 연구실에 들어갈 확율이 높아지는가? 이건 100%이다. 그리고 본인 랩에 들어올 학생을 교수님이 보고 뽑는건 너무 당연한 일이다. 추가적으로, 만약 비슷한 학생 둘이 찾아왔는데 자리가 하나 밖에 없다면, 먼저 찾아온 사람에게 우선권을 주는게 인지상정이다. 그러니까 사전컨택 하라고.


vitesse-chargement

[404] image load fail : Prohibition of Broadcasting Appearance

[사전컨택 안함 스튜핏!]


그럼 사전 컨택을 할때 어떤 준비를 해야 할까? 그리고 무얼 물어봐야 할까? 이 두가지가 가장 궁금할 것이다. 정답은 없지만, 오답은 있다. 우선 영어 성적을 준비해 가는것이 좋다. 각 대학원 마다 최소 입학을 위한 영어 성적이 있을 것이고, 교수님 또는 컨택 과정에서 만나게 될 랩장님은 영어 성적을 궁금해 하기 마련이다. 대학원에 가면 "영어로" 논문을 읽고 써야 하기 때문이다. 다음으로 성적표를 가져가자. 뭐? 성적이 똥망이라고? 어쩔 수 없다. 누가 공부 하지 말랬나? 다음으로 간단한 자기 소개를 적어가자, 여기엔 무엇을 해왔고, 뭘 하고 싶어서 그 랩에 지원하는지를 써넣는것이 좋다. 마지막으로 (있다면)수상내역 그런걸 준비해가자. 자기소개의 마지막장에 따로 넣는것도 좋다.


 해당 내용을 가지고, 구구절절하게 잘 적어서, 들어가고 싶은 랩의 교수님 메일로 보내자.


 교수님. 저는 ㅇㅇㅇ입니다. 들어가고 싶어요. 만나주세요. 제가 이렇게 헤픈 학생이 아닌데, 교수님은 보자마자 반했어요. 번ㅎ.... 아 아니다.


 그럼 교수님은 답장을 줄 것이다. "언제 언제 와라" 또는 "우리 랩은 현재 학생을 받지 않고 있습니다." 혹은 "합격하고 오세요" 근데, 3번은 주변 경험상 완곡한 거절의 표현일수도 있다. 잘 각을 재서 다른 랩에도 지원해 보도록 하자.


 본인은 3개 랩에 컨택을 넣었고, 3개 랩에서 다 오라고 했다. 완곡한 거절을 들어본적이 없어서 잘 모르니까 잘 판단해서 하시라.ㅎㅎㅎ


 컨택하러 만나서는 사실 크게 하는 얘기가 없다. 그냥 회사 인성면접 정도라고 보면 된다. 그리고 적어낸 한 일 이나 그런거에 대해 좀 물어보시겠지. 여기서 중요한 내용이 있다. 교수만 당신을 평가하는것이 아니다. 당신도 교수를 평가해야 한다. 앞으로 적으면 2년에서 박사를 한다면 5년 이상을 맡길 사람이다.


교수님 대학원 짤에 대한 이미지 검색결과

[이런 교수님을 만날수도 있다. 아마 음.. 100%?]


 교수의 인성과, 내가 하고싶은 연구 방향과 교수님이 하는 방향이 맞는지 등등을 잘 살펴보기 바란다. 


 그럼 이만 줄이도록 하겠다. 오늘은 중요한 내용일수 있어서 농담을 좀 줄이고 진지하게 써봤다. 그럼 마지막으로 한마디만 더 하겠다.


대학원생이 울면?



대학원생이 울어도 여러분과 같은 똑같은 슬픔입니다.

무엇을 기대하셨나요.
당신의 그 차별적인 생각이 세상을 오염시킵니다. 
반성하세요. 


댓글()

혼자 해보는 Pytorch 튜토리얼 -2- Windows에 Pytorch 설치하기

2. Pytorch 설치

금방 설치 될줄 알았는데, 안되길래 켜놓고 집에 가버렸다.
이 글을 보는 여러분은 얼마나 걸리셨는지?

그럼 Anaconda 는 다 설치 되셨을 테니, 이제 Pytorch 를 설치해 보도록 하자. 하지만, 여기서 작은(?) 문제가 있다.

pytorch 는 현재 Windows를 정식 지원하고 있지 않다. --> 2018/5/1 수정 현재 pytorch는 정식 지원한다. 다음 링크 참조 http://blog.ees.guru/40


하지만, 세상은 넓고 천재(게다가 헌신하는 천재)는 많다. 어느 누군가가 이 문제를 해결해 놓았다. 다음 github 링크 에 해결한 소스코드가 있다. 그럼 직접 컴파일 해야 하느냐고? 그걸 안하려고 우리가 anaconda를 설치한 것 이다.

\# If your main Python version is not 3.5 or 3.6
conda create -n test python=3.6 numpy pyyaml mkl

\# for CPU only packages
conda install -c peterjc123 pytorch-cpu

\# for Windows 10 and Windows Server 2016, CUDA 8
conda install -c peterjc123 pytorch

\# for Windows 10 and Windows Server 2016, CUDA 9
conda install -c peterjc123 pytorch cuda90

\# for Windows 7/8/8.1 and Windows Server 2008/2012, CUDA 8
conda install -c peterjc123 pytorch_legacy

위 내용은 앞서 말한 링크에서 가져온 내용이다. 우리는 CUDA 8 버전을 사용하도록 하자(잘은 모르지만, 뒤에 아무것도 안 붙인걸 보아 가장 일반적인 버전이지 않을까 기대해 본다.)


즉, cmd창 에서 (windows + r 누르면 나오는 창 에서 cmd 라고 입력하자) conda install -c peterjc123 pytorch 라고 입력한 후, 뭐 물어보면 다 y 라고 답해주면 된다.

이제 열심히 설치가 될 것 이다.
기대를 안고 커피 한 잔 마시고 오자. 이왕이면 원두 커피로.

하지만, 나는 설치가 안됐다… 이 글을 읽는 여러분도 나와 같다면, 여기 해결책을 적어두겠다.
conda update -n base conda
이건, 아나콘다의 패키지관리자1인 conda를 최신 버전으로 업데이트 하는 명령어 이다. 이렇게 적어도 안된다면, 오류 메시지를 전부 댓글로 적어 놓으시면, 한 번 같이 고민해 드리리다.(해결해 주지는 못할수도 있고)

3. Jupyter notebook

이 글을 찾아오시는 분들 이라면, 다들 jupyter notebook 은 아시리라 기대해 본다. 하지만 사실 몰랐으면 좋겠다. 왜냐구? 이제부터 설명을 시작할거니까.

Jupyter-notebook 은 데이터 사이언티스트 들이 좋아하는 Python 개발환경이다. 말하기에 앞서 우선 직접 보도록 하자. Anaconda 를 설치하셨다면, Jupyter Notebook 이란 프로그램이 설치된 것을 볼 수 있을 것 이다. 윈도우 키를 누르고, Jupyter Notebook 을 찾아서 실행시켜 보자.

갑자기 정체 모를 검은 창이 떠서 놀랐다고? 놀라지 마시라, 그게 바로 정상이다. 잠시만(사양에 따라서 오랜 시간) 기다리면 곧 의문의 인터넷 창이 뜰것이다. 물론, 중간에 방화벽 창이 뜬다면 당연히 허용하는건 잊지 말자.

뭐? 인터넷 창이 안뜬다고? 걱정말자. 나도 그랬으니까.(궁시렁) 그럴 땐, 아까 뜬 검은 창에 써진 글씨 중 http://165.xxx.xxx.xxx:8888/ 와 유사한 것이 있을텐데 이 주소를 복사하자. 아 참, 복사는 오른쪽 클릭이다. ctrl+c 를 누르면 꺼지니까 누르지 말고.

자, 다 들어가셨으면 아래와 같은 화면이 보일것이다.

Imgur

여기는 일반적으로 C:\Users\[user name]이다. 여기서 우상단에 있는 New를 누르면 나오는 드랍다운 메뉴에서 python3 를 눌러보자.

이걸로, 우리가 python을 쓰기 위한 준비는 끝났다. 파이선을 아신다면(모른다면 파이선 부터 공부하고 다시 돌아오시라), 원하는 명령어를 쳐 넣으시고 Shift+enter를 눌러보자. 짜잔, 실행이 된다.

더 자세한 사용법? 나중에 혹시 어쩌다가 기회가 생기는 불상사가 생긴다면, 적어보겠다. 일단 아무거나 누르면서 부딪히고, 실수로 다 날려보기도 하고(물론 Jupyter notebook을 쓰다가 그럴 방법이 있는지는 모르겠지만, 나도 해당 프로그램의 전문가는 아닌지라…, 때로 초보자는 놀라운 일을 해낸다. 주로 본인에게 안좋은 방향으로)

이 글을 여기까지 적은지 벌써 몇주가 지났다…
적어놓고 글을 안 올려서, 0편만 보신 분들은 거진 사기당한 기분이었을 듯…

하지만, 오늘은 여기서 떠나려 한다. 죄송. 이번에는 빨리 돌아와 보도록 하겠다.(아마도)


  1. 시스템에서 필요한 특정 라이브러리 또는 프로그램을 설치하고, 어느 것이 설치되어있는지와 각 라이브러리 또는 프로그램의 의존성 등을 확인해주는 관리자 이다. Python에서는 pip를 ubuntu 에서는 apt를 사용한다. ↩︎


댓글()

혼자 해보는 Pytorch 튜토리얼 -1- Anaconda 설치하기

0. 왜 Pytorch 인가?

머신러닝 특히 딥러닝을 위해서 많은 솔루션이 제공되고 있다. 구글의 TensorFlow1가 그것이고, Caffe2 그리고 Keras3 또한 그것이다. 이외에도 많은 솔루션(라이브러리)들이 제공되고 있다. 하지만 나는 Pytorch로 시작하고자 한다. 우선 Caffe는 빠른 속도등 장점이 많지만, 이미지 처리에 제한되기 쉽다는 단점이 있다. 또한, 새로운 GPU Layer에 대해 CUDA코드를 거진 직접 작성해야 한다는 장벽이 있다. Keras는 간편한 인터페이스와 사용법 등의 장점이 있지만, 조금 더 테크니컬 하게 공부해 보고자 하는 나의 목적엔 다소 알맞지 않았다. 4
내게 남은 선택지는 TensorFlow와 Pytorch였다. 개인적으로는 조금 더 Low-level driven architecture인 TensorFlow를 공부해 보고자 했지만, Tensor는 공부 이후에 사용해 보고자 할때에도 Low-level로 진행하여야 하고, 계산이 TensorFlow layer 내부에서 이뤄지기 때문에 디버깅의 어려움 그리고, Static한 모델 구조(모델 작성 이후 변경이 까다로움)등 문제점이 있었으며, 무엇보다 Pythonistic 하지 않았다.
Pytorch의 경우 기존 Lua로 작성된 Torch를 Python에 알맞게 포팅(?)한 것으로 역시 C로 작성된 Under-layer가 존재하므로 다른 솔루션들 만큼 빠른 속도를 보여준다. 그러면서도 Python의 철학에 맞는 구조가 매력적이다. 물론 이제 공부를 시작하는 만큼, 정확하지 않은 정보도 많을 것 이고, 심지어 틀린 내용이 있을지도 모른다. 이 글을 읽다가 발견하시는 분은 기탄없는 의견을 댓글로 달아주시기 바란다.

1. Python 설치하기

Pytorch를 사용하기에 앞서, Pytorch를 GPU에서 사용할지, CPU에서 사용할지 정할 필요가 있다. 나는 우선 GPU를 사용하는 Pytorch를 Windows 환경에서 설치 및 사용해 보기로 했다.5
내 컴퓨터에 꽂혀있는 GPU는 1050ti로 사실 딥러닝을 하기에는 부족한 환경이지만, Nvidia님이 얼마나 발전 하셨는가를 보자. 와… 무려 Titan과 같은 성능이라고 하신다…(찬양 경배)
Rough performance comparisons between GPUs. This comparison is only valid for large workloads.
Rough performance comparisons between GPUs. This comparison is only valid for large workloads.6

그럼 성능에 대한 걱정 없이(정말?) 설치 및 실행해 보기로 하자. 설치는 Anaconda7의 도움을 받기로 한다.

1.1 Anaconda

아나콘다는 Windows, MacOS, Linux 등 다양한 환경을 위해 만들어진 Python설치 매니저 이다. 아나콘다 에서는 좀 더 편리한 라이브러리 설치 등 환경 구축과, Python을 사용하다 보면 자주 겪는, 버전 이슈8관리를 쉽게 하도록 도와준다. 다음 링크에 들어가서 아나콘다를 다운 받도록 한다. 나는 개인적으로 Python 2.7 Version을 좋아하지만, 3버전이 나왔는데 쓰지 않을 이유도 없다.(2버전을 쓰겠다는 나의 결심에 대해, 다른 Python 사용자의 한마디가 나를 할 말이 없게 했다. Why not?)
Imgur
본인 OS에 알맞은 bit의 아나콘다를 다운받고 설치 하자. 대부분의 Windows10 유저라면, 64-Bit일 것이다. (혼자 했으면 금방 끝났을 일 인데, 적어가면서 하니 한세월이다…)

설치 과정은 당연히도 다음, 다음, 다음, 네 만 누르면 되는데, 몇가지 주의해야 할 부분이 있다.
Imgur
우선 All Users 로 설치 하는것이 미래를 위해 좋다. 여기서 Just Me 로 설치할 경우 향후, 각종 라이브러리 등 설치 시, 구글 검색에 나온대로만 하면, 문제가 발생하기도 한다. 여러분들이 CS 전문가 라면 물론 해결 가능한 문제지만.

Imgur
마치, 하면 안된다는 듯, 붉게 보이지만, 하는 편이 좋다. 경고문구에서 나와있듯, 재설치 및 삭제 등에 문제를 일으키기도 한다. 하지만 저걸 체크하지 않으면, 역시 구글 검색에 나온대로만 하면 문제가 발생하기도 한다.

자, 이제 설치가 끝났을것이다.
아니면 진행중이거나. 커피 한 잔 마시고 돌아오겠다.


  1. 구글이 만들고 제공하는 머신러닝 라이브러리로 현재 가장 넓은 사용자층과 구글이 작성한 Document등 환경지원이 훌륭하다. ↩︎

  2. C또는 Matlab 으로 작성된 머신러닝 라이브러리로 Python API가 제공된다. ↩︎

  3. 다른 딥러닝 프레임워크를 사용하는 일종의 레이어로, TensorFlow 또는 Theano 등을 사용하여 Keras API를 통해 사용할 수 있게 해준다. ↩︎

  4. 물론 현재 나오는 논문의 80~90%는 Keras로 가능하다고 한다. ↩︎

  5. 개발에는 주로 Linux를 사용하기는 하지만, GPU가 꽂혀있는 PC는 Windows 환경이다. 왜냐고? 게임 해야지. ↩︎

  6. 출처 : # Which GPU(s) to Get for Deep Learning: My Experience and Advice for Using GPUs in Deep Learning ↩︎

  7. 링크 참조 ↩︎

  8. 설치한 라이브러리들이 같은 라이브러리의 서로 다른 버전에 종속성을 가지는 이슈가 발생한다… 이를 해결하기 위해 각 프로젝트별로 다른 Python 종속성을 가지게 하는 VirtualEnv등 방법을 사용한다. ↩︎

댓글()

연구실에서 살아남기 -3- 논문 작업

서론

 연구실의 꽃, 연구실의 존재 의의, 연구실의 뭐시기 저시기 아무튼 그 본질 이라 할 수 있는 논문 작업에 대해 이야기 하고자 한다. 물론, 나는 아직도 논문 한편 써내지 못한 찌끄래기 지만...


[그니까, 나란 존재는 이쯤 아닐까?]

본론

 이 글을 읽고 있는 당신이 현재 대학원생 이라면, 혹은 대학원생이 될 예정 이라면, 왜 가려고 하는가? 물론 좋은 회사에 취직등 이유일수도 있다. 하지만, 나는 "연구를 위해서" 라고 단언하고자 한다. 대학원의 존재 의의는 사실 "연구" 이고 이를 세상에 알리는 작업은 보통 "논문 출판"을 통해서 이뤄진다. 그니까, 니가 아무리 좋은 아이디어와 연구결과가 있어도 출판을 하지 않으면 아무것도 아니다. 심지어, 남이 먼저 출판해 버리면(사실 사람 하는 생각은 거기서 거기기에 의외로 비일비재 하다. 나도 얼마 전에 겪었고) 오랜 기간동안의 노력은 허공으로 날아가 버리고 만다. 

종이 던지기에 대한 이미지 검색결과

[잘가 내 연구들... 그동안 즐거웠어]


 그래서 연구자들 끼리는 알게 모르게 속도전이 있는데, 많은 경우 이를 무시하고 탱자탱자 즐거운 대학원 생활을 보내기도 한다. 그렇게 대학원을 졸업하고 나면 뭐가 남는가?(정답! 취직!!) 라는게 내 지론이다.


 논문 작업을 위해선 우선 연구를 해야 한다. 좋은 연구란, 좋은 해결책 보단 좋은 문제점을 찾아내는 것 이다.(라고 지도교수님이 말하셨다.) 문제만 찾으면 해결은 쉽게 되는 경우도 많고, 어렵게 되더라도 어떻게든 할 수 있다.(라고 지도교수님이 말하셨다.) 그러니까 온 정신을 집중해서 해라.(라고 지도교수님이 말하셨다.) 먹지도, 자지도 말고!(라고 지도교수님이 말하시는 환청을 들었다.)


 쓰다보니까 결론이 안나는데... 결론을 굳이 내리자면 이거 아닐까?

당신이 아직 대학원생이 아니라면...


인터스텔라 s.t.a.y에 대한 이미지 검색결과



 결론이 이상하게 날 뻔 했다.(하지만 올바르다. 정말로) 논문 작업이란건 이렇게 어렵고 힘든 자기와의 싸움이다. 좋은 주제를 발견하는건 시작일 뿐, 다른 사람이 비슷한 내용을 쓰지 않았는지 먼저 확인해 봐야 하고, 실험 및 연구 중에도 계속 찾아 보아야 한다. 그리고 가장 큰 관문인, 교수님을 설득해야 한다.

 본인이 쓰고자 하는 내용 이나 주제가 교수님의 마음에 든다면, 당신은 아마 축복받은 사람이거나 교수님과 싱크로나이즈드 된 사람인것이 틀림없다.

파일:external/vignette2.wikia.nocookie.net/PsionicLinkRestored_SC2-LotV-R_Cine1.jpg

[우리는 신성한 칼라를 통해 모든 생각과 감정을 함께 나눈다!]


 많은 경우, 특히 노교수님들의 경우 연구에서 벗어나 학생들을 지도 하는것을 업으로 삼고 계신 경우가 많다. 이 경우 교수님이 가지시는 관점과 학생이 가지는 관점이 크게 다를 경우가 생기기 쉽다. 이는 두가지 이유인데, 우선 학생의 관점이 "정확하지" 않다. 여기서 지도교수님은 이를 지적하고 고쳐주고 싶지만, 지도교수님은 이제 직접적인 연구에서 물러나셨기 때문에 "정확하게"지적하기 어려워 하신다. 여기서 학생이 교수님의 지도를 잘 따라가지 못하면, 설득을 실패하고 한 연구 주제가 버려지는것이다. 만약, 교수님이 젊으시거나, 현재도 왕성히 연구를 하는 경우에도 교수님을 설득할 필요는 존재한다. 여기서는 교수님의 관점과 학생의 관점이 서로 다른 경우에 발생한다. 이 경우 둘의 관점을 잘 조절하고 교수님을 설득할 필요가 있다. 


 여기에 대해 누군가는 이런 현답을 내놓았다. "연구를 바로 옆에서 듣는 교수님도 설득하지 못한다면, 그 연구는 어짜피 논문 리뷰어들을 설득시키지 못할 것 이다." ... 아멘.(하나님 이 글귀는 저희 집 고양이가 쳤다면 좋았겠지요...? 죄송합니다.)


그럼 일개 대학원생이 할 수 있는 말은 다 한거 같다. 그러니 마지막으로 남긴다.

당신이 아직 대학원생이 아니라면...


인터스텔라 s.t.a.y에 대한 이미지 검색결과

댓글()