본문으로 바로가기 주메뉴 바로가기

사용자별 맞춤메뉴

자주찾는 메뉴

추가하기
닫기

간행물·통계

contents area

detail content area

유전체 분석연구와 병렬 컴퓨팅
  • 작성일2010-02-19
  • 최종수정일2012-08-25
  • 담당부서감염병감시과
  • 연락처043-719-7173

 

 유전체 분석연구와 병렬 컴퓨팅
Parallel computing on genome analysis

     
질병관리본부 국립보건연구원 유전체센터 바이오과학정보과     
    


Ⅰ. 들어가는 말
  최근 염기서열분석(sequencing) 기술의 발달로 방대한 양의 유전체 관련 자료가 생산되고 있으며 특히 NGS(next generation sequencing)와 같은 고속의 염기서열분석 기술은 수억 이상의 DNA 서열을   반나절 만에 모두 해독해내고 있다. 그러나 이러한 실험 기술의 발달에 반하여 생산된 대용량 데이터의 분석 속도는 하드웨어적 또는 소프트웨어적 한계로 인하여 이를 따라가지 못하고 있으며, 특히 다변량 분석(multivariate analysis)이나 그래픽으로의 가시화(visualization) 과정에서 그 격차는 더 커지고 있다. 이에 따른 하드웨어적 한계를 극복하기 위하여 수퍼컴퓨팅, 그리드 컴퓨팅(Grid Computing), 클라우드 컴퓨팅(Cloud Computing), 테크니컬 컴퓨팅(Technical Computing) 등과 같은 다양한 고성능 컴퓨팅(HPC; High Performance Computing) 기술의 접목이 시도되고 있으며 이들 대부분은 Figure 1과   같이 많은 양의 계산을 여러 개의 컴퓨터(혹은 CPU, GPU)에 나누어 동시에 처리하는 병렬 컴퓨팅   방식이다.
                                       
  단순하게 생각하면 병렬 컴퓨팅이 마치 수퍼맨처럼 세상의 모든 난제들을 신속하게 해결해 줄 수 있는 것처럼 보이지만 실제로는 그렇게 간단하지 않다. 왜냐하면 대부분의 소프트웨어가 하나의 CPU에 최적화되어 있거나 상호의존적인 작업들이 대부분이기 때문에 병렬처리가 소용이 없거나 적용시키더라도  완전한 실행을 위해서는 꽤나 복잡한 절차나 진행이 요구되기 때문이다.
  병렬 컴퓨팅 원리의 이해를 돕기 위하여 ‘일반적인’ 단일 CPU에 최적화된 프로그램부터 살펴보기로 한다. Figure 2의 (1)을 보면, 아주 간략한 그림이기는 하지만, 단 하나의 CPU에서 수행되는 하나의  동작(action)을 볼 수 있다. 이러한 동작에 있어 듀얼(dual)이나 쿼드(quad) CPU 시스템은 프로그램  실행 속도 향상에 아무런 도움이 되지 못한다. 이것은 하나의 CPU에 의해서 수행되도록 설계되었으며 대부분의 프로그램이 동작하는 원리이기도 하다.
  병렬 컴퓨팅이란 Figure 2의 (2)와 같이 이러한 동작들이 서로 분리된 것을 의미하며, 입력되는 데이터로부터 출력되는 데이터까지의 필요한 동작을 여러 부분으로 분리함으로써 각각의 부분들은 서로 독립된 CPU에 의하여 수행된다. 물론, 각각의 부분들은 그 수행 시간이 거의 동일해서 한 CPU가 다른 CPU보다 먼저 수행을 마치고 기다리는 일이 없어야 하지만 불행하게도 현실에서는 상황이 그렇게 쉽지 않다. 왜냐하면 각각의 계산 작업이 서로 의존적이기 때문이다. 하나의 계산을 수행하기 위하여 다른 쪽에서 먼저 진행된 계산의 결과가 필요한 경우가 자주 발생한다. 한쪽의 정보는 다른 쪽의 계산 작업을 위하여 필요할 때가 많기 때문이다. 따라서 어떤 식으로든 Figure 2의 (3)과 같은 CPU 간 데이터 교환이 필요하게 된다.
                                       
  일반적으로 병렬 컴퓨팅의 작업은 계산을 서로 수행하는 과정에서 다른 CPU의 계산 결과를 요구하는 데이터-전송 시점이 발생하게 되고 이러한 시점의 동기화-진행(Synchronisation-execution)은 수시로 한번 이상 몇 차례에 걸쳐 필요하게 되는데, 바로 여기에서 병렬 컴퓨팅이라고 하는 것이 그렇게 간단하지 않다는 것을 알게 된다. 하나의 작업은 서로 독립된 부분으로 쪼개져서 수행되는데 각 부분이 서로 병행되어 수행되어야 하겠지만 계산 과정이 각각의 결과에 의존적일 수 있기 때문에 결국 동기화 작업이 필요하게 되는 것이다. 만약, 하나의 CPU가 하나의 계산을 빨리 끝내고 다음 계산을 계속하기 위해서는 다른 CPU의 작업을 기다려야만 한다. 즉 일종의 연합수행(co-ordination)이 필요함을 의미하며 이는 소프트웨어의 최적화 등으로 해결될 수 있다.
                                       


