|
| 1 | +--- |
| 2 | +title: 우연과 인연 |
| 3 | +date: 2024-04-30 |
| 4 | +author: Kihong Heo |
| 5 | +kor_author: 허기홍 |
| 6 | +tags: |
| 7 | + - ICSE2024 |
| 8 | + - Research |
| 9 | +classes: wide |
| 10 | +--- |
| 11 | + |
| 12 | +과학/공학계에서 연구를 한다는 것을 생각하면 어떠한 장면이 연상되는가? |
| 13 | +구글 그림 검색에 “과학 연구”라는 말을 넣어보았다. |
| 14 | +DNA 나선 구조와 더불어 하얀 실험복을 입고 현미경을 들여다보는 사람이 잔뜩 나온다. |
| 15 | +영어로 “scientific research”라고 검색해보아도 비슷한 사람이 잔뜩 나온다. |
| 16 | + |
| 17 | +이처럼 혼자 무언가를 골똘히 들여다보고 궁리하는 것은 연구에서 빠질수 없는 장면이 맞지만, 그보다 더 멋진 장면은 우연이 이어준 사람과 사람들간의 인연일 것이다. |
| 18 | +우연히 지나가던 귀인이 툭 던진 한마디에 큰 프로젝트가 시작되는 일도 잦고, 궁리의 꼬리가 끝이 보이지 않아 막막할 때 생각치도 못한 과거의 인연에서 빛이 새어 나오기도 한다. |
| 19 | +오늘은 그런 한 장면을 이야기해 볼까 한다. |
| 20 | + |
| 21 | +연구자로 살다보면 여러가지 계기로 전혀 예상치 못한 연구 주제를 만나는 경우가 있다. |
| 22 | +그러한 여러가지 계기 중 교수로서 가장 신이 나는 순간은 학생이 도전적인 문제를 스스로 제안하는 경우다. |
| 23 | +세상에 대한 불만으로 가득 찬 눈빛이면 더욱 좋다. |
| 24 | +현재 최첨단 소프트웨어 기술이라는 것이 고작 이런 수준이라는 것이 부끄러운 마음도 곁들이고. |
| 25 | +어떻게 풀어야 할지는 당장 모르겠지만, 몇 년간 밀어주시면 뭐라도 해보겠다는 포부로 마무리 되면 아주 최고다. |
| 26 | + |
| 27 | +[TurboTV](https://prosys.kaist.ac.kr/turbo-tv/)연구도 이렇게 시작했다. |
| 28 | +갓 석사로 입학한 승완이와 연구 주제를 찾기 위해 자주 만나서 이야기를 나누던 2021년 2학기였다. |
| 29 | +연구 주제를 찾는 석사 신입생에게 내가 주문한 것은 간단했다. |
| 30 | +- 우리의 피부에 직접 와닿는 실제 문제를 찾을 것 (논문을 위해서, 졸업을 위해서 하는 연구 말고) |
| 31 | +- 현재 최신 기술로도 안풀려서 개발자들의 골머리를 썩이는 문제일 것 |
| 32 | +- 완벽한 해결책이 안보인다고 겁먹지 말고, 개똥같은 아이디어라도 스스로 생각해 볼 것 |
| 33 | + |
| 34 | +몇 주간 계속 이야기를 나누면서 우리의 논의는 점점 [TurboFan](https://v8.dev/docs/turbofan)으로 수렴해갔다. |
| 35 | +TurboFan 은 전세계에서 가장 많이 쓰는 구글 Chrome 웹브라우저에 들어가는 JavaScript 컴파일러이다. |
| 36 | +JavaScript는 실행기(interpreter) 위에서 직접 프로그램을 실행하는 언어이지만 속도를 위해 실행중에 코드를 최적화하고 기계어로 번역해서 돌리곤 한다. |
| 37 | +이 때 쓰는 프로그램이 TurboFan이다. |
| 38 | +승완이의 말에 따르면 TurboFan은 매우 복잡한 프로그램이라 최적화 과정에 오류가 많고, 이러한 오류 때문에 프로그램이 잘못 번역되는 경우가 많다고 했다. |
| 39 | +원본 프로그램과 다르게 번역된 프로그램은 오동작을 일으키거나 최악의 경우 해커들의 공격 대상이 되어 심각한 보안 문제로 이어질 수 있다. |
| 40 | +승완이는 학부 때 보안을 전공하고 해킹에 경험이 있었던 터라, 이 문제에 관심이 많은 듯 했다. |
| 41 | +준비해온 여러 가지 실제 사례를 함께 보면서 문제의 중요성을 확인했다. |
| 42 | +내가 주문한 대로 제법 근사한 상이 차려졌다. |
| 43 | + |
| 44 | +좋은 문제를 찾았으니 이제 좋은 해결책을 함께 찾아볼 차례다. |
| 45 | +훌륭하게도 스스로 찾아온 개똥같은 아이디어부터 살펴보았다. |
| 46 | +승완이가 가져온 몇 가지 개똥 아이디어는 친환경 바이오매스 에너지원으로서 작은 손선풍기를 돌리기엔 괜찮았으나, 큰 TurboFan을 돌리기에는 화력이 딸렸다. |
| 47 | +TurboFan은 매우 복잡하고 긴 C++코드로 작성되어 있고, 자주 코드가 바뀌기 때문에 올바른지 검사하기가 매우 까다롭다. |
| 48 | +바이오매스로 일단 한 번 덤벼보겠다는 어린 학생의 당찬 포부는 멋있었지만, 그러다가 석사만 10년 하는 수가 있다고 말리며 일단 돌려보냈다. |
| 49 | +당장 뾰족한 수가 떠오르지 않았다. |
| 50 | +잠시 연구실에 남아서 혼자 자료를 뒤적여 보았지만 별 소득은 없었다. |
| 51 | +저녁시간도 되었고 해서 곧 나도 집으로 향했다. |
| 52 | + |
| 53 | +퇴근길, 무거운 짐을 이고 가는 듯 하던 순간, 갑자기 머릿속에서 무언가 번쩍 떠올랐다. |
| 54 | +희한하게도 출퇴근길 기계동 앞 잔디밭에서는 항상 좋은 생각이 많이 난다. |
| 55 | +떠오른 것은 번역 검산(translation validation)이라는 기술이다. |
| 56 | +박사과정을 하던 당시 이웃 연구실에서 LLVM 컴파일러의 동작을 검사하기 위해 번역 검산을 연구하던 것을 본 기억이 났다. |
| 57 | +컴파일러가 코드를 변환 (다른 언어로 번역하든 혹은 같은 언어로 최적화하든)할 때, 변환 전과 후의 의미가 동일한지 검사하는 기술이다. |
| 58 | +그리고 그 연구로 박사 학위를 받고 지금은 미국 텍사스 AWS에서 일하는 이준영 박사도 자연스레 떠올랐다. |
| 59 | +이 쪽 분야에 연구 경험이 많은 이박사에게 조언을 구해볼 수 있을 것 같았다. |
| 60 | + |
| 61 | +그렇게 생각을 정리하곤 집에 와서 잠시 다른 일을 하던 차에, 어디에선가 이메일이 한 통 왔다. |
| 62 | +굉장히 신기하게도 바로 그 이준영 박사였다. |
| 63 | +메일함을 뒤져보니 2021년 11월 8일 오후 8시 11분으로 기록이 되어있다. |
| 64 | +안부와 함께 이런저런 질문이 담긴 메일이었다. |
| 65 | +바로 답장을 보내고, 조금 뒤 8시 30분에 줌에서 만나기로 했다. |
| 66 | +우리의 문제를 설명해주었더니 이박사도 매우 흥미로워 했다. |
| 67 | +LLVM과 같은 전통적인 컴파일러와 다르게 TurboFan은 JIT (just-in-time) 컴파일러 (미리 컴파일 하는 것이 아니라 실행중에 그때그때 컴파일)라는 독특한 점이 있었고, |
| 68 | +그래프에 기반한 특이한 언어를 사용했기 때문에 새로운 검산 방법이 필요하다는 것에 동의를 했다. |
| 69 | +그리고 함께 의기투합하여 문제를 풀어보기로 했다. |
| 70 | +TurboTV (Translation Validation for TurboFan)의 시작이었다. |
| 71 | + |
| 72 | +그 때부터 본격적인 연구에 들어갔다. |
| 73 | +승완이는 TurboFan의 소스코드를 샅샅히 뒤져가며 동작을 파악했고, 이박사의 경험을 발판으로 삼아 새로운 번역검산기를 만들기 시작했다. |
| 74 | +그 때 쯤, 본인의 석사 연구를 마무리하고 졸업을 몇 달 앞두고 있던 우석이도 합류를 했다. |
| 75 | +둘은 놀라운 속도로 일을 진행했다. |
| 76 | +대다수 큰 소프트웨어가 그렇듯이 TurboFan도 제대로된 설명서가 없다. |
| 77 | +또한 늘 그렇듯이 우리의 연구를 위해 잘 준비된 도구도 당연히 없다. |
| 78 | +결국 이럴 때는 맷집 싸움이다. |
| 79 | +맨 땅에 헤딩해가며 코드를 한 줄 한 줄 읽고, 실제로 프로그램을 돌려보고, |
| 80 | +개발자 게시판을 통해 구글의 직원들에게 물어가면서 한발씩 나아갔다. |
| 81 | +필요하면 스스로 디버깅 도구도 만들고, 이박사와 함께 엄밀한 이론적 토대도 만들어 갔다. |
| 82 | + |
| 83 | +2023년 초, 1년 반동안 갈고 닦은 시스템을 정리하여 CAV에 제출했는데 아쉽게 탈락하였다. |
| 84 | +중요한 문제이고, 열심히 한 것은 알겠는데 이론적 깊이나 놀랄만한 실험 결과가 없다는 것이었다. |
| 85 | +기존 기술과 근본적으로 다른 것이 무엇이냐는 질문은 뼈아팠다. |
| 86 | +이를 논문에서 잘 설명하기 위해 굉장히 많은 논의를 했었는데 부족했다. |
| 87 | +논문 제출전 며칠이 생각이 난다. |
| 88 | +우리 학생들은 대전에, 이박사는 텍사스에 있었고, 나는 코로나로 미루어 둔 신혼여행 차 몰디브였다. |
| 89 | +수많은 커밋과 슬랙 메세지, 줌 대화가 태평양-대서양-인도양을 오갔다. |
| 90 | +아쉽게 논문은 탈락했지만, 몰디브 해변가에 앉아서 글쓰는 작가의 삶이 꽤나 매력적이라는 사실을 알게 된 것은 큰 수확이었다. |
| 91 | + |
| 92 | +결과가 다소 아쉽긴 했지만, 몇 가지 믿는 구석이 있었기에 걱정없었고 쉴새없이 달려나갔다. |
| 93 | +우리는 제출 이후에 심사가 진행되는 동안 이미 시스템을 확장하고 기술을 고도화해 가고 있었다. |
| 94 | +그 때 쯤에 우석이가 졸업을 하고, 재성이가 새로 대학원에 들어왔다. |
| 95 | +재성이는 들어오자마자 전체 시스템을 금세 파악하고, 빠진 구석을 채워나갔다. |
| 96 | +덕분에 더 탄탄한 실험 결과를 보일 수 있게 되었다. |
| 97 | + |
| 98 | +그렇게 채워 넣은 것들 중 한 가지 구석은 또 우연한 기회에 찾아왔다. |
| 99 | +심사가 진행되고 있던 2023년 4월 어느 날, 학교에서 Wasm (WebAssembly) 실행기 검증에 관한 초청강연이 있다고 해서 학생들을 이끌고 가보았다. |
| 100 | +맨 앞자리에 앉아서 가만히 발표를 듣다보니 TurboTV도 Wasm과 연결할 구석이 있을 것 같았다. |
| 101 | +발표 내내 잡힐듯 말듯 머리가 근질거리다가, 끝날 때 쯤 재미난 생각이 하나 떠올랐다. |
| 102 | +- LLVM에는 LLVM 비트코드를 Wasm으로 번역하는 뒷단이 있다. |
| 103 | +- TurboFan에는 Wasm을 TurboFan IR (TurboFan 이 내부적으로 사용하는 중간 언어)로 번역하는 앞단이 있다. |
| 104 | +- 이준영 박사가 만든 Alive2를 이용하면 LLVM 코드의 의미를 논리식으로 바꿀 수 있다. |
| 105 | +- 우리 TurboTV를 이용하면 TurboFan IR 의 의미를 논리식으로 바꿀 수 있다. |
| 106 | +- 이 두 논리식이 동치인지를 검사하면, LLVM 비트코드 -> Wasm -> TurboFan IR 로 이어지는 코드 변환이 올바른지 검사할 수 있지 않을까? |
| 107 | + |
| 108 | +강연을 듣고 오는 길에 학생들에게 이와 같은 이른바 “교차언어 번역검산” 아이디어를 구현해보자고 제안했다. |
| 109 | +그 일은 주로 재성이가 맡았는데, 들어온지 몇 달되지 않았음에도 놀라운 성과를 보여주었다. |
| 110 | +순식간에 초기 버전을 완성하고 꾸준히 성능을 끌어올렸다. |
| 111 | +그리고는 두 달 쯤 후, 예상했던대로 LLVM의 뒷단에서 Wasm 을 잘못 만들어내는 [버그](https://github.com/llvm/llvm-project/issues/63388)를 발견했다. |
| 112 | + |
| 113 | +그 이후부터는 모든 것이 일사천리로 진행되었다. |
| 114 | +몇 달동안 논문을 탄탄하게 보강하여 ICSE 2024에 제출하였고 좋은 평가를 받으며 [채택되었다](https://prosys.kaist.ac.kr/publications/icse24.pdf). |
| 115 | +가장 신경쓴 일은 설명을 간명하게 하는 것이었다. |
| 116 | +우리의 시스템은 복잡하고 실험한 것은 많았지만, ICSE는 분량을 10장 밖에 허용하지 않았다. |
| 117 | +그래서 글과 그림을 정말 옥구슬처럼 군더더기 없이 갈고 닦아야 했다. |
| 118 | +이러한 노력을 알아준 한 심사위원은 아래와 같은 평을 남겼다. 이제껏 받은 심사평 중 가장 자랑스러운 축에 속한다. |
| 119 | +> It is impressive how much material has been crammed into 10 pages while still being highly readable. |
| 120 | +> -- Reviewer C |
| 121 | +
|
| 122 | +이 연구 과정에서는 유난히 좋은 일이 많았다. |
| 123 | +Chrome의 심각한 버그를 찾아서 [상금을 받기도 하고](https://prosys.kaist.ac.kr/donate-bug-bounty/), |
| 124 | +이 연구로 승완이는 학교에서 우수 석사학위 논문상을 받았으며, |
| 125 | +우리는 후속 연구를 제안하여 [아마존 연구상](https://www.amazon.science/research-awards/recipients/kihong-heo)을 받고 거하게 회식을 즐겼다. |
| 126 | +그리고 2024년 4월 재성이가 ICSE에서 멋지게 발표하면서 TurboTV의 첫번째 장면이 일단락 되었다. |
| 127 | +특히, 재성이는 석사 3학기차에 ICSE에서 발표를 하는 영광을 얻었다. |
| 128 | +처음 참가하는 해외 학회라 보통 일이 아니었을텐데, 피나는 연습으로 멋지게 해 내었다. |
| 129 | + |
| 130 | +이 연구를 하면서 인연의 중요성을 다시 한번 크게 깨닫는다. |
| 131 | +내 주변 사람이 얼마나 내 인생의 궤적을 바꾸는지, 잠시 스친 우연이 얼마나 큰 인연으로 다가오는지. |
| 132 | +TurboTV의 대상이었던 TurboFan은 물론이고, 컴파일러 오류 검사 시스템 연구는 지금껏 내 관심사 밖의 일이었다. |
| 133 | +3년전만 해도 이런 주제로 발표를 하고 학생들과 함께 상까지 받을 것이라곤 전혀 예상치 못했다. |
| 134 | +우연이 맺어준 학생들과 동료들의 덕이다. |
| 135 | + |
| 136 | +우리 연구자들이 열심히 글을 쓰고 발표를 하는 것은 바로 이런 인연을 맺기 위함일 것이다. |
| 137 | +오랜기간 우리의 노력으로 잉태한 열매가 널리널리 퍼져 새로운 인연으로 돌아오기를 바라는 마음. |
| 138 | +식물의 열매가 달고 화려한 것은 결국 씨를 널리 퍼트리기 위함이 아니던가. |
| 139 | +방구석에 혼자 앉아 키보드만 두드리는 꽃이라면 홀로 외로이 시들기만 할 뿐. |
| 140 | +그러기에 오늘도 우리는 간절히 바라면서 글을 쓴다. |
| 141 | +이 열매가 널리 퍼져가기를, 그리하여 우연히 이를 맛본 누군가에게 큰 인연이 되기를, |
| 142 | +그리고 언젠가 또 다른 형태로 나에게 멋진 우연으로 다가 오기를. |
0 commit comments