2018.04.24

김진철의 How-to-Big Data | 빅데이터 주요 기술의 조건 (2)

김진철 | CIO KR

지난 칼럼에 이어 이번에는 빅데이터 주요 기술 조건 가운데 빅데이터 분석 플랫폼의 요건에 대해 알아보자.

LHC 실험의 공식 데이터 분석 플랫폼 - ROOT
LHC 실험을 비롯한 과학실험은 항상 데이터 분석 과정이 필수다. 특히, 실험을 통해 얻은 데이터가 어느 정도로 유의미하고 믿을 만한 것인지, 실험을 수행했을 때 세웠던 가설과 이론적인 연구를 통해 예측했던 결과가 어느 정도로 실험 결과를 잘 설명하는지 확인하기 위해서는 데이터를 정밀하게 수집하고 분석해야 한다. 이런 이유로 데이터 분석은 과학 실험과 연구의 기본이라고 할 수 있고, 언제나 과학자들은 데이터 분석을 효과적으로 할 수 있는 도구를 개발해왔다.

컴퓨터 기술이 개발된 배경에는 여러 가지가 있지만, 무엇보다도 물리학자들과 수학자들이 많이 하게 되는 수치 계산을 빠르고 자동화하려는 목적이 컸다. 컴퓨터 과학과 기술이 발전하면서 컴퓨터 과학 자체의 발전으로 새로운 컴퓨팅 기술과 기술이 등장하기도 했지만, 컴퓨팅 기술의 가장 큰 동인 중의 하나는 더 많은 계산을 더 신속하게 처리할 수 있는 컴퓨터를 만들고, 이렇게 컴퓨터가 더 많은 계산을 신속하게 처리할 수 있도록 명령하는 프로그램, 또는 소프트웨어를 얼마나 빠른 시간에 효과적으로 만드느냐 하는 것이었다.

LHC 가속기 전에 CERN이 수행했던 실험을 위한 가속기인 LEP가 운영되던 1980년대 후반만 해도 과학 분야에서 데이터 분석 소프트웨어가 비중 있게 여겨지지 않았다. 물론 1980년대 들어와 개인용 컴퓨터 기술과 그래픽 프로세서 기술이 발전하면서, MATLAB과 같은 과학기술 계산 전용 소프트웨어와 그래프를 그리는 데이터 분석 도구로 유명한 오리진(Origin)과 같은 소프트웨어가 등장하기는 했지만, 오늘날 생각하는 데이터 분석 소프트웨어와는 거리가 멀었다.

LHC 가속기 전에 물리학자들의 데이터 분석 도구는 프로그래밍 언어였다. 1980년대까지만 해도 과학기술 계산에는 포트란이 많이 쓰였다. 데이터 분석이라고 하면 으레 포트란으로 데이터를 해석, 분석하는 코드를 작성하거나, 수식으로 표현된 방정식을 풀어 계산해주는 수치해석 소프트웨어를 작성하는 것이었다. 이런 프로그래밍 언어의 데이터 분석 보조 환경으로써 그래프 작성 라이브러리, IMSL과 같은 수치 해석 라이브러리 등이 보조적으로 활용되는 형식이었다.

LHC와 같은 거대 과학 실험에서 빅데이터가 쏟아져 나오기 시작하면서 데이터를 수집하고 가공하는 과정에서도 단순한 프로그래밍이 아닌 많은 실험 물리학자와 이론 물리학자가 협업하여 전문 소프트웨어를 개발해야 하는 상황이 되었다. 실험 빅데이터 처리를 위해 컴퓨터 한 대에서의 데이터 분석만으로는 적절한 시간 내에 데이터 분석이 불가능하게 되자, 데이터 분석을 자동화하기 위해 데이터 수집부터 기계 학습과 인공 지능 기술을 이용한 데이터 가공, 분석 자동화, 3D 모델링을 비롯한 데이터 모델링 및 고급 가시화등의 기능이 유기적으로 통합되어 실험 데이터 분석의 생산성을 높이는 전문 소프트웨어 기술이 필요하게 되었다.

ROOT는 CERN의 입자 물리학 실험이 LEP에서 LHC로 세대 교체되면서 ROOT의 창시자인 르네 분(Rene Bune)과 폰즈 라드메이커즈(Fons Rademakers)는 천공카드 입력 시절의 프로그래밍 방식의 유산이 프로그래밍 방식에 남아 생산성과 효율을 저해하는 포트란언어 중심의 PAW(Physics Analysis Workstation; PAW)라는 분석 소프트웨어보다 좀더 현대적이고 효과적인 분석 소프트웨어가 필요하다고 생각하였다[5]. 또한, LHC 실험의 데이터양이 과거 LEP 가속기보다 훨씬 더 많고, LHC 검출기의 구조가 더 복잡하고 해상도가 훨씬 더 높은 것으로 인해 분석이 어려운 것을 고려하여, 3D 모델링 및 가시화 등의 고급 과학기술 계산 및 분석 기법을 손쉽게 사용할 수 있는 분석 플랫폼이 LHC 가속기 실험에서 필요하다고 생각하였다. 이런 배경에서 ROOT라는 새로운 데이터 분석 플랫폼을 개발하였다.