Ⅱ. 몸 말

   질병관리본부 국립보건연구원 유전체센터에서는 다양한 코호트 기반사업을 통하여 당뇨를 비롯한   몇몇 만성질환 및 희귀질환에 대한 대용량의 임상, 역학 정보와 함께 유전체 변이 정보를 보유하고   있으며 많은 연구자들이 질환과 유전자간 연관성을 찾기 위해 심혈을 기울이고 있다. 특히 SNP(single nucleotide polymorphism)가 질병에 대한 저항성, 민감성 및 질병의 정도에 따라 개인별 또는 인종별 차이를 보이는 것으로 알려지면서 국내·외 연구자들은 SNP와 질병과의 연관성을 분석하여 질병을 진단하고 예방하기 위해 필요한 연구를 활발히 진행하고 있으며 Table 1에서 보는 바와 같이 최근에는   이러한 연관성 분석 연구에서 기계학습 알고리즘이 많이 활용되고 있다. 기계학습 알고리즘은 주어진 훈련 데이터(training data)를 컴퓨터에 입력하고 고유의 알고리즘으로 학습을 수행하여 판별 기준에  대한 모델을 구축함으로써 새로운 데이터가 주어졌을 때 그 모델을 기반으로 하여 데이터가 어떠한   종류인지를 예측하게 된다.
 
  그러나 이러한 연구와 관련된 대부분의 연구자들은 대용량의 유전체 데이터를 분석함에 있어 컴퓨팅 성능의 한계에 부딪히게 되며, 이를 극복하기 위하여 다양한 방법을 시도함으로써 유전체 데이터를 좀 더 신속하고 효율적으로 분석하기 위하여 노력하고 있다. 이와 같은 방대한 계산량이 요구되는 작업에서는 고성능의 컴퓨팅 파워 분산 및 병렬 처리 등으로 계산량을 분산시킴으로써 계산 시간을 단축시킬 수 있다.
  병렬 컴퓨팅은 메모리 접근 방식에 따라 크게 분산 메모리 방식과 공유 메모리 방식으로 구분할 수 있는데 전자는 여러 대의 컴퓨터들을 네트워크로 서로 연결하여 구성한 클러스터에서 쓰이는 방식이며, 후자는 대칭형 멀티 프로세서(symmetric multi-processor) 구조의 수퍼컴퓨터, 즉 한 대의 컴퓨터에 복수의 CPU를 가지는 방식으로 볼 수 있다. 두 방식은 각기 다르게 특화된 다양한 프로그래밍 방법론이 존재하며, 그 중 분산 메모리 방식의 대표적인 예가 MPI(message passing interface)이고 공유   메모리 방식의 대표적인 예는 OpenMP (open multi-processing)이다. OpenMP 프로그래밍은 MPI와 비교하여 구현하기 쉽다는 장점이 있지만, 상대적으로 값싼 프로세서로 구성된 컴퓨터들을 여러 대 묶어 동시에 사용할 수 있는 클러스터 시스템 환경에서 구현가능한 MPI 프로그래밍이 보다 많이 활용되고 있다.
  MPI(message passing interface)는 새로운 프로그래밍 언어가 아니라 C, C++, Fortran(최근에는 JAVA도 가능) 등에서 사용되는 서브프로그램의 라이브러리이며, 분산 메모리형 병렬처리의 기본인 message-passing 규격에 기반하고 있다. OpenMP와 함께 널리 쓰이는 병렬처리 프로그래밍 라이브러리 중 하나이며 최근 상당히 보급되어 병렬 프로그래밍의 세계표준으로 자리잡고 있다. MPI를 직역하면 ‘메시지 전달 인터페이스’인데 공유 메모리 기반의 OpenMP와는 달리 분산 메모리 기반의 MPI는 각각의 CPU로 데이터 통신이 필요하게 된다. Figure 3에서 보는 바와 같이 MPI는 MPI-API를 통해 공유   메모리가 아닌 CPU들 간의 직접적인 메시지 통신을 하게 되며, 이 통신을 통하여 Master-Slave 구조가 이루어져 Master CPU에서 보낸 메시지에 따라 Slave CPU들이 해당 처리를 수행하는 구조가 만들어진다.
  이렇게 각 CPU간 메시지 통신이 가능한 MPI 프로그래밍을 통해 계산량이 많은 순차 프로그램에 적용, 이를 병렬처리가 가능하도록 만들면 단일 CPU에서 수행했을 때보다 좀 더 신속하고 정확하게 처리할 수 있다. 현재 많은 계산을 요구하는 여러 분야에서 OpenMP, MPI와 같은 병렬 프로그래밍을 적용하여 활용한 예가 많으며, 최근에는 Table 2에서 보는 바와 같이 생물정보학(bioinformatics) 분야에도 많이 응용되고 있는 추세이다.
 
  Table 2에서 언급된 병렬 알고리즘들의 연구결과에서는 CPU의 수를 증가시킬 경우, CPU의 수와  비례하여 프로그램의 수행 속도가 향상되었다. 이는 단일 시스템에서의 순차 프로그램 수행보다는 클러스터 컴퓨팅 기반에서 병렬 프로그래밍 기법을 적용하는 방식이 대용량 데이터를 다루는 유전체 연구 분야에서 향후 유용하게 쓰일 수 있음을 보여주는 사례라 할 수 있다.


