닫기
Loading..

전자정보연구정보센터 ICT 융합 전문연구정보의 집대성

라이징스타

홈 홈 > 포커스iN > 라이징스타

국내외의 ICTㆍ융합 분야의 우수 연구자를 선별하여 소개합니다.
연구자의 연구 경험담 및 관련 분야 동향까지 연구활동에 대한 전반적인 내용을 인터뷰하여 정리하였습니다.

  • 김한준
  • 연세대학교 전기전자공학부
  • hanjun@yonsei.ac.kr

트위터 공유

페이스북 공유


▶ 간략한 소개 부탁드립니다.


   안녕하세요. 저는 연세대학교 전기전자공학부에 재직 중인 김한준입니다. 2007년에 서울대학교 전기공학부를 졸업하고, Princeton대학교 Computer Science에서 2009년과 2013년에 각각 석사와 박사학위를 받았습니다. 학위 취득 후에는 포항공과대학교 창의IT융합공학과와 컴퓨터공학과에서 겸직으로 근무를 했으며, 이후 2018년 9월에 연세대학교 전기전자공학부로 옮겨 현재 부교수로 근무하고 있습니다.



▶ 주요 연구 분야에 대한 소개 부탁드립니다.


   제 연구 분야는 컴파일러 최적화입니다. 컴파일러란 프로그래머가 구현한 프로그램을 컴퓨터가 알아들을 수 있도록 번역을 해주는 프로그램으로, 이러한 컴파일러를 개발하기 위한 연구를 하고 있습니다. 연구 목적을 말하자면, 프로그래머가 프로그램을 쉽게 개발할 수 있도록 개발 환경이나 프로그램 언어를 제안하고, 그런 다음에 최적화를 하면서 어떻게 하면 더 빠르게 프로그램을 구동할 수 있을 것인가, 어떻게 하면 전력을 덜 소모하면서 구동할 수 있을 것인가, 아니면 프로그램을 더 안전하게 구동할 수 있을 것인가와 같은 최적화 부분들을 연구하고 있습니다. 

   저희 연구실에서는 주로 CC++ 컴파일러를 연구합니다. 예를 들면 하드웨어 코드를 쉽게 만들 수 있도록 변형을 해주는 High-level Synthesis 연구를 했었고, TensorFlow나 PyTorch와 같은 인공지능 프로그램들을 새로운 가속기에 맞춰서 최적화를 해준다거나, 사물인터넷 프로그램들을 보다 편리하게 구현할 수 있도록 연구환경을 제공해주는 컴파일러 프레임워크를 만든다거나 혹은 암호화된 상태에서 연산을 지원하기에 수행 시간이 오래 걸리는 동형 암호 프로그램을 효율적으로 구동하는 최적화 기법 등을 연구 진행하고 있습니다. 



▶ 2020년도 젊은정보과학자상(KIISE/IEEE-CS Young Computer Researcher Award)을 수상하신 소감을 말씀해 주세요. 


   아주 과분한 상이라고 생각합니다. 저보다 훨씬 연구를 잘 하시는 분들도 많이 계신데, 감사하게도 많은 분들이 도와주셔서 제가 수상을 하게 된 것 같습니다. 요즘 컴퓨터 시스템 소프트웨어 분야가 더욱 중요해지고 있어서 아마도 제가 수상하게 된 것 같습니다. 더 열심히 하라는 뜻으로 받아들이고, 앞으로 더욱 열심히 연구하도록 하겠습니다. 



▶ 이 분야를 선택하신 계기가 있다면 말씀해 주세요.


   저의 경우는 박사과정에 들어가면서 이 전공을 선택하게 되었습니다. 유학을 가기 전, 어느 분야를 더 공부할까 고민을 하다가 컴퓨터 구조와 관련된 부분들이 굉장히 재밌어서 이쪽으로 진학하게 되었습니다. 제가 대학원 진학을 하게 될 당시 멀티코어 등이 이슈가 되고 연구도 활발히 진행되고 있었는데 그때 중요했던 이슈 중 하나가 Core는 여러 개가 있는데 이것을 어떻게 하면 다 같이 효율적으로 쓸 것인가, 즉 하드웨어는 준비가 됐는데 소프트웨어 쪽에서 병렬 지원 방식이 주요 문제였습니다. 따라서 이러한 부분들을 자동으로 병렬화해주는 자동병렬화 기술 쪽으로 연구를 하였고, 컴파일러 지원이 굉장히 많이 필요하게 되었고, 그러면서 저도 컴파일러 연구를 하게 되었습니다. 



