대규모 병렬 컴퓨팅 환경의 필요성
날짜2016.03.11
조회수9811
글자크기
    • 구글 알파고가 이세돌 9단의 경기에서 두 번째 승리를 거뒀다. 세계의 이목이 집중된 가운데 모두들 결과에 대한 놀라움을 감추지 못하고 있다. 그동안 정석이라고 여겨지지 않아 외면당했던 의외의 수가 여러 번 등장하면서 '새로운 정석'이 생겨날지도 모르겠다. 이전 칼럼에서도 언급했지만 그 수들은 '실수'가 아니라 단지 그 상황에 맞게 계산한 후 도출된 나름대로 최적의 결과였을 뿐이다.
    • 알파고가 이렇게 놀라운 성능을 발휘할 수 있는 원동력은 크게 두 가지가 있다. 첫째는 보다 진화된 인공지능 알고리즘1)에 있다. 두 번째로는 이러한 알고리즘을 바탕으로 엄청난 양의 학습과 대량의 계산을 가능하게 하는 컴퓨팅 자원에 있다. 비유를 들자면, 종자만 좋다고 해서 반드시 좋은 열매를 맺을 수 있는 것은 아니다. 좋은 열매를 맺기 위해서는 종자뿐만 아니라 밭도 좋아야 한다. 오늘은 그 ‘밭’에 대해 논해보고자 한다.
    • 구글은 이번 알파고를 학습시키고 실험하는 데에 최대 1,202개의 CPU와 176개의 GPU를 사용했다. 딥블루의 경우처럼 슈퍼컴퓨터를 사용한 것이 아니라 여러 개의 상용 컴퓨터를 한데 묶어 클라우드 형태의 병렬컴퓨팅 자원을 활용했다.
    • 그럼 왜 병렬컴퓨팅인가? 병렬컴퓨팅은 동시에 많은 계산을 하는 연산의 방법으로 보통 여러 개의 계산용 하드웨어의 묶음 위에서 이루어진다. 병렬컴퓨팅은 하드웨어의 병렬화 방법에 따라 분류되는데, 그 정확한 의미를 따지자면 약간 다르긴 하지만, 최근 클라우드 컴퓨팅으로도 대변되는 분산컴퓨팅도 인터넷으로 연결된 컴퓨터들의 처리 능력을 이용하여 거대한 계산 문제를 해결한다고 보면 병렬컴퓨팅의 한 분야라고 이해해도 된다.2)
    • 그럼 왜 GPU를 썼는가? 역시 병렬컴퓨팅의 효과를 얻기 위해서다. 사실 GPU를 특정 계산에 쓰는 방식3)은 새로운 것은 아니다. 이미 국내에서도 연구가 진행되어 왔었고, 지난 2010년 카이스트 연구팀에 의해 컴퓨터 분야의 세계 저명 학회인 SIGCOMM에서 GPU를 이용해서 획기적인 패킷 전송량을 달성했던 PacketShader4)라는 논문이 발표된 바 있었다. 이 논문에서는 당시 기존에는 달성할 수 없었던 일반 상용의 단일 머신에서 40Gbps라는 놀라운 성능향상을 보여주었다.
    • 이후로도 GPU를 다양한 분야에 이용하는 사례와 연구가 늘어났다. GPU는 그래픽처리장치(Graphic Processing Unit)의 준말이다. 컴퓨터에는 중앙처리장치(CPU) 외에도 많은 연산이 요구되는 그래픽을 처리하기 위해 GPU를 사용한다. GPU에는 CPU의 코어보다는 다소 성능이 떨어지지만 값이 저렴해서 같은 비용 대비 훨씬 더 많은 수의 코어를 탑재할 수 있다. 그래서 단일 고속연산 보다는 다수의 코어에 의한 병렬 연산이 더 필요한 이미지 랜더링에 특화되어 있다.
    • 이해를 돕기 위해 좀 더 쉬운 비유를 들어 설명하자면, CPU를 대학생으로 GPU를 유치원생으로 비유해보자. 최근 널리 쓰이는 CPU는 보통 쿼드코어(4개의 코어)라고 가정하고, GPU는 수백 개의 코어5)를 가지므로, 대학생 4명과 유치원생 수백 명이 있는 상황을 가정할 수 있다. 이 두 집단에게 고등학교 미적분 문제를 풀어보라고 주어진다면, 대학생 집단은 얼마 뒤 답을 낼 것이고, 유치원생 집단은 답을 내지 못하거나 아주 오래 걸릴 것이다. 반대로 수백 장의 편지봉투에 우표를 붙이는 일이 주어진다면 어떻게 될까? 상황은 반대가 될 것이다.
    • 이처럼 단일의 어려운 작업보다는 단체가 힘을 발휘하는 일도 있다. 다음수를 탐색하는 일은 많은 경우의 수를 따져봐야 하기 때문에, GPU와 같은 병렬 계산에 특화된 장치의 도움을 받으면 성능은 더 좋아진다. GPU는 CPU보다 상대적으로 단위 코어당 비용이 저렴하다. 게다가 기술의 발달과 더불어 기존 성능의 하드웨어 가격은 점점 내려가기 마련인데, 최근의 GPU들은 코어 하나가 십여 년 전의 CPU 코어 수준을 따라잡고 있다. 앞으로도 GPU를 다양한 계산에 활용하는 일은 더 빈번해 질 것이다.
    • 아무튼 현재 구글은 이런 병렬컴퓨팅 개체들을 큰 규모의 컴퓨팅 집단으로 구성하며 세계적으로도 몇 안 되는 컴퓨팅 환경을 보유하고 있다. 몇몇 글로벌 기업들과 국가에서 이 같은 컴퓨팅 환경을 보유하고 있거나, 자국 연구자들을 위해서 제공하고 있다. 국가적 지원 사례로는 캐나다에서 운영하는 ComputeCanada6)가 대표적이다. ComputeCanada는 자국의 대학, 병원, 비영리 연구기관 등의 연구진들에게 고성능의 GPU컴퓨팅과 스토리지를 지원하는 컴퓨팅 환경이자 단체이다.
    • 국내에는 아직 이에 대적할만한 환경이 없다. 왜 그럴까? 돈이 많이 들어서? 물론 설치비용도 무시할 수는 없지만, 더 큰 이유는 관심이 없어서였다고 생각한다. 구글을 비롯한 글로벌 기업들이 앞 다투어 인공지능 관련 스타트업 기업들을 인수하고 인재를 영입하는 동안, 우리는 위기의식 없이 낮잠을 자고 있었던 것은 아닐는지 모르겠다. 연구자가 아이디어가 있다 하더라도, 막대한 계산량이 필요해서 이를 제대로 실험해볼 환경이 없다면, 그 연구는 빛을 발하지 못하고 사그라들지도 모른다.
    • 사실 이번 구글의 알파고에 사용된 알고리즘인 MCTS나 컨볼루션신경망으로 분류되는 딥러닝 기법, 지도학습, 강화학습 등은 알파고의 등장과 함께 처음 드러난 기술들이 아니다. 구글은 이 알고리즘들을 심도 있게 조합하여 최적화했고, 이 좋은 종자가 잘 자랄 수 있도록, 그만큼 좋은 실험 환경을 제공했다.
    • 구글이 현재 반드시 세계에서 가장 뛰어난 인공지능을 가지고 있다고는 섣불리 말할 수 없다. 하지만 콜럼버스의 달걀처럼 가장 먼저 시도했다는 것에는 큰 의미가 있다. 그리고 그런 시도가 가능할 만한 환경을 우선적으로 갖추었다는 것은 두말할 나위도 없다.
    • 대상이 바둑이었을 뿐이지 이번 알파고와 이세돌의 대결에서 구글은 결코 바둑이 목적은 아닐 것이다. 구글은 이번 알파고를 통해 인류역사에 큰 기록을 남기면서 인공지능의 시장을 다시 한 번 선도했다. 지난겨울 구글이 TensorFlow를 공개했을 때처럼, 예상컨대 뒤이어 많은 글로벌 기업들이 이와 비슷한 일을 벌일 것이다.
    • 우리도 대책마련이 시급한 때이다. 우리나라에서도 이미 많이 늦은 감은 있지만, 정부에서 2019년 까지 70억 원을 투자하여 딥러닝용 고성능컴퓨팅(HPC) 환경인 ‘다중 노드 분산처리 SW프레임워크’를 조성하려고 한다. 부디 조속히 그리고 제대로 실현되어, 더 이상은 세계 경쟁에서 밀리지 않길 바랄 뿐이다.
    • 1) 자세한 내용은 소프트웨어정책연구소 홈페이지 “이슈리포트[2016-002] AlphaGo의 인공지능 알고리즘 분석” 참조.
    • 2) 자세한 내용은 위키피디아 분산컴퓨팅, 병렬컴퓨팅 참조.
    • 3) 자세한 내용은 General Purpose computation on GPUs(GPGPU). http://www.gpgpu.org. 참조.
    • 4) Han, S., Jang, K., Park, K., & Moon, S. (2011). PacketShader: a GPU-accelerated software router. ACM SIGCOMM Computer Communication Review, 41(4), 195-206.
    • 5) 최근 상용 GPU들은 3000개 이상의 프로세싱 코어를 갖는 모델도 있다.
    • 6) https://www.computecanada.ca/ 참조.