Ⅲ. 맺는 말


  앞서 언급한 병렬 컴퓨팅을 적용하기 전에 몇 가지 고려해야 할 사항이 있다. MPI 병렬 프로그래밍을 적용하였을 때 모든 알고리즘에서 속도가 향상되는 것은 아니며, 이는 병렬 프로그래밍을 실행시켰을 때 노드 간 통신 부하 증가, 작업부하의 불균등 분배, 입출력 파일 IO 등으로 인해 오히려 성능이 저하될 수 있기 때문이다. 또한 현실적으로 모든 프로세스를 병렬처리 할 수 있는 것이 아니라 병렬처리가 불가능한 순차적인 부분이 있어 프로세스를 아무리 병렬화하더라도 더 이상 성능이 향상되지 않는 한계가 존재하며, 병렬처리 수행을 위한 데이터 분산처리 과정에서 더 많은 시간이 소모되어 노드별 부하나  통신시간이 오히려 길어질 수 있다. 이 경우 클러스터 시스템이 아닌 고성능의 멀티코어-단일 시스템에서 공유 메모리 기반의 OpenMP 병렬 프로그래밍 기법을 적용한다면 순차 프로그램을 수행할 때보다 향상된 속도를 기대할 수 있으며, MPI 병렬 프로그래밍을 적용한 알고리즘의 경우 노드 간 통신시간을 줄이기 위해 Myrinet이나 Infiniband와 같은 초고속 네트워크 환경을 기반으로 한다면 수행 속도의 향상을   충분히 기대할 수 있을 것이다.
  향후 한 대의 컴퓨터로는 계산량을 감당할 수 없을 정도의 대용량 데이터가 계속해서 구축될 것이며 이에 따라 고성능의 컴퓨팅 파워와 분석 속도를 줄이기 위한 방안이 끊임없이 요구될 것이다. 이러한 시점에서 병렬 컴퓨팅은 하나의 대안으로서 유전체 연구 분야에서 유용하게 활용될 수 있을 것이다.

Ⅳ. 참고문헌

 1. J. Ott, Neural networks and disease association studies, American Journal of Medical Genetics, 105(1): 60-61, 2001.
 2. B. Gong et al., Support vector machine hybrid for prediction of clinical phenotypes based on genome-wide SNP profiles of sib pairs, LNCS, 3614: 830-835,
     2005.
 3. N. Tiffin et al., Computational disease gene identification: a concert of methods prioritizes type2 diabetes and obesity candidate genes, Nucleic Acids
     Research, 34(10):3067-3081, 2006.
 4. J. C. Huang et al., Bayesian association of haplotypes and non-genetic factors to regulatoryand phenotypic variation in human populations, Bioinformatics,
     23(13): i212-i221, 2007.
 5. Kuo-Bin Li, ClustalW-MPI: ClustalW Analysis Using Distributed and Parallel Computing, Bioinformatics, 19(12), 1585--1586, 2003
 6. William S. Bush et al., Parallel multifactor dimensionality reduction: a tool for the large-scale analysis of gene-gene interactions, Bioinformatics, 22
     (17):2173-2174, 2006.
 7. IBM Parallel Machine Learning Toolbox: http://www.alphaworks.ibm.com/tech/pml

 
 

본 공공저작물은 공공누리  출처표시+상업적이용금지+변경금지 조건에 따라 이용할 수 있습니다 본 공공저작물은 공공누리 "출처표시+상업적이용금지+변경금지" 조건에 따라 이용할 수 있습니다.
TOP