▶ 연구활동을 하시면서 특별히 느끼신 점이 있다면 말씀해 주세요.


   컴파일러 연구는 실제 컴파일러 프레임워크 시스템을 만들어야 하고, 그리고 직접 컴퓨터에서 동작을 하는 부분까지 다 한 다음에야 구현을 했다고 할 수가 있습니다. 이를테면 A라는 아이디어가 있는데, A라는 아이디어는 이미 다 구현했지만 그 외적인 부분들 때문에 성능이 안 나오는 경우가 많습니다. 그러한 외적인 부분들까지 모두 구현을 하다보면 시간이 굉장히 많이 걸립니다. 하지만 이러한 코너 케이스들을 수행하면서 실제 진행되는 부분들을 보게 되면 “내가 만든 게 진짜 잘 동작하는구나.” 라는 생각에 뿌듯함을 느끼기도 합니다. 물론 이러한 모든 것을 하나하나 다 만들어야 하기에 굉장히 오랜 시간이 걸리고 많은 노력이 필요합니다. 한편으로는 힘들기도 하지만, 마지막에 결과가 잘 나오는 걸 보면 뿌듯하면서 보람도 느끼고 실제로 작동한다는 부분에서 굉장히 의의가 있다고 할 수 있습니다. 



▶ 관련 분야의 현재 트렌드와 향후 연구 및 기술 전망에 대한 소견을 말씀해 주세요.


   현재 저희가 연구하고 있는 컴파일러 분야의 주요 트렌드는 도메인 특정 최적화라고 할 수 있습니다. 예를 들면, 딥러닝 애플리케이션처럼 특정 분야 애플리케이션이 굉장히 많이 쓰이게 되고, 그에 따른 가속기, 하드웨어들이 나오는데 컴파일러 또한 그 특정 도메인의 가속기와 애플리케이션에 대해 최적화되는 부분들이 많이 발전하고 있습니다. 예를 들면, TensorFlow Complier Framework, PyTorch처럼 계속 특정 프레임워크를 지원하고, 그리고 TPU를 위한 컴파일러나 다른 NPU를 위한 컴파일러들이 만들어지는 것처럼 컴파일러 기술들이 도메인에 맞춰 최적화하는 방향으로 발전하고 있습니다. 딥러닝 외에도 보안 분야 같은 새로운 도메인이 주목받는다면, 해당 도메인에 맞춰 최적화를 해주거나 가속기를 만들면 그 가속기를 지원하는 식으로 발전할 것 같습니다. 다시 말하면, 예전처럼 일반적인 프로그램들을 다 지원해주는 최적화가 된다기보다는 특정 도메인에 맞춰 최적화를 하는 방향으로 발전해 나갈 것입니다. 

   그럼에도 불구하고 만약 이 분야에 대해서 연구를 하시겠다고 한다면 무조건 Core 기술이 가장 중요하다고 생각합니다. 예를 들어 인공지능에 대해 최적화를 한다고 하면, 인공지능이 어떻게 돌아가는지, 여기에 애플리케이션이 어떻게 돌아가는지 분명히 이해를 해야 하고, 가속기가 어떤 구조로 만들어졌는지 이해를 한 다음에 최적화를 해야 합니다. 하지만 그에 앞서서 컴파일러가 어떤 식으로 프로그램을 이해하고, 어떤 식으로 하드웨어에 맞춰서 코드를 생성해내는지를 먼저 이해하고 있어야 또 다른 도메인이 트렌드가 되고 중요하게 되었을 때, 그러한 핵심 기술들을 가지고 다시 적용할 수 있습니다. 그래서 Core 기술이 가장 중요합니다. 물론, 화두가 되고있는 도메인들에 대한 이해도 반드시 필요하다고 생각합니다. 



▶ 교수님에게 영향을 미친 인물 또는 귀감으로 삼으시는 연구자가 있다면?


   저의 경우 두 분이 계십니다. 한 분은 저의 박사 지도교수님이신 프린스턴 대학교의 David I. August 교수님입니다. 일단 연구적인 측면에서 굉장히 많은 영향을 주셨습니다. 어떻게 하면 문제를 접근하는지, 그리고 문제를 어떻게 풀어내는지에 대해 많은 가르침을 주셨으며, 학생들과의 관계에 있어서도 많은 영향을 주셨습니다. 처음 학부 졸업하고 갔을 때에는 연구 주제를 정하는 법, 논문 읽는 법 등을 잘 몰랐는데 지도교수님의 도움으로 많이 발전할 수 있었습니다. 또 다른 한 분은 포항공대 재직 당시 컴퓨터공학과 학과장님이셨던 김종 교수님입니다. 김종 교수님께서는 학과에서 학생들을 위한 프로그램을 많이 만드셨는데, 그때 그러한 활동을 같이 하면서 "아 이런 부분들이 학부 교육에 있어서 굉장히 중요하구나." "학생들이 이런 식으로 생각하는구나" "이런 교류를 어떻게 해야 하는구나" 등을 교수님을 통해 많이 배웠으며, 학부 교육의 중요성에 대해서도 생각하게 되었습니다. 