르네 분과 폰즈 라드메이커즈는 과거 물리학자들이 계산과 분석에 많이 쓰이던 포트란언어를 과감하게 버리고, 당시 많이 쓰이던 객체 지향 프로그래밍 언어인 C++언어를 새로운 분석 플랫폼의 기반 언어로 삼았다. 기반 언어를 C++로 바꾸게 되면서 분석 소프트웨어 개발에서 많은 개선이 이루어질 수 있었다.

ROOT에서 분석의 기반이 되는 프로그래밍 언어를 C++로 바꾸게 되면서 물리학자들이 LHC와 검출기 등의 실험 장치를 개발할 때 많이 사용하였던 C와 C++외에 별도의 프로그래밍 언어를 배우지 않고도 데이터 분석 논리를 프로그래밍하고 표현할 수 있게 되었다. 무엇보다도 과거 계산에 많이 사용했던 값 비싼 워크스테이션과 상용 유닉스 계열 운영체제보다 값이 싼 PC급 컴퓨터와 리눅스가 보급되면서 많은 수치 계산 및 데이터 분석, 가시화 관련 소프트웨어가 C와 C++로 개발되어 오픈소스로 배포되기 시작하였다. 리눅스 기반의 오픈소스 과학기술 계산 및 분석, 가시화 소프트웨어를 활용하기 위해서는 C와 C++언어를 사용하는 것이 포트란을 사용하는 것보다 훨씬 수월하였다.

데이터 분석에서 C와 C++ 언어를 사용하는 것의 또 다른 장점은 LHC 실험 장치 시스템의 제어와 원시 데이터를 다루는 데이터 획득 시스템 대부분이 C와 C++로 개발되었다는 것이다. 이 때문에 ROOT를 이용하면 이종 프로그래밍 언어로 개발된 다른 모듈을 링크할 때 생길 수 있는 많은 문제를 사전에 차단할 수 있다.

시스템 소프트웨어를 개발할 때 사용하는 프로그래밍 언어와 환경, 데이터 처리, 가공 과정에서 사용하는 프로그래밍 언어와 환경, 데이터 분석 및 가시화에서 사용하는 프로그래밍 언어와 환경이 서로 다른 것에서 오는 소프트웨어 개발 과정의 어려움이 ROOT를 사용하면 많은 부분 해소된다. 이 때문에 풍부하지 않은 건설 예산과 시간, 전 세계에서 하나밖에 없는 거대한 실험 장치를 짓는 데서 오는 일정과 자원의 불확실성에서 오는 LHC 건설의 어려움을 데이터 수집 및 분석 과정 전반을 하나의 프로그래밍 언어로 표현하고 통합하는 노력 하나만으로도 많이 줄일 수 있었다. 이에 더해서 원시 데이터 수집부터 데이터 가공, 데이터 분석 및 가시화에 이르는 데이터를 다루는 모든 프로세스를 C/C++ 하나의 언어와 ROOT라는 단일 데이터 분석 환경에서 표현할 수 있기 때문에 데이터 분석 과정을 통합하고 관리하기가 쉬워진다(그림 1).

이제 ROOT의 특징에 대해서 살펴보도록 하자. ROOT는 분석 환경이기도 하지만, C/C++ 언어로 개발된 분석 프레임워크이기도 하다. ROOT로 개발된 분석 소프트웨어 소스 코드는 CINT라는 C/C++ 언어 인터프리터를 통해서 대화식으로 분석을 수행할 수도 있지만, ROOT 라이브러리와 같이 링크하게 되면 C/C++ 컴파일러로 컴파일해서 독립적으로 동작하는 응용 프로그램으로도 실행시킬 수 있다.

ROOT는 대화식 분석 환경을 제공하기 위해서 CINT라고 하는 C/C++ 인터프리터를, 최근에는 LLVM 기반으로 저스트 인 타임(Just-In-Time; JIT) 컴파일을 지원하는 CLING을 이용하고 있다. 이 때문에 ROOT 프레임워크와 C/C++언어로 표현된 데이터 분석 로직을 실행해서 결과를 보기 위해 반드시 매번 컴파일할 필요 없이 대화식으로 결과를 바로바로 확인할 수 있다. ROOT 버전 6부터 CLING으로 전환하면서부터 파서와 실행 엔진이 분리되면서 하나의 소스 코드로 표현된 분석 로직을 다양한 하드웨어에서 최적화하고 실행시키기가 더 쉬워졌다. LLVM 기반의 GNU C/C++ 컴파일러를 통해 C++ 11, C++ 14등의 최신 C++ 표준 문법을 위한 별도의 컴파일러를 구할 필요 없이 최신 C++ 구문과 앞선 기능을 지원할 수 있게 되었다.

