Open Resource란 무엇이고 왜 필요한가?

AIN Cloud beta 출시 포스팅 시리즈 (1/2)

DS
6 min readJan 18, 2019

언어: 한국어 / English

  1. Open Resource란 무엇이고 왜 필요한가? (현재글)
  2. AIN Cloud beta로 Open Resource 경험하기
Original Photo by Fancycrave on Unsplash

‘얘야, 요새 콤퓨타라는 걸로 문서 작성을 해볼 수 있다던데 어떻게 해볼 수 있게 해주거라.’

어릴적 컴퓨터에 조금 지식이 있던 저에게 부모님이 이런 요청을 했었습니다. 물론, 이름난 브랜드의 완성된 컴퓨터를 사드리면 쉽지만, 자주 쓰실지도 아직 모르는데 큰 돈 들일수는 없어서 직접 다양한 부품을 구입해서 컴퓨터를 조립하곤 했습니다. 거기에 Windows와 같은 운영체제와 워드프로세서 등 소프트웨어까지 설치하면 비로소 ‘사용자’인 부모님이 사용하실 수 있었습니다(물론 컴퓨터와 워드프로세서의 사용법까지 알려드려야 했지만…).

실행환경 문제

그런데 저희 부모님처럼 컴퓨터에 어려움을 느끼시는 분들 뿐만 아니라, 왠지 컴퓨터에 도가 텄을 것 같은 인공지능 또는 머신러닝 분야의 개발자와 연구자들도 이런 어려움을 겪고 있습니다. 실제로 페이스북의 TensorFlow KR과 같은 머신러닝 관련 그룹에는 ‘머신러닝용 장비로 이런 스펙이 괜찮을까요?’, ‘제 컴퓨터에서 이 코드를 돌리려는데 대체 왜 안되는지 모르겠어요’ 같은 글이 거의 매일 올라옵니다. 이런 것을 실행환경 문제라고 하겠습니다. 그리고 이는 크게 두 가지로 분류해 볼 수 있습니다.

첫째. 복잡하고 다양한 실행환경 조합

실행환경이 복잡하고 다양한 이유는 이러합니다. 전세계 최대의 오픈소스 공유 사이트인 Github에서는 매년 오픈소스와 관련된 통계와 순위 등을 발표하는데, 2018년 자료를 보면 가장 많이 사용된 태그 8위와 9위 그리고 가장 빠르게 성장하고 있는 주제 2위와 3위가 머신러닝 관련 키워드들 입니다(링크). 2017년 통계(링크)를 보면 그 해 동안 2500만개의 소스코드 저장소가 생성 되었다는 사실은 자유롭게 사용하고 수정 해볼 수 있는 코드 자체는 상당히 많다는 것을 보여줍니다.

하지만 최초 소스코드 작성자가 풀려는 문제의 다양성 뿐만 아니라, 그가 익숙한 방식이나 취향도 다양합니다. 그래서 프로젝트마다 제각기 다른 종류와 버전의 운영체제, 프로그래밍 언어, 라이브러리, 프레임웍 등으로 이루어진 다양한 소프트웨어 실행환경 조합이 사용되고 있습니다.

게다가, 이 소프트웨어 실행환경과 잘 호환되도록 구성된 CPU, GPU, 메모리, 메인보드, 냉각장치, 전원장치.. 등 또 다양한 조합의 하드웨어까지 고려하여 실행환경을 구축해야 하기에, 실행환경 설정이 머신러닝보다 더 어렵다(출처)는 말도 나올 지경입니다.

AKA. 현자타임.

둘째, 연산 자원으로 대표되는 실행환경의 규모 문제

실행환경의 복잡성 뿐만 아니라, 날로 필요한 실행환경의 규모가 커지는 것도 최근 부각되고 있는 문제입니다.

대표적인 사례로, 2018년 10월에 구글 연구진에 의해 BERT라는 제목의 논문으로 발표된 연구가 있습니다. 이 연구 중 수행된 Pre-training 이라는 작업은 구글에서 자체 개발한 Cloud-TPU라는 연산장비 20개를 4일간 가동하여 완료 되었는데요, 이를 2019년 1월 기준으로 시중에서 약 740만원에 구입할 수 있는 TESLA P100을 8개 사용해도 1년 넘게 가동해야 할 것입니다. BERT에 대한 자세한 분석과 그 의미는 저희 AI Network 개발팀이 작성한 글을 참고 바랍니다(링크).

이렇듯 최신 연구 경향은 엄청난 연산자원을 보유하고 있는 것을 전제로 하고 있어, 사실 개인이나 소규모 조직이 그런 연구 결과를 재현해보거나 개선해보는 것은 거의 불가능합니다. 비용 자체가 많이 드는건 둘째치고, 그렇게 구축한 자원이 다른 프로젝트에서는 그만큼 큰 자원이 필요가 없거나 호환이 안될 수도 있기 때문에 초기비용에 대한 기회 비용이 크기 때문입니다.

내가 더러워서 구글이나 페북 들어간다

본질에 더 집중할 수 있게 하는 Open Resource

더 좋은 머신러닝 알고리즘을 개발하거나 이를 활용하여 중요한 문제를 해결하는 것이 본질인데, 이를 위한 실행환경과 관련된 문제로 시간과 자원을 현 수준으로 소모해야 하는 상황은 합리적이라고 할 수 없을 것입니다.

그런데 만약 누군가가 대신 복잡한 실행환경 설정까지 마친 소스코드를 필요할 때만 사용한 만큼의 비용을 지불하고 실행과 수정을 해볼 수 있다면 어떨까요? 마치 내가 원하는 프로그램과 그에 최적화하여 만들어둔 컴퓨터를 필요할때만 사용한만큼 비용을 내고 쓸 수 있는 것이죠.

그리고 최초에 소스코드를 만든 이만 실행환경을 제공한다면 실행에 필요한 자원이 한정되어 있으니 필요한 이가 많아졌을 때 제대로 지원이 어려울 것입니다. 그 경우 다른 이도 실행환경을 제공할 수 있도록 하고, 그와 수익을 나눌 수 있다면 필요한 이가 많아져도 원활한 사용이 가능할 것입니다.

이와 같이 소스코드+실행환경을 만드는 이, 제공하는 이, 필요한 이들이 자유롭게 필요와 공급을 주고 받을 수 있고, 필요한 이가 본질에 집중할 수 있게 하는 생태계를 구축하는 것이 바로 저희 AI Network 팀이 작년 8월 프로젝트의 시작을 알리며 제시한 Open Resource라는 비전입니다.

지난 8월 포스팅된 글(링크)과 AI Network 개발자 밋업에서 공유된 AI Network CTO 김준기님의 발표(링크)와 Co-founder 김민현님의 발표(링크)를 보시면 더욱 상세한 기술적인 배경을 확인하실 수 있습니다.

공식 홈페이지: http://ainetwork.ai/

공식 이메일: channel@ainetwork.ai

페이스북: https://www.facebook.com/AINETWORK0/

카카오톡(한국): https://open.kakao.com/o/gEt7PtS

텔레그램(영어): https://t.me/ainetwork_en

--

--