▶ 특별히 기억에 남거나 좋게 평가하는 자신의 논문이 있다면 말씀해 주세요.


   무엇보다도 제 첫 번째 주저자 논문 Scalable Speculative Parallelization on Commodity Clusters이 가장 기억에 남습니다. 아무래도 첫 주저자 논문이다보니 애정이 많이 가고, 또 굉장히 좋은 평가를 받기도 하여서 지도교수님도 무척 좋아하셨습니다. 이 논문은 자동병렬화 연구에 대한 내용이었는데, 예측적인 기법으로 병렬화를 하는 경우, 만약 예측이 틀리면 보완을 하여 복구를 해줘야 하는 기술들이 필요합니다. 하드웨어를 하나도 고치지 않고 소프트웨어만으로 클러스터에 있는 굉장히 많은 컴퓨터 코어에 대해서 병렬화를 했고, 그 부분에 대해서 예측적인 병렬 기술들을 지원해주는 기술을 개발했는데, 많은 분들이 좋게 평가해주셔서 굉장히 좋은 점수를 받아 출판되었습니다.



▶ 도움이 될 만한 분야 관련 사이트 또는 서적이 있다면 추천 부탁드립니다.


   컴파일러 분야에서 가장 유명한 책은 Alfred V. Aho가 쓴 『Dragon Book』입니다. 굉장히 유명해서 읽으시면 많은 도움이 될 것입니다. 그리고 또 하나는 프린스턴 대학교의 Andrew W. Appel이 쓴 ‘Tiger’ 책 『Modern Compiler Implementation in C/Java/ML』이 있습니다. Complier Implementation 관련 책인데, 굉장히 이해하기 쉽게 쓰여 있습니다. 그래서 처음 컴파일러를 접하시는 분들이 이 책을 보시게 되면, 하나하나 따라가면서 ’컴파일러를 이렇게 구현하는 거구나.‘를 쉽게 배울 수가 있습니다. 그렇다고 해서 내용이 없거나 빠지거나 그렇지는 않고 다른 책들에 있는 관련 내용들도 다 있기 때문에 저는 이 책을 가장 많이 추천합니다.



▶ 이 분야로 진학하려는 후배들(또는 유학 준비생)에게 필요한 지식과 자세에 대한 조언 부탁드립니다.


   이 분야에서 가장 중요한 덕목은 아마도 '참을성'이 아닐까 싶습니다. 저희 같은 경우는 보통 논문 한 편 쓰려면 2년 정도 투자해서 연구를 한 다음에, 한두 편의 논문이 나오게 됩니다. 왜냐하면 구현을 처음부터 끝까지 다 하고, 실제 돌아가는 시스템 위에서 아이디어를 추가하면서 논문을 쓰기 때문에 굉장히 많은 인내심이 필요합니다. 하지만 비록 오랜 시간을 들여 어떤 프로그램을 하나 만들고, 그것이 완벽하게 동작할 수 있도록 구현을 하다보면 생각 외로 굉장히 많이 배우게 됩니다. 논문적인 성과 즉, 양적인 성과는 조금 부족할지 모르겠지만 돌이켜서 생각해보면, 2년 전의 모습, 1년 전의 제 모습과 비교해 볼 때 굉장히 많이 발전해 있는 모습들을 발견할 수 있었습니다. 저도 대학원생 시절에 연구를 하면서 입학했을 때는 이렇게 발전했는데, 졸업할 때는 옛날에 구현했던 거를 보면서 "어떻게 이런 식으로 구현했지?" 했을 정도로 많이 발전해 있었습니다. 이런 경험을 제가 지도하는 학생들한테도 물어보면, 학생들도 1년 전에 비해서 굉장히 많이 발전했다고 하면서 "몇 년 전 대비 지금은 굉장히 다르죠. 완전히 다르죠."라고 말하곤 합니다. 따라서 인내심을 갖고 꾸준히 하다 보면, 당장 어제와 오늘은 비슷비슷해 보일지 모르겠지만, 1년, 2년 혹은 박사과정까지 생긱하면 5~6년 뒤에는 굉장히 많이 발전해 있는 모습을 확인하실 수 있습니다. 그리고 또 그만큼 좋은 결과를 얻으실 수 있을 것입니다.

   

   그리고 또 하나 제가 학생들한테 지도하면서 많이 해주는 조언이 있습니다. "여러분들이 어떤 일을 하든지 무엇이든 본인의 진입장벽을 높일 수 있는 연구나 일을 하시면 좋을 것 같습니다." 그러니까 커리어를 쌓는다고 했을 때, 예를 들면 제가 어떤 일을 하여 커리어를 쌓아 생긴 전문성에 있어서 "그거 6개월만 배우면 다해. 아니면 3개월만 배우면 나도 저렇게 할 수 있어." 와 같은 자세로 전문성을 쌓는다면 아무래도 본인의 진입장벽은 3개월, 6개월밖에 되지 않습니다. 그러면 다른 사람들도 쉽게 그 전문성을 획득하는 것이기에 본인의 경쟁력은 낮아질 수밖에 없을 것 같습니다. 하지만 "내가 가진 전문성을 따라오려면 한 2~3년이 걸린다." 라고 한다면, 새로운 회사나 어떤 분야에서 그에 맞는 전문성을 가진 사람을 필요로 할 경우 "그건 나밖에 안돼." "나 아니면 안돼" 와 같은 상황이 될 수밖에 없기에 본인의 부가가치가 훨씬 더 올라가게 되고, 더 좋은 기회를 얻을 수 있지 않을까 싶습니다. 어려울지 모르겠지만, "이것이 내가 하는 일의 나의 부가가치를 높일 수 있다, 진입장벽을 높일 수 있다, 나의 경쟁력을 높일 수 있다." 라고 한다면 시도를 해보시는 것도 굉장히 좋다고 생각합니다. 



▶ 본인을 표현하고자 하는 키워드를 꼽는다면? 


   저는 아마도 '실패' 같지 않을까 싶습니다. 이번 젊은정보과학자상 수상의 기회로 인터뷰까지 하고 있지만, 실은 실패한 경험이 굉장히 많이 있습니다. 논문도 내면 많이 떨어지고, 지금도 제안서를 내면 선정이 안 되는 경우도 많고, 물론 좋은 결과를 얻을 때도 있지만 그 이면에는 아주 많은 탈락의 경험이 있습니다. 저도 논문이나 제안서 내면 accept 되는 경우가 20% 혹은 10%밖에 안 됩니다. 그렇다고 해서 너무 아쉬워하고 주저앉으실 이유는 없다고 말씀드리고 싶습니다. 떨어지면 속상하고, 스트레스를 받기도 하지만 그래도 "다음에 또 내야지. 뭐 어쩌겠어." 하며 다음을 위해 준비하고 그러면서 계속해 내다보면 좋은 성과로 이어지는 것 같습니다.



▶ 앞으로 계획이 있으시다면 말씀해 주세요. 


   이루고 싶은 것 중 하나가 컴파일러 개발자로서 제가 만든 프로그램을 많은 사람이 사용하면 좋겠다는 것입니다. 그러기 위해서 제가 연구한 성과들을 하나하나씩 공개하고 있습니다. 저희 홈페이지와 GitHub 등에 올리고 있는데 앞으로 좀 더 활발하게 하려고 합니다. 연구실을 운영한 지도 어느덧 7~8년이 되었는데, 그동안 운영하면서 개발한 여러 가지 Complier Framework라든지 시스템 소프트웨어들과 수집했던 자료들을 이제는 공개 소프트웨어로 하나씩 공개하고 있습니다. 즉 공개 소프트웨어 쪽으로 활동을 활발하게 하지 않을까 싶습니다. 

 


▶ 그 밖에 하시고 싶은 이야기


   컴파일러도 그렇고 운영체제도 그렇고 시스템 소프트웨어 분야가 많이 중요해지고 있습니다. 인공지능뿐만 아니라 컴파일러 프레임워크가 전체적으로 중요해지고 있는데, 특히 요즘 시스템 반도체가 중요해지면서 주목받고 있습니다만 아쉽게도 많은 학생들이 시스템 소프트웨어 쪽으로 지원을 하고 있지는 않습니다. 아무래도 힘들고 어려운 부분들이 있는 분야라서 그런 것 같습니다. 하지만 개인적으로는 본인의 진입장벽을 높일 수 있는 기술을 배울 수 있는 분야입니다. 그리고 직접 만든 프로그램이 동작하는 것을 보면 뿌듯하면서 상당히 재미있습니다. 힘들 수는 있지만 재미있는 분야이기 때문에 많은 학부나 관련된 분들이 공부를 해보시면 좋을 것 같습니다. 


연구자 정보 >>

우수성과 >>

2021년 4월