ROOT와 같은 데이터 분석 플랫폼에서 가장 중요한 것 중의 하나가 원시 데이터와 데이터 소스에 접근하기 쉬워야 한다는 것이다. 특히, 경우에 따라 데이터의 구조가 복잡하고 양이 많은 빅데이터의 경우에는 더욱 원시 데이터와 데이터 소스에의 접근을 쉽게 도와줄 수 있는 도구나 라이브러리가 제공되어야 한다. ROOT의 가장 큰 목적 중의 하나는 LHC 검출기들이 만들어내는 3차원 이벤트 영상 데이터들을 분석하는 것이므로, 분석의 목적에 맞는 이벤트 데이터들을 손쉽게 선택하여 접근할 수 있어야 했다. 이를 위해 ROOT에서는 TTree와 TChain이라는 클래스를 이용해 검출기 이벤트 데이터를 조직화하고, 체계적인 방식으로 이벤트 데이터 내의 다양한 이벤트를 다룰 수 있게 하였다.

그림 1. ROOT 6를 실행시킬 때 나타나는 로고(상단 왼쪽)와 ROOT가 지원하는 응용 프로그램 개발 영역에 대한 그림(상단 오른쪽), ROOT를 이용해 이벤트 데이터의 통계 분석을 수행하는 모습(하단). (그림 출처: https://root.cern.ch/gallery

많은 과학 실험에서 데이터는 수치 데이터의 형태로 얻어진다. 수치 데이터가 가지고 있는 본연의 모델을 다양한 실험으로 밝혀내고, 이렇게 실험 결과를 통해 유추한, 데이터가 만들어지게 된 모델에 대한 통찰력을 지식으로써 응용하여 새로운 발견을 이어 나가는 것이 바로 과학의 연구 방법이다. 특히, 물리학은 고등 수학을 이용한 정교한 수학적 모델을 이용해서 데이터가 말하는 자연이 동작하는 방식을 설명하려고 하는데, 가설로 세운 수학적 모델이 얼마나 잘 맞는지 확인하고 검증하기 위해 통계학적인 방법을 쓰게 된다.

특히 입자물리학에서 다루는 소립자들은 존재하는 환경이 우리가 일상적으로 겪는 환경이 아닌 극한의 환경이기 때문에 소립자들의 상태와 특성을 직접 측정하거나 관찰할 수 없다. 소립자들은 아주 짧은 시간 나타났다가 사라지는 경우가 많기 때문에 그 관찰과 측정이 어려운 경우가 많아서 간접적인 방법으로 측정하는 경우가 많다. 운동량이나 에너지와 같은 물리량을 직접 측정할 수 있다고 해도 워낙 많은 입자가 한꺼번에 검출기에서 쏟아져 나오기 때문에, 각 이벤트가 어떤 입자에서 나온 것인지 구분하기 위해서는 정밀한 통계적인 분석이 필요하다.

이렇게 검출기 이벤트 데이터의 입자물리학적 분석을 위해 필요한 정밀한 통계학적인 분석을 위해 ROOT에서는 이벤트 데이터 분석에서 많이 쓰이는 통계 분석을 위주로 통계 분석 라이브러리를 제공하고 있다. 통계 분석한 결과를 가시화할 수 있도록 다양한 형태의 통계 분포와 정보를 가시화할 수 있는 기능을 제공하고 있다.


그림 2. ROOT에서 이벤트 데이터를 검출기 3차원 모델과 함께 가시화하고, 이벤트 데이터에 대한 통계 분석과 물리학적인 분석 결과를 가시화한 모습. (그림 출처: https://bellenot.web.cern.ch/bellenot/index.html)

ROOT에서는 통계 기반 기계 학습과 신경망 알고리즘을 이벤트 데이터 분석과 마이닝에 쓸 수 있도록 TMVA(Toolkit for Multivariate Data Analysis for ROOT)라는 다차원 변수 통계 분석 라이브러리를 제공한다. TMVA에는 다차원 확률 분포를 가정하는 통계 모델 추정과 분석을 위한 다양한 API들과 도구가 정의되어 있다. 통계 분석에 많이 쓰이는 R과 같이 다양한 통계 분석 알고리즘을 모두 제공하지는 않지만, 입자물리학 데이터 분석을 위해 필요한 다차원 확률 분포 통계 모델 분석을 새롭게 디자인하고 테스트할 수 있는 다양한 API를 제공한다.

요즘 인기를 얻고 있는 인공신경망, 또는 딥러닝 알고리즘을 위한 도구도 바로 이 TMVA 라이브러리의 한 API 형태로 제공하고 있다. 딥러닝을 위한 심층신경망 모델의 학습을 위해 필요한 경사 추종(gradient-descent) 최적화 알고리즘과 시뮬레이티드 어닐링(simulated annealing) 알고리즘 등도 제공한다. 텐서플로와 같은 딥러닝 전용 라이브러리만큼 풍부한 라이브러리를 제공하는 것은 아니지만, 딥러닝 모델을 이용해 이벤트 데이터 분석을 ROOT에서 손쉽게 수행할 수 있는 수준의 라이브러리를 제공하기 때문에 데이터 분석에 유용하게 사용할 수 있다.
 


그림 3. ROOT의 3차원 이벤트 가시화 모듈인 EVE를 사용해서 14TeV로 충돌한 납(Pb) 중이온빔의 이벤트를 ALICE 검출기 모델과 함께 가시화한 모습. (그림 출처: [3])

ROOT의 가장 강력한 기능 중의 하나는 바로 데이터 가시화 기능이다. 데이터 가시화 기능의 수준에는 여러 가지가 있을 수 있는데, 대부분의 데이터 분석 플랫폼에서의 가시화 도구는 차트나 3차원 그래프까지 지원하는 경우가 많다. 그래프 작성 용도 외의 3차원 모델링이나 고급 과학 가시화(scientific visualization)와 같은 기능은 VTK나 Mayavi와 같은 별도의 전문적인 과학 가시화(scientific visualization) 소프트웨어나 CAD/CAE 소프트웨어를 이용해 별도의 3D 모델을 만들어 분석한다.

LHC 검출기 이벤트 데이터 자체가 3차원 영상 데이터이기 때문에, 기본적으로 이벤트 데이터를 보기 위해서는 3차원 영상으로 표현해야 한다. 여기에, 이벤트 데이터를 정확하게 표현하기 위해서는 검출기의 3차원 모델과 함께 이벤트를 표현해야 각 이벤트를 일으킨 입자의 종류와 에너지 등의 물리량을 분석할 수 있다. ROOT에는 LHC 검출기 이벤트 데이터의 이런 특성을 고려하여 검출기의 3차원 모델과 함께 이벤트 데이터를 관찰할 수 있는 이벤트 데이터 가시화 기능을 제공한다.

ROOT의 이벤트 데이터 분석 기능, 강력한 데이터 가시화 기능을 바탕으로 검출기를 비롯한 방사선 장비의 물리적인 검출 특성을 모델링하고 분석할 수 있는 시뮬레이션 소프트웨어인 GEANT4를 같이 사용하면 검출기에서 일어나는 입자 물리학적 이벤트를 편리하게 분석할 수 있다(그림 3). ROOT에서 제공하는 GEANT4 VMC 툴킷과 G4ROOT 툴킷을 이용하면 ROOT에서 GEANT4 시뮬레이션 결과를 이벤트 데이터와 같이 대조, 분석해볼 수 있다.

지난 열다섯 번째 글에서 이미 상세히 소개했지만 환기 차원에서 다시 언급하자면, ROOT에서는 이벤트 데이터의 대규모 병렬 처리와 분석을 위해 PROOF를 지원한다. PROOF의 최근 버전에서 제공되는 TProcessExecutor와 TThreadExecutor 클래스를 이용하면 하둡과 같은 맵리듀스 패턴의 병렬 연산도 ROOT에서 수행할 수 있다. 최근에는 하둡과 스파크와 같은 오픈소스 빅데이터 병렬, 분산 처리 소프트웨어를 사용할 수 있도록 하둡과 스파크에서 ROOT 작업을 실행하는 방법에 대해서도 많이 연구되고 있다[7-19].

ROOT는 입자물리학 분야에서 명실상부한 표준 분석 플랫폼으로 자리 잡았다. ROOT는 과거 물리학자들의 분석 도구였던 포트란 기반의 분석 소프트웨어 개발을, 새로운 컴퓨팅 기술의 발전에 맞추어 과감하게 C와 C++언어 기반으로 바꾼 중요한 분석 소프트웨어 플랫폼이다. C/C++ 기반의 ROOT가 고에너지 물리학 분야에서 많이 쓰이기 시작하면서, 실험 장치 원시 데이터 수집부터 장치 제어, 데이터 분석 및 가시화에 이르는 모든 영역에서 C/C++ 하나의 프로그래밍 언어로 소프트웨어 개발이 가능해졌다. 이렇게 하나의 프로그래밍 언어 환경으로 실험 장치 개발 및 분석 환경이 통합되면서 물리학자들의 실험 및 데이터 분석의 생산성이 크게 좋아졌고, 이는 결국 LHC 건설, 가동 5년만인 2013년의 힉스 보존 발견으로 이어졌다.

 

2018.04.24

김진철의 How-to-Big Data | 빅데이터 주요 기술의 조건 (2)

김진철 | CIO KR

지난 칼럼에 이어 이번에는 빅데이터 주요 기술 조건 가운데 빅데이터 분석 플랫폼의 요건에 대해 알아보자.

LHC 실험의 공식 데이터 분석 플랫폼 - ROOT
LHC 실험을 비롯한 과학실험은 항상 데이터 분석 과정이 필수다. 특히, 실험을 통해 얻은 데이터가 어느 정도로 유의미하고 믿을 만한 것인지, 실험을 수행했을 때 세웠던 가설과 이론적인 연구를 통해 예측했던 결과가 어느 정도로 실험 결과를 잘 설명하는지 확인하기 위해서는 데이터를 정밀하게 수집하고 분석해야 한다. 이런 이유로 데이터 분석은 과학 실험과 연구의 기본이라고 할 수 있고, 언제나 과학자들은 데이터 분석을 효과적으로 할 수 있는 도구를 개발해왔다.

컴퓨터 기술이 개발된 배경에는 여러 가지가 있지만, 무엇보다도 물리학자들과 수학자들이 많이 하게 되는 수치 계산을 빠르고 자동화하려는 목적이 컸다. 컴퓨터 과학과 기술이 발전하면서 컴퓨터 과학 자체의 발전으로 새로운 컴퓨팅 기술과 기술이 등장하기도 했지만, 컴퓨팅 기술의 가장 큰 동인 중의 하나는 더 많은 계산을 더 신속하게 처리할 수 있는 컴퓨터를 만들고, 이렇게 컴퓨터가 더 많은 계산을 신속하게 처리할 수 있도록 명령하는 프로그램, 또는 소프트웨어를 얼마나 빠른 시간에 효과적으로 만드느냐 하는 것이었다.

LHC 가속기 전에 CERN이 수행했던 실험을 위한 가속기인 LEP가 운영되던 1980년대 후반만 해도 과학 분야에서 데이터 분석 소프트웨어가 비중 있게 여겨지지 않았다. 물론 1980년대 들어와 개인용 컴퓨터 기술과 그래픽 프로세서 기술이 발전하면서, MATLAB과 같은 과학기술 계산 전용 소프트웨어와 그래프를 그리는 데이터 분석 도구로 유명한 오리진(Origin)과 같은 소프트웨어가 등장하기는 했지만, 오늘날 생각하는 데이터 분석 소프트웨어와는 거리가 멀었다.

LHC 가속기 전에 물리학자들의 데이터 분석 도구는 프로그래밍 언어였다. 1980년대까지만 해도 과학기술 계산에는 포트란이 많이 쓰였다. 데이터 분석이라고 하면 으레 포트란으로 데이터를 해석, 분석하는 코드를 작성하거나, 수식으로 표현된 방정식을 풀어 계산해주는 수치해석 소프트웨어를 작성하는 것이었다. 이런 프로그래밍 언어의 데이터 분석 보조 환경으로써 그래프 작성 라이브러리, IMSL과 같은 수치 해석 라이브러리 등이 보조적으로 활용되는 형식이었다.

LHC와 같은 거대 과학 실험에서 빅데이터가 쏟아져 나오기 시작하면서 데이터를 수집하고 가공하는 과정에서도 단순한 프로그래밍이 아닌 많은 실험 물리학자와 이론 물리학자가 협업하여 전문 소프트웨어를 개발해야 하는 상황이 되었다. 실험 빅데이터 처리를 위해 컴퓨터 한 대에서의 데이터 분석만으로는 적절한 시간 내에 데이터 분석이 불가능하게 되자, 데이터 분석을 자동화하기 위해 데이터 수집부터 기계 학습과 인공 지능 기술을 이용한 데이터 가공, 분석 자동화, 3D 모델링을 비롯한 데이터 모델링 및 고급 가시화등의 기능이 유기적으로 통합되어 실험 데이터 분석의 생산성을 높이는 전문 소프트웨어 기술이 필요하게 되었다.

ROOT는 CERN의 입자 물리학 실험이 LEP에서 LHC로 세대 교체되면서 ROOT의 창시자인 르네 분(Rene Bune)과 폰즈 라드메이커즈(Fons Rademakers)는 천공카드 입력 시절의 프로그래밍 방식의 유산이 프로그래밍 방식에 남아 생산성과 효율을 저해하는 포트란언어 중심의 PAW(Physics Analysis Workstation; PAW)라는 분석 소프트웨어보다 좀더 현대적이고 효과적인 분석 소프트웨어가 필요하다고 생각하였다[5]. 또한, LHC 실험의 데이터양이 과거 LEP 가속기보다 훨씬 더 많고, LHC 검출기의 구조가 더 복잡하고 해상도가 훨씬 더 높은 것으로 인해 분석이 어려운 것을 고려하여, 3D 모델링 및 가시화 등의 고급 과학기술 계산 및 분석 기법을 손쉽게 사용할 수 있는 분석 플랫폼이 LHC 가속기 실험에서 필요하다고 생각하였다. 이런 배경에서 ROOT라는 새로운 데이터 분석 플랫폼을 개발하였다.

르네 분과 폰즈 라드메이커즈는 과거 물리학자들이 계산과 분석에 많이 쓰이던 포트란언어를 과감하게 버리고, 당시 많이 쓰이던 객체 지향 프로그래밍 언어인 C++언어를 새로운 분석 플랫폼의 기반 언어로 삼았다. 기반 언어를 C++로 바꾸게 되면서 분석 소프트웨어 개발에서 많은 개선이 이루어질 수 있었다.

ROOT에서 분석의 기반이 되는 프로그래밍 언어를 C++로 바꾸게 되면서 물리학자들이 LHC와 검출기 등의 실험 장치를 개발할 때 많이 사용하였던 C와 C++외에 별도의 프로그래밍 언어를 배우지 않고도 데이터 분석 논리를 프로그래밍하고 표현할 수 있게 되었다. 무엇보다도 과거 계산에 많이 사용했던 값 비싼 워크스테이션과 상용 유닉스 계열 운영체제보다 값이 싼 PC급 컴퓨터와 리눅스가 보급되면서 많은 수치 계산 및 데이터 분석, 가시화 관련 소프트웨어가 C와 C++로 개발되어 오픈소스로 배포되기 시작하였다. 리눅스 기반의 오픈소스 과학기술 계산 및 분석, 가시화 소프트웨어를 활용하기 위해서는 C와 C++언어를 사용하는 것이 포트란을 사용하는 것보다 훨씬 수월하였다.

데이터 분석에서 C와 C++ 언어를 사용하는 것의 또 다른 장점은 LHC 실험 장치 시스템의 제어와 원시 데이터를 다루는 데이터 획득 시스템 대부분이 C와 C++로 개발되었다는 것이다. 이 때문에 ROOT를 이용하면 이종 프로그래밍 언어로 개발된 다른 모듈을 링크할 때 생길 수 있는 많은 문제를 사전에 차단할 수 있다.

시스템 소프트웨어를 개발할 때 사용하는 프로그래밍 언어와 환경, 데이터 처리, 가공 과정에서 사용하는 프로그래밍 언어와 환경, 데이터 분석 및 가시화에서 사용하는 프로그래밍 언어와 환경이 서로 다른 것에서 오는 소프트웨어 개발 과정의 어려움이 ROOT를 사용하면 많은 부분 해소된다. 이 때문에 풍부하지 않은 건설 예산과 시간, 전 세계에서 하나밖에 없는 거대한 실험 장치를 짓는 데서 오는 일정과 자원의 불확실성에서 오는 LHC 건설의 어려움을 데이터 수집 및 분석 과정 전반을 하나의 프로그래밍 언어로 표현하고 통합하는 노력 하나만으로도 많이 줄일 수 있었다. 이에 더해서 원시 데이터 수집부터 데이터 가공, 데이터 분석 및 가시화에 이르는 데이터를 다루는 모든 프로세스를 C/C++ 하나의 언어와 ROOT라는 단일 데이터 분석 환경에서 표현할 수 있기 때문에 데이터 분석 과정을 통합하고 관리하기가 쉬워진다(그림 1).

이제 ROOT의 특징에 대해서 살펴보도록 하자. ROOT는 분석 환경이기도 하지만, C/C++ 언어로 개발된 분석 프레임워크이기도 하다. ROOT로 개발된 분석 소프트웨어 소스 코드는 CINT라는 C/C++ 언어 인터프리터를 통해서 대화식으로 분석을 수행할 수도 있지만, ROOT 라이브러리와 같이 링크하게 되면 C/C++ 컴파일러로 컴파일해서 독립적으로 동작하는 응용 프로그램으로도 실행시킬 수 있다.

ROOT는 대화식 분석 환경을 제공하기 위해서 CINT라고 하는 C/C++ 인터프리터를, 최근에는 LLVM 기반으로 저스트 인 타임(Just-In-Time; JIT) 컴파일을 지원하는 CLING을 이용하고 있다. 이 때문에 ROOT 프레임워크와 C/C++언어로 표현된 데이터 분석 로직을 실행해서 결과를 보기 위해 반드시 매번 컴파일할 필요 없이 대화식으로 결과를 바로바로 확인할 수 있다. ROOT 버전 6부터 CLING으로 전환하면서부터 파서와 실행 엔진이 분리되면서 하나의 소스 코드로 표현된 분석 로직을 다양한 하드웨어에서 최적화하고 실행시키기가 더 쉬워졌다. LLVM 기반의 GNU C/C++ 컴파일러를 통해 C++ 11, C++ 14등의 최신 C++ 표준 문법을 위한 별도의 컴파일러를 구할 필요 없이 최신 C++ 구문과 앞선 기능을 지원할 수 있게 되었다.

ROOT와 같은 데이터 분석 플랫폼에서 가장 중요한 것 중의 하나가 원시 데이터와 데이터 소스에 접근하기 쉬워야 한다는 것이다. 특히, 경우에 따라 데이터의 구조가 복잡하고 양이 많은 빅데이터의 경우에는 더욱 원시 데이터와 데이터 소스에의 접근을 쉽게 도와줄 수 있는 도구나 라이브러리가 제공되어야 한다. ROOT의 가장 큰 목적 중의 하나는 LHC 검출기들이 만들어내는 3차원 이벤트 영상 데이터들을 분석하는 것이므로, 분석의 목적에 맞는 이벤트 데이터들을 손쉽게 선택하여 접근할 수 있어야 했다. 이를 위해 ROOT에서는 TTree와 TChain이라는 클래스를 이용해 검출기 이벤트 데이터를 조직화하고, 체계적인 방식으로 이벤트 데이터 내의 다양한 이벤트를 다룰 수 있게 하였다.

그림 1. ROOT 6를 실행시킬 때 나타나는 로고(상단 왼쪽)와 ROOT가 지원하는 응용 프로그램 개발 영역에 대한 그림(상단 오른쪽), ROOT를 이용해 이벤트 데이터의 통계 분석을 수행하는 모습(하단). (그림 출처: https://root.cern.ch/gallery

많은 과학 실험에서 데이터는 수치 데이터의 형태로 얻어진다. 수치 데이터가 가지고 있는 본연의 모델을 다양한 실험으로 밝혀내고, 이렇게 실험 결과를 통해 유추한, 데이터가 만들어지게 된 모델에 대한 통찰력을 지식으로써 응용하여 새로운 발견을 이어 나가는 것이 바로 과학의 연구 방법이다. 특히, 물리학은 고등 수학을 이용한 정교한 수학적 모델을 이용해서 데이터가 말하는 자연이 동작하는 방식을 설명하려고 하는데, 가설로 세운 수학적 모델이 얼마나 잘 맞는지 확인하고 검증하기 위해 통계학적인 방법을 쓰게 된다.

특히 입자물리학에서 다루는 소립자들은 존재하는 환경이 우리가 일상적으로 겪는 환경이 아닌 극한의 환경이기 때문에 소립자들의 상태와 특성을 직접 측정하거나 관찰할 수 없다. 소립자들은 아주 짧은 시간 나타났다가 사라지는 경우가 많기 때문에 그 관찰과 측정이 어려운 경우가 많아서 간접적인 방법으로 측정하는 경우가 많다. 운동량이나 에너지와 같은 물리량을 직접 측정할 수 있다고 해도 워낙 많은 입자가 한꺼번에 검출기에서 쏟아져 나오기 때문에, 각 이벤트가 어떤 입자에서 나온 것인지 구분하기 위해서는 정밀한 통계적인 분석이 필요하다.

이렇게 검출기 이벤트 데이터의 입자물리학적 분석을 위해 필요한 정밀한 통계학적인 분석을 위해 ROOT에서는 이벤트 데이터 분석에서 많이 쓰이는 통계 분석을 위주로 통계 분석 라이브러리를 제공하고 있다. 통계 분석한 결과를 가시화할 수 있도록 다양한 형태의 통계 분포와 정보를 가시화할 수 있는 기능을 제공하고 있다.


그림 2. ROOT에서 이벤트 데이터를 검출기 3차원 모델과 함께 가시화하고, 이벤트 데이터에 대한 통계 분석과 물리학적인 분석 결과를 가시화한 모습. (그림 출처: https://bellenot.web.cern.ch/bellenot/index.html)

ROOT에서는 통계 기반 기계 학습과 신경망 알고리즘을 이벤트 데이터 분석과 마이닝에 쓸 수 있도록 TMVA(Toolkit for Multivariate Data Analysis for ROOT)라는 다차원 변수 통계 분석 라이브러리를 제공한다. TMVA에는 다차원 확률 분포를 가정하는 통계 모델 추정과 분석을 위한 다양한 API들과 도구가 정의되어 있다. 통계 분석에 많이 쓰이는 R과 같이 다양한 통계 분석 알고리즘을 모두 제공하지는 않지만, 입자물리학 데이터 분석을 위해 필요한 다차원 확률 분포 통계 모델 분석을 새롭게 디자인하고 테스트할 수 있는 다양한 API를 제공한다.

요즘 인기를 얻고 있는 인공신경망, 또는 딥러닝 알고리즘을 위한 도구도 바로 이 TMVA 라이브러리의 한 API 형태로 제공하고 있다. 딥러닝을 위한 심층신경망 모델의 학습을 위해 필요한 경사 추종(gradient-descent) 최적화 알고리즘과 시뮬레이티드 어닐링(simulated annealing) 알고리즘 등도 제공한다. 텐서플로와 같은 딥러닝 전용 라이브러리만큼 풍부한 라이브러리를 제공하는 것은 아니지만, 딥러닝 모델을 이용해 이벤트 데이터 분석을 ROOT에서 손쉽게 수행할 수 있는 수준의 라이브러리를 제공하기 때문에 데이터 분석에 유용하게 사용할 수 있다.
 


그림 3. ROOT의 3차원 이벤트 가시화 모듈인 EVE를 사용해서 14TeV로 충돌한 납(Pb) 중이온빔의 이벤트를 ALICE 검출기 모델과 함께 가시화한 모습. (그림 출처: [3])

ROOT의 가장 강력한 기능 중의 하나는 바로 데이터 가시화 기능이다. 데이터 가시화 기능의 수준에는 여러 가지가 있을 수 있는데, 대부분의 데이터 분석 플랫폼에서의 가시화 도구는 차트나 3차원 그래프까지 지원하는 경우가 많다. 그래프 작성 용도 외의 3차원 모델링이나 고급 과학 가시화(scientific visualization)와 같은 기능은 VTK나 Mayavi와 같은 별도의 전문적인 과학 가시화(scientific visualization) 소프트웨어나 CAD/CAE 소프트웨어를 이용해 별도의 3D 모델을 만들어 분석한다.

LHC 검출기 이벤트 데이터 자체가 3차원 영상 데이터이기 때문에, 기본적으로 이벤트 데이터를 보기 위해서는 3차원 영상으로 표현해야 한다. 여기에, 이벤트 데이터를 정확하게 표현하기 위해서는 검출기의 3차원 모델과 함께 이벤트를 표현해야 각 이벤트를 일으킨 입자의 종류와 에너지 등의 물리량을 분석할 수 있다. ROOT에는 LHC 검출기 이벤트 데이터의 이런 특성을 고려하여 검출기의 3차원 모델과 함께 이벤트 데이터를 관찰할 수 있는 이벤트 데이터 가시화 기능을 제공한다.

ROOT의 이벤트 데이터 분석 기능, 강력한 데이터 가시화 기능을 바탕으로 검출기를 비롯한 방사선 장비의 물리적인 검출 특성을 모델링하고 분석할 수 있는 시뮬레이션 소프트웨어인 GEANT4를 같이 사용하면 검출기에서 일어나는 입자 물리학적 이벤트를 편리하게 분석할 수 있다(그림 3). ROOT에서 제공하는 GEANT4 VMC 툴킷과 G4ROOT 툴킷을 이용하면 ROOT에서 GEANT4 시뮬레이션 결과를 이벤트 데이터와 같이 대조, 분석해볼 수 있다.

지난 열다섯 번째 글에서 이미 상세히 소개했지만 환기 차원에서 다시 언급하자면, ROOT에서는 이벤트 데이터의 대규모 병렬 처리와 분석을 위해 PROOF를 지원한다. PROOF의 최근 버전에서 제공되는 TProcessExecutor와 TThreadExecutor 클래스를 이용하면 하둡과 같은 맵리듀스 패턴의 병렬 연산도 ROOT에서 수행할 수 있다. 최근에는 하둡과 스파크와 같은 오픈소스 빅데이터 병렬, 분산 처리 소프트웨어를 사용할 수 있도록 하둡과 스파크에서 ROOT 작업을 실행하는 방법에 대해서도 많이 연구되고 있다[7-19].

ROOT는 입자물리학 분야에서 명실상부한 표준 분석 플랫폼으로 자리 잡았다. ROOT는 과거 물리학자들의 분석 도구였던 포트란 기반의 분석 소프트웨어 개발을, 새로운 컴퓨팅 기술의 발전에 맞추어 과감하게 C와 C++언어 기반으로 바꾼 중요한 분석 소프트웨어 플랫폼이다. C/C++ 기반의 ROOT가 고에너지 물리학 분야에서 많이 쓰이기 시작하면서, 실험 장치 원시 데이터 수집부터 장치 제어, 데이터 분석 및 가시화에 이르는 모든 영역에서 C/C++ 하나의 프로그래밍 언어로 소프트웨어 개발이 가능해졌다. 이렇게 하나의 프로그래밍 언어 환경으로 실험 장치 개발 및 분석 환경이 통합되면서 물리학자들의 실험 및 데이터 분석의 생산성이 크게 좋아졌고, 이는 결국 LHC 건설, 가동 5년만인 2013년의 힉스 보존 발견으로 이어졌다.

 

X