Home » CT OPINION

[CT OPINION] 공개 소프트웨어 (오픈소스) 생태계와 역사

August.2020 No Comment

2016년 3월 9일, 구글 딥마인드의 알파고는 이세돌 9단과 대국을 시작했다. 기계학습 기술 중 하나인 인공신경망을 이용한 바둑 인공지능인 알파고는 이미 인공지능 최초로 판 후이 2단을 5전 전승으로 이긴 후였다. 하지만 많은 이들이 이세돌의 승리를 점쳤다. 이세돌은 전성기는 지났으나 10년간 바둑계를 제패했던 최고의 프로 기사였기 때문이다. 그러나 이틀간 중계된 다섯 경기에서, 알파고는 4승을 거두었고 바둑이 컴퓨터가 알 수 없는 인간의 영역이라는 믿음이 깨졌다. 알파고 대국을 통해 인공신경망 기술은 대중적으로 알려지게 되었고, 2020년 현재 가장 활발한 연구 분야 중 하나가 되었다.

폭발적인 발전 속도와 관심 이외에도, 인공신경망 연구 방법과 발전 과정에는 특이한 점이 있다. 바로 (코드가 공개되어 있고 사용자가 개발에 참여할 수 있는) 오픈소스 소프트웨어를 기반으로 연구가 이루어진다는 점이다. 대부분의 기계학습 연구자는 오픈소스 운영체제인 리눅스에 오픈소스 프로그래밍 언어인 파이썬을 이용해서 코딩을 하며, 기계학습을 위한 Pytorch나 Tensorflow 중 하나를 주로 사용하는데, 둘 역시 오픈소스 라이브러리이다. 오픈소스 환경에서 여러 사용자의 활발한 참여와 빠른 개선이 이루어지며 기계학습 생태계에서는 오픈소스로 만들어지지 않은 개발 프로그램을 찾기 어려운 수준이 되었다. 이에 머신러닝을 중심으로 오픈소스 소프트웨어의 역사, 현황 그리고 미래에 미칠 영향을 소개한다.

오픈소스 소프트웨어의 역사는 소프트웨어를 유료화하고 사유화하는 것에 반대하는 이들이 모든 사용자가 자유롭게 사용하고 공유할 수 있는 생태계를 만들고자 벌인 일에서 시작되었다. 이렇게 시작된 프로젝트 중 가장 유명한 것 중 하나가 자유 소프트웨어 재단의 GNU(GNU’s Not Unix)프로젝트이다. GNU는 오픈소스 소프트웨어들이 함께 돌아갈 수 있는 생태계를 만들기 위한 운영체제 개발 프로젝트다. 이 GNU에서 탄생한 것이 오늘날 대부분의 머신러닝 연구에 쓰이는 리눅스 운영체제다. 리눅스는 오픈소스 중에서도 개방적인 개발 방식을 채택한 편이다. 리눅스의 개발자들은 누구나 리눅스 패치를 작성해서 보낼 수 있게 하고 패치에 기여한 사람은 다음 공개 때 이름을 함께 실었다. 이러한 방식은 사용자들이 무보수로 리눅스를 개선하고 싶은 마음을 고무시켰다..
리눅스와 더불어 머신러닝에 필수적으로 쓰이는 언어인 파이썬은 대학원생이었던 귀도 반 로섬이 크리스마스 연휴에 연구실이 닫혀 있어서 심심풀이로 만든 데서 시작하였다. 파이썬도 리눅스와 마찬가지로 오픈소스로 개발되었다. 개발된 파이썬은 프로그래밍을 처음 배우는 초보자들도 쉽게 익힐 수 있다는 이점과 범용적으로 쓰일 수 있다는 특징을 갖고 있었기 때문에 사용자들에게 큰 호응을 얻었다. 이 때문에 파이썬으로 개발된 다양한 프로그램들이 생겨나기 시작했다. 빠른 개발이 중요한 연구소의 특성과 맞물려 파이썬은 연구용으로 점점 더 중요한 언어가 되어갔다. 그 뿐 아니라 머신러닝을 위한 소프트웨어들 또한 파이썬을 기반으로 활발히 개발되어 이제는 개발자들이 가장 많이 활용하는 프로그래밍 언어 중 하나가 되었다.

1

Figure 1. 프로그래밍 질문 사이트인 Stack Overflow에 올라오는 언어별 질문 비율 변화

현재 가장 많이 쓰이는 머신러닝 라이브러리인 Pytorch와 Tensorflow 또한 이러한 추세에 맞추어 오픈소스로 개발되고 있다. 한가지 특이한 점은, 리눅스와 파이썬과 달리 이 두 라이브러리가 기업인 페이스북과 구글에 의해 주도적으로 개발되고 유지되고 있다는 점이다. 기업이 소프트웨어를 독점해서 얻는 이득보다, 오픈소스로 개발하고 생태계를 이끌어 나가는 이득이 크다고 판단한 것이다. 덕분에 (여전히 하드웨어 비용의 문제는 존재하지만) 이제는 어떠한 프로그램을 구입하지 않더라도 누구나 최신 머신러닝 기술을 접하고 연구에 참여할 수 있는 환경이 조성되었다.

물론 오픈소스 프로그램에도 단점은 존재한다. 프로그램 개발이 개인의 자율에 의존하는 경우가 많아 지원을 받지 못하는 경우 프로젝트가 사장될 수 있다. 또한 이미 개발된 프로그램의 경우에 유지보수를 따로 책임지는 사람이 없으므로 심각한 문제가 있어도 고쳐지지 않을 수도 있다. 이러한 단점에도 불구하고 오픈소스 프로그램은 머신러닝 연구의 진입장벽을 낮추어 더 많은 사용자를 끌어들이고, 생태계를 발전시켜 나가는 선순환구조를 구축하는데 기여한다. 그 뿐 아니라 오픈소스 툴을 사용할 수 있는 강의와 자료들 또한 무료로 공개되어 민주적인 연구 생태계를 조성하는 데에도 기여하고 있다. 오픈 소스 생태계의 활성화가 연구의 발전에만 국한되지 않고 더 많은 사람들이 기술에 접근하고 혜택을 받을 수 있게 되길 바란다.

권태균 기자 ilcobo2@kaist.ac.kr