이하, 첨부된 도면을 참조하여 본 발명의 바람직한 실시예를 상세히 설명한다.
다만, 본 발명의 기술 사상은 설명되는 일부 실시 예에 한정되는 것이 아니라 서로 다른 다양한 형태로 구현될 수 있고, 본 발명의 기술 사상 범위 내에서라면, 실시 예들간 그 구성 요소들 중 하나 이상을 선택적으로 결합, 치환하여 사용할 수 있다.
또한, 본 발명의 실시예에서 사용되는 용어(기술 및 과학적 용어를 포함)는, 명백하게 특별히 정의되어 기술되지 않는 한, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자에게 일반적으로 이해될 수 있는 의미로 해석될 수 있으며, 사전에 정의된 용어와 같이 일반적으로 사용되는 용어들은 관련 기술의 문맥상의 의미를 고려하여 그 의미를 해석할 수 있을 것이다.
또한, 본 발명의 실시예에서 사용된 용어는 실시예들을 설명하기 위한 것이며 본 발명을 제한하고자 하는 것은 아니다.
본 명세서에서, 단수형은 문구에서 특별히 언급하지 않는 한 복수형도 포함할 수 있고, "A 및(와) B, C 중 적어도 하나(또는 한 개 이상)"로 기재되는 경우 A, B, C로 조합할 수 있는 모든 조합 중 하나 이상을 포함할 수 있다.
또한, 본 발명의 실시 예의 구성 요소를 설명하는 데 있어서, 제1, 제2, A, B, (a), (b) 등의 용어를 사용할 수 있다.
이러한 용어는 그 구성 요소를 다른 구성 요소와 구별하기 위한 것일 뿐, 그 용어에 의해 해당 구성 요소의 본질이나 차례 또는 순서 등으로 한정되지 않는다.
그리고, 어떤 구성 요소가 다른 구성요소에 '연결', '결합' 또는 '접속'된다고 기재된 경우, 그 구성 요소는 그 다른 구성 요소에 직접적으로 연결, 결합 또는 접속되는 경우뿐만 아니라, 그 구성 요소와 그 다른 구성 요소 사이에 있는 또 다른 구성 요소로 인해 '연결', '결합' 또는 '접속' 되는 경우도 포함할 수 있다.
또한, 각 구성 요소의 "상(위) 또는 하(아래)"에 형성 또는 배치되는 것으로 기재되는 경우, 상(위) 또는 하(아래)는 두 개의 구성 요소들이 서로 직접 접촉되는 경우뿐만 아니라 하나 이상의 또 다른 구성 요소가 두 개의 구성 요소들 사이에 형성 또는 배치되는 경우도 포함한다. 또한, "상(위) 또는 하(아래)"으로 표현되는 경우 하나의 구성 요소를 기준으로 위쪽 방향뿐만 아니라 아래쪽 방향의 의미도 포함할 수 있다.
이하, 첨부된 도면을 참조하여 실시예를 상세히 설명하되, 도면 부호에 관계없이 동일하거나 대응하는 구성 요소는 동일한 참조 번호를 부여하고 이에 대한 중복되는 설명은 생략하기로 한다.
도1은 실시예에 따른 머신 러닝 플랫폼 관리 시스템의 개념도이다. 도1을 참조하면, 실시예에 따른 머신 러닝 플랫폼 관리 시스템(1)은 마스터 노드(10), 세션 노드(20) 및 워커 노드(30)를 포함하여 구성될 수 있다. 실시예에서 하나의 마스터 노드(10)는 복수개의 세션 노드(20)를 관리할 수 있으며, 하나의 세션 노드(20)는 복수개의 워커 노드(30)를 관리할 수 있다. 즉, 마스터 노드(10)의 하위 노드는 세션 노드(20)이고, 세션 노드(20)의 하위 노드는 워커 노드(30)로 정의될 수 있다.
마스터 노드(10)는 외부 프로그램(2)을 통해 등록된 머신러닝 테스크(task) 및 명령어를 관리할 수 있다. 실시예에서 외부 프로그램(2)은 웹 클라이언트일 수 있다.
도2는 실시예에 따른 마스터 노드의 구성 블록도이다. 도2를 참조하면, 마스터 노드(10)는 자원 모니터링 매니저(11), 테스크 매니저(12), 명령 처리기(13), 클라이언트 매니저(14) 및 플랫폼 관리 데이터베이스(15)를 포함하여 구성될 수 있다.
자원 모니터링 매니저(11)는 연결되어 있는 각 세션 노드(20)가 관리하는 워커 노드(30)들의 자원들을 모니터링할 수 있다. 또한, 자원 모니터링 매니저(11)는 플랫폼 내의 머신 러닝을 위해 사용할 수 있는 자원 상황을 확인할 수 있다.
자원 상황은 하드웨어 자원 상황 및 소프트웨어 자원 상황으로 분류할 수 있다. 하드웨어 자원 상황은 CPU자원정보, GPU 자원정보, 메모리 자원정보, 디스크 자원정보 등을 포함할 수 있다. 구체적으로 하드웨어 자원 상황은 각 CPU 및 GPU의 연산처리 능력 단위인 GFLOPS, 메모리의 사용량 및 전체 크기, 디스크의 사용량 및 전체 크기 정보로 나타낼 수 있다. 소프트웨어 자원 상황은 패키지 버전, 라이브러리 버전, 파이썬 언어 버전, 프레임워크 종류, 프레임워크 버전, 운영체제 종류 및 운영체제 버전 등을 포함할 수 있다.
자원 모니터링 매니저(11)는 플랫폼 내의 전체 가용자원을 파악함으로써 각 세션 노드(20) 및 워커 노드(30)의 가용자원을 파악할 수 있다. 자원 모니터링 매니저(11)는 자원 상황을 외부 프로그램(2)에 전송하여 사용자가 실시간으로 플랫폼 자원상황을 파악하도록 제공할 수 있다.
또한, 자원 모니터링 매니저(11)는 세션 노드(20)의 자원상황에 따라 머신러닝 테스크를 분배하며 프레임워크 별 머신러닝 테스크의 수행 요청량에 따라 세션 노드(20) 당 워커 노드(30)의 할당을 재구성할 수 있다.
테스크 매니저(12)는 외부 프로그램(2)을 통해 학습 파일 및 데이터 세트(Dataset)을 플랫폼에 등록하는 기능을 제공할 수 있다. 테스크 매니저(12)는 세션 노드(20)에 머신 러닝 테스크 정보를 전송할 수 있다. 외부 프로그램(2)을 통하여 등록된 학습 파일 및 데이터 세트는 외부 네트워크 저장소(3)에서 각 테스크별 고유 폴더에 저장될 수 있다. 테스크 매니저(12)는 해당 고유 폴더의 정보 및 사용자 정보를 플랫폼 관리 데이터베이스(15)에 갱신하여 저장할 수 있다. 워커 노드(30)는 머신 러닝 수행시 플랫폼 관리 데이터베이스(15)에 저장된 테스크 정보를 바탕으로 외부 네트워크 저장소(3)에 액세스하여 해당 테스크를 다운받아 학습을 진행할 수 있다.
명령 처리기(13)는 외부 프로그램(2)을 통해 사용자가 등록한 테스크에 대해 머신 러닝과 관련한 명령어를 처리할 수 있다. 사용자가 머신 러닝 실행과 관련한 명령어를 외부 프로그램을 통해 입력하면, 명령 처리기(13)는 해당 테스크 정보를 플랫폼 관리 데이터베이스(15)에서 확인하고 세션 노드(20)에 머신 러닝 테스크 정보 및 명령어를 전달할 수 있다.
클라이언트 매니저(14)는 외부 프로그램(2)으로부터 등록된 사용자 정보를 관리할 수 있다. 사용자 정보는 ID, Passwd, 권한과 관련한 정보를 포함할 수 있다. 등록된 사용자 정보는 플랫폼 관리 데이터베이스(15)에 갱신되어 저장될 수 있다.
플랫폼 관리 데이터베이스(15)는 플랫폼의 머신러닝 테스크, 사용자 정보, 데이터, 학습실행결과 Log 정보를 저장할 수 있다.
도3은 실시예에 따른 플랫폼 관리 데이터베이스의 동작을 설명하기 위한 도면이다. 도3을 참조하면, 사용자와 관련된 정보는 User Table로 관리되며 Idx 항목은 Task Table의 user_idx와 연결되어 사용자가 등록한 Task를 구분하는 데에 사용될 수 있다. User Table은 사용자의 id, 비밀번호, 권한을 관리한다.
테스크와 관련된 정보는 Task Table로 관리되며 Idx는 Log Table의 Task_idx와 연결되어 테스크와 머신러닝 수행으로 인한 결과값인 로그가 연결되어 학습을 실행한 테스크의 결과 정보 로그를 구분하는 데에 사용된다. Task Table은 테스크의 사용자id, 학습 상태, 명칭, 할당된 세션 노드의 Ip 및 연결 포트, 할당된 워커 노드의 Ip 및 연결 포트, 워커 노드에서 실행될 때의 프로세스 ID, 진행률, 학습의 정확도, Task의 등록된 시간으로 구성된 정보를 관리한다.
테스크의 수행 결과값은 Log Table로 관리되며 테스크의 idx와 Log Table의 Task_idx와 연결되어 각 테스크의 결과값들을 구분하는 데에 사용될 수 있다. Log Table은 결과값의 순서, 머신 러닝 수행으로 인한 결과의 출력물들을 관리한다.
Data Table은 테스크의 User_idx와 연결되어 관리되어 각 테스크의 데이터세트를 구분하는 데에 사용될 수 있다. Data Table은 머신러닝을 수행할 데이터에 대한 내용으로 데이터세트의 이름, 사용자의 메모, 등록된 시각, 외부 네트워크 저장소에 저장된 경로로 구성된 정보를 관리한다.
세션 노드(20)는 마스터 노드(10)로부터 전달받은 머신러닝 테스크 정보 및 명령어를 분석하여 실행 가능한 하위 노드에 할당할 수 있다.
세션 노드(20)는 워커 노드(30)로부터 보고받은 자원 상황에 따라 연산 처리 능력을 분석하고, 분석된 연산 처리 능력을 기준으로 머신러닝 테스크 정보 및 명령어를 할당할 수 있다.
또한, 세션 노드(20)는 연산 처리 능력에 따라 순차적으로 정렬된 워커 노드 리스트를 생성하여 워커 노드 리스트에 따라 머신러닝 테스크 정보 및 명령어를 할당할 수 있다.
세션 노드(20)는 동일한 프레임 워크를 사용하는 적어도 하나의 워커 노드를 관리할 수 있다.
도4는 실시예에 따른 세션 노드의 구성 블록도이다. 도4를 참조하면, 세션 노드(20)는 명령 분석기(21) 및 워커 노드 매니저(22)를 포함하여 구성될 수 있다.
명령 분석기(21)는 마스터 노드(10)로부터 전달받은 머신 러닝 테스크에 대한 명령어를 해석하여 적합한 워커 노드(30)에 전달할 수 있다. 명령어는 머신 러닝 테스크의 할당, 실행, 중지 및 학습 진행 상황 보고 중 적어도 하나를 포함할 수 있다. 마스터 노드(10)로부터 전달받은 명령어는 분석 과정을 거쳐 적합한 테스크를 수행할 수 있는 워커 노드(30)에 전달된다.
워커 노드 매니저(22)는 실시간으로 관리하는 워커 노드의 자원을 모니터링할 수있다. 워커 노드 매니저(22)는 실시간으로 각 워커 노드로부터 하드웨어 자원 상황은 CPU자원정보, GPU 자원정보, 메모리 자원정보, 디스크 자원정보, 패키지 버전, 라이브러리 버전, 파이썬 언어 버전, 프레임워크 종류, 프레임워크 버전, 운영체제 종류 및 운영체제 버전 중 적어도 하나를 포함하는 자원 상황을 보고받을 수 있다. 워커 노드 매니저(22)는 각 워커 노드로부터 보고받은 자원 상황을 바탕으로 관리하는 워커 노드(30)의 자원 상황에 따라 높은 연산처리 능력(GFLOPS) 순으로 워커 노드 리스트를 생성할 수 있다.
워커 노드 리스트는 워커 노드 매니저(22)가 모니터링 된 자원 상황을 바탕으로 연산처리 능력이 높은 순으로 워커 노드를 정렬시킨 리스트를 의미할 수 있다. 워커 노드 매니저(22)는 자원 상황을 모니터링 하는 주기에 따라 자원 상황이 변결될 때마다 워커 노드의 상황을 반영하여 워커 노드 리스트를 갱신할 수 있다. 이를 통하여 플랫폼 내에 부여되는 머신 러닝 테스크가 최적의 처리 능력을 보유한 워커 노드(30)에 의하여 실시간으로 빠르게 처리될 수 있도록 한다.
워커 노드 매니저(22)는 마스터 노드로부터 워커 노드 재구성 명령을 전송받게 되면 세션 노드를 변경할 워커 노드에 할당되는 세션 노드의 연결 정보를 전송한다.
워커 노드(30)는 세션 노드(20)로부터 할당받은 머신러닝 테스크 정보 및 명령어에 따라 머신러닝을 수행하고, 학습 진행 상황 및 자원 상황을 세션 노드로 보고할 수 있다.
워커 노드(30)는 할당받은 머신 러닝 테스크 정보 및 명령어에 따라 외부 네트워크 저장소에 액세스하여 머신 러닝 테스크 및 학습 데이터 파일을 다운로드 받을 수 있다.
학습 진행 상황은 Loss 값, 학습의 정확도, Validation 값 및 진행율 중 적어도 하나를 포함할 수 있다.
도5는 실시예에 따른 워커 노드의 구성 블록도이다. 도5를 참조하면, 실시예에 따른 워커 노드(30)는 테스크 실행기(31) 및 자원 관리 모듈(32)을 포함하여 구성될 수 있다.
테스크 실행기(31)는 세션 노드(20)로부터 주어진 머신 러닝 테스크 정보에 따라 머신 러닝을 수행할 환경을 세팅할 수 있다. 테스크 실행기(31)는 머신 러닝 테스크 정보에 따라 관련된 파이썬 버전 확인, 머신러닝 프레임워크 버전 확인, 외부 네트워크 저장소로부터 학습 데이터 세트 및 테스크 파일 다운로드를 수행하여 환경 세팅을 수행할 수 있다.
테스크 실행기(31)는 세션 노드(20)로부터 전달받은 머신러닝 수행 명령어에 따라 해당 테스크의 학습 실행, 학습 중지, 학습 진행 상황 보고를 수행할 수 있다. 테스크의 학습 실행은 세팅된 테스크의 환경에서 머신 러닝 수행을 요청하는 명령어이다. 테스크의 학습 중지는 진행 중인 학습 중단을 요청하는 명령어이다. 테스크의 학습 진행 상황 보고는 머신 러닝을 수행하면서 나오는 학습실행결과 Log의 보고를 요청하는 명령어이다. 테스크 실행기(31)는 학습 진행의 결과 모델 파일을 관리하며 플랫폼 관리 데이터베이스(15)에 해당 테스크와 학습 진행 결과 Log를 갱신할 수 있다.
자원 관리 모듈(32)은 주기적으로 워커 노드(30)의 하드웨어 및 소프트웨어 자원상황을 세션 노드(20)에 보고할 수 있다. 하드웨어 자원은 워커 노드(30)의 CPU/GPU의 연산처리 능력 및 실시간 연산처리 능력 사용률, 전체 메모리 및 실시간 메모리의 사용률, 전체 디스크 및 디스크의 사용률이다. 실시간 하드웨어 자원상황은 세션 노드가 워커 노드에 머신 러닝 테스크를 할당하는 주요 지표로 사용될 수 있다. 소프트웨어웨어 자원상황은 워커 노드가 세션 노드에 등록할 때의 설치된 패키지, 라이브러리, 가상환경 목록이다. 소프트웨어 자원이 새로 설치되거나 제거되는 경우, 워커 노드의 변경된 소프트웨어 자원 상황은 세션 노드에 전송되어 갱신될 수 있다.
도6은 실시예에 따른 머신 러닝 플랫폼 관리 방법의 순서도이다.
먼저, 워커 노드는 자원 정보를 세션 노드에 전송하여 연결을 플랫폼에 등록및 연결을 요청한다(S610).
다음으로, 세션 노드는 자원 정보를 통하여 워커 노드가 머신 러닝 수행이 가능한 노드인지 확인한다(S620).
다음으로, 세션 노드는 머신 러닝 수행이 가능한 적어도 하나의 워커 노드를 이용하여 그룹을 형성한다. 이 때, 세션 노드는 동일한 프레임 워크를 사용하는 적어도 하나의 워커 노드를 이용하여 그룹을 형성한다(S630).
다음으로, 마스터 노드는 외부 프로그램을 통하여 머신러닝 테스크(task) 및 명령어를 등록받는다(S640).
다음으로, 마스터 노드는 머신러닝 테스크 정보 및 명령어를 세션 노드에 전달한다(S650).
다음으로, 세션 노드는 머신러닝 테스크 정보 및 명령어를 분석하여 실행 가능한 워커 노드에 할당한다(S660).
다음으로, 워커 노드는 세션 노드로부터 할당받은 머신러닝 테스크 정보 및 명령어에 따라 머신러닝을 수행한다(S670).
다음으로, 워커 노드는 학습 진행 상황 및 자원 상황을 세션 노드로 보고한다(S680).
도7은 실시예에 따른 워커 노드 연결 과정을 설명하기 위한 도면이다. 도7을 참조하면, 워커 노드는 실행시 세션 노드에 자동으로 연결요청을 한다. 이 때 워커 노드는 자신의 하드웨어 자원 상황 및 소프트웨어 자원 상황을 연결 요청과 함께 전송한다(S701).
세션 노드의 워커 노드 매니저는 워커 노드의 연결요청을 수신한다. 세션 노드의 워커 노드 매니저는 마스터 노드에 등록된 머신 러닝 테스크를 실행할 수 있는 프레임워크가 설치된 워커 노드인지 확인한다. 워커 노드 매니저는 학습 수행이 가능한 워커 노드임을 확인하면 해당 워터 노드를 워커 노드 리스트에 추가한다(S702).
동시에 마스터 노드의 자원 모니터링 매니저는 세션 노드가 관리하는 워커 노드에 대한 정보를 갱신하여 새로운 워커 노드의 자원 상황을 반영한다(S703).
자원 모니터링 매니저는 외부 프로그램에 각 세션 노드 및 워커 노드의 연결을 반영한 자원 상황을 제공한다(S704).
도8은 실시예에 따른 머신 러닝 테스크 할당 과정을 설명하기 위한 도면이다. 도8을 참조하면, 외부 프로그램을 통해 사용자가 플랫폼에 등록되면 클라이언트 매니저로 사용자의 정보가 전달된다(S801).
사용자 정보는 플랫폼 관리 데이터베이스에 등록된다(S802).
등록된 사용자는 외부 프로그램을 통하여 머신 러닝 테스크를 등록할 수 있다(S803).
사용자가 머신 러닝 테스크를 등록하면 머신 러닝 테스크의 데이터 세트 및 학습 파일이 외부 네트워크 저장소에 업로드된다(S804).
또한 외부 네트워크 저장소에 해당 머신 러닝 테스크 파일의 위치가 포함된 머신 러닝 테스크 정보를 테스크 매니저로 전송하면, 테스크 매니저는 플랫폼 관리 데이터 베이스에 머신 러닝 테스크 정보를 등록한다(S805).
테스크 매니저는 등록된 테스크의 머신 러닝 실행환경을 확인하여 머신 러닝이 실행 가능한 워커 노드를 관리하는 세션 노드에 테스크 정보를 전달한다(S806).
워커 노드 매니저는 워커 노드 리스트를 통하여 테스크를 할당할 워커 노드를 선정한다(S807).
워커 노드 매니저는 선정된 워커 노드에 테스크 정보를 전달한다(S808).
워커 노드는 테스크 정보를 바탕으로 외부 네트워크 저장소에 액세스하여 테스크의 데이터 세트 및 학습 데이터 파일을 다운로드 받는다(S809).
도9은 실시예에 따른 머신 러닝 명령어 실행 과정을 설명하기 위한 도면이다. 도9를 참조하면, 외부 프로그램으로부터 마스터 노드에 등록된 테스크의 원격 수행 명령이 전송된다(S901).
명령 처리기는 플랫폼 관리 데이터베이스에 테스크 정보를 요청하고 테스크 정보를 로드하여, 테스크를 전달받은 세션 노드에 테스크 정보 및 명령어를 전송한다(S902~904).
명령 분석기는 명령어를 분석하여 테스크가 할당된 워커 노드에 명령을 전송한다(S905).
워커 노드는 등록된 테스크와 수신된 명령어를 수행한다. 테스크를 수행하면서 출력되는 학습 모델과 같은 학습 수행 결과 파일들은 외부 네트워크 저장소의 해당 테스크 폴더에 저장된다(S906).
학습 수행을 진행하면서 출력되는 중간 결과값과 같은 Log들은 플랫폼 관리 데이터베이스에 갱신된다(S907).
워커 노드는 명령 수행 결과를 명령 분석기에 전송하여 명령이 올바르게 수행되었는지 여부를 세션 노드에 보고한다(S908).
명령 분석기는 명령 처리기에 명령 수행 결과를 전송하여 마스터 노드에 전달한다(S909).
학습 수행 결과가 외부 프로그램에 전송되면 플랫폼 관리 데이터베이스에 접근하여 해당 학습 수행 Log를 전송받는다(S910~911).
사용자는 학습 수행 Log를 통해 현재 머신 러닝의 진행상황 및 중간 결과값 등을 확인할 수 있다. 또한 사용자는 외부 프로그램을 통하여 외부 네트워크 저장소에 저장된 학습 수행 결과 파일을 실시간으로 다운로드 받을 수 있다(S912).
도10은 본 발명의 실시예에 따른 자원 모니터링 매니저의 동작을 설명하기 위한 도면이다.
도10을 참조하면, 마스터 노드의 자원 모니터링 매니저는 자원상황을 바탕으로 특정 프레임워크에 머신러닝 테스크의 부하가 집중될 경우, 머신러닝 테스크의 부하 분산을 위한 필요성을 판단한다. 자원 모니터링 매니저는 GFLOPS의 사용률, 메모리 사용률 및 디스크 사용률 중 적어도 하나에 따라 머신 러닝 테스크에 대한 부하 분산의 필요성을 판단할 수 있다(S1001).
마스터 노드의 자원 모니터링 매니저는 부하 분산을 위하여 세션 노드 B를 추가하는 명령을 세션 노드 A 및 B에 전송하여 워커 노드 재구성 명령을 내린다. 이는 실시간으로 모니터링되는 자원상황과 플랫폼 내 부여된 머신 러닝 테스크에 따라 효율적으로 부하분산을 하기 위함이다. 마스터 노드는 세션 노드 B에 할당이 가능한 워커 노드를 선정한다. 마스터 노드는 재구성 명령을 위해 변경될 세션 노드 및 워커 노드의 정보를 각각의 세션 노드 A 및 B에게 전송한다(S1002).
세션 노드 A는 새로 할당되는 세션 노드 B의 연결 정보를 워커노드에 전송한다(S1003).
워커 노드는 새로 할당되는 세션 노드 B에 연결을 수행하고, 세션 노드 B에게 자원 상황을 보고한다(S1004).
세션 노드 B는 워커 노드 매니저를 통하여 워커 노드 리스트에 새로 할당된 워커 노드를 추가하고 자원을 관리한다(S1005).
본 실시예에서 사용되는 '~부'라는 용어는 소프트웨어 또는 FPGA(field-programmable gate array) 또는 ASIC과 같은 하드웨어 구성요소를 의미하며, '~부'는 어떤 역할들을 수행한다. 그렇지만 '~부'는 소프트웨어 또는 하드웨어에 한정되는 의미는 아니다. '~부'는 어드레싱할 수 있는 저장 매체에 있도록 구성될 수도 있고 하나 또는 그 이상의 프로세서들을 재생시키도록 구성될 수도 있다. 따라서, 일 예로서 '~부'는 소프트웨어 구성요소들, 객체지향 소프트웨어 구성요소들, 클래스 구성요소들 및 태스크 구성요소들과 같은 구성요소들과, 프로세스들, 함수들, 속성들, 프로시저들, 서브루틴들, 프로그램 코드의 세그먼트들, 드라이버들, 펌웨어, 마이크로코드, 회로, 데이터, 데이터베이스, 데이터 구조들, 테이블들, 어레이들, 및 변수들을 포함한다. 구성요소들과 '~부'들 안에서 제공되는 기능은 더 작은 수의 구성요소들 및 '~부'들로 결합되거나 추가적인 구성요소들과 '~부'들로 더 분리될 수 있다. 뿐만 아니라, 구성요소들 및 '~부'들은 디바이스 또는 보안 멀티미디어카드 내의 하나 또는 그 이상의 CPU들을 재생시키도록 구현될 수도 있다.
상기에서는 본 발명의 바람직한 실시예를 참조하여 설명하였지만, 해당 기술 분야의 숙련된 당업자는 하기의 특허 청구의 범위에 기재된 본 발명의 사상 및 영역으로부터 벗어나지 않는 범위 내에서 본 발명을 다양하게 수정 및 변경시킬 수 있음을 이해할 수 있을 것이다.