KR102482122B1 - 태스크 병렬 처리 구현 방법, 장치, 기기 및 매체 - Google Patents

태스크 병렬 처리 구현 방법, 장치, 기기 및 매체 Download PDF

Info

Publication number
KR102482122B1
KR102482122B1 KR1020200178497A KR20200178497A KR102482122B1 KR 102482122 B1 KR102482122 B1 KR 102482122B1 KR 1020200178497 A KR1020200178497 A KR 1020200178497A KR 20200178497 A KR20200178497 A KR 20200178497A KR 102482122 B1 KR102482122 B1 KR 102482122B1
Authority
KR
South Korea
Prior art keywords
operator
task
parallel computation
computation graph
parallel
Prior art date
Application number
KR1020200178497A
Other languages
English (en)
Other versions
KR20210103928A (ko
Inventor
다샹 동
하이펑 왕
디안하이 유
얀준 마
Original Assignee
베이징 바이두 넷컴 사이언스 앤 테크놀로지 코., 엘티디.
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 베이징 바이두 넷컴 사이언스 앤 테크놀로지 코., 엘티디. filed Critical 베이징 바이두 넷컴 사이언스 앤 테크놀로지 코., 엘티디.
Publication of KR20210103928A publication Critical patent/KR20210103928A/ko
Application granted granted Critical
Publication of KR102482122B1 publication Critical patent/KR102482122B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5061Partitioning or combining of resources
    • G06F9/5066Algorithms for mapping a plurality of inter-dependent sub-tasks onto a plurality of physical CPUs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N20/00Machine learning
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/4881Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5061Partitioning or combining of resources
    • G06F9/5077Logical partitioning of resources; Management or configuration of virtualized resources
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/52Program synchronisation; Mutual exclusion, e.g. by means of semaphores
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45562Creating, deleting, cloning virtual machine instances
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/4557Distribution of virtual machine instances; Migration and load balancing
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Abstract

본원 발명의 실시예는 태스크 병렬 처리 구현 방법, 장치, 기기 및 매체를 공개하며, 딥 러닝 기술 분야에 관한 것이다. 상기 태스크 병렬 처리 구현 방법은, 대상 태스크의 적어도 하나의 병렬 계산 그래프를 결정하는 단계; 클러스터 중 상기 병렬 계산 그래프의 연산자 태스크의 하드웨어 실행 코스트에 따라, 병렬 계산 그래프 및 연산자 스케줄링 방안을 선별하고 결정하는 단계 - 상기 클러스터는 상기 연산자 태스크를 실행하기 위한 다수의 노드를 포함하고; 상기 병렬 계산 그래프는 적어도 하나의 연산자 스케줄링 방안을 가짐 - ; 및, 결정된 병렬 계산 그래프 및 연산자 스케줄링 방안에 따라, 상기 병렬 계산 그래프 중 연산자 태스크가 상기 클러스터에서 실행되도록 스케줄링하는 단계;를 포함한다. 본원 발명의 실시예의 기술적 해결수단은, 대상 태스크에 대한 병렬 계산 그래프 및 연산자 스케줄링 방안을 결정할 경우, 클러스터 중 연산자 태스크의 하드웨어 실행 코스트를 선별 근거로 사용하는 것을 도입하여 고려함으로써, 대상 태스크의 실행이 상이한 환경 상황의 클러스터에 보다 잘 적응하여 가장 바람직한 병렬 효율을 달성할 수 있도록 한다.

Description

태스크 병렬 처리 구현 방법, 장치, 기기 및 매체{METHOD FOR PROCESSING TASKS IN PARALALL, DEVICE AND STORAGE MEDIUM}
본원 발명의 실시예는 컴퓨터 기술에 관한 것으로, 구체적으로 인공 지능 기술 및 병렬 처리 기술에 관한 것이다.
인공 지능 기술의 발달과 더불어, 딥 러닝 기술이 점점 더 많이 사용되고 있다. 딥 러닝 기술은 일반적으로 딥 러닝 모델의 트레이닝 프로세스와, 트레이닝 후 딥 러닝 모델의 응용 프로세스를 포함한다.
현재, 딥 러닝 모델 트레이닝 프로세스 및 응용 프로세스의 계산량이 증가함에 따라, 시간 단축을 위해 점차적으로 병렬 처리 방식을 사용한다. 즉, 딥 러닝 모델의 트레이닝 또는 응용 태스크를 다수의 노드로 구성된 클러스터에 분배하여 병렬 처리를 수행한다. 예를 들어, GPU 다중 머신 다중 카드를 사용하여 병렬 트레이닝을 수행한다.
종래의 기술에서, 딥 러닝 모델 계산 프로세스 병렬 처리의 효율을 향상시킬 수 있는 방법은 현재 연구 이슈 중 하나이다.
본원 발명의 실시예는 태스크 병렬 처리 구현 방법, 장치, 기기 및 매체를 제공함으로써, 클러스터 중 태스크 병렬 처리 효율을 향상시킬 수 있다.
제1 양태에 따르면, 본원 발명의 실시예는,
대상 태스크의 적어도 하나의 병렬 계산 그래프를 결정하는 단계 - 상기 병렬 계산 그래프는 다수의 연산자 태스크를 포함함 - ;
클러스터 중 상기 병렬 계산 그래프의 연산자 태스크의 하드웨어 실행 코스트에 따라, 병렬 계산 그래프 및 연산자 스케줄링 방안을 선별하고 결정하는 단계 - 상기 클러스터는 상기 연산자 태스크를 실행하기 위한 다수의 노드를 포함하고; 상기 병렬 계산 그래프는 적어도 하나의 연산자 스케줄링 방안을 가짐 - ; 및,
결정된 병렬 계산 그래프 및 연산자 스케줄링 방안에 따라, 상기 병렬 계산 그래프 중 연산자 태스크가 상기 클러스터에서 실행되도록 스케줄링하는 단계;를 포함하는 태스크 병렬 처리 구현 방법을 제공한다.
본원 발명의 실시예의 기술적 해결수단은, 대상 태스크에 대한 병렬 계산 그래프 및 연산자 스케줄링 방안을 결정할 경우, 클러스터 중 연산자 태스크의 하드웨어 실행 코스트를 선별 근거로 사용하는 것을 도입하여 고려함으로써, 대상 태스크의 실행이 상이한 환경 상황의 클러스터에 보다 잘 적응하여 가장 바람직한 병렬 효율을 달성할 수 있도록 한다.
선택적으로, 클러스터 중 상기 병렬 계산 그래프의 연산자 태스크의 하드웨어 실행 코스트에 따라, 병렬 계산 그래프 및 연산자 스케줄링 방안을 선별하고 결정하는 단계는,
클러스터에서 노드에 의해 실행되는 상기 연산자 태스크의 하드웨어 실행 코스트를 획득하는 단계;
각 상기 연산자 태스크의 하드웨어 실행 코스트에 따라, 상기 연산자 스케줄링 방안을 사용하여 상기 클러스터에서 실행되는 상기 병렬 계산 그래프의 총 실행 코스트를 계산하는 단계; 및,
상기 총 실행 코스트에 따라, 병렬 계산 그래프 및 연산자 스케줄링 방안을 선별하고 결정하는 단계;를 포함한다.
상기 발명에서 일 선택 가능한 실시형태에 있어서, 단일 연산자 태스크의 하드웨어 실행 코스트를 획득하여 총 실행 코스트를 계산하고 결정함으로써, 클러스터 중 병렬 계산 그래프 및 연산자 스케줄링 방안의 총 실행 코스트를 정확하게 획득할 수 있어, 선별 효과가 보다 바람직하고 정확해지도록 한다.
선택적으로, 클러스터에서 노드에 의해 실행되는 상기 연산자 태스크의 하드웨어 실행 코스트를 획득하는 단계는,
설정 규모의 처리가 실행되도록 상기 병렬 계산 그래프의 연산자 태스크를 상기 클러스터에 스케줄링하는 단계; 및,
노드에 의해 실행되는 상기 연산자 태스크의 하드웨어 실행 코스트를 수집하는 단계;를 포함한다.
선택적으로, 각 상기 연산자 태스크의 하드웨어 실행 코스트에 따라, 상기 연산자 스케줄링 방안을 사용하여 상기 클러스터에서 실행되는 상기 병렬 계산 그래프의 총 실행 코스트를 계산하는 단계는,
상기 연산자 스케줄링 방안 중 스케줄링 순서와, 및 상기 병렬 계산 그래프 중 각 연산자 태스크의 병행 관계에 따라, 각 상기 연산자 태스크의 하드웨어 실행 코스트를 통계하여, 상기 총 실행 코스트를 계산하는 단계를 포함한다.
선택적으로, 클러스터 중 상기 병렬 계산 그래프의 연산자 태스크의 하드웨어 실행 코스트에 따라, 병렬 계산 그래프 및 연산자 스케줄링 방안을 선별하고 결정하는 단계는,
상기 병렬 계산 그래프의 연산자 특징, 연산자 스케줄링 방안의 스케줄링 특징, 및 상기 클러스터의 하드웨어 특징에 따라, 스케줄링 방안 모델을 기반으로, 상기 연산자 스케줄링 방안을 사용하여 상기 클러스터에서 처리되는 상기 병렬 계산 그래프의 총 실행 코스트에 대해 예측하는 단계; 및,
예측된 총 실행 코스트에 따라, 병렬 계산 그래프 및 연산자 스케줄링 방안을 선별하고 결정하는 단계;를 포함한다.
상기 발명에서 일 선택 가능한 실시형태에 있어서, 병렬 계산 차수, 연산자 스케줄링 방안, 및 클러스터의 각 분야 특징, 및 대응되는 총 실행 코스트에 대해 모델 학습을 수행함으로써, 모델을 기반으로 총 실행 코스트를 예측할 수 있어, 클러스터에서 실측 계산을 통해 하드웨어 실행 코스트를 수집할 필요가 없으며, 따라서 리소스 점유를 감소시키고, 스케줄링 방안의 선별 효율을 향상시킬 수 있다.
선택적으로, 예측된 총 실행 코스트에 따라, 병렬 계산 그래프 및 연산자 스케줄링 방안을 선별하고 결정하는 단계 이후에,
선별하고 결정하여 얻은 상기 병렬 계산 그래프 및 연산자 스케줄링 방안 중의 적어도 하나의 수가 다수 개이면, 각 그룹의 상기 병렬 계산 그래프 및 연산자 스케줄링 방안에 대해, 연산자 태스크가 상기 클러스터에서 실행되도록 각각 스케줄링하는 단계;
노드에 의해 실행되는 상기 연산자 태스크의 하드웨어 실행 코스트를 수집하는 단계;
상기 연산자 태스크의 하드웨어 실행 코스트에 따라, 상기 병렬 계산 그래프 및 연산자 스케줄링 방안의 총 실행 코스트를 계산하는 단계; 및,
계산된 상기 총 실행 코스트에 따라, 병렬 계산 그래프 및 연산자 스케줄링 방안을 다시 선별하고 결정하는 단계;를 더 포함한다.
상기 발명에서 일 선택 가능한 실시형태에 있어서, 모델 예측 및 실측 계산의 방식을 결합하여, 스케줄링 방안의 선별 효율 및 리소스에 대한 점유 상황을 겸하여 고려한다.
선택적으로, 상기 태스크 병렬 처리 구현 방법은,
기존에 기록된, 클러스터에서 실행되는 병렬 계산 그래프 및 연산자 스케줄링 방안을 획득하여 트레이닝 샘플로 사용하는 단계; 및,
각각의 트레이닝 샘플 중 병렬 계산 그래프의 연산자 특징, 연산자 스케줄링 방안의 스케줄링 특징, 상기 클러스터의 하드웨어 특징, 및 결과로 사용되는 총 실행 코스트를 사용하여, 스케줄링 방안 모델에 대해 트레이닝하는 단계;를 더 포함한다.
선택적으로, 상기 병렬 계산 그래프의 연산자 특징은, 연산자 태스크의 하드웨어 실행 코스트, 연산자 태스크 수, 연산자 태스크의 파라미터, 연산자 태스크의 유형, 및 통신형 연산자 태스크 수 중 적어도 하나를 포함하고;
상기 연산자 스케줄링 방안의 스케줄링 특징은, 통신형 연산자 태스크의 진입 차수 연산자 태스크 및 진출 차수 연산자 태스크의 수 및 종류, 및 병렬 계산 그래프의 병행성 중 적어도 하나를 포함하며;
상기 클러스터의 노드 하드웨어 특징은, 노드 수, 및 노드의 하드웨어 성능 지표를 포함하고;
상기 총 실행 코스트는 정규화 처리된 데이터이다.
선택적으로, 상기 스케줄링 방안 모델은 선형 회귀 모델이다.
선택적으로, 대상 태스크의 적어도 하나의 병렬 계산 그래프를 결정하는 단계는,
상기 대상 태스크의 스탠드 얼론 계산 그래프, 및 상기 클러스터 중 노드 수에 따라, 적어도 하나의 상기 병렬 계산 그래프를 생성하는 단계를 포함한다.
선택적으로, 상기 연산자 태스크의 유형은, 계산형 및 통신형을 적어도 포함하고;
상기 계산형의 연산자 태스크는 데이터를 계산하는데 사용되며; 상기 통신형의 연산자 태스크는 노드 사이에서 데이터를 전송하는데 사용된다.
상기 발명에서 일 선택 가능한 실시형태에 있어서, 대상 태스크는 바람직하게 머신 러닝 유형의 태스크이고, 본원 발명의 실시예의 장점은 딥 러닝 분야에서 특히 현저하다. 딥 러닝 분야의 대상 태스크는 일반적으로 머신 러닝 모델의 트레이닝 또는 실제 응용을 실행하는 것이며, 대상 태스크의 연산자 태스크는 매우 많고 또한 관계가 복잡하여, 다양한 스케줄링 방안이 실행 가능하고, 본원 발명의 실시예의 기술적 해결수단을 통해, 딥 러닝 프레임 워크가 상이한 하드웨어 환경의 클러스터에서 최적에 가까운 트레이닝 속도를 자동으로 얻을 수 있도록 한다.
선택적으로, 상기 대상 태스크는 머신 러닝 모델의 트레이닝 태스크 또는 실행 태스크이고, 상기 계산형의 연산자 태스크는, 수학 연산 연산자, 어레이 연산 연산자 및 신경 네트워크 빌딩 블록 연산 연산자 중 적어도 하나를 포함한다.
선택적으로, 상기 연산자 태스크의 하드웨어 실행 코스트는, 상기 연산자 태스크의 실행 시간, 및 상기 연산자 태스크의 하드웨어 점유 데이터 중 적어도 하나를 포함하고;
상기 하드웨어 점유 데이터는 비디오 메모리 점유 비율, 칩 사용률, 및 네트워크 대역폭 사용률 중 적어도 하나를 포함한다.
선택적으로, 상기 하드웨어 실행 코스트의 종류가 다양하면, 상기 병렬 계산 그래프의 총 실행 코스트는 다양한 종류의 총 실행 코스트의 조합이거나 다양한 종류의 총 실행 코스트에 대한 가중 합계이다.
상기 발명에서 일 선택 가능한 실시형태에 있어서, 하드웨어 실행 코스트의 종류는 다양할 수 있고, 스케줄링 방안의 총 실행 코스트를 여러 차원에서 결정할 수 있으므로 상이한 수요를 기반으로 스케줄링 방안에 대해 선별할 수 있다.
선택적으로, 클러스터 중 상기 병렬 계산 그래프의 연산자 태스크의 하드웨어 실행 코스트에 따라, 병렬 계산 그래프 및 연산자 스케줄링 방안을 선별하고 결정하는 단계는,
각각의 상기 병렬 계산 그래프, 및 초기 연산자 스케줄링 방안에 대해, 연산자 태스크의 하드웨어 실행 코스트에 따라, 상기 병렬 계산 그래프의 총 실행 코스트를 결정하는 단계;
상기 총 실행 코스트에 따라 다수의 상기 병렬 계산 그래프에 대해 선별하고, 후보 병렬 계산 그래프를 결정하는 단계;
상기 후보 병렬 계산 그래프에 대해, 휴리스틱 알고리즘을 사용하여 다양한 후보 연산자 스케줄링 방안을 결정하는 단계;
각 그룹의 상기 후보 병렬 계산 그래프 및 후보 연산자 스케줄링 방안에 대해, 연산자 태스크의 하드웨어 실행 코스트에 따라, 상기 후보 병렬 계산 그래프 및 후보 연산자 스케줄링 방안의 총 실행 코스트를 결정하는 단계; 및,
상기 후보 병렬 계산 그래프 및 후보 연산자 스케줄링 방안의 총 실행 코스트에 따라, 후보 병렬 계산 그래프에 대한 후보 연산자 스케줄링 방안을 선별하는 단계;를 포함한다.
제2 양태에 따르면, 본원 발명의 실시예는,
대상 태스크의 적어도 하나의 병렬 계산 그래프를 결정하기 위한 계산 그래프 결정 모듈 - 상기 병렬 계산 그래프는 다수의 연산자 태스크를 포함함 - ;
클러스터 중 상기 병렬 계산 그래프의 연산자 태스크의 하드웨어 실행 코스트에 따라, 병렬 계산 그래프 및 연산자 스케줄링 방안을 선별하고 결정하기 위한 스케줄링 방안 선별 모듈 - 상기 클러스터는 상기 연산자 태스크를 실행하기 위한 다수의 노드를 포함하고; 상기 병렬 계산 그래프는 적어도 하나의 연산자 스케줄링 방안을 가짐 - ; 및,
결정된 병렬 계산 그래프 및 연산자 스케줄링 방안에 따라, 상기 병렬 계산 그래프 중 연산자 태스크가 상기 클러스터에서 실행되도록 스케줄링하기 위한 태스크 스케줄링 실행 모듈;을 포함하는 태스크 병렬 처리 구현 장치를 제공한다.
제3 양태에 따르면, 발명의 실시예는,
적어도 하나의 프로세서; 및,
상기 적어도 하나의 프로세서와 통신 연결되는 메모리를 포함하되; 여기서,
상기 메모리에는 상기 적어도 하나의 프로세서에 의해 실행 가능한 명령이 저장되고, 상기 명령은 상기 적어도 하나의 프로세서에 의해 실행되어, 상기 적어도 하나의 프로세서가 본원 발명의 임의의 실시예에서 제공된 태스크 병렬 처리 구현 방법을 수행할 수 있도록 하는 전자 기기를 제공한다.
제4 양태에 따르면, 본원 발명의 실시예는, 컴퓨터 명령이 저장된 비일시적 컴퓨터 판독 가능 저장 매체를 제공하되, 여기서, 상기 컴퓨터 명령은 상기 컴퓨터가 본원 발명의 임의의 실시예에서 제공된 태스크 병렬 처리 구현 방법을 수행하도록 한다.
제5 양태에 따르면, 컴퓨터 판독 가능 매체에 저장되어 있는 컴퓨터 프로그램을 더 제공하는바, 상기 컴퓨터 프로그램중의 명령이 실행될 경우, 본 출원의 실시예에 의해 공개되는 태스크 병렬 처리 구현 방법이 실행된다.
상기 선택 가능한 형태에 구비된 다른 효과는 아래에서 구체적인 실시예를 결부하여 추가로 설명된다.
첨부된 도면은 본 해결수단을 보다 잘 이해하기 위한 것이며, 본원 발명을 한정하려는 것으로 구성되지 않는다. 여기서,
도 1은 본원 발명의 제1 실시예에서 제공된 태스크 병렬 처리 구현 방법의 흐름도이다.
도 2a는 본원 발명의 제2 실시예에서 제공된 태스크 병렬 처리 구현 방법의 흐름도이다.
도 2b는 본원 발명의 제2 실시예에 적용되는 병렬 계산 그래프이다.
도 3은 본원 발명의 제3 실시예에서 제공된 태스크 병렬 처리 구현 방법의 흐름도이다.
도 4a는 본원 발명의 제4 실시예에서 제공된 태스크 병렬 처리 구현 방법의 흐름도이다.
도 4b는 본원 발명의 제4 실시예에 적용되는 구현 프로세스 모식도이다.
도 5는 본원 발명의 제5 실시예에서 제공된 태스크 병렬 처리 구현 장치의 구조 모식도이다.
도 6은 본원 발명의 실시예의 태스크 병렬 처리 구현 방법을 구현하는 전자 기기의 블록도이다.
이하, 첨부된 도면을 결부하여 본원 발명의 예시적 실시예를 설명하되, 여기에는 이해를 돕기 위한 다양한 세부 사항이 포함되며, 이는 단지 예시적인 것으로 간주되어야 한다. 따라서, 당업자는 본원 발명의 범위 및 사상을 벗어나지 않고, 여기서 설명된 실시예에 대해 다양한 변화 및 수정이 이루어질 수 있음을 인식해야 한다. 마찬가지로, 명확성과 간결함을 위해, 이하 설명에서는 공지된 기능 및 구조에 대한 설명을 생략한다.
제1 실시예
도 1은 본원 발명의 제1 실시예에서 제공된 태스크 병렬 처리 구현 방법의 흐름도이다. 본 실시예는 클러스터에서 대상 태스크의 병렬 스케줄링 및 실행 프로세스에 적용된다. 대상 태스크는 많은 양의 계산이 필요한 임의의 태스크일 수 있고, 예를 들어, 머신 러닝 모델의 트레이닝 프로세스 또는 실행 프로세스는 일반적으로 모두 많은 양의 데이터 계산이 필요하므로 대상 태스크로 사용될 수 있다. 본원 발명의 실시예에 관한 클러스터는, 다수의 노드를 포함하고, 노드는 CPU, GPU 등과 같은 설정 계산 기능을 실행할 수 있는 전자 기기이다. 클러스터 중 노드는 상이한 하드웨어 성능 지표를 갖는 기기일 수 있고, 여기서 소프트웨어 실행 환경은 또한 상이할 수 있다. 노드 사이의 통신은 일정한 토폴로지 관계에 의해 구현된다. 클러스터는 일반적으로 대상 태스크를 실행하기 위해 제공되는 하드웨어 플랫폼이고, 클러스터마다 노드 하드웨어 및 소프트웨어 조건이 상이할 수 있다.
본 실시예에서 제공된 태스크 병렬 처리 구현 방법은 하기와 같은 단계를 포함한다.
단계 S110에서, 대상 태스크의 적어도 하나의 병렬 계산 그래프를 결정하되, 여기서, 상기 병렬 계산 그래프는 다수의 연산자 태스크를 포함한다.
상기 동작에서, 병렬 계산 그래프는 대상 태스크 실행의 토폴로지 관계 요구에 부합되는 다수의 연산자 태스크를 포함하는 그래프 구조이다. 연산자 태스크는 클러스터의 노드에 의해 실행되도록 독립적으로 스케줄링할 수 있는 태스크이다. 연산자 태스크는 다양한 유형이 있을 수 있으며, 일반적으로 계산형 및 통신형으로 나뉠 수 있다. 상기 계산형의 연산자 태스크는 데이터를 계산하는데 사용되며; 상기 통신형의 연산자 태스크는 노드 사이에서 데이터를 전송하는데 사용된다. 물론, 상이한 대상 태스크의 경우, 기타 필요한 유형의 연산자 태스크가 있을 수도 있음을 이해할 수 있다.
대상 태스크를 머신 러닝 모델의 트레이닝 태스크 또는 실행 태스크로 사용하는 것을 예로, 이에 포함되는 계산형의 연산자 태스크는, 수학 연산 연산자, 어레이 연산 연산자 및 신경 네트워크 빌딩 블록 연산 연산자 중 적어도 하나를 포함할 수 있다. 수학 연산 연산자는 구체적으로 뺄셈, 덧셈, 나눗셈, 및 그래디언트 계산 등 연산자를 포함할 수 있고; 어레이 연산은 결합, 스플라이싱, 스플릿, 및 배열과 같은 연산자를 포함하며; 신경 네트워크 빌딩 블록 연산은 분류기(Softmax), 정규화(sigmoid), 활성함수(rectified linear unit, ReLU), 및 합성곱(convolution)과 같은 연산자를 포함한다. 통신형의 연산자 태스크는 또한 통신 방식, 통신 후 처리 알고리즘에 따라 상이한 유형으로 세분화할 수 있다.
연산자 태스크 사이의 사이드 관계는 연산자 태스크 사이의 데이터 흐름을 반영한다. 예를 들어, A 연산자 태스크에서 B 연산자 태스크를 가리키는 것은, A 연산자 태스크의 데이터 계산 결과를 B 연산자 태스크로 출력하여 입력 데이터로 사용하는 것을 나타낸다.
대상 태스크의 경우, 구체적으로 상기 대상 태스크의 스탠드 얼론 계산 그래프, 및 상기 클러스터 중 노드 수에 따라, 적어도 하나의 상기 병렬 계산 그래프를 생성할 수 있다.
일반적으로, 스탠드 얼론 계산 그래프의 경우, 다중 노드 토폴로지 규칙에 부합되는 병렬 계산 그래프는 다수일 수 있다.
단계 S120에서, 클러스터 중 상기 병렬 계산 그래프의 연산자 태스크의 하드웨어 실행 코스트에 따라, 병렬 계산 그래프 및 연산자 스케줄링 방안을 선별하고 결정하되, 여기서 상기 클러스터는 상기 연산자 태스크를 실행하기 위한 다수의 노드를 포함하고; 상기 병렬 계산 그래프는 적어도 하나의 연산자 스케줄링 방안을 갖는다.
이른바 연산자 스케줄링 방안은, 설정된 병렬 계산 그래프에 대해, 설정 순서에 따라 각각의 노드에 의해 병렬 실행되는 구체적인 방안에 연산자 태스크를 분배하는 것이며, 주로 스케줄링 순서를 나타낸다. 상기 동작에서, 대상 태스크에 대한 병렬 계산 그래프 및 연산자 스케줄링 방안을 결정할 경우, 클러스터 중 연산자 태스크의 하드웨어 실행 코스트를 선별 근거로 사용하는 것을 도입하여 고려한다.
하드웨어 실행 코스트는 특정 하드웨어 상태의 노드에서 실행되는 특정 연산자 태스크의 코스트를 반영하며, 실측 수집 또는 추정 예측과 같은 다양한 경로에 의해 획득될 수 있다. 연산자 태스크의 하드웨어 실행 코스트가 병렬 계산 그래프 및 스케줄링 방안의 선별에 구체적으로 적용되는 방법에 관련하여, 본원 발명의 후속 실시예에서 각각 상세하게 소개할 것이다.
S130에서, 결정된 병렬 계산 그래프 및 연산자 스케줄링 방안에 따라, 상기 병렬 계산 그래프 중 연산자 태스크가 상기 클러스터에서 실행되도록 스케줄링한다.
하드웨어 실행 코스트에 따라 선별하고 결정된 병렬 계산 그래프 및 연산자 스케줄링 방안은 바람직하고 병렬 효율이 비교적 높은 방안이다. 바람직한 병렬 계산 그래프 및 연산자 스케줄링 방안을 기반으로, 상기 클러스터에서 대상 태스크의 계산 프로세스를 공식적으로 실행할 수 있다.
본원 발명의 실시예의 기술적 해결수단은, 대상 태스크에 대한 병렬 계산 그래프 및 연산자 스케줄링 방안을 결정할 경우, 클러스터 중 연산자 태스크의 하드웨어 실행 코스트를 선별 근거로 사용하는 것을 도입하여 고려함으로써, 대상 태스크의 실행이 상이한 환경 상황의 클러스터에 보다 잘 적응하여 가장 바람직한 병렬 효율을 달성할 수 있도록 한다.
병렬 계산 그래프의 스케줄링 순서의 장단점과, 클러스터 부하 기능만을 고려한 방안에 비해, 노드의 계산 칩 성능, 노드 사이의 통신 상태에 주의를 기울이지 않은 바와 같이, 클러스터 노드의 상태에 주의를 기울이지 않으면, 대상 태스크의 전체 실행 시간에 영향을 미칠 수 있다. 예를 들어, 특정된 연산자 태스크의 입력 데이터가 이전의 진입 차수 연산자 태스크의 출력 데이터를 사용해야 하고, 마침 이전의 진입 차수 연산자 태스크가 계산 성능이 좋지 않은 노드에 스케줄링되어 계산 시간이 오래 걸리는 경우, 후속의 연산자 태스크는 반드시 기다려야 하므로, 대상 태스크의 계산 시간이 전체적으로 연장된다.
본원 발명의 실시예의 기술적 해결수단을 사용한 이후, 클러스터의 노드 하드웨어 상태를 추가로 고려할 수 있어, 병행성을 향상시킬 수 있으며, 하드웨어 리소스 사용을 최적화한다.
제2 실시예
도 2a는 본원 발명의 제2 실시예에서 제공된 태스크 병렬 처리 구현 방법의 흐름도이고, 본 실시예는 전술한 실시예를 기반으로, 각각의 연산자 태스크의 하드웨어 실행 코스트를 획득하여 총 실행 코스트를 계산함으로써, 방안 선별을 구현한다. 본 실시예의 방법은 구체적으로 하기와 같은 단계를 포함한다.
단계 S210에서, 대상 태스크의 적어도 하나의 병렬 계산 그래프를 결정한다.
단계 S220에서, 클러스터에서 노드에 의해 실행되는 상기 연산자 태스크의 하드웨어 실행 코스트를 획득한다.
연산자 태스크의 하드웨어 실행 코스트는 실측 수집 또는 기록으로부터 조회하는 바와 같이 다양한 방식으로 획득될 수 있다.
바람직하게는, 대상 태스크의 병렬 계산 그래프 컴파일 단계에서, 소규모 탐색적 실행을 통해 연산자 태스크의 하드웨어 실행 코스트를 수집한다. 따라서, 클러스터에서 노드에 의해 실행되는 상기 연산자 태스크의 하드웨어 실행 코스트를 획득하는 단계는 구체적으로,
설정 규모의 처리가 실행되도록 상기 병렬 계산 그래프의 연산자 태스크를 상기 클러스터에 스케줄링하는 단계; 및, 노드에 의해 실행되는 상기 연산자 태스크의 하드웨어 실행 코스트를 수집하는 단계;를 포함한다.
상기 스케줄링 프로세스에서, 기본 스케줄링 전략을 기반으로 연산자 스케줄링 방안을 생성하여 스케줄링할 수 있다. 하나의 연산자 스케줄링 방안을 사용하여 하드웨어 실행 코스트를 탐색하고 수집할 수 있거나, 다양한 연산자 스케줄링 방안을 선택하여 후속 계산 및 비교 선별을 위해 각각 탐색하고 하드웨어 실행 코스트를 수집할 수 있다. 완전한 연산자 스케줄링 방안을 기반으로 연산자 태스크를 스케줄링할 수 있고, 부분적 연산자 태스크가 실행되도록 스케줄링할 수도 있으며, 필요한 하드웨어 실행 코스트를 수집할 수만 있으면 된다.
상기 설정 규모는 일반적으로 소규모 계산이고, 예를 들어, 각각의 연산자 태스크는 설정 데이터 양의 계산을 완료하거나 설정된 계산 횟수를 완료한다. 단시간 내에 완료할 수 있으며 클러스터 하드웨어의 현재 상태를 나타낼 수 있어, 총 실행 코스트를 추정하는 기준으로 충분하다.
전체 연산자 태스크의 하드웨어 실행 코스트를 수집하여 획득할 수 있거나, 일부 주요 연산자 태스크의 하드웨어 실행 코스트를 획득할 수 있다. 중요하지 않은 연산자 태스크의 하드웨어 실행 코스트는 일반적으로 총 실행 코스트에 비교적 작은 영향을 미치거나, 하드웨어 성능의 영향을 비교적 적게 받는다.
상이한 연산자 스케줄링 방안의 경우, 또는 상이한 노드에 의해 실행될 경우, 일부 연산자 태스크의 하드웨어 실행 코스트는 크게 다르며, 일부 연산자 태스크의 하드웨어 실행 코스트는 기본적으로 큰 차이가 없다. 따라서, 탐색적 단계에서 가능한 소규모의 계산을 통해 상이한 연산자 스케줄링 방안 또는 상이한 노드에 의해 실행될 경우의 연산자 태스크의 하드웨어 실행 코스트를 획득할 수 있다.
탐색적 계산에 의해 수집된 하드웨어 실행 코스트는 클러스터 노드의 하드웨어 성능에 대응되어 기록될 수 있다. 충족한 양의 데이터가 기록된 경우, 후속에 기존의 기록을 조회하여 연산자 태스크의 하드웨어 실행 코스트를 획득할 수 있다.
단계 S230에서, 각 상기 연산자 태스크의 하드웨어 실행 코스트에 따라, 상기 연산자 스케줄링 방안을 사용하여 상기 클러스터에서 실행되는 상기 병렬 계산 그래프의 총 실행 코스트를 계산한다.
본 동작은 각각의 연산자 태스크의 하드웨어 실행 코스트를 기반으로, 총 실행 코스트에 대해 계산하는 것이다. 선택적으로, 하기와 같은 동작을 수행한다. 상기 연산자 스케줄링 방안 중 스케줄링 순서와, 및 상기 병렬 계산 그래프 중 각 연산자 태스크의 병행 관계에 따라, 각 상기 연산자 태스크의 하드웨어 실행 코스트를 통계하여, 상기 총 실행 코스트를 계산한다.
총 실행 코스트를 계산하는 것은 각각의 링크의 하드웨어 실행 코스트를 환산하여 누적하는 것과 동일하며, 병행 관계에 따라, 특정된 각 연산자 태스크의 실행을 기다려야 하는 경우 대기 비용도 총 실행 코스트에 누적되어야 한다.
연산자 태스크의 하드웨어 실행 코스트는 하나 또는 다수일 수 있으며, 따라서 대응되게 계산된 총 실행 코스트도 다양한 방식으로 나타날 수 있다.
예를 들어, 상기 연산자 태스크의 하드웨어 실행 코스트는, 상기 연산자 태스크의 실행 시간, 및 상기 연산자 태스크의 하드웨어 점유 데이터 중 적어도 하나를 포함할 수 있다.
이른바 연산자 태스크의 실행 시간은, 한번 데이터 계산을 실행하는 시간, 단위 데이터 양의 계산을 실행하는 시간, 단위 데이터 양을 전송하는 시간 등과 같은 계산 가능한 단위 실행 시간일 수 있다. 환산에 의해 전체 대상 태스크의 처리가 완료되는 실행 시간을 계산할 수 있다. 도 2b에 도시된 병렬 계산 그래프를 예로, 해당 병렬 계산 그래프는 A, B, C 및 D 4 개의 연산자 태스크를 포함하고, A는 B와 C의 진입 차수 연산자로 사용되며, B와 C는 D의 진입 차수 연산자로 사용된다. A, B, C 및 D 연산자 태스크를 각각 획득하는 실행 시간을 4, 3, 5 및 1이라 설정할 경우, D 연산자 태스크는 실행 시 B 및 C 연산자 태스크의 출력 데이터를 기다려야 하므로, 따라서 B 연산자 태스크 실행이 완료된 후, C 연산자 태스크 실행이 완료될때까지 기다려야 한다. 따라서 총 시간은 4+5+1=10이다.
이른바 연산자 태스크의 하드웨어 점유 데이터는 비디오 메모리 점유 비율, 칩 사용률, 및 네트워크 대역폭 사용률 중 적어도 하나를 포함할 수 있다. 하드웨어 점유 데이터는 연산자 태스크 실행 시 하드웨어 리소스에 대한 점유 상황을 반영한다. 바람직하게는 단위 점유 상황이며, 이로써 보다 많은 양의 데이터 처리 프로세스로 환산될 수 있다.
시간과 같이 상기 하드웨어 실행 코스트의 종류가 단일하면, 총 실행 코스트는 또한 총 시간으로도 반영된다.
상기 하드웨어 실행 코스트의 종류가 다양하면, 상기 병렬 계산 그래프의 총 실행 코스트는 다양한 종류의 총 실행 코스트이 조합일 수 있고, 즉 총 실행 시간, 총 칩 점유율, 총 대역폭 점유율, 또는 평균 점유율 등과 같은 각각의 종류에 대해 총 실행 코스트를 각각 계산한다. 이로써 해당 대상 태스크가 해당 클러스터에서 실행될 경우 특정된 병렬 계산 그래프를 사용한 특정된 연산자 스케줄링 방안의 각 분야 지표를 종합적으로 반영할 수 있다.
또는, 상기 병렬 계산 그래프의 총 실행 코스트는 다양한 종류의 총 실행 코스트에 대한 가중 합계일 수도 있다. 즉 전체적으로 비교하기 위해 상이한 유형의 총 실행 코스트를 정규화한 다음, 설정 가중에 따라 가중 합계를 수행한다.
단계 S240에서, 상기 총 실행 코스트에 따라, 병렬 계산 그래프 및 연산자 스케줄링 방안을 선별하고 결정한다.
병렬 계산 그래프 및 연산자 스케줄링 방안의 선별 경우, 특정된 병렬 계산 그래프에 대해, 이에 대응되는 다수의 연산자 스케줄링 방안으로부터 선별할 수 있고; 동시에 다수의 병렬 계산 그래프 및 이의 연산자 스케줄링 방안에 대해 선별할 수 있다. 총 실행 코스트가 설정 임계값보다 낮은 방안을 취할 수 있고, 최적화를 위해 총 실행 코스트를 올림차순으로 배열할 수 있거나 수요에 따라 선별할 수도 있다. 예를 들어, 현재 우선 순위는 짧은 실행 시간이거나 현재 우선 순위는 낮은 칩 점유율이다.
상기 프로세스는 병렬 계산 그래프의 컴파일 단계에 속하고, 이 단계는 단시간 내에 완료될 수 있으며, 대상 태스크를 시작한 사용자가 인식할 수 없게 된다.
단계 S250에서, 결정된 병렬 계산 그래프 및 연산자 스케줄링 방안에 따라, 상기 병렬 계산 그래프 중 연산자 태스크가 상기 클러스터에서 실행되도록 스케줄링한다.
병렬 계산 그래프의 컴파일 단계를 완료하여, 병렬 계산 그래프 및 연산자 스케줄링 방안을 결정하고, 다시 공식적으로 실행 단계를 수행하여 대상 태스크의 전체 실행 프로세스를 완료한다.
본 실시예의 기술적 해결수단은 자동화 병렬의 옵션을 가능하게함으로써, 대상 태스크를 제출하는 과정에서, 컴파일 단계 및 실행 단계가 자동으로 실행되어 사용자가 이를 인식할 수 없도록 한다. 가장 바람직한 병렬 계산 그래프 및 연산자 스케줄링 방안을 자동으로 찾아냄으로써 일반적으로 전체 20 % ~ 40 %의 계산 리소스를 절약할 수 있다.
제3 실시예
도 3은 본원 발명의 제3 실시예에서 제공된 태스크 병렬 처리 구현 방법의 흐름도이고, 본 실시예는 전술한 실시예를 기반으로, 모델에 기반하여 총 실행 코스트를 예측하는 구현 방식을 제공한다. 본 실시예의 방법은 하기와 같은 단계를 포함한다.
단계 S310에서, 대상 태스크의 적어도 하나의 병렬 계산 그래프를 결정한다.
단계 S320에서, 상기 병렬 계산 그래프의 연산자 특징, 연산자 스케줄링 방안의 스케줄링 특징, 및 상기 클러스터의 하드웨어 특징에 따라, 스케줄링 방안 모델을 기반으로, 상기 연산자 스케줄링 방안을 사용하여 상기 클러스터에서 처리되는 상기 병렬 계산 그래프의 총 실행 코스트에 대해 예측한다.
결정된 병렬 계산 그래프 및 연산자 스케줄링 순서의 경우, 동일한 경우의 클러스터에 여러 차례 분배되어 실행될 경우, 이의 총 실행 코스트는 일반적으로 변하지 않는다. 또한, 병렬 계산 그래프 중 연산자 경우, 연산자 스케줄링 방안 중 스케줄링 순서, 및 클러스터 중 하드웨어 특징에서, 일부 특징은 총 실행 코스트에 영향을 미치는 주요 특징으로 존재한다. 이로써, 머신 러닝 모델을 구축하는 방식을 통해, 상기 병렬 계산 그래프의 연산자 특징, 연산자 스케줄링 방안의 스케줄링 특징, 및 상기 클러스터의 하드웨어 특징에 대해 학습함으로써, 총 실행 코스트의 예측을 완료한다.
스케줄링 방안 모델의 트레이닝 학습은 주요하게 총 실행 코스트에 영향을 미치는 주요 특징 또는 일반화 특징을 학습하는 것이며, 하기와 같은 양태를 포함하지만 이에 한정되지 않는다.
제1 양태에 따르면, 상기 병렬 계산 그래프의 연산자 특징은, 연산자 태스크의 하드웨어 실행 코스트, 연산자 태스크 수, 연산자 태스크의 파라미터, 연산자 태스크의 유형, 및 통신형 연산자 태스크 수 중 적어도 하나를 포함한다.
여기서, 연산자 태스크의 파라미터는 합성곱 연산자의 합성곱 커널 파라미터와 같은 연산자 태스크 계산량에 영향을 미치는 일부 파라미터일 수 있다. 연산자 태스크의 유형은 간단하게 계산형 및 통신형으로 나뉠 수 있고, 바람직하게는 보다 구체적으로, 뺄셈, 덧셈, 합성곱 연산자 등과 같이 나눌 수 있다. 연산자 태스크의 유형은 모델 러닝 효과에 따라 끊임없이 최적화하고 조정할 수 있다.
제2 양태에 따르면, 상기 연산자 스케줄링 방안의 스케줄링 특징은, 통신형 연산자 태스크의 진입 차수 연산자 태스크 및 진출 차수 연산자 태스크의 수 및 종류, 및 병렬 계산 그래프의 병행성 중 적어도 하나를 포함한다.
연산자 스케줄링 방안의 스케줄링 특징은 주요하게 스케줄링 순서를 반영한다. 부분적 스케줄링 순서 또는 주요 스케줄링 순서를 반영하는 특징을 사용하는 것이 바람직하다. 예를 들어, 일반 통신형 연산자 태스크는 계산형 연산자 태스크의 전후에 따라 실행 시간에 영향을 미치므로, 통신형 연산자 태스크 근처에 있는 다른 계산형 연산자 태스크의 바인딩 특징, 즉 진입 차수 연산자 태스크 및 진출 차수 연산자 태스크 수와 종류를 기록할 수 있고, 어레이의 방식으로 나타날 수 있다. 병렬 계산 그래프의 병행성 전체적 지표이지만 스케줄링 순서를 반영할 수 있는 지표일 수도 있다.
제3 양태에 따르면, 상기 클러스터의 노드 하드웨어 특징은, 노드 수, 및 노드의 하드웨어 성능 지표를 포함한다.
노드의 하드웨어 성능 지표는 예를 들어, GPU의 주파수, 대역폭, 메모리 공간 등을 포함한다.
제4 양태에 따르면, 상기 총 실행 코스트는 정규화 처리된 데이터이다.
총 실행 코스트는 바람직하게 0-1 구간으로 정규화되어 상이한 병렬 계산 그래프 사이의 총 실행 코스트가 간편하게 비교될 수 있도록 한다.
본 실시예에서 사용된 스케줄링 방안 모델은 선형 회귀 모델로 선택될 수 있다.
단계 S330에서, 예측된 총 실행 코스트에 따라, 병렬 계산 그래프 및 연산자 스케줄링 방안을 선별하고 결정한다.
예측하여 획득된 총 실행 코스트는 계산하여 획득된 총 실행 코스트와 유사할 수 있고, 이에 기반하여 병렬 계산 그래프 및 연산자 스케줄링 방안을 선별한다.
단계 S340에서, 결정된 병렬 계산 그래프 및 연산자 스케줄링 방안에 따라, 상기 병렬 계산 그래프 중 연산자 태스크가 상기 클러스터에서 실행되도록 스케줄링한다.
본 실시예에서, 스케줄링 방안 모델의 방식으로 특정된 클러스터 중 특정된 병렬 계산 그래프 및 연산자 스케줄링 방안의 총 실행 코스트를 예측하여 선별함으로써, 클러스터의 하드웨어 상태를 고려할 뿐만 아니라, 탐색적 실제 계산에 대한 의존성 및 리소스 점유를 감소시킬 수 있어, 대상 태스크의 실행 효율을 더 향상시킨다.
본 실시예에서 사용된 스케줄링 방안 모델은 미리 트레이닝하여 획득할 수 있다. 즉 본 실시예의 방법은,
기존에 기록된, 클러스터에서 실행되는 병렬 계산 그래프 및 연산자 스케줄링 방안을 획득하여 트레이닝 샘플로 사용하는 단계; 및,
각각의 트레이닝 샘플 중 병렬 계산 그래프의 연산자 특징, 연산자 스케줄링 방안의 스케줄링 특징, 상기 클러스터의 하드웨어 특징, 및 결과로 사용되는 총 실행 코스트를 사용하여, 스케줄링 방안 모델에 대해 트레이닝하는 단계;를 더 포함한다.
기존의 기록된 데이터는 제2 실시예의 방식을 통해 획득되어 결정된 병렬 계산 그래프 및 연산자 스케줄링 방안을 선별할 수 있다. 여러 차례 기록한 후 충족한 트레이닝 샘플을 획득할 수 있다.
본원 발명의 실시예에서 제공된 탐색적 계산을 통해 병렬 계산 그래프 및 연산자 스케줄링 방안을 선별하고, 또한 모델 예측을 통해 병렬 계산 그래프 및 연산자 스케줄링 방안을 선별하는데 있어서, 양자는 독립적으로 실시될 수 있고 결합하여 실시될 수도 있다. 선택적으로, 모델 예측을 거친 선별 방식으로, 탐색적 계산을 정밀 선별 방식으로 결합하여 사용한다. 예측된 총 실행 코스트에 따라, 병렬 계산 그래프 및 연산자 스케줄링 방안을 선별하고 결정하는 단계 이후에,
선별하고 결정하여 얻은 상기 병렬 계산 그래프 및 연산자 스케줄링 방안 중의 적어도 하나의 수가 다수 개이면, 각 그룹의 상기 병렬 계산 그래프 및 연산자 스케줄링 방안에 대해, 연산자 태스크가 상기 클러스터에서 실행되도록 각각 스케줄링하는 단계;
노드에 의해 실행되는 상기 연산자 태스크의 하드웨어 실행 코스트를 수집하는 단계;
상기 연산자 태스크의 하드웨어 실행 코스트에 따라, 상기 병렬 계산 그래프 및 연산자 스케줄링 방안의 총 실행 코스트를 계산하는 단계; 및,
계산된 상기 총 실행 코스트에 따라, 병렬 계산 그래프 및 연산자 스케줄링 방안을 다시 선별하고 결정하는 단계;를 더 포함할 수 있다.
결정된 클러스터의 경우, 이의 하드웨어 성능은 일반적으로 변하지 않지만, 상이한 시기에 클러스터의 하드웨어 성능이 다소 변화될 수 있는 경우를 배제할 수는 없다. 따라서, 모델 예측의 방식을 통해 거친 선별에 의해 얻은 다양한 방안에서, 현재 클러스터에 실행되도록 탐색적으로 스케줄링할 수 있으며, 하드웨어 실행 성능을 실제 측정한 다음 보다 정밀한 스케줄링 방안을 선별한다.
제4 실시예
도 4a는 본원 발명의 제4 실시예에서 제공된 태스크 병렬 처리 구현 방법의 흐름도이다. 도 4b는 본원 발명의 제4 실시예에 적용되는 구현 프로세스 모식도이다. 본 실시예는 전술한 실시예를 기반으로, 선택 가능한 구현예 방안을 제공하며, 구체적으로 하기와 같은 단계를 포함한다.
단계 S410에서, 대상 태스크의 다수의 병렬 계산 그래프를 결정하되, 여기서 상기 병렬 계산 그래프는 다수의 연산자 태스크를 포함한다.
구체적으로, 스탠드 얼론 계산 그래프를 기반으로, 클러스터에서 호출 가능한 노드 수에 기반하여, 다수의 병렬 계산 그래프를 일괄적으로 생성한다. 병렬 계산 그래프의 생성은 다중 스트림 통신, 그래디언트 집계, 계층적 통신 등 방법에 기반하여 병렬 효율을 최적화할 수 있다. 병렬 계산 그래프의 생성은 다중 스트림 통신 중 스트림 수효, 그래디언트 집계의 조합, 통신 방법(계층적 통신, 2D 통신, 환상 통신) 등을 샘플링하여 다수의 병렬 계산 그래프를 생성한다. 상이한 병렬 계산 그래프의 경우, 상이한 그래디언트 집계를 사용하면 통신형 연산자 태스크의 변화를 초래한다.
단계 S420에서, 각각의 상기 병렬 계산 그래프, 및 초기 연산자 스케줄링 방안에 대해, 연산자 태스크의 하드웨어 실행 코스트에 따라, 상기 병렬 계산 그래프의 총 실행 코스트를 결정한다.
초기의 연산자 스케줄링 방안은 기본 스케줄링 전략에 의해 결정된 방안일 수 있다. 탐색적 계산의 방식 또는 모델 예측의 방식을 통해 총 실행 코스트를 결정할 수 있다.
선택적으로, 탐색적 계산의 방식으로 결정하되, 즉 단계 S420은 구체적으로 하기와 같은 단계를 포함한다.
단계 S421에서, 설정 규모의 처리가 실행되도록 상기 병렬 계산 그래프의 연산자 태스크를 상기 클러스터에 스케줄링한다.
처리하기 위해 호출 가능한 클러스터 노드로 각각 스케줄링하는 다수의 병렬 계산 그래프일 수 있다. 도 4b에 도시된 바와 같이, 클러스터는 해당 대상 태스크에 대해 검은색 사각형으로 표시된 노드가 호출 가능한 리소스임을 결정할 수 있다.
단계 S422에서, 노드에 의해 실행되는 상기 연산자 태스크의 하드웨어 실행 코스트를 수집한다.
단계 S423에서, 각 상기 연산자 태스크의 하드웨어 실행 코스트에 따라, 상기 연산자 스케줄링 방안을 사용하여 상기 클러스터에서 실행되는 상기 병렬 계산 그래프의 총 실행 코스트를 계산한다.
단계 S430에서, 상기 총 실행 코스트에 따라 다수의 상기 병렬 계산 그래프에 대해 선별하고, 후보 병렬 계산 그래프를 결정한다.
구체적으로, 총 실행 코스트를 배열하여, 성능이 비교적 바람직한 이전 K개의 병렬 계산 그래프를 선택하여 후보 병렬 계산 그래프로 사용할 수 있다.
단계 S440에서, 상기 후보 병렬 계산 그래프에 대해, 휴리스틱 알고리즘을 사용하여 다양한 후보 연산자 스케줄링 방안을 결정한다.
구체적으로, 초기 연산자 스케줄링 방안을 기반으로, 병렬 계산 그래프 토폴로지 규칙에 부합되는 전제하에, 병렬 계산 그래프의 다양한 실행 가능한 연산자 스케줄링 방안에 대해 교란 생성이 수행된다. 예를 들어, 실행 가능한 모든 연산자 스케줄링 방안을 탐색적으로 조정하여 후보 연산자 스케줄링 방안으로 결정할 수 있다. 해당 방안은, 자동 검색 알고리즘을 사용하여 선별 가능한 다수의 연산자 스케줄링 방안을 결정하는 것이다.
단계 S450에서, 각 그룹의 상기 후보 병렬 계산 그래프 및 후보 연산자 스케줄링 방안에 대해, 연산자 태스크의 하드웨어 실행 코스트에 따라, 상기 후보 병렬 계산 그래프 및 후보 연산자 스케줄링 방안의 총 실행 코스트를 결정한다.
전술한 방식을 참조하여 후보 병렬 계산 그래프 및 후보 연산자 스케줄링 방안에 대해 총 실행 코스트를 결정할 수 있다. 예를 들어, 오프라인 계산의 방식을 통해 총 실행 코스트를 계산할 수 있다. 또는 모델 예측의 방식을 통해 총 실행 코스트를 결정할 수 있다.
단계 S460에서, 상기 후보 병렬 계산 그래프 및 후보 연산자 스케줄링 방안의 총 실행 코스트에 따라, 후보 병렬 계산 그래프에 대한 후보 연산자 스케줄링 방안을 선별한다.
여러 그룹의 후보 병렬 계산 그래프 및 후보 연산자 스케줄링 방안의 총 실행 코스트를 종합하여 가장 바람직한 방안을 선택할 수 있다.
단계 S470에서, 결정된 병렬 계산 그래프 및 연산자 스케줄링 방안에 따라, 상기 병렬 계산 그래프 중 연산자 태스크가 상기 클러스터에서 실행되도록 스케줄링한다.
본원 발명의 실시예의 기술적 해결수단에 있어서, 대상 태스크의 병렬 계산 그래프 및 연산자 스케줄링 방식을 결정할 경우, 클러스터 즉 하드웨어 실행 코스트 조건을 도입하여 고려함으로써, 클러스터와 관계없는 병렬 처리 해결수단에 비해 대상 대스크의 실행 속도를 더 가속화할 수 있으며 병행성을 향상시키고 계산 리소스를 절약한다. 본원 발명의 실시예는 대상 태스크를 클러스터 경우와 자동으로 매칭시켜, 적합한 병렬 계산 그래프 및 연산자 스케줄링 방안을 선별할 수 있다. 이러한 우세는 딥 러닝 분야에서 특히 현저하다. 딥 러닝 분야의 대상 태스크는 일반적으로 머신 러닝 모델의 트레이닝 또는 실제 응용을 실행하는 것이며, 대상 태스크의 연산자 태스크는 매우 많고 또한 관계가 복잡하여, 다양한 스케줄링 방안이 실행 가능하고, 본원 발명의 실시예의 기술적 해결수단을 통해, 딥 러닝 프레임 워크가 상이한 하드웨어 환경의 클러스터에서 최적에 가까운 트레이닝 속도를 자동으로 얻을 수 있도록 한다.
제5 실시예
도 5는 본원 발명의 제5 실시예에서 제공된 태스크 병렬 처리 구현 장치의 구조 모식도이고, 해당 장치(500)는, 계산 그래프 결정 모듈(510), 스케줄링 방안 선별 모듈(520) 및 태스크 스케줄링 실행 모듈(530)을 포함한다. 여기서,
계산 그래프 결정 모듈(510)은 대상 태스크의 적어도 하나의 병렬 계산 그래프를 결정하되, 여기서 상기 병렬 계산 그래프는 다수의 연산자 태스크를 포함하고;
스케줄링 방안 선별 모듈(520)은 클러스터 중 상기 병렬 계산 그래프의 연산자 태스크의 하드웨어 실행 코스트에 따라, 병렬 계산 그래프 및 연산자 스케줄링 방안을 선별하고 결정하되, 여기서 상기 클러스터는 상기 연산자 태스크를 실행하기 위한 다수의 노드를 포함하고; 상기 병렬 계산 그래프는 적어도 하나의 연산자 스케줄링 방안을 가지며;
태스크 스케줄링 실행 모듈(530)은 결정된 병렬 계산 그래프 및 연산자 스케줄링 방안에 따라, 상기 병렬 계산 그래프 중 연산자 태스크가 상기 클러스터에서 실행되도록 스케줄링한다.
본원 발명의 실시예의 기술적 해결수단은, 대상 태스크에 대한 병렬 계산 그래프 및 연산자 스케줄링 방안을 결정할 경우, 클러스터 중 연산자 태스크의 하드웨어 실행 코스트를 선별 근거로 사용하는 것을 도입하여 고려함으로써, 대상 태스크의 실행이 상이한 환경 상황의 클러스터에 보다 잘 적응하여 가장 바람직한 병렬 효율을 달성할 수 있도록 한다.
상기 방안을 기반으로, 일 선택 가능한 방안에 있어서, 스케줄링 방안 선별 모듈(520)은 구체적으로,
클러스터에서 노드에 의해 실행되는 상기 연산자 태스크의 하드웨어 실행 코스트를 획득하기 위한 연산자 코스트 획득 유닛;
각 상기 연산자 태스크의 하드웨어 실행 코스트에 따라, 상기 연산자 스케줄링 방안을 사용하여 상기 클러스터에서 실행되는 상기 병렬 계산 그래프의 총 실행 코스트를 계산하기 위한 총 코스트 계산 유닛; 및,
상기 총 실행 코스트에 따라, 병렬 계산 그래프 및 연산자 스케줄링 방안을 선별하고 결정하기 위한 방안 선별 유닛;을 포함한다.
선택 가능한 것은, 연산자 코스트 획득 유닛은 구체적으로, 설정 규모의 처리가 실행되도록 상기 병렬 계산 그래프의 연산자 태스크를 상기 클러스터에 스케줄링하고; 노드에 의해 실행되는 상기 연산자 태스크의 하드웨어 실행 코스트를 수집한다.
선택 가능한 것은, 총 코스트 계산 유닛은 구체적으로, 상기 연산자 스케줄링 방안 중 스케줄링 순서와, 및 상기 병렬 계산 그래프 중 각 연산자 태스크의 병행 관계에 따라, 각 상기 연산자 태스크의 하드웨어 실행 코스트를 통계하여, 상기 총 실행 코스트를 계산한다.
상기 방안을 기반으로, 다른 일 선택 가능한 방안에 있어서, 스케줄링 방안 선별 모듈(520)은 구체적으로, 상기 병렬 계산 그래프의 연산자 특징, 연산자 스케줄링 방안의 스케줄링 특징, 및 상기 클러스터의 하드웨어 특징에 따라, 스케줄링 방안 모델을 기반으로, 상기 연산자 스케줄링 방안을 사용하여 상기 클러스터에서 처리되는 상기 병렬 계산 그래프의 총 실행 코스트에 대해 예측하고; 예측된 총 실행 코스트에 따라, 병렬 계산 그래프 및 연산자 스케줄링 방안을 선별하고 결정한다.
선택 가능한 것은, 상기 장치는, 예측된 총 실행 코스트에 따라, 병렬 계산 그래프 및 연산자 스케줄링 방안을 선별하고 결정한 이후에, 선별하고 결정하여 얻은 상기 병렬 계산 그래프 및 연산자 스케줄링 방안 중의 적어도 하나의 수가 다수 개이면, 각 그룹의 상기 병렬 계산 그래프 및 연산자 스케줄링 방안에 대해, 연산자 태스크가 상기 클러스터에서 실행되도록 각각 스케줄링하고, 노드에 의해 실행되는 상기 연산자 태스크의 하드웨어 실행 코스트를 수집하며, 상기 연산자 태스크의 하드웨어 실행 코스트에 따라, 상기 병렬 계산 그래프 및 연산자 스케줄링 방안의 총 실행 코스트를 계산하고, 계산된 상기 총 실행 코스트에 따라, 병렬 계산 그래프 및 연산자 스케줄링 방안을 다시 선별하고 결정하기 위한 2차 선별 모듈;을 더 포함한다.
선택 가능한 것은, 상기 장치는,
기존에 기록된, 클러스터에서 실행되는 병렬 계산 그래프 및 연산자 스케줄링 방안을 획득하여 트레이닝 샘플로 사용하고, 각각의 트레이닝 샘플 중 병렬 계산 그래프의 연산자 특징, 연산자 스케줄링 방안의 스케줄링 특징, 상기 클러스터의 하드웨어 특징, 및 결과로 사용되는 총 실행 코스트를 사용하여, 스케줄링 방안 모델에 대해 트레이닝하기 위한 모델 트레이닝 모듈;을 더 포함한다.
선택 가능한 것은,
상기 병렬 계산 그래프의 연산자 특징은, 연산자 태스크의 하드웨어 실행 코스트, 연산자 태스크 수, 연산자 태스크의 파라미터, 연산자 태스크의 유형, 및 통신형 연산자 태스크 수 중 적어도 하나를 포함하고;
상기 연산자 스케줄링 방안의 스케줄링 특징은, 통신형 연산자 태스크의 진입 차수 연산자 태스크 및 진출 차수 연산자 태스크의 수 및 종류, 및 병렬 계산 그래프의 병행성 중 적어도 하나를 포함하며;
상기 클러스터의 노드 하드웨어 특징은, 노드 수, 및 노드의 하드웨어 성능 지표를 포함하고;
상기 총 실행 코스트는 정규화 처리된 데이터이다.
선택 가능한 것은, 상기 스케줄링 방안 모델은 선형 회귀 모델이다.
선택 가능한 것은, 계산 그래프 결정 모듈(510)은 구체적으로, 상기 대상 태스크의 스탠드 얼론 계산 그래프, 및 상기 클러스터 중 노드 수에 따라, 적어도 하나의 상기 병렬 계산 그래프를 생성한다.
선택 가능한 것은, 상기 연산자 태스크의 유형은, 계산형 및 통신형을 적어도 포함하고;
상기 계산형의 연산자 태스크는 데이터를 계산하는데 사용되며; 상기 통신형의 연산자 태스크는 노드 사이에서 데이터를 전송하는데 사용된다.
선택 가능한 것은, 상기 대상 태스크는 머신 러닝 모델의 트레이닝 태스크 또는 실행 태스크이고, 상기 계산형의 연산자 태스크는, 수학 연산 연산자, 어레이 연산 연산자 및 신경 네트워크 빌딩 블록 연산 연산자 중 적어도 하나를 포함한다.
선택 가능한 것은,
상기 연산자 태스크의 하드웨어 실행 코스트는, 상기 연산자 태스크의 실행 시간, 및 상기 연산자 태스크의 하드웨어 점유 데이터 중 적어도 하나를 포함하고;
상기 하드웨어 점유 데이터는 비디오 메모리 점유 비율, 칩 사용률, 및 네트워크 대역폭 사용률 중 적어도 하나를 포함한다.
선택 가능한 것은, 상기 하드웨어 실행 코스트의 종류가 다양하면, 상기 병렬 계산 그래프의 총 실행 코스트는 다양한 종류의 총 실행 코스트의 조합이거나 다양한 종류의 총 실행 코스트에 대한 가중 합계이다.
선택 가능한 것은, 스케줄링 방안 선별 모듈(520)은 구체적으로,
각각의 상기 병렬 계산 그래프, 및 초기 연산자 스케줄링 방안에 대해, 연산자 태스크의 하드웨어 실행 코스트에 따라, 상기 병렬 계산 그래프의 총 실행 코스트를 결정하고;
상기 총 실행 코스트에 따라 다수의 상기 병렬 계산 그래프에 대해 선별하고, 후보 병렬 계산 그래프를 결정하며;
상기 후보 병렬 계산 그래프에 대해, 휴리스틱 알고리즘을 사용하여 다양한 후보 연산자 스케줄링 방안을 결정하고;
각 그룹의 상기 후보 병렬 계산 그래프 및 후보 연산자 스케줄링 방안에 대해, 연산자 태스크의 하드웨어 실행 코스트에 따라, 상기 후보 병렬 계산 그래프 및 후보 연산자 스케줄링 방안의 총 실행 코스트를 결정하며;
상기 후보 병렬 계산 그래프 및 후보 연산자 스케줄링 방안의 총 실행 코스트에 따라, 후보 병렬 계산 그래프에 대한 후보 연산자 스케줄링 방안을 선별한다.
제6 실시예
본원 발명의 실시예에 따르면, 본원 발명은 전자 기기 및 판독 가능 저장 매체를 더 제공한다.
도 6에 도시된 바와 같이, 도 6은 본원 발명의 제6 실시예에서 제공된 전자 기기의 블록도이다. 전자 기기는 랩톱 컴퓨터, 데스크톱 컴퓨터, 워크 스테이션, 개인 휴대 정보 단말기, 서버, 블레이드 서버, 대형 컴퓨터, 및 기타 적합한 컴퓨터와 같은 다양한 형태의 디지털 컴퓨터를 나타내기 위한 것이다. 전자 기기는 또한 개인 디지털 처리, 셀룰러폰, 스마트폰, 웨어러블 기기 및 기타 유사한 컴퓨팅 장치와 같은 다양한 형태의 모바일 장치를 나타낼 수도 있다. 본문에 표시된 부재, 이들의 연결 및 관계, 및 이들의 기능은 단지 예시로서, 본문에서 설명되는 및/또는 요구되는 본원 발명의 구현을 한정하려는 것이 아니다.
도 6에 도시된 바와 같이, 해당 전자 기기는, 하나 또는 다수의 프로세서(601), 메모리(602), 및 각 부재를 연결하기 위한 고속 인터페이스 및 저속 인터페이스를 포함하는 인터페이스를 포함한다. 각각의 부재는 상이한 버스를 사용하여 상호 연결되고, 또한 공통 마더 보드에 설치되거나 수요에 따라 다른 방식으로 설치될 수 있다. 프로세서는 전자 기기 내에서 실행되는 명령을 처리할 수 있고, 상기 명령은, 외부 입력/출력 장치(예를 들어, 인터페이스에 결합된 디스플레이 기기)에 GUI의 그래픽 정보를 디스플레이하기 위해 메모리 내 또는 메모리에 저장되는 명령을 포함한다. 다른 실시형태에서, 수요되면, 다수의 프로세서 및/또는 다수의 버스와 다수의 메모리 및 다수의 메모리를 함께 사용할 수 있다. 마찬가지로, 다수의 전자 기기를 연결할 수 있으며, 각각의 기기는 일부 필요한 동작(예를 들어, 서버 어레이, 한 그룹의 블레이드 서버, 또는 다중 프로세서 시스템으로 사용됨)을 제공한다. 도 6에서는 하나의 프로세서(601)를 예로 한다.
메모리(602)는 본원 발명에서 제공된 비일시적 컴퓨터 판독 가능 저장 매체이다. 여기서, 상기 메모리에는 적어도 하나의 프로세서에 의해 실행 가능한 명령이 저장되며, 상기 적어도 하나의 프로세서가 본원 발명의 실시예에서 제공된 태스크 병렬 처리 구현 방법을 수행하도록 한다. 본원 발명의 비일시적 컴퓨터 판독 가능 저장 매체는 컴퓨터 명령을 저장하며, 해당 컴퓨터 명령은 컴퓨터가 본원 발명의 실시예에서 제공된 태스크 병렬 처리 구현 방법을 수행하도록 한다.
메모리(602)는 비일시적 컴퓨터 판독 가능 저장 매체로서, 본원 발명의 실시예에서의 태스크 병렬 처리 구현 방법에 대응되는 프로그램 명령/모듈(예를 들어, 도 5에 도시된 계산 그래프 결정 모듈(510), 스케줄링 방안 선별 모듈(520) 및 태스크 스케줄링 실행 모듈(530))과 같은 비일시적 소프트웨어 프로그램, 비일시적 컴퓨터 실행 가능 프로그램 및 모듈을 저장할 수 있다. 프로세서(601)는 메모리(602)에 저장된 비일시적 소프트웨어 프로그램, 명령 및 모듈을 실행함으로써, 서버의 다양한 기능 애플리케이션 및 데이터 처리를 실행하며, 즉 상기 방법의 실시예에서 태스크 병렬 처리 구현 방법을 구현한다.
메모리(602)는 프로그램 저장 영역 및 데이터 저장 영역을 포함하되, 여기서 프로그램 저장 영역은 운영 체제, 적어도 하나의 기능에 필요한 응용 프로그램을 저장할 수 있고; 데이터 저장 영역은 태스크 병렬 처리 구현 방법에 따른 전자 기기의 사용에 의해 구축된 데이터를 저장할 수 있다. 이밖에, 메모리(602)는 고속 랜덤 액세스 메모리를 포함할 수 있고, 적어도 하나의 자기 디스크 저장 소자, 플래시 소자, 또는 다른 비일시적 솔리드 스테이트 저장 소자와 같은 비일시적 메모리를 더 포함할 수 있다. 일부 실시예에서, 메모리(602)는 프로세서(601)에 대해 원격으로 설치되는 메모리를 선택적으로 포함할 수 있고, 이러한 원격 메모리는 네트워크를 통해 태스크 병렬 처리 구현 방법의 전자 기기에 연결될 수 있다. 상기 네트워크의 구현예는 인터넷, 기업 인트라넷, 근거리 통신망, 이동 통신 네트워크 및 이들의 조합을 포함하지만 이에 한정되지 않는다.
태스크 병렬 처리 구현 방법의 전자 기기는, 입력 장치(603) 및 출력 장치(604)를 더 포함할 수 있다. 프로세서(601), 메모리(602), 입력 장치(603) 및 출력 장치(604)는 버스 또는 다른 방식을 통해 연결될 수 있고, 도 6에서는 버스를 통한 연결을 예로 한다.
입력 장치(603)는 입력된 숫자 또는 문자 정보를 수신할 수 있고, 터치 스크린, 키패드, 마우스, 트랙 패드, 터치 패드, 포인팅 스틱, 하나 또는 다수의 마우스 버튼, 트랙볼, 조이스틱 등 입력 장치와 같은 태스크 병렬 처리 구현 방법의 전자 기기의 사용자 설정 및 기능 제어와 관련된 키 신호 입력을 생성할 수 있다. 출력 장치(604)는 디스플레이 기기, 보조 조명 장치(예를 들어, LED) 및 촉각 피드백 장치(예를 들어, 진동 모터) 등을 포함할 수 있다. 해당 디스플레이 기기는 액정 디스플레이 장치(LCD), 발광 다이오드(LED) 디스플레이 장치 및 플라즈마 디스플레이 장치를 포함할 수 있으나 이에 한정되지 않는다. 일부 실시형태에서, 디스플레이 기기는 터치 스크린일 수 있다.
본 출원의 실시예에 따르면, 컴퓨터 판독 가능 매체에 저장되어 있는 컴퓨터 프로그램을 더 제공한다. 당해 컴퓨터 프로그램중의 명령이 실행될 경우, 상기 태스크 병렬 처리 구현 방법이 실행된다.
여기에 설명되는 시스템 및 기술의 다양한 실시형태는 디지털 전자 회로 시스템, 집적 회로 시스템, 주문형 ASIC (주문형 집적 회로), 컴퓨터 하드웨어, 펌웨어, 소프트웨어, 및/또는 이들의 조합에서 구현될 수 있다. 이러한 다양한 실시형태는 다음을 포함할 수 있다. 즉 하나 또는 다수의 컴퓨터 프로그램에서 구현되고, 하나 또는 다수의 해당 컴퓨터 프로그램은 적어도 하나의 프로그램 가능 프로세서를 포함한 프로그램 가능 시스템에서 실행 및/또는 해석될 수 있으며, 해당 프로그램 가능 프로세서는 주문형 또는 일반 프로그램 가능 프로세서일 수 있고, 저장 시스템, 적어도 하나의 입력 장치 및 적어도 하나의 출력 장치로부터 데이터 및 명령을 수신할 수 있으며, 또한, 데이터 및 명령을 해당 저장 시스템, 해당 적어도 하나의 입력 장치 및 해당 적어도 하나의 출력 장치로 전송할 수 있다.
이러한 컴퓨팅 프로그램(프로그램, 소프트웨어, 소프트웨어 애플리케이션 또는 코드로도 지칭됨)은 프로그램 가능 프로세서의 기계 명령을 포함하고, 또한 고급 프로세스 및/또는 객체 지향 프로그래밍 언어, 및/또는 어셈블리/기계 언어를 사용하여 이러한 컴퓨팅 프로그램을 실시할 수 있다. 본문에 사용된 바와 같이, 용어 "기계 판독 가능 매체" 및 "컴퓨터 판독 가능 매체"는 기계 명령 및/또는 데이터를 프로그램 가능 프로세서에 제공하기 위한 임의의 컴퓨터 프로그램 제품, 기기 및/또는 장치(예를 들어, 자기 디스크, 광 디스크, 메모리, 프로그램 가능 논리 장치(PLD))를 가리키며, 기계 판독 가능 신호로서 기계 명령을 수신하는 기계 판독 가능 매체를 포함한다. 용어 "기계 판독 가능 신호"는 기계 명령 및/또는 데이터를 프로그램 가능 프로세서에 제공하기 위한 임의의 신호를 가리킨다.
사용자와의 상호 작용을 제공하기 위해, 컴퓨터에서 여기에 설명되는 시스템 및 기술을 구현할 수 있으며, 해당 컴퓨터는, 사용자에게 정보를 디스플레이하기 위한 디스플레이 장치(예를 들어, CRT (음극선 관) 또는 LCD (액정 디스플레이) 모니터); 및 사용자가 컴퓨터에 입력을 제공할 수 있는 키보드 및 포인팅 장치(예를 들어, 마우스 또는 트랙볼)을 구비한다. 사용자와의 상호 작용을 제공하기 위해 다른 유형의 장치도 사용할 수 있다. 예를 들어, 사용자에게 제공되는 피드백은 임의의 형태의 센서 피드백(예를 들어, 시각적 피드백, 청각적 피드백 또는 촉각적 피드백)일 수 있으며; 임의의 형태(음향 입력, 음성 입력 또는 촉각 입력을 포함함)로 사용자로부터의 입력을 수신할 수 있다.
여기에 설명되는 시스템 및 기술은 백엔드 부재를 포함하는 컴퓨팅 시스템(예를 들어, 데이터 서버로서 사용됨), 또는 미들웨어 부재를 포함하는 컴퓨팅 시스템(예를 들어, 애플리케이션 서버), 또는 프론트 엔드 부재를 포함하는 컴퓨팅 시스템(예를 들어, 사용자가 여기에 설명되는 시스템 및 기술의 실시형태와 상호 작용할 수 있는 그래픽 사용자 인터페이스 또는 해당 웹 브라우저를 갖는 사용자 컴퓨터), 또는 이러한 백엔드 부재, 미들웨어 부재, 또는 프론트 엔드 부재를 포함하는 임의의 조합의 컴퓨팅 시스템에서 구현될 수 있다. 시스템의 부재는 임의의 형태 또는 매체의 디지털 데이터 통신(예를 들어, 통신 네트워크)을 통해 서로 연결될 수 있다. 통신 네트워크의 예는, 근거리 통신망(LAN), 광역망(WAN) 및 인터넷을 포함한다.
컴퓨터 시스템은 클라이언트와 서버를 포함할 수 있다. 클라이언트와 서버는 일반적으로 서로 멀리 떨어져 있으며 일반적으로 통신 네트워크를 통해 상호 작용한다. 클라이언트와 서버 간의 관계는 대응되는 컴퓨터에서 실행되고 서로 클라이언트-서버 관계를 갖는 컴퓨터 프로그램에 의해 생성된다.
본원 발명의 실시예의 기술적 해결수단은, 대상 태스크에 대한 병렬 계산 그래프 및 연산자 스케줄링 방안을 결정할 경우, 클러스터 중 연산자 태스크의 하드웨어 실행 코스트를 선별 근거로 사용하는 것을 도입하여 고려함으로써, 대상 태스크의 실행이 상이한 환경 상황의 클러스터에 보다 잘 적응하여 가장 바람직한 병렬 효율을 달성할 수 있도록 한다.
상술한 설명에서 언급된 다양한 형태의 프로세스를 사용하여 단계를 재배열, 추가 또는 삭제할 수 있음을 이해해야 한다. 예를 들어, 본원 발명에 기재된 각 단계는 병렬로, 순차적으로, 또는 상이한 순서로 수행될 수 있으며, 본원 발명에 공개된 기술적 해결수단이 예기한 결과를 구현할 수 있는 한, 본문은 여기서 한정되지 않는다.
상술한 구체적인 실시형태는 본원 발명의 보호 범위를 한정하려는 것이 아니다. 당업자는, 설계 요구 및 기타 요소에 따라 다양한 수정, 조합, 서브 조합 및 대체가 이루어질 수 있음을 인식해야 할 것이다. 임의의 본원 발명의 사상 및 원칙 이내에서 이루어진 수정, 등가 교체 및 개선 등은 모두 본원 발명의 보호 범위 이내에 포함되어야 한다.

Claims (33)

  1. 태스크 병렬 처리 구현 장치에 의해 실행되는 태스크 병렬 처리 구현 방법에 있어서,
    대상 태스크의 적어도 하나의 병렬 계산 그래프를 결정하는 단계 - 상기 병렬 계산 그래프는 다수의 연산자 태스크를 포함함 - ;
    클러스터 중 상기 병렬 계산 그래프의 연산자 태스크의 하드웨어 실행 코스트에 따라, 병렬 계산 그래프 및 연산자 스케줄링 방안을 선별하고 결정하는 단계 - 상기 클러스터는 상기 연산자 태스크를 실행하기 위한 다수의 노드를 포함하고; 상기 병렬 계산 그래프는 적어도 하나의 연산자 스케줄링 방안을 가짐 - ; 및,
    결정된 병렬 계산 그래프 및 연산자 스케줄링 방안에 따라, 상기 병렬 계산 그래프 중 연산자 태스크가 상기 클러스터에서 실행되도록 스케줄링하는 단계;를 포함하고,
    상기 클러스터 중 상기 병렬 계산 그래프의 연산자 태스크의 하드웨어 실행 코스트에 따라, 병렬 계산 그래프 및 연산자 스케줄링 방안을 선별하고 결정하는 단계는,
    상기 클러스터에서 노드에 의해 실행되는 상기 연산자 태스크의 하드웨어 실행 코스트를 획득하는 단계;
    각 상기 연산자 태스크의 하드웨어 실행 코스트에 따라, 상기 연산자 스케줄링 방안을 사용하여 상기 클러스터에서 실행되는 상기 병렬 계산 그래프의 총 실행 코스트를 계산하는 단계; 및,
    상기 총 실행 코스트에 따라, 병렬 계산 그래프 및 연산자 스케줄링 방안을 선별하고 결정하는 단계;를 포함하는 것,
    을 특징으로 하는 태스크 병렬 처리 구현 방법.
  2. 삭제
  3. 제1항에 있어서,
    상기 클러스터에서 노드에 의해 실행되는 상기 연산자 태스크의 하드웨어 실행 코스트를 획득하는 단계는,
    설정 규모의 처리가 실행되도록 상기 병렬 계산 그래프의 연산자 태스크를 상기 클러스터에 스케줄링하는 단계; 및,
    노드에 의해 실행되는 상기 연산자 태스크의 하드웨어 실행 코스트를 수집하는 단계;를 포함하는 것,
    을 특징으로 하는 태스크 병렬 처리 구현 방법.
  4. 제1항에 있어서,
    상기 각 상기 연산자 태스크의 하드웨어 실행 코스트에 따라, 상기 연산자 스케줄링 방안을 사용하여 상기 클러스터에서 실행되는 상기 병렬 계산 그래프의 총 실행 코스트를 계산하는 단계는,
    상기 연산자 스케줄링 방안 중 스케줄링 순서와, 및 상기 병렬 계산 그래프 중 각 연산자 태스크의 병행 관계에 따라, 각 상기 연산자 태스크의 하드웨어 실행 코스트를 통계하여, 상기 총 실행 코스트를 계산하는 단계를 포함하는 것,
    을 특징으로 하는 태스크 병렬 처리 구현 방법.
  5. 태스크 병렬 처리 구현 장치에 의해 실행되는 태스크 병렬 처리 구현 방법에 있어서,
    대상 태스크의 적어도 하나의 병렬 계산 그래프를 결정하는 단계 - 상기 병렬 계산 그래프는 다수의 연산자 태스크를 포함함 - ;
    클러스터 중 상기 병렬 계산 그래프의 연산자 태스크의 하드웨어 실행 코스트에 따라, 병렬 계산 그래프 및 연산자 스케줄링 방안을 선별하고 결정하는 단계 - 상기 클러스터는 상기 연산자 태스크를 실행하기 위한 다수의 노드를 포함하고; 상기 병렬 계산 그래프는 적어도 하나의 연산자 스케줄링 방안을 가짐 - ; 및,
    결정된 병렬 계산 그래프 및 연산자 스케줄링 방안에 따라, 상기 병렬 계산 그래프 중 연산자 태스크가 상기 클러스터에서 실행되도록 스케줄링하는 단계;를 포함하고,
    상기 클러스터 중 상기 병렬 계산 그래프의 연산자 태스크의 하드웨어 실행 코스트에 따라, 병렬 계산 그래프 및 연산자 스케줄링 방안을 선별하고 결정하는 단계는,
    상기 병렬 계산 그래프의 연산자 특징, 연산자 스케줄링 방안의 스케줄링 특징, 및 상기 클러스터의 하드웨어 특징에 따라, 스케줄링 방안 모델을 기반으로, 상기 연산자 스케줄링 방안을 사용하여 상기 클러스터에서 처리되는 상기 병렬 계산 그래프의 총 실행 코스트에 대해 예측하는 단계; 및,
    예측된 총 실행 코스트에 따라, 병렬 계산 그래프 및 연산자 스케줄링 방안을 선별하고 결정하는 단계;를 포함하는 것,
    을 특징으로 하는 태스크 병렬 처리 구현 방법.
  6. 제5항에 있어서,
    상기 예측된 총 실행 코스트에 따라, 병렬 계산 그래프 및 연산자 스케줄링 방안을 선별하고 결정하는 단계 이후에,
    선별하고 결정하여 얻은 상기 병렬 계산 그래프 및 연산자 스케줄링 방안 중의 적어도 하나의 수가 다수 개이면, 각 그룹의 상기 병렬 계산 그래프 및 연산자 스케줄링 방안에 대해, 연산자 태스크가 상기 클러스터에서 실행되도록 각각 스케줄링하는 단계;
    노드에 의해 실행되는 상기 연산자 태스크의 하드웨어 실행 코스트를 수집하는 단계;
    상기 연산자 태스크의 하드웨어 실행 코스트에 따라, 상기 병렬 계산 그래프 및 연산자 스케줄링 방안의 총 실행 코스트를 계산하는 단계; 및,
    계산된 상기 총 실행 코스트에 따라, 병렬 계산 그래프 및 연산자 스케줄링 방안을 다시 선별하고 결정하는 단계;를 더 포함하는 것,
    을 특징으로 하는 태스크 병렬 처리 구현 방법.
  7. 제5항에 있어서,
    상기 스케줄링 방안 모델은 하기의 단계를 통해 트레이닝하여 획득하고, 상기 단계는,
    기존에 기록된, 클러스터에서 실행되는 병렬 계산 그래프 및 연산자 스케줄링 방안을 획득하여 트레이닝 샘플로 사용하는 단계; 및,
    각각의 트레이닝 샘플 중 병렬 계산 그래프의 연산자 특징, 연산자 스케줄링 방안의 스케줄링 특징, 상기 클러스터의 하드웨어 특징, 및 결과로 사용되는 총 실행 코스트를 사용하여, 스케줄링 방안 모델에 대해 트레이닝하는 단계;인 것,
    을 특징으로 하는 태스크 병렬 처리 구현 방법.
  8. 제5항에 있어서,
    상기 병렬 계산 그래프의 연산자 특징은, 연산자 태스크의 하드웨어 실행 코스트, 연산자 태스크 수, 연산자 태스크의 파라미터, 연산자 태스크의 유형, 및 통신형 연산자 태스크 수 중 적어도 하나를 포함하고;
    상기 연산자 스케줄링 방안의 스케줄링 특징은, 통신형 연산자 태스크의 진입 차수 연산자 태스크 및 진출 차수 연산자 태스크의 수 및 종류, 및 병렬 계산 그래프의 병행성 중 적어도 하나를 포함하며;
    상기 클러스터의 노드 하드웨어 특징은, 노드 수, 및 노드의 하드웨어 성능 지표를 포함하고;
    상기 총 실행 코스트는 정규화 처리된 데이터인 것,
    을 특징으로 하는 태스크 병렬 처리 구현 방법.
  9. 제5항에 있어서,
    상기 스케줄링 방안 모델은 선형 회귀 모델인 것,
    을 특징으로 하는 태스크 병렬 처리 구현 방법.
  10. 제1항에 있어서,
    상기 대상 태스크의 적어도 하나의 병렬 계산 그래프를 결정하는 단계는,
    상기 대상 태스크의 스탠드 얼론 계산 그래프, 및 상기 클러스터 중 노드 수에 따라, 적어도 하나의 상기 병렬 계산 그래프를 생성하는 단계를 포함하는 것,
    을 특징으로 하는 태스크 병렬 처리 구현 방법.
  11. 제1항에 있어서,
    상기 연산자 태스크의 유형은, 계산형 및 통신형을 적어도 포함하고;
    상기 계산형의 연산자 태스크는 데이터를 계산하는데 사용되며;
    상기 통신형의 연산자 태스크는 노드 사이에서 데이터를 전송하는데 사용되는 것,
    을 특징으로 하는 태스크 병렬 처리 구현 방법.
  12. 제11항에 있어서,
    상기 대상 태스크는 머신 러닝 모델의 트레이닝 태스크 또는 실행 태스크이고,
    상기 계산형의 연산자 태스크는, 수학 연산 연산자, 어레이 연산 연산자 및 신경 네트워크 빌딩 블록 연산 연산자 중 적어도 하나를 포함하는 것,
    을 특징으로 하는 태스크 병렬 처리 구현 방법.
  13. 제1항에 있어서,
    상기 연산자 태스크의 하드웨어 실행 코스트는, 상기 연산자 태스크의 실행 시간, 및 상기 연산자 태스크의 하드웨어 점유 데이터 중 적어도 하나를 포함하고;
    상기 하드웨어 점유 데이터는 비디오 메모리 점유 비율, 칩 사용률, 및 네트워크 대역폭 사용률 중 적어도 하나를 포함하는 것,
    을 특징으로 하는 태스크 병렬 처리 구현 방법.
  14. 제13항에 있어서,
    상기 하드웨어 실행 코스트의 종류가 다양하면, 상기 병렬 계산 그래프의 총 실행 코스트는 다양한 종류의 총 실행 코스트의 조합이거나 다양한 종류의 총 실행 코스트에 대한 가중 합계인 것,
    을 특징으로 하는 태스크 병렬 처리 구현 방법.
  15. 태스크 병렬 처리 구현 장치에 의해 실행되는 태스크 병렬 처리 구현 방법에 있어서,
    대상 태스크의 적어도 하나의 병렬 계산 그래프를 결정하는 단계 - 상기 병렬 계산 그래프는 다수의 연산자 태스크를 포함함 - ;
    클러스터 중 상기 병렬 계산 그래프의 연산자 태스크의 하드웨어 실행 코스트에 따라, 병렬 계산 그래프 및 연산자 스케줄링 방안을 선별하고 결정하는 단계 - 상기 클러스터는 상기 연산자 태스크를 실행하기 위한 다수의 노드를 포함하고; 상기 병렬 계산 그래프는 적어도 하나의 연산자 스케줄링 방안을 가짐 - ; 및,
    결정된 병렬 계산 그래프 및 연산자 스케줄링 방안에 따라, 상기 병렬 계산 그래프 중 연산자 태스크가 상기 클러스터에서 실행되도록 스케줄링하는 단계;를 포함하고,
    상기 클러스터 중 상기 병렬 계산 그래프의 연산자 태스크의 하드웨어 실행 코스트에 따라, 병렬 계산 그래프 및 연산자 스케줄링 방안을 선별하고 결정하는 단계는,
    각각의 상기 병렬 계산 그래프, 및 초기 연산자 스케줄링 방안에 대해, 연산자 태스크의 하드웨어 실행 코스트에 따라, 상기 병렬 계산 그래프의 총 실행 코스트를 결정하는 단계;
    상기 총 실행 코스트에 따라 다수의 상기 병렬 계산 그래프에 대해 선별하고, 후보 병렬 계산 그래프를 결정하는 단계;
    상기 후보 병렬 계산 그래프에 대해, 휴리스틱 알고리즘을 사용하여 다양한 후보 연산자 스케줄링 방안을 결정하는 단계;
    각 그룹의 상기 후보 병렬 계산 그래프 및 후보 연산자 스케줄링 방안에 대해, 연산자 태스크의 하드웨어 실행 코스트에 따라, 상기 후보 병렬 계산 그래프 및 후보 연산자 스케줄링 방안의 총 실행 코스트를 결정하는 단계; 및,
    상기 후보 병렬 계산 그래프 및 후보 연산자 스케줄링 방안의 총 실행 코스트에 따라, 후보 병렬 계산 그래프에 대한 후보 연산자 스케줄링 방안을 선별하는 단계;를 포함하는 것,
    을 특징으로 하는 태스크 병렬 처리 구현 방법.
  16. 태스크 병렬 처리 구현 장치로서,
    대상 태스크의 적어도 하나의 병렬 계산 그래프를 결정하기 위한 계산 그래프 결정 모듈 - 상기 병렬 계산 그래프는 다수의 연산자 태스크를 포함함 - ;
    클러스터 중 상기 병렬 계산 그래프의 연산자 태스크의 하드웨어 실행 코스트에 따라, 병렬 계산 그래프 및 연산자 스케줄링 방안을 선별하고 결정하기 위한 스케줄링 방안 선별 모듈 - 상기 클러스터는 상기 연산자 태스크를 실행하기 위한 다수의 노드를 포함하고; 상기 병렬 계산 그래프는 적어도 하나의 연산자 스케줄링 방안을 가짐 - ; 및,
    결정된 병렬 계산 그래프 및 연산자 스케줄링 방안에 따라, 상기 병렬 계산 그래프 중 연산자 태스크가 상기 클러스터에서 실행되도록 스케줄링하기 위한 태스크 스케줄링 실행 모듈;을 포함하고,
    상기 스케줄링 방안 선별 모듈은,
    상기 클러스터에서 노드에 의해 실행되는 상기 연산자 태스크의 하드웨어 실행 코스트를 획득하기 위한 연산자 코스트 획득 유닛;
    각 상기 연산자 태스크의 하드웨어 실행 코스트에 따라, 상기 연산자 스케줄링 방안을 사용하여 상기 클러스터에서 실행되는 상기 병렬 계산 그래프의 총 실행 코스트를 계산하기 위한 총 코스트 계산 유닛; 및,
    상기 총 실행 코스트에 따라, 병렬 계산 그래프 및 연산자 스케줄링 방안을 선별하고 결정하기 위한 방안 선별 유닛;을 포함하는 것,
    을 특징으로 하는 태스크 병렬 처리 구현 장치.
  17. 삭제
  18. 제16항에 있어서,
    상기 연산자 코스트 획득 유닛은 구체적으로,
    설정 규모의 처리가 실행되도록 상기 병렬 계산 그래프의 연산자 태스크를 상기 클러스터에 스케줄링하고;
    노드에 의해 실행되는 상기 연산자 태스크의 하드웨어 실행 코스트를 수집하는 것,
    을 특징으로 하는 태스크 병렬 처리 구현 장치.
  19. 제16항에 있어서,
    상기 총 코스트 계산 유닛은 구체적으로,
    상기 연산자 스케줄링 방안 중 스케줄링 순서와, 및 상기 병렬 계산 그래프 중 각 연산자 태스크의 병행 관계에 따라, 각 상기 연산자 태스크의 하드웨어 실행 코스트를 통계하여, 상기 총 실행 코스트를 계산하는 것,
    을 특징으로 하는 태스크 병렬 처리 구현 장치.
  20. 태스크 병렬 처리 구현 장치로서,
    대상 태스크의 적어도 하나의 병렬 계산 그래프를 결정하기 위한 계산 그래프 결정 모듈 - 상기 병렬 계산 그래프는 다수의 연산자 태스크를 포함함 - ;
    클러스터 중 상기 병렬 계산 그래프의 연산자 태스크의 하드웨어 실행 코스트에 따라, 병렬 계산 그래프 및 연산자 스케줄링 방안을 선별하고 결정하기 위한 스케줄링 방안 선별 모듈 - 상기 클러스터는 상기 연산자 태스크를 실행하기 위한 다수의 노드를 포함하고; 상기 병렬 계산 그래프는 적어도 하나의 연산자 스케줄링 방안을 가짐 - ; 및,
    결정된 병렬 계산 그래프 및 연산자 스케줄링 방안에 따라, 상기 병렬 계산 그래프 중 연산자 태스크가 상기 클러스터에서 실행되도록 스케줄링하기 위한 태스크 스케줄링 실행 모듈;을 포함하고,
    상기 스케줄링 방안 선별 모듈은 구체적으로,
    상기 병렬 계산 그래프의 연산자 특징, 연산자 스케줄링 방안의 스케줄링 특징, 및 상기 클러스터의 하드웨어 특징에 따라, 스케줄링 방안 모델을 기반으로, 상기 연산자 스케줄링 방안을 사용하여 상기 클러스터에서 처리되는 상기 병렬 계산 그래프의 총 실행 코스트에 대해 예측하고;
    예측된 총 실행 코스트에 따라, 병렬 계산 그래프 및 연산자 스케줄링 방안을 선별하고 결정하는 것,
    을 특징으로 하는 태스크 병렬 처리 구현 장치.
  21. 제20항에 있어서,
    예측된 총 실행 코스트에 따라, 병렬 계산 그래프 및 연산자 스케줄링 방안을 선별하고 결정한 이후에, 선별하고 결정하여 얻은 상기 병렬 계산 그래프 및 연산자 스케줄링 방안 중의 적어도 하나의 수가 다수 개이면, 각 그룹의 상기 병렬 계산 그래프 및 연산자 스케줄링 방안에 대해, 연산자 태스크가 상기 클러스터에서 실행되도록 각각 스케줄링하고, 노드에 의해 실행되는 상기 연산자 태스크의 하드웨어 실행 코스트를 수집하며, 상기 연산자 태스크의 하드웨어 실행 코스트에 따라, 상기 병렬 계산 그래프 및 연산자 스케줄링 방안의 총 실행 코스트를 계산하고, 계산된 상기 총 실행 코스트에 따라, 병렬 계산 그래프 및 연산자 스케줄링 방안을 다시 선별하고 결정하기 위한 2차 선별 모듈;을 더 포함하는 것,
    을 특징으로 하는 태스크 병렬 처리 구현 장치.
  22. 제20항에 있어서,
    기존에 기록된, 클러스터에서 실행되는 병렬 계산 그래프 및 연산자 스케줄링 방안을 획득하여 트레이닝 샘플로 사용하고, 각각의 트레이닝 샘플 중 병렬 계산 그래프의 연산자 특징, 연산자 스케줄링 방안의 스케줄링 특징, 상기 클러스터의 하드웨어 특징, 및 결과로 사용되는 총 실행 코스트를 사용하여, 스케줄링 방안 모델에 대해 트레이닝하기 위한 모델 트레이닝 모듈;을 더 포함하는 것,
    을 특징으로 하는 태스크 병렬 처리 구현 장치.
  23. 제20항에 있어서,
    상기 병렬 계산 그래프의 연산자 특징은, 연산자 태스크의 하드웨어 실행 코스트, 연산자 태스크 수, 연산자 태스크의 파라미터, 연산자 태스크의 유형, 및 통신형 연산자 태스크 수 중 적어도 하나를 포함하고;
    상기 연산자 스케줄링 방안의 스케줄링 특징은, 통신형 연산자 태스크의 진입 차수 연산자 태스크 및 진출 차수 연산자 태스크의 수 및 종류, 및 병렬 계산 그래프의 병행성 중 적어도 하나를 포함하며;
    상기 클러스터의 노드 하드웨어 특징은, 노드 수, 및 노드의 하드웨어 성능 지표를 포함하고;
    상기 총 실행 코스트는 정규화 처리된 데이터인 것,
    을 특징으로 하는 태스크 병렬 처리 구현 장치.
  24. 제20항에 있어서,
    상기 스케줄링 방안 모델은 선형 회귀 모델인 것,
    을 특징으로 하는 태스크 병렬 처리 구현 장치.
  25. 제16항에 있어서,
    상기 계산 그래프 결정 모듈은 구체적으로,
    상기 대상 태스크의 스탠드 얼론 계산 그래프, 및 상기 클러스터 중 노드 수에 따라, 적어도 하나의 상기 병렬 계산 그래프를 생성하는 것,
    을 특징으로 하는 태스크 병렬 처리 구현 장치.
  26. 제16항에 있어서,
    상기 연산자 태스크의 유형은, 계산형 및 통신형을 적어도 포함하고;
    상기 계산형의 연산자 태스크는 데이터를 계산하는데 사용되며;
    상기 통신형의 연산자 태스크는 노드 사이에서 데이터를 전송하는데 사용되는 것,
    을 특징으로 하는 태스크 병렬 처리 구현 장치.
  27. 제26항에 있어서,
    상기 대상 태스크는 머신 러닝 모델의 트레이닝 태스크 또는 실행 태스크이고, 상기 계산형의 연산자 태스크는, 수학 연산 연산자, 어레이 연산 연산자 및 신경 네트워크 빌딩 블록 연산 연산자 중 적어도 하나를 포함하는 것,
    을 특징으로 하는 태스크 병렬 처리 구현 장치.
  28. 제16항에 있어서,
    상기 연산자 태스크의 하드웨어 실행 코스트는, 상기 연산자 태스크의 실행 시간, 및 상기 연산자 태스크의 하드웨어 점유 데이터 중 적어도 하나를 포함하고;
    상기 하드웨어 점유 데이터는 비디오 메모리 점유 비율, 칩 사용률, 및 네트워크 대역폭 사용률 중 적어도 하나를 포함하는 것,
    을 특징으로 하는 태스크 병렬 처리 구현 장치.
  29. 제28항에 있어서,
    상기 하드웨어 실행 코스트의 종류가 다양하면, 상기 병렬 계산 그래프의 총 실행 코스트는 다양한 종류의 총 실행 코스트의 조합이거나 다양한 종류의 총 실행 코스트에 대한 가중 합계인 것,
    을 특징으로 하는 태스크 병렬 처리 구현 장치.
  30. 태스크 병렬 처리 구현 장치로서,
    대상 태스크의 적어도 하나의 병렬 계산 그래프를 결정하기 위한 계산 그래프 결정 모듈 - 상기 병렬 계산 그래프는 다수의 연산자 태스크를 포함함 - ;
    클러스터 중 상기 병렬 계산 그래프의 연산자 태스크의 하드웨어 실행 코스트에 따라, 병렬 계산 그래프 및 연산자 스케줄링 방안을 선별하고 결정하기 위한 스케줄링 방안 선별 모듈 - 상기 클러스터는 상기 연산자 태스크를 실행하기 위한 다수의 노드를 포함하고; 상기 병렬 계산 그래프는 적어도 하나의 연산자 스케줄링 방안을 가짐 - ; 및,
    결정된 병렬 계산 그래프 및 연산자 스케줄링 방안에 따라, 상기 병렬 계산 그래프 중 연산자 태스크가 상기 클러스터에서 실행되도록 스케줄링하기 위한 태스크 스케줄링 실행 모듈;을 포함하고,
    상기 스케줄링 방안 선별 모듈은 구체적으로,
    각각의 상기 병렬 계산 그래프, 및 초기 연산자 스케줄링 방안에 대해, 연산자 태스크의 하드웨어 실행 코스트에 따라, 상기 병렬 계산 그래프의 총 실행 코스트를 결정하고;
    상기 총 실행 코스트에 따라 다수의 상기 병렬 계산 그래프에 대해 선별하고, 후보 병렬 계산 그래프를 결정하며;
    상기 후보 병렬 계산 그래프에 대해, 휴리스틱 알고리즘을 사용하여 다양한 후보 연산자 스케줄링 방안을 결정하고;
    각 그룹의 상기 후보 병렬 계산 그래프 및 후보 연산자 스케줄링 방안에 대해, 연산자 태스크의 하드웨어 실행 코스트에 따라, 상기 후보 병렬 계산 그래프 및 후보 연산자 스케줄링 방안의 총 실행 코스트를 결정하며;
    상기 후보 병렬 계산 그래프 및 후보 연산자 스케줄링 방안의 총 실행 코스트에 따라, 후보 병렬 계산 그래프에 대한 후보 연산자 스케줄링 방안을 선별하는 것,
    을 특징으로 하는 태스크 병렬 처리 구현 장치.
  31. 전자 기기에 있어서,
    적어도 하나의 프로세서; 및,
    상기 적어도 하나의 프로세서와 통신 연결되는 메모리를 포함하되;
    상기 메모리에는 상기 적어도 하나의 프로세서에 의해 실행 가능한 명령이 저장되고, 상기 명령은 상기 적어도 하나의 프로세서에 의해 실행되어, 상기 적어도 하나의 프로세서가 제1항 및 제3항 내지 제15항 중 어느 한 항에 따른 태스크 병렬 처리 구현 방법을 수행할 수 있도록 하는 것,
    을 특징으로 하는 전자 기기.
  32. 컴퓨터 명령이 저장되어 있는 비일시적 컴퓨터 판독 가능 저장 매체로서,
    상기 컴퓨터 명령은 상기 컴퓨터가 제1항 및 제3항 내지 제15항 중 어느 한 항에 따른 태스크 병렬 처리 구현 방법을 수행하도록 하는 것,
    을 특징으로 하는 비일시적 컴퓨터 판독 가능 저장 매체.
  33. 컴퓨터 판독 가능 매체에 저장되어 있는 컴퓨터 프로그램에 있어서,
    상기 컴퓨터 프로그램의 명령이 실행될 경우, 제1항 및 제3항 내지 제15항 중 어느 한 항의 방법이 실행되는,
    것을 특징으로 하는 컴퓨터 판독 가능 저장 매체에 저장되어 있는 컴퓨터 프로그램.
KR1020200178497A 2020-02-14 2020-12-18 태스크 병렬 처리 구현 방법, 장치, 기기 및 매체 KR102482122B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
CN202010093670.8 2020-02-14
CN202010093670.8A CN111309479B (zh) 2020-02-14 2020-02-14 一种任务并行处理的实现方法、装置、设备和介质

Publications (2)

Publication Number Publication Date
KR20210103928A KR20210103928A (ko) 2021-08-24
KR102482122B1 true KR102482122B1 (ko) 2022-12-27

Family

ID=71160098

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020200178497A KR102482122B1 (ko) 2020-02-14 2020-12-18 태스크 병렬 처리 구현 방법, 장치, 기기 및 매체

Country Status (5)

Country Link
US (1) US11954522B2 (ko)
EP (1) EP3866008A1 (ko)
JP (1) JP7094352B2 (ko)
KR (1) KR102482122B1 (ko)
CN (1) CN111309479B (ko)

Families Citing this family (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111309479B (zh) * 2020-02-14 2023-06-06 北京百度网讯科技有限公司 一种任务并行处理的实现方法、装置、设备和介质
CN111475684B (zh) * 2020-06-29 2020-09-22 北京一流科技有限公司 数据处理网络系统及其计算图生成方法
CN111783952B (zh) * 2020-06-30 2023-07-14 北京百度网讯科技有限公司 配置方法、装置、系统、电子设备以及存储介质
CN111899149A (zh) * 2020-07-09 2020-11-06 浙江大华技术股份有限公司 基于算子融合的图像处理方法和装置、存储介质
CN111953614B (zh) * 2020-08-07 2023-10-24 腾讯科技(深圳)有限公司 数据传输方法、装置、处理设备及介质
CN112948079B (zh) * 2021-02-18 2022-06-28 北京百度网讯科技有限公司 任务调度方法、装置、设备和计算机存储介质
US11941437B2 (en) * 2021-06-25 2024-03-26 Intel Corporation Graph partitioning to exploit batch-level parallelism
CN113449142A (zh) * 2021-06-30 2021-09-28 北京百度网讯科技有限公司 信息处理方法及装置、电子设备、存储介质及产品
CN113535400A (zh) * 2021-07-19 2021-10-22 闻泰通讯股份有限公司 并行计算资源分配方法与装置、存储介质、终端设备
CN114003306B (zh) * 2021-10-27 2024-03-15 上海商汤科技开发有限公司 一种显存优化方法、装置、设备及存储介质
CN114936096A (zh) * 2021-11-09 2022-08-23 北京百度网讯科技有限公司 调度算子的方法和装置
CN114091688B (zh) * 2021-11-25 2022-05-20 北京九章云极科技有限公司 一种计算资源获取方法、装置、电子设备和存储介质
WO2023096701A2 (en) * 2021-11-29 2023-06-01 University Of Southern California Scheduling distributed computing based on computational and network architecture
CN114819084B (zh) * 2022-04-26 2024-03-01 北京百度网讯科技有限公司 模型推理方法、装置、设备及存储介质
CN115269016A (zh) * 2022-09-27 2022-11-01 之江实验室 一种用于图计算的指令执行方法及装置
CN116467061B (zh) * 2023-06-19 2023-09-19 之江实验室 一种任务执行的方法、装置、存储介质及电子设备
CN116501502B (zh) * 2023-06-25 2023-09-05 电子科技大学 一种基于Pytorch框架的数据并行优化方法
CN117114091B (zh) * 2023-10-25 2024-03-05 深圳开鸿数字产业发展有限公司 基于联邦学习的计算图处理方法、计算机设备和存储介质
CN117271100B (zh) * 2023-11-21 2024-02-06 北京国科天迅科技股份有限公司 算法芯片集群调度方法、装置、计算机设备和存储介质
CN117437451B (zh) * 2023-12-21 2024-04-16 芯瞳半导体技术(山东)有限公司 图像匹配方法、装置、设备及存储介质

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2018538607A (ja) 2015-10-28 2018-12-27 グーグル エルエルシー 計算グラフの処理
CN109669772A (zh) 2018-12-28 2019-04-23 第四范式(北京)技术有限公司 计算图的并行执行方法和设备
US20190205737A1 (en) 2017-12-30 2019-07-04 Intel Corporation Machine learning accelerator mechanism
US20190266015A1 (en) * 2018-02-27 2019-08-29 Microsoft Technology Licensing, Llc Deep neural network workload scheduling

Family Cites Families (31)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7110525B1 (en) * 2001-06-25 2006-09-19 Toby Heller Agent training sensitive call routing system
US8813141B2 (en) * 2007-08-08 2014-08-19 At&T Intellectual Properties I, L.P. System and method of providing video content
CN101777064A (zh) * 2009-01-12 2010-07-14 鸿富锦精密工业(深圳)有限公司 图片搜索系统及方法
US8266289B2 (en) * 2009-04-23 2012-09-11 Microsoft Corporation Concurrent data processing in a distributed system
CN102043673B (zh) * 2009-10-21 2015-06-03 Sap欧洲公司 并行处理中执行任务的节点数量的优化选择系统及方法
KR102032367B1 (ko) * 2012-10-05 2019-10-16 한국전자통신연구원 태스크 처리 장치 및 방법
CN105940378B (zh) * 2014-02-27 2019-08-13 英特尔公司 用于分配可配置计算资源的技术
US10970628B2 (en) * 2015-11-09 2021-04-06 Google Llc Training neural networks represented as computational graphs
US10877816B2 (en) 2016-04-20 2020-12-29 Samsung Electronics Co., Ltd. Optimal task scheduler
US10656970B2 (en) * 2016-09-28 2020-05-19 Futurewei Technologies, Inc. Scheduling graph computing on heterogeneous processing resources based on energy efficiency
US10776121B2 (en) * 2017-05-10 2020-09-15 Atlantic Technical Organization System and method of execution map generation for schedule optimization of machine learning flows
CN107885762B (zh) * 2017-09-19 2021-06-11 北京百度网讯科技有限公司 智能大数据系统、提供智能大数据服务的方法和设备
KR20190054449A (ko) * 2017-11-13 2019-05-22 한국과학기술원 이종 클러스터 환경에서 신경망 트레이닝 가속화를 위한 연산 노드 배치 기법
CN109993299B (zh) * 2017-12-29 2024-02-27 中兴通讯股份有限公司 数据训练方法及装置、存储介质、电子装置
CN110018817A (zh) * 2018-01-05 2019-07-16 中兴通讯股份有限公司 数据的分布式运行方法及装置、存储介质及处理器
US20200301898A1 (en) * 2018-06-25 2020-09-24 BigStream Solutions, Inc. Systems and methods for accelerating data operations by utilizing dataflow subgraph templates
US20200050971A1 (en) * 2018-08-08 2020-02-13 International Business Machines Corporation Minibatch Parallel Machine Learning System Design
US20200082273A1 (en) * 2018-09-11 2020-03-12 Apple Inc. Compiling models for dedicated hardware
US10754709B2 (en) * 2018-09-26 2020-08-25 Ciena Corporation Scalable task scheduling systems and methods for cyclic interdependent tasks using semantic analysis
US20200184366A1 (en) * 2018-12-06 2020-06-11 Fujitsu Limited Scheduling task graph operations
CN111324445B (zh) * 2018-12-14 2024-04-02 中国科学院深圳先进技术研究院 一种任务调度模拟系统
US10949259B2 (en) * 2018-12-28 2021-03-16 Atlantic Technical Organization System and method of scheduling and computing resource allocation optimization of machine learning flows
US20200249998A1 (en) * 2019-02-01 2020-08-06 Alibaba Group Holding Limited Scheduling computation graph heterogeneous computer system
CN111859027A (zh) * 2019-04-24 2020-10-30 华为技术有限公司 图计算方法及装置
US11556756B2 (en) * 2019-04-25 2023-01-17 Alibaba Group Holding Limited Computation graph mapping in heterogeneous computer system
US11593540B1 (en) * 2019-05-31 2023-02-28 The Mathworks, Inc. Systems and methods for performing concurrency analysis in simulation environments
CN110399222B (zh) * 2019-07-25 2022-01-21 北京邮电大学 Gpu集群深度学习任务并行化方法、装置及电子设备
CN110503195A (zh) * 2019-08-14 2019-11-26 北京中科寒武纪科技有限公司 利用人工智能处理器执行任务的方法及其相关产品
CN110365799B (zh) * 2019-08-16 2022-04-22 广东浪潮大数据研究有限公司 一种集群多节点调度方法、装置和计算机可读存储介质
CN110489223B (zh) * 2019-08-26 2022-03-29 北京邮电大学 一种异构集群中任务调度方法、装置及电子设备
CN111309479B (zh) * 2020-02-14 2023-06-06 北京百度网讯科技有限公司 一种任务并行处理的实现方法、装置、设备和介质

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2018538607A (ja) 2015-10-28 2018-12-27 グーグル エルエルシー 計算グラフの処理
US20190205737A1 (en) 2017-12-30 2019-07-04 Intel Corporation Machine learning accelerator mechanism
US20190266015A1 (en) * 2018-02-27 2019-08-29 Microsoft Technology Licensing, Llc Deep neural network workload scheduling
CN109669772A (zh) 2018-12-28 2019-04-23 第四范式(北京)技术有限公司 计算图的并行执行方法和设备

Also Published As

Publication number Publication date
EP3866008A1 (en) 2021-08-18
JP2021128757A (ja) 2021-09-02
US20210255896A1 (en) 2021-08-19
CN111309479A (zh) 2020-06-19
CN111309479B (zh) 2023-06-06
JP7094352B2 (ja) 2022-07-01
KR20210103928A (ko) 2021-08-24
US11954522B2 (en) 2024-04-09

Similar Documents

Publication Publication Date Title
KR102482122B1 (ko) 태스크 병렬 처리 구현 방법, 장치, 기기 및 매체
Hu et al. Characterization and prediction of deep learning workloads in large-scale gpu datacenters
EP3274827B1 (en) Technologies for offloading and on-loading data for processor/coprocessor arrangements
CN109324875B (zh) 一种基于强化学习的数据中心服务器功耗管理与优化方法
JP6241300B2 (ja) ジョブスケジューリング装置、ジョブスケジューリング方法、およびジョブスケジューリングプログラム
CN114862656B (zh) 基于多gpu的分布式深度学习模型训练代价的获取方法
US20210248469A1 (en) Method and apparatus for scheduling deep learning reasoning engines, device, and medium
Che et al. A deep reinforcement learning approach to the optimization of data center task scheduling
US11334945B2 (en) Method and device for processing transaction request in blockchain, electronic apparatus, and storage medium
US11769125B2 (en) Method and apparatus for processing transaction requests in blockchain, device and medium
US20190034806A1 (en) Monitor-mine-manage cycle
US20210217031A1 (en) Method and apparatus for forecasting demand for talent, device and storage medium
US20220292303A1 (en) Systems and methods of resource configuration optimization for machine learning workloads
CN111488492A (zh) 用于检索图数据库的方法和装置
CN115373835A (zh) Flink集群的任务资源调整方法、装置及电子设备
Dogani et al. Multivariate workload and resource prediction in cloud computing using CNN and GRU by attention mechanism
Ho et al. A data-value-driven adaptation framework for energy efficiency for data intensive applications in clouds
Cunha et al. Context-aware execution migration tool for data science Jupyter Notebooks on hybrid clouds
Naqvi et al. Mascot: self-adaptive opportunistic offloading for cloud-enabled smart mobile applications with probabilistic graphical models at runtime
CN117290102A (zh) 跨域异构资源的调度方法及装置
Zhang et al. Autrascale: an automated and transfer learning solution for streaming system auto-scaling
Bedi et al. STOWP: A light-weight deep residual network integrated windowing strategy for storage workload prediction in cloud systems
CN116701091A (zh) 用于导出日志的方法、电子设备和计算机程序产品
Wang et al. An adaptive elasticity policy for staging based in-situ processing
JP2022023420A (ja) 情報処理装置、情報処理方法および情報処理プログラム

Legal Events

Date Code Title Description
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant