KR20200091790A - Gpu 연산의 동시 실행을 위한 플랫폼 - Google Patents

Gpu 연산의 동시 실행을 위한 플랫폼 Download PDF

Info

Publication number
KR20200091790A
KR20200091790A KR1020190144279A KR20190144279A KR20200091790A KR 20200091790 A KR20200091790 A KR 20200091790A KR 1020190144279 A KR1020190144279 A KR 1020190144279A KR 20190144279 A KR20190144279 A KR 20190144279A KR 20200091790 A KR20200091790 A KR 20200091790A
Authority
KR
South Korea
Prior art keywords
neural network
multipath neural
allocation
multipath
computing resource
Prior art date
Application number
KR1020190144279A
Other languages
English (en)
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 KR20200091790A publication Critical patent/KR20200091790A/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
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • G06F17/10Complex mathematical operations
    • G06F17/15Correlation function computation including computation of convolution operations
    • 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/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5011Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
    • G06F9/5016Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals the resource being the memory
    • 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/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • 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
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/045Combinations of networks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/06Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
    • G06N3/063Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
    • 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
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods
    • G06N3/082Learning methods modifying the architecture, e.g. adding, deleting or silencing nodes or connections
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/10Interfaces, programming languages or software development kits, e.g. for simulating neural networks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • G06T1/20Processor architectures; Processor configuration, e.g. pipelining
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • G06T1/60Memory management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Data Mining & Analysis (AREA)
  • Computing Systems (AREA)
  • Mathematical Physics (AREA)
  • Biomedical Technology (AREA)
  • Biophysics (AREA)
  • Health & Medical Sciences (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Molecular Biology (AREA)
  • General Health & Medical Sciences (AREA)
  • Evolutionary Computation (AREA)
  • Computational Linguistics (AREA)
  • Artificial Intelligence (AREA)
  • Mathematical Analysis (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • Algebra (AREA)
  • Databases & Information Systems (AREA)
  • Neurology (AREA)
  • Debugging And Monitoring (AREA)
  • Stored Programmes (AREA)

Abstract

인터페이스 및 처리 장치를 포함하는 다중 경로 신경망 분석기를 사용함으로써, 다중 경로 신경망에 컴퓨팅 리소스가 최적으로 할당될 수 있다. 인터페이스는 다중 경로 신경망을 수신할 수 있다. 처리 장치는, 다중 경로 신경망을 실행 가능한 컴퓨팅 리소스의 제1 할당이 할당되는, 다중 경로 신경망을 통한 임계 경로의 하나 이상의 레이어를 포함하는 다중 경로 신경망을 생성할 수 있다. 임계 경로는 다중 경로 신경망의 처리량을 제한할 수 있다. 컴퓨팅 리소스의 제1 할당은 다중 경로 신경망의 실행 시간을 다중 경로 신경망에 대한 컴퓨팅 리소스의 제2 할당의 기준 실행 시간 미만으로 감소시킬 수 있다. 임계 경로의 제1 레이어에 대한 컴퓨팅 리소스의 제1 할당은, 임계 경로의 제1 레이어에 대한 컴퓨팅 리소스의 제2 할당과 상이할 수 있다.

Description

GPU 연산의 동시 실행을 위한 플랫폼{PLATFORM FOR CONCURRENT EXECUTION OF GPU OPERATIONS}
본 개시는 신경망에 관한 것이다. 보다 구체적으로, 본 개시는 컴퓨팅 리소스들을 다중 경로 신경망의 서로 다른 경로에서 서로 다른 레이어에 할당하기 위한 시스템 및 방법에 관한 것이다.
일반적인 그래픽 처리 장치(GPU) 플랫폼에서는 GPU 연산을 동시에 실행할 수 없다. 일반적인 GPU에서 여러 연산을 동시에 시작하려면 각각의 연산을 별도의 프로그램, 즉 CUDA 프로그래밍 모델의 별도 스트림에 할당해야 한다. 그러나, 대부분의 일반적인 GPU 커널에서, 2개 이상의 GPU 커널을 동시에 실행하는 것은 거의 불가능하다. 일반적인 커널은 모든 GPU 코어 리소스(레지스터 및 공유 메모리 포함)들을 차지하며, GPU 스케줄러가 동일한 코어의 다른 커널에서 블록을 실행할 수 없다. 현재 GPU 플랫폼은 스케줄링을 위해 많은 블록을 사용하므로 다른 GPU 연산의 동시 실행은 블록 수가 적은 경우에만 가능하다. 대부분의 GPU 커널에는 일반적으로 사용 가능한 모든 GPU 코어를 점유하기에 충분한 수의 블록이 있으므로, 첫 번째 커널이 완료될 때까지 다른 GPU 커널의 실행이 연기되어, 두 연산이 순차적으로 실행되는 결과를 가져온다. 따라서, 현재의 GPU 플랫폼은 개별 레이어(커널)를 위해 장치(예: GPU) 코어들을 100% 활용함으로써, 독립적인 커널들의 동시 실행을 방지한다.
현재 GPU 플랫폼과 관련된 또 다른 약점은 비효율적인 리소스 활용이다. GPU 커널은 특정 입력 및 GPU 마이크로 구조에서의 실행에 맞게 최적화될 수 있지만, 계산 효율성 및 DRAM 활용도는 일부 입력에 대한 다중 GPU 알고리즘에 대해 충분히 최적화되지 않았다. 예를 들어, 일부 컨볼루션(주로 GEMM 기반)의 실행 시간은 제한된 수의 코어로 포화되고, 추가 코어에서 컨볼루션(convolution)을 실행하게 되면 코어의 활용도가 떨어지는 결과가 발생한다. 여러 연산을 동시에 실행하면, 알고리즘, 입력 데이터, 데이터 레이아웃 및 마이크로 구조를 고려하여, 하나의 GPU 연산에서 활용률이 낮은 리소스를 다른 GPU 연산에 사용할 수 있다.
현재 GPU 플랫폼과 관련된 또 다른 약점은, 기존의 GPU 플랫폼이 GPU 장치가 연산을 수신하는 방식 순서대로 순차적으로 연산을 실행한다는 것인데, 이는 먼저 요청된 연산의 지연을 줄이기 위해 우선순위가 결정되었던 것이다. 이러한 스케줄링 접근법은 다수의 애플리케이션에 대한 GPU 연산의 평균 지연 시간을 증가시킬 수 있다. 예를 들어, 완료하는데 시간이 덜 걸리는 다른 GPU 연산이 도착하기 전에, 상당한 시간이 걸리는 GPU 연산이 GPU 장치에 도착하면, 두 번째 GPU 연산의 대기 시간(또는 응답 시간)이 불필요하게 길어진다.
현재 GPU 플랫폼과 관련된 또 다른 약점은, 현재 GPU 플랫폼이 다중 경로를 가진 작업에 최적화되어 있지 않다는 것이다. GPU 작업은 DAG(Directed Acyclic Graph)를 형성할 수 있으며, 여기서 각 노드는 연산을 나타내고, 노드 A에서 노드 B로의 방향성 에지는 노드 A와 B 사이의 입력-출력 의존성을 나타낸다. 즉, 노드 B는 노드 A 이후에 실행되어야 한다. 최근에 다중 경로 계산 그래프를 갖는 GPU 작업이 일반화 되었다. 다중 경로 작업은, 단일 사용자, GPU 플랫폼을 공유하는 여러 사용자 또는 여러 경로를 가진 단일 GPU 애플리케이션에서 시작한 서로 다른 GPU 애플리케이션들에서 발생할 수 있다. 다중 경로 신경망은 다중 경로를 갖는 단일 GPU 애플리케이션의 일 예이다.
다중 경로 신경망은 현실에서 머신 러닝(ML) 문제를 더 잘 표현함으로써 ML 커뮤니티에서 상당한 주목을 받았다. 일반적으로, 신경망 경로와 병렬로, 전체 신경망의 처리량을 제한하는 임계 경로로 지칭될 수 있는 하나의 경로가 있을 것이다. 신경망을 통한 신호 흐름은 일련의 종속 레이어들을 통한 신호 흐름으로 특징될 수 있다. 일반적으로, 신경망이 실행될 때, 레이어들은 특정 레이어로의 입력이 직전 순서의 레이어의 출력에 의존하도록, 순차적 반복으로 실행된다.
현재의 딥 러닝 틀은 다른 경로 또는 다른 경로를 실행하는 커널 간의 리소스 할당을 기반으로 다중 경로 신경망 실행을 최적화 하도록 구성되지 않았다. 커널을 실행하는데 필요한 총 작업 공간 메모리가 신경망을 실행하는 장치에서 사용 가능한 메모리보다 큰 경우, 비효율적인 메모리 할당으로 인해 다중 경로 신경망의 커널이 동시에 실행되지 않을 수 있다. 다중 경로 신경망의 임계 경로에서의 비효율적인 컴퓨팅 리소스 할당은 전체 신경망의 처리량에 악영향을 줄 수 있다.
본 개시는 컴퓨팅 리소스들을 할당하기 위한 시스템 및 방법을 제공한다.
본 개시의 일 실시예는 다중 경로 신경망을 제공할 수 있다. 다중 경로 신경망은 다중 경로 신경망을 통한 2개 이상의 경로, 및 하나 이상의 레이어를 포함하는 제1 경로를 포함할 수 있다. 상기 제1 경로는 다중 경로 신경망의 처리량을 제한하는, 상기 다중 경로 신경망을 통한 임계 경로를 포함할 수 있다. 다중 경로 신경망은, 상기 다중 경로 신경망을 실행하기 위해 이용 가능한 컴퓨팅 리소스의 제1 할당이 할당되는 상기 임계 경로의 제1 레이어, 및 상기 다중 경로 신경망의 실행 시간을 상기 다중 경로 신경망에 대한 컴퓨팅 리소스의 제2 할당의 기준 실행 시간보다 짧게 감소시키는 상기 컴퓨팅 리소스의 제1 할당을 포함할 수 있다. 상기 컴퓨팅 리소스의 제1 할당은 상기 제1 레이어에 대한 상기 컴퓨팅 리소스의 제2 할당과 상이할 수 있다. 일 실시예에서, 제1 레이어에 대한 컴퓨팅 리소스의 제1 할당은 다중 경로 신경망을 실행하기 전에 할당될 수 있다. 다른 실시예에서, 제1 레이어에 대한 컴퓨팅 리소스의 제1 할당은 다중 경로 신경망이 실행되는 도중에 할당될 수 있다.
본 개시의 일 실시예는 다중 경로 신경망의 레이어들에 리소스를 할당하는 방법을 제공할 수 있다. 다중 경로 신경망의 레이어들에 리소스를 할당하는 방법은, 다중 경로 신경망을 실행할 수 있고 다중 경로 신경망을 통한 2개 이상의 경로를 포함하는 다중 경로 신경망에, 컴퓨팅 리소스를 할당하는, 컴퓨팅 리소스의 제1 컴퓨팅 리소스 할당에 기초하여, 상기 다중 경로 신경망에 대한 기준 실행 시간을 결정하고, 상기 2개 이상의 경로에 대한 하나 이상의, 각각이 제1 컴퓨팅 리소스 할당과 상이한, 제2 컴퓨팅 리소스 할당에 대해 상기 다중 경로 신경망을 통한 상기 2개 이상의 경로의 실행 시간을 반복적으로 결정하고, 상기 다중 경로 신경망에 대한 전체 기준 실행 시간보다 짧은, 상기 다중 경로 신경망에 대한 전체 실행 시간을 제공하는, 제1 경로에서 제1 레이어에 대한 제2 컴퓨팅 리소스 할당을 식별할 수 있다.
본 개시의 일 실시예는 인터페이스 및 처리 장치를 포함하는 다중 경로 신경망 분석기를 제공할 수 있다. 인터페이스는 다중 경로 신경망을 통한 2개 이상의 경로 및 하나 이상의 레이어를 포함하는 2개 이상의 경로의 제1 경로를 포함할 수 있다. 처리 장치는 다중 경로 신경망을 실행 가능한 컴퓨팅 리소스의 제1 할당이 할당되는 상기 다중 경로 신경망을 통한 임계 경로의 하나 이상의 레이어를 포함하는 다중 경로 신경망을 생성할 수 있다. 상기 임계 경로는 상기 다중 경로 신경망의 처리량을 제한할 수 있다. 상기 컴퓨팅 리소스의 제1 할당은 상기 다중 경로 신경망의 실행 시간을 상기 다중 경로 신경망에 대한 컴퓨팅 리소스의 제2 할당의 기준 실행 시간 미만으로 감소시킬 수 있다. 임계 경로의 제1 레이어에 대한 상기 컴퓨팅 리소스의 제1 할당은 임계 경로의 제1 레이어에 대한 컴퓨팅 리소스의 제2 할당과 상이할 수 있다.
본 개시에 따른 시스템 및 방법을 통해, 컴퓨팅 리소스들을 할당할 수 있다.
본 개시의 양상들은 도면에 도시된 예시적인 실시예들을 참조하여 설명될 것이다.
도 1은 본 개시에 따른 다중 경로 신경망의 서로 다른 경로에서 서로 다른 레이어로의 컴퓨팅 리소스의 할당 또는 분할을 최적화하는 다중 경로 신경망 분석기의 기능 블록도를 도시한다.
도 2a는 본 개시의 일 실시예에 따른 수정된 커널 개시 함수를 사용하여 다수의 GPU 연산이 동시에 스케줄링 된 4개의 코어를 갖는 GPU와 같은 프로세싱 유닛을 도시한다.
도 2b는 본 개시에 따른 수정된 커널 개시 함수를 사용하여 제2 커널이 시작된 후의 GPU를 도시한다.
도 3은 일 실시예에서 입력과 의사 결정 모듈 사이에 2개의 경로를 갖는 다중 경로 신경망을 도시한다.
도 4a는 일 실시예에서 다중 경로 신경망을 통한 2개의 경로의 일부의 상대적인 기준 실행 시간 및 시퀀스를 도시한다.
도 4b는 일 실시예에서 컨볼루션 레이어가 4.5GB로 할당된 두 경로에 대한 상대적인 실행 시간 및 시퀀스를 도시한다.
도 4c는 일 실시예에서 컨볼루션 레이어가 4.0GB의 메모리로 할당된 두 경로에 대한 상대적인 실행 시간 및 시퀀스를 도시한다.
도 5는 본 개시에 따른 일 실시예에서 레이어의 윈도우 기반 리소스 할당 분석을 도시한다.
도 6은 도 1의 다중 경로 신경망 분석기를 구현하는데 사용될 수 있는 데이터 처리 시스템에 대한 예시적인 구조의 블록도를 도시한다.
본 개시의 주제는 단일 GPU 장치 상에서 동시에 실행되는 커널들 사이에서 컴퓨팅 리소스를 효율적으로 할당 또는 분할하기 위한 시스템 및 방법에 관한 것이다. 본 개시의 시스템은 코어 할당 및/또는 코어 재분배에 의해 단일 GPU 장치에서 다수의 GPU 연산의 병렬 및/또는 동시 실행을 스케줄링할 수 있다. 시스템에 대한 API(애플리케이션 프로그래밍 인터페이스)를 통해 사용자는 동시에 예약할 GPU 연산을 선택하고, 동시 연산에 컴퓨팅 리소스를 할당 할 수 있다.
본 개시의 시스템 및 방법은 다중 경로 신경망의 성능을 최적화하기 위해 컴퓨팅 리소스를 할당하는데 사용될 수 있다. 일 실시예에서, 다중 경로 신경망의 서로 다른 경로에서 서로 다른 레이어에 대해 동시 실행이 가능할 수 있다. 다중 경로 신경망 애플리케이션의 자동 최적화는 인과관계 리소스 프로파일링 기술(causal resource profiling technique)에 기초하여 제공될 수 있다. 일 실시예에서, 인과관계 리소스 프로파일링 기술은 다중 경로 신경망의 자동 최적화를 제공할 수 있다. 최적의 리소스 할당은, 컴퓨팅 리소스와, 컴퓨팅 리소스의 할당 레벨에 의해 영향을 받는 신경망에서의 레이어의 실행 시간 사이의 관계에 기초하여 식별될 수 있다.
또한, 인과관계 리소스 프로파일링은 다중 경로 신경망을 통한 임계 경로, 및 컴퓨팅 리소스와, 컴퓨팅 리소스에 연관된 실행 시간 사이의 관계에 기초할 수 있다. 비용 모델 템플릿은 성능 분석을 위해 사용될 수 있으며, 최적의 리소스 할당을 결정하기 위한 분석의 복잡성을 감소시키기 위해 하나 이상의 귀납법(heuristics)이 사용될 수 있다. 또한, 다중 경로 신경망 애플리케이션의 실행의 스케줄링은 인과관계 리소스 프로파일링 기술을 사용하여 최적화될 수 있다.
본 개시의 리소스 할당 기술은 전체 신경망의 성능 결과를 향상시키기 위해 다중 경로 신경망의 레이어들 사이에 컴퓨팅 리소스를 할당할 수 있다. 다중 경로 신경망의 레이어들에 대한 리소스 이용률의 수정에 기초하여 네트워크 성능이 분석될 수 있고, 성능 분석이 특정 컴퓨팅 리소스 할당에 기초하여 성능 개선을 나타내는 경우 개별 레이어의 리소스 이용률이 업데이트되거나 재구성될 수 있다.
본 개시의 일 실시예에서는 컴퓨팅 리소스를 커널 간에 분할할 수 있는 프로그래밍 인터페이스를 제공할 수 있다. 동시 실행에 대한 프로그래머 지원이 제한되고, 커널에 대한 GPU 코어의 수를 결정하기 위해 실행되는 스레드(thread) 블록의 수에 의존하는 종래 GPU 플랫폼과 달리, 본 개시에서는 프로그래머가 동시에 실행되는 GPU 연산 및 동시 연산에 대한 리소스 할당을 정의할 수 있는 프로그래밍 인터페이스가 제공된다.
정적 및 동적 리소스 할당은 본 개시의 시스템 및 방법에 의해 지원될 수 있다. 정적 할당의 경우, 애플리케이션이 실행되기 전에 리소스가 개별 레이어에 할당될 수 있다. 동적 할당의 경우, 토폴로지(topology), 입력, 배치 크기 등의 변화와 같은 네트워크 변화에 기반한 유연성을 제공하기 위해 실행 시간(runtime) 중에 리소스를 할당 할 수 있다.
도 1은 본 개시에 따른 다중 경로 신경망의 서로 다른 경로에서 서로 다른 레이어로의 컴퓨팅 리소스의 할당 또는 분할을 최적화하는 다중 경로 신경망 분석기(100)의 기능 블록도를 도시한다. 일 실시예에서, 다중 경로 신경망 분석기(100)는 적합한 소프트웨어를 실행하는 데이터 처리 시스템으로서 구현될 수 있다. 다중 경로 신경망 분석기(100)는 다중 경로 신경망 분석기(100)에 이용 가능한 컴퓨팅 리소스를 사용하여 실행을 위한 입력으로서 다중 경로 신경망(101)을 수신할 수 있다. 다중 경로 신경망(101)은 완전-정밀 훈련된(full-precision trained) 신경망일 수 있다. 대안적으로, 다중 경로 신경망(101)은 훈련되는 신경망일 수 있다. 다중 경로 신경망 분석기(100)는 인과관계 리소스 프로파일링을 사용하여 다중 경로 신경망(101)의 서로 다른 경로들에서 서로 다른 레이어들을 분석하고, 다중 경로 신경망(101)이 최소 시간 내에 실행 또는 작동되도록 컴퓨팅 리소스의 최적 할당 또는 분할을 결정할 수 있다.
일 실시예에서, 다중 경로 신경망 분석기(100)는 다중 경로 신경망이 실행되기 전에 다중 경로 신경망의 하나 이상의 경로의 하나 이상의 레이어에 대한 컴퓨팅 리소스의 최적화된 할당을 생성할 수 있다. 신경망이 실행될 때, 컴퓨팅 리소스의 최적화된 할당이 사용될 수 있다. 다른 실시예에서, 다중 경로 신경망 분석기(100)는, 신경망이 컴퓨팅 장치에서 구체화될 때 신경망의 최적화된 구성이 실행되도록, 신경망과 관련된 다중 경로 신경망의 하나 이상의 경로의 하나 이상의 레이어에 대한 컴퓨팅 리소스를 정의하는 파라미터를 최적화할 수 있다. 또 다른 실시예에서, 다중 경로 신경망 분석기(100)는, 다중 경로 신경망의 실행 중 다중 경로 신경망의 하나 이상의 경로의 하나 이상의 레이어에 대한 컴퓨팅 리소스의 할당을 동적으로 업데이트하여, 토폴로지(topology), 입력, 배치 크기 등의 변화와 같은 네트워크 변화에 기반한 유연성을 제공할 수 있다.
처음으로, 도 1의 102를 참조하면, 다중 경로 신경망 분석기(100)는, 하나 이상의 순서 의존적 레이어를 갖는 다중 경로 신경망(101)의 서로 다른 경로에, 대응하는 스트림을 할당한다. 도 1의 103에서, 다중 경로 신경망 분석기(100)는 기준 리소스 할당 상태를 생성한다. 도 5를 참조하여 후술할 바와 같이, 컴퓨팅 리소스의 서로 다른 할당에 대해 인과관계 리소스 프로파일(casual resource profile)을 수행하는 복잡성을 감소시키기 위해 윈도우, 또는 그룹화 크기가 추가로 생성될 수 있다. 도 1의 104에서, 다중 경로 신경망 분석기(100)는 최적의 컴퓨팅 리소스 할당을 결정하기 위해 서로 다른 컴퓨팅 리소스 할당의 성능 분석을 수행할 수 있다. 장치 리소스 제약(105)은, 이용 가능한 컴퓨팅 리소스에 제약 및/또는 경계를 두는 사용자 입력으로부터 수신될 수 있다. 장치 리소스 제약(105)들은 다중 경로 신경망(101)을 수신하기 전에 사용자로부터 수신될 수 있다. 성능 분석은 103에서 생성된 윈도우 또는 그룹화 크기를 사용할 수 있다. 분석되는 서로 다른 컴퓨팅 리소스 할당의 개수는, 최적의 성능 솔루션을 제공하지 않을 수 있는 컴퓨터 리소스 할당을 가지치기 또는 폐기함으로써, 106에서 감소될 수 있다. 성능 분석 중에 레이어 리소스의 비용 모델 템플릿(107)이 사용될 수 있다.
스케줄러(108)는 분석되는 서로 다른 레이어 및 경로의 일부 및/또는 분석되는 다중 경로 신경망(101)의 전체 처리량 성능을 시뮬레이션 할 수 있다. 도 1의 109에서, 더 나은 컴퓨팅 리소스 할당이 서로 다른 레이어 및/또는 경로에 대해 결정되고, 더 나은 스케줄링 할당이 다중 경로 신경망(101)에 대해 결정됨에 따라, 다중 경로 신경망 분석기(100)는 더 나은 할당으로 103의 레이어들의 기준 리소스 할당을 업데이트 하며, 더 나은 스케줄링 할당이 다중 경로 신경망(101)이 실행될 때 사용될 수 있다.
연산에서, 다중 경로 신경망 분석기(100)는 사용자가 다중 경로 신경망을 실행하는데 이용될 수 있는 컴퓨팅 리소스에 대한 제약을 선택적으로 설정할 수 있게 하는 API(Application Programming Interface)를 통해 장치 리소스 제약(105)을 수신할 수 있다. 일 실시예에서, 프로세싱 유닛 또는 컴퓨팅 유닛의 최소 코어 수 및/또는 최대 코어 수는 프로세싱 유닛 상에서 다중 경로 신경망의 경로를 실행하는 하나 이상의 커널에 대해 사용자가 선택할 수 있다. 아래의 표 1은 본 개시의 일 실시예에서, 커널에 사용될 수 있는 최소 및 최대 코어 개수와 같은 리소스 제한을 제공할 수 있고, OpenCL 프로그래밍 틀에서 사용될 수 있는 수정된 커널 개시 함수를 나타낸다. clEnqueueNDRangeKernel 커널 개시 명령은, 예를 들어, "min_cores" 인수와 "max_cores" 인수라는 두 개의 추가 인수를 포함하도록 수정될 수 있다. 특히, "const cl_uint min_cores" 인수 및 "const cl_uint max_cores" 인수는 OpenCL 틀의 clEnqueueNDRangeKernel 커널 개시 명령에 추가될 수 있다. clEnqueueNDRangeKernel 커널 개시 명령의 인수 목록 끝에 두 개의 추가 변수 설정 인수가 나타날 수 있다.
"min_cores" 인수는 다른 커널과 함께 실행할 때, 커널에 사용되는 프로세싱 유닛의 최소 코어 수를 정의하는데 사용될 수 있으며, "max_cores" 인수는 단독 실행될 때, 커널에 사용되는 프로세싱 유닛의 최대 코어 수를 정의하는데 사용될 수 있다. 사용자는 커널의 스레드 블록 수에 관계 없이 커널에 사용될 코어의 수를 정의할 수 있다.
cl_int clEnqueueNDRangeKernel ( cl_command_queue command_queue,
cl_kernel kernel,
cl_uint work_dim,
const size_t *global_work_offset,
const size_t *global_work_size,
const size_t *local_work_size,
cl_uint num_events_in_wait_list,
const cl_event *event_wait_list,
cl_event *event,
const cl_uint min_cores,
const cl_uint max_cores)
도 2a는 본 개시의 일 실시예에 따른 수정된 커널 개시 함수를 사용하여 다수의 GPU 연산이 동시에 스케줄링 된 4개의 코어(코어1 내지 코어4)를 갖는 GPU와 같은 프로세싱 유닛을 도시한다. 먼저, 수정된 커널 개시 함수는 커널 201의 최소/최대_코어 인수를 2/3으로 설정하는데 사용된다. 일 실시예에서, 커널 201은 도 2a와 같이 코어1 내지 코어3에 분배된, GPU 코어1 내지 코어4에서 실행되는 12개의 스레드 블록을 가질 수 있다.
두 번째 커널 202은 최소/최대_코어 인수가 2/4로 설정되도록 구성될 수 있다. 도 2b와 같이, 커널 202이 GPU 장치에서 개시될 때, GPU 스케줄러(미도시)는 스레드 블록 이주를 수행하며, 종래 코어3에 할당된 커널 201의 스레드 블록이, 먼저 실행된 커널 201 및 새로 실행되는 커널 202 모두에 대한 최소/최대_코어 인수에 기초하여, 코어1 및 코어2로 이주될 수 있다. 이 경우, 두 커널 모두 최소 코어 인수가 2이므로, 커널 201 및 커널 202 각각을 실행하기 위하여 최소 2개씩의 GPU 코어를 설정할 수 있다. 서로 다른 코어1 내지 코어4는 서로 다른 수의 스레드 블록을 실행할 수 있다. 또한, 특정 코어들은 도 2a 또는 도 2b에 도시된 것과 다르게 할당될 수 있다.
사용자에 의해 입력된 장치 리소스 제약(105)들에 기초하여, 다중 경로 신경망 분석기(100)는 인과관계 리소스 프로파일링을 사용하여 다중 경로 신경망(101)을 실행하기 위한 최적의 컴퓨팅 리소스 할당 또는 분할을 결정할 수 있다. 일 실시예에서, 인과관계 리소스 프로파일링은 컴퓨팅 리소스 할당의 변화가 예를 들어, 임계 경로를 통한 실행 시간에 어떤 영향을 미치는지를 식별하기 위해, 다중 경로 신경망(101)을 통한 임계 경로에서 수행될 수 있다. 또한, 인과관계 리소스 프로파일링은 다중 경로 신경망(101)의 서로 다른 경로에서의 컴퓨팅 리소스 할당의 변화가 다중 경로 신경망(101)의 전체 실행 시간에 어떻게 영향을 미칠 수 있는지를 식별하는데 사용될 수 있다.
도 3은 일 실시예에서 입력(303)과 의사 결정 모듈(304) 사이에 2개의 경로(301, 302)를 갖는 다중 경로 신경망(300)을 도시한다. 제1 경로(301)는 5개의 순서 의존적 레이어들을 포함할 수 있고, 제2 경로(302)는 4개의 순서 의존적 레이어들을 포함할 수 있다. 예를 들어, 도 3에 도시된 신경망의 경우, 제2 경로(302)는 다중 경로 신경망(300)의 전체 처리량을 제한하는 다중 경로 신경망(300)을 통한 임계 경로일 수 있다. 즉, 제2 경로(302)를 따른 계산 및 처리는 제1 경로(301)를 따른 계산 및 처리보다 완료하는데 더 오래 걸릴 수 있다. 인과관계 리소스 프로파일링은 우선 컴퓨팅 리소스의 기준 할당에 기초하여 임계 경로(302)를 통한 기준 실행 시간을 결정할 수 있다. 다중 경로 신경망(300)의 다른 경로들 각각을 통한 기준 실행 시간들도 컴퓨팅 리소스의 기준 할당에 기초하여 결정될 수 있다. 컴퓨팅 리소스 할당의 변화가 임계 경로의 실행 시간에 어떤 영향을 미치는지를 결정하기 위해, 컴퓨팅 리소스의 할당이 임계 경로의 레이어에 따라 달라질 수 있다.
인과관계 리소스 프로파일링은, 신경망 레이어의 실행 시간이 리소스 할당에 의존하기 때문에, 리소스 할당과 실행 시간 사이의 매핑을 포함할 수 있다. 예를 들어, 임계 경로(302)에서 특정 함수(즉, 레이어)의 20% 가속은 다중 경로 신경망(300) 애플리케이션의 전체 런타임(runtime)을 5%만큼 잠재적으로 개선(즉, 감소)할 수 있다.
인과관계 리소스 프로파일링은, 다중 경로 신경망의 다양한 경로들의 서로 다른 레이어들에 할당된 컴퓨팅 리소스들의 변화가 임계 경로와 관련된 실행 시간을 어떻게 변화시킬 수 있는지를 결정하기 위해, 다중 경로 신경망의 다른 경로들을 분석하도록 확장될 수 있다. 다중 경로 신경망의 특정 레이어에 대해 더 적은 장치 코어를 할당하면, 해당 레이어에 대한 실행 시간은 증가할 수 있지만, 다른 경로의 다른 레이어의 실행 시간을 유리하게 감소시킬 수 있도록 컴퓨팅 리소스를 자유롭게 만들 수 있다.
일 실시예에서, 다중 경로 신경망의 다른 레이어 및 경로에 대한 다른 컴퓨팅 리소스 할당에 기초한 다중 경로 신경망의 성능을 결정하기 위해, 복수의 시뮬레이션이 실행될 수 있다. 최적의 리소스 할당은 다른 컴퓨팅 리소스 할당에 대한 다중 경로 신경망의 추정된 실행 시간에 기초하여 결정될 수 있다.
도 4a는 일 실시예에서 다중 경로 신경망을 통한 2개의 경로의 일부의 상대적인 기준 실행 시간 및 시퀀스를 도시한다. 제1 데이터 스트림(401)은 다중 경로 신경망을 통한 제1 경로를 나타내는 일련의 레이어들(함수들)(예를 들어, 맥스풀(Maxpool) 레이어 및 완전연결(Fully connected, FC) 레이어)에 의해 실행될 수 있다. 제2 데이터 스트림(402)은 다중 경로 신경망을 통한 제2 경로를 나타내는 일련의 레이어들(예를 들어, 컨볼루션(Convolution) 레이어 및 정류 선형 유닛(Rectified linear unit, ReLu) 레이어)에 의해 실행될 수 있다. 어느 경로도 임계 경로로 식별되지 않지만, 도 4a를 참조하면, 상부 경로가 하부 경로보다 실행을 완료(점선)하는데 더 오래 걸릴 수 있다.
도 4a를 참조하면, 각각의 레이어 또는 함수는 레이어의 함수에 할당된, 표시된 메모리 컴퓨팅 리소스를 포함할 수 있다. 예를 들어, 맥스풀 레이어에 1GB의 메모리가 할당될 수 있다. FC 레이어에 0.5GB가 할당될 수 있다. 컨볼루션 레이어에는 5GB가 할당될 수 있고, ReLu 레이어에는 1GB가 할당될 수 있다. 이 경우, 최대 5GB의 메모리를 모든 경로의 모든 레이어에 할당할 수 있다. 따라서, 도 4a에 도시된 메모리 할당에서는, 이용 가능한 5GB의 메모리가 모두 컨볼루션 레이어에 할당되었기 때문에, 2개의 경로 중 어느 레이어도 컨볼루션 레이어와 동시에 실행되지 않도록 한다.
도 4b는 일 실시예에서 컨볼루션 레이어가 4.5GB로 할당된 두 경로에 대한 상대적인 실행 시간 및 시퀀스를 도시한다. 하부 경로(스트림 402)에서 컨볼루션 레이어에 할당된 메모리의 양을 기준 할당(도 4a)으로부터 10% 감소시킴으로써, 상부 경로(스트림 401)의 FC 레이어는 컨볼루션 레이어와 동시에 실행될 수 있다. 0.5GB의 메모리로 FC 레이어의 실행이 가능하므로, FC 레이어가 컨볼루션 레이어와 동시에 실행될 수 있기 때문에, 다중 경로 신경망(즉, 양쪽 경로)의 전체 실행 시간(점선)도 줄어들 수 있다.
도 4c는 일 실시예에서 컨볼루션 레이어가 4.0GB의 메모리로 할당된 두 경로에 대한 상대적인 실행 시간 및 시퀀스를 도시한다. 하부 경로(스트림 402)의 컨볼루션 레이어에 할당된 메모리의 양을 기준 할당(도 4a)으로부터 20%만큼 감소시킴으로써, 상부 경로(스트림 401)의 맥스풀 레이어는 하부 경로의 컨볼루션 레이어와 동시에 실행될 수 있다. 또한, 상부 경로의 FC 레이어는 맥스풀 레이어가 완료될 때, 컨볼루션 레이어와 동시에 실행될 수 있다. 하부 경로의 ReLu 레이어는 컨볼루션 레이어가 완료될 때, FC 레이어와 동시에 실행될 수 있다. 다중 경로 신경망(즉, 양쪽 경로)의 전체 실행 시간(점선)은 컨볼루션 레이어의 메모리 할당을 감소시킴으로써 더 줄어들 수 있다. 도 4b 및 도 4c에 구체적으로 도시되어 있지는 않으나, 컨볼루션 레이어는 감소된 메모리 할당에 기초하여 실행하는데 시간이 조금 더 걸릴 수 있지만, 양쪽 경로에 대한 전체 실행 시간은 상당히 줄어들 수 있다. 컨볼루션 레이어의 메모리 할당의 예시적인 감소는, 다중 경로 신경망에 정적으로 적용될 수 있어서, 다중 경로 신경망의 각각의 후속 구체화는 전체적으로 감소된 실행 시간으로 실행될 수 있다. 대안적으로, 메모리 할당의 예시적인 감소는 동적으로 결정되고 토폴로지(topology), 입력, 배치 크기 등의 변화와 같은 네트워크 변화를 설명하기 위해 신경망의 실시간 구체화에 적용될 수 있다.
비용 모델은 각 레이어의 실행 시간과 컴퓨팅 리소스 활용률을 연관 짓는 신경망에서 일반적으로 사용되는 레이어들의 인과관계 리소스 프로파일링에 사용될 수 있다. 인과관계 리소스 프로파일링 도중 고려될 수 있는 컴퓨팅 리소스는 장치 컴퓨팅 유닛, 메모리 공간 및 메모리 대역폭을 포함할 수 있다. CPU 컴퓨팅 유닛의 경우 코어 수를 고려할 수 있다. GPU 컴퓨팅 유닛의 경우 스트리밍 다중 프로세서(Streaming multiprocessor, SM)의 수를 고려할 수 있다. FPGA의 경우, FPGA 영역을 고려할 수 있다. 리소스 할당의 유닛은 전형적으로 이산 값(예를 들어, 코어의 수, 레이어의 다른 구현을 위한 메모리/작업공간)일 수 있다.
다중 경로 신경망의 인과관계 리소스 프로파일링 성능 분석에 사용될 수 있는 하나의 정의는 다음과 같다. 다중 경로 신경망으로의 입력을 위해, k개의 실행 스트림은 각각 k개의 다중 경로 신경망의 경로로 입력된다. 각각의 스트림 s에 대해, ns개의 순서 의존적 레이어들 l이 존재한다. 하나의 경로의 각각의 레이어 l마다, ml개의 서로 다른 구현 방법이 있다. 각각의 구현 방법에는 실행 시간 tml,k와 활용을 위한 리소스 세트
Figure pat00001
가 있다. 정의의 목적은 아래의 수학식 1과 같이 다중 경로 신경망의 전체 실행 시간을 최소화하는 모든 레이어들의 병렬 스케줄링 및 구현을 찾는 것이다.
Figure pat00002
여기서, K는 총 레이어들의 개수이고, Wr,l는 레이어 l의 리소스 r의 활용이고, Mr은 다중 경로 신경망의 실행에 이용 가능한 최대의 리소스 r이고, αl,t는 레이어 l이 시간 t에 실행 중이면 1, 그렇지 않으면 0이다.
리소스 할당의 복잡성을 줄이기 위해 몇가지 귀납법이 사용될 수 있다. 예를 들어, 검색 공간이 제거될 수 있다. 예를 들어, ti>tj이고
Figure pat00003
인, 레이어 l에 대한 다른 구현 j가 존재하는 경우, 레이어 l에 대한 구현 i는 제거될 수 있다. 실행 시간이 비교적 긴 구현도 제거될 수 있다. 예를 들어, 실행 시간이 긴 구현은 비교적 적은 리소스의 이용을 제공할 수는 있지만 최적의 솔루션의 일부가 아닐 가능성이 높기 때문에, 레이어 L에 대한 구현 k는,
Figure pat00004
인 경우 제거될 수 있다.
리소스 할당의 복잡성을 감소시키는 다른 기술은, 레이어의 윈도우 기반 리소스 할당을 사용하는 것이다. 즉, 윈도우 또는 레이어들의 그룹은 각 네트워크의 경로 및 깊이에서 레이어들의 평균 또는 공칭 실행 시간에 기초하여 형성될 수 있다. 각 스트림 또는 레이어의 윈도우 크기는 조정 가능한 변수를 포함할 수 있다. 윈도우는 다중 경로 신경망의 경로를 따라 미끄러지도록 제어될 수 있고, 최적의 리소스 할당을 찾기 위해 윈도우 내부의 레이어의 성능 분석이 수행될 수 있다.
도 5는 본 개시에 따른 일 실시예에서 레이어(500)의 윈도우 기반 리소스 할당 분석을 도시한다. 도 5를 참조하면, 제1 윈도우(501)는 다중 경로 신경망의 제1 경로(503)와 제2 경로(504)의 레이어들 사이의 인과관계 리소스 프로파일링 분석을 수행하기 위해 정의되고 사용될 수 있다. 제2 윈도우(502)는 제1 경로(503)와 제2 경로(504)의 레이어들 사이의 다른 인과관계 리소스 프로파일링 분석을 수행하도록 유사하게 정의될 수 있다. 각 스트림의 실행 시간은 동시 실행을 완전히 달성하기 위해 동일한 윈도우 내에서 가능한 한 정확하게 일치될 수 있다.
도 6은 데이터 처리 시스템에 대한 예시적인 구조(600)의 블록도를 도시한다. 일 실시예에서, 구조(600)는 도 1의 다중 경로 신경망 분석기(100)를 구현하는데 사용될 수 있다. 다른 실시예에서, 구조(600)는 다중 경로 신경망 분석기(100)를 구현하고, 다중 경로 신경망 분석기(100)에 의해 제공되는 최적화된 다중 경로 신경망을 실행하는데 사용될 수 있다.
데이터 처리 시스템에 대한 예시적인 구조(600)는 적어도 하나의 프로세서, 예를 들어, 시스템 버스(603)또는 다른 적절한 회로를 통해 메모리 요소(602)에 연결된 프로세서(601)(중앙처리장치, CPU)를 포함할 수 있다. 구조(600)는 메모리 요소(602) 내에 프로그램 코드를 저장할 수 있다. 프로세서(601)는 시스템 버스(603)를 통해 메모리 요소(602)로부터 액세스된 프로그램 코드를 실행할 수 있다. 이와 같이, 프로세서(601)는 특수 프로세서로 기능할 수 있다. 메모리 요소(602)는 로컬 메모리(604) 또는 하나 이상의 벌크 저장 장치(605)와 같은 하나 이상의 물리적 메모리 장치를 포함할 수 있다. 로컬 메모리(604)는 프로그램 코드의 실제 실행 동안 일반적으로 사용되는 랜덤 액세스 메모리(RAM) 또는 다른 비 영구 메모리 장치일 수 있다. 벌크 저장 장치(605)는 하드 디스크 드라이브(HDD), 솔리드 스테이트 드라이브(SSD) 및/또는 다른 영구 데이터 저장 장치로서 구현될 수 있다. 데이터 처리 시스템에 대한 예시적인 구조(600)는, 실행 도중 프로그램 코드가 벌크 저장 장치(605)로부터 검색되어야 하는 횟수를 감소시키기 위해 일부 프로그램 코드의 임시 저장을 제공하는 하나 이상의 캐시 메모리(미도시)를 더 포함할 수 있다.
데이터 처리 시스템에 대한 예시적인 구조(600)는 키보드(606), 디스플레이 장치(607), 및 구조(600)에 선택적으로 결합될 수 있는 포인팅 장치(608)와 같은, 입출력(I/O) 장치를 더 포함할 수 있다. 일 실시예에서, 하나 이상의 입출력 장치는 디스플레이 장치(607)로 사용되는 터치 스크린에 결합될 수 있다. 이러한 디스플레이 장치(607)는 키보드(606) 및 포인팅 장치(608)를 포함할 수도 있다. 하나 이상의 네트워크 어댑터(609)가 구조(600)에 연결됨으로써, 구조(600)가 사설 또는 공용 네트워크를 통해 다른 시스템, 컴퓨터 시스템, 원격 프린터 또는 원격 저장 장치에 연결될 수 있다. 모뎀, 케이블 모뎀, 이더넷 카드 및 무선 트랜시버는 구조(600)와 함께 사용될 수 있는 서로 다른 유형의 네트워크 어댑터(609)의 예시가 될 수 있다. 전술한 구조(600)로 구현된 특정 장치에서, 장치에 따라 네트워크 어댑터의 유형은 달라질 수 있다. 입출력 장치는 구조(600)에 직접 연결되거나, 입출력 제어기를 통해 연결될 수 있다.
도 6을 참조하면, 메모리 요소(602)는 운영 체제(610) 및 하나 이상의 애플리케이션(611)을 저장할 수 있다. 일 실시예에서, 실행 가능한 프로그램 코드의 형태로 구현되는 운영 체제(610) 및 애플리케이션(611)들은, 구조(600)에 의해 실행될 수 있다. 이와 같이, 운영 체제(610) 및 애플리케이션(611)들은 구조(600)의 통합된 부분으로 볼 수 있다. 구조(600)에 의해 사용, 생성 또는 운영되는 운영 체제(610), 애플리케이션(611)들 및 임의의 데이터들은, 구조(600)를 사용하여 구현된 시스템의 일부로서 활용될 때 기능성을 가지는, 기능적 데이터 구조일 수 있다.
일 실시예에서, 애플리케이션(611)은, 예시적인 구조(600) 또는 예시적인 구조(600)와 유사한 구조를 사용하는 시스템에 의해 실행될 때, 도 1 내지 도 5에 설명된 다양한 연산 및 기능을 수행할 수 있도록, 하나 이상의 모듈을 포함할 수 있다. 하나 이상의 모듈은, 다양한 구성요소 또는 기능 블록과 함께 본 개시의 기능을 제공하는 소프트웨어, 펌웨어 또는 하드웨어를 포함할 수 있다.
다른 실시예에서, 예시적인 구조(600)는 통신 링크(613)를 통해 플랫폼(612)에 연결될 수 있다. 예시적인 구조(600)는 네트워크 어댑터(609)를 통해 플랫폼(612)에 연결될 수 있다. 예시적인 구조(600)는, 구조(600)를 플랫폼(612)에 연결하는데 사용될 수 있는 USB(Universal Serial Bus) 인터페이스 또는 다른 통신 포트와 같은, 하나 이상의 다른 입출력 장치를 포함할 수도 있다. 플랫폼(612)은 회로 보드일 수 있고, 이에 연결된 신경망 가속기(614)를 포함할 수 있다. 일 실시예에서, 신경망 가속기(614)는 직접 회로(IC) 또는 복수의 IC로서 구현될 수 있다. 예를 들어, 신경망 가속기(614)는, 필드 프로그래머블 게이트 어레이(Field programmable gate array), 주문형 IC(Application specific IC, ASIC) 등과 같은, 하나 이상의 프로그래머블 IC로서 구현될 수 있다.
구조(600)는, 도 1의 다중 경로 신경망(101)과 같은 다중 경로 신경망에서, 서로 다른 경로들의 서로 다른 레이어들에 컴퓨팅 리소스들을 할당하기 위해, 본 개시의 연산들을 수행하도록 구성될 수 있다. 즉, 구조(600)는 입출력 장치를 통해 다중 경로 신경망(101)을 수신하고, 다중 경로 신경망의 하나 이상의 레이어에서 연산하고, 본 개시에 따라 다중 경로 신경망에 대한 최적화된 컴퓨팅 리소스 구성을 출력할 수 있다. 구조(600)는, 실행하기에 최적화된 다중 경로 신경망(101)의 정의를 신경망 가속기(614)에 제공할 수 있다.
도 6은 하나의 예시에 불과하며, 여기에 설명된 구성은 본 개시의 발명을 제한하지 않는다. 경우에 따라, 구조(600)를 사용하여 구현된 특정 시스템은 도시된 것보다 더 적은 수의 구성요소 또는 더 많은 구성요소를 포함할 수 있다. 또한, 구조(600)의 일부로서 포함된 특정 운영 체제 또는 애플리케이션은 달라질 수 있다.
이상, 본 개시의 상세한 설명에서 본 개시의 특정 실시예들이 설명되었지만, 본 개시는 본 개시의 범위를 벗어나지 않으면서, 다양한 형태로 변형될 수 있다. 따라서, 본 개시의 범위는 단지 설명된 실시예들에 기초하여 결정되어서는 안되며, 오히려 첨부된 청구 범위 및 그 균등물들에 기초하여 결정된다.
100: 다중 경로 신경망 분석기
101: 다중 경로 신경망
102: 레이어의 스트림 할당
103: 기준상태 생성 윈도우 생성
104: 비용 모델을 이용한 성능 분석을 통한 리소스 할당
105: 장치 리소스 제약
106: 가지치기
107: 레이어 리소스의 비용 모델 템플릿
108: 스케줄러
109: 레이어의 리소스 할당 업데이트
300: 다중 경로 신경망
301: 제1 경로
302: 제2 경로, 임계 경로
303: 입력
304: 의사 결정 모듈
401: 제1 데이터 스트림
402: 제2 데이터 스트림
500: 레이어
501: 제1 윈도우
502: 제2 윈도우
503: 제1 경로
504: 제2 경로
600: 데이터 처리 시스템에 대한 예시적인 구조
601: 프로세서
602: 메모리 요소
603: 시스템 버스
604: 로컬 메모리
605: 벌크 저장 장치
606: 키보드
607: 디스플레이 장치
608: 포인팅 장치
609: 네트워크 어댑터
610: 운영 체제
611: 애플리케이션
612: 플랫폼
613: 통신 링크
614: 신경망 가속기

Claims (20)

  1. 다중 경로 신경망을 통한 2개 이상의 경로;
    하나 이상의 레이어를 포함하고, 상기 다중 경로 신경망의 처리량을 제한하는 상기 다중 경로 신경망을 통한 임계 경로를 포함하는, 제1 경로;
    상기 다중 경로 신경망을 실행하기 위해 이용 가능한 컴퓨팅 리소스의 제1 할당이 할당되는 상기 임계 경로의 제1 레이어; 및
    상기 다중 경로 신경망의 실행 시간을 상기 다중 경로 신경망에 대한 컴퓨팅 리소스의 제2 할당의 기준 실행 시간보다 짧게 감소시키고, 상기 제1 레이어에 대한 상기 컴퓨팅 리소스의 제2 할당과 상이한, 상기 제1 레이어에 대한 상기 컴퓨팅 리소스의 제1 할당을 포함하는, 다중 경로 신경망.
  2. 제1항에 있어서,
    상기 제1 레이어에 대한 상기 컴퓨팅 리소스의 제1 할당은 상기 다중 경로 신경망을 실행하기 전에 할당되는, 다중 경로 신경망.
  3. 제1항에 있어서,
    상기 제1 레이어에 대한 상기 컴퓨팅 리소스의 제1 할당은 상기 다중 경로 신경망을 실행하는 도중에 할당되는, 다중 경로 신경망.
  4. 제1항에 있어서,
    상기 다중 경로 신경망을 실행 가능한 상기 컴퓨팅 리소스는, 다수의 컴퓨팅 유닛 코어들, 메모리 크기, 및 메모리 대역폭을 포함하는, 다중 경로 신경망.
  5. 제1항에 있어서,
    상기 임계 경로는, 컨볼루션 함수를 제공하는 레이어를 포함하는, 다중 경로 신경망.
  6. 다중 경로 신경망을 실행할 수 있고 다중 경로 신경망을 통한 2개 이상의 경로를 포함하는 다중 경로 신경망에, 컴퓨팅 리소스를 할당하는, 컴퓨팅 리소스의 제1 컴퓨팅 리소스 할당에 기초하여, 상기 다중 경로 신경망에 대한 기준 실행 시간을 결정하고,
    상기 2개 이상의 경로에 대한 하나 이상의, 각각이 제1 컴퓨팅 리소스 할당과 상이한, 제2 컴퓨팅 리소스 할당에 대해 상기 다중 경로 신경망을 통한 상기 2개 이상의 경로의 실행 시간을 반복적으로 결정하고,
    상기 다중 경로 신경망에 대한 전체 기준 실행 시간보다 짧은, 상기 다중 경로 신경망에 대한 전체 실행 시간을 제공하는, 제1 경로에서 제1 레이어에 대한 제2 컴퓨팅 리소스 할당을 식별하는, 다중 경로 신경망의 레이어들에 리소스를 할당하는 방법.
  7. 제6항에 있어서,
    상기 다중 경로 신경망에 대한 전체 기준 실행 시간은, 상기 다중 경로 신경망의 처리량을 제한하는 상기 다중 경로 신경망의 임계 경로를 통한 실행 시간에 대응하는, 다중 경로 신경망의 레이어들에 리소스를 할당하는 방법.
  8. 제6항에 있어서,
    상기 다중 경로 신경망에 대한 전체 기준 실행 시간보다 짧은 상기 다중 경로 신경망에 대한 전체 실행 시간을 제공하도록 식별된, 상기 제1 경로에서 상기 제1 레이어에 대한 상기 제2 컴퓨팅 리소스 할당을 더 할당하는, 다중 경로 신경망의 레이어들에 리소스를 할당하는 방법.
  9. 제8항에 있어서,
    상기 다중 경로 신경망이 실행되기 전에, 식별된 상기 제1 경로에서 상기 제1 레이어에 대한 상기 제2 컴퓨팅 리소스 할당을 더 할당하는, 다중 경로 신경망의 레이어들에 리소스를 할당하는 방법.
  10. 제8항에 있어서,
    상기 다중 경로 신경망이 실행되는 도중에, 식별된 상기 제1 경로에서 상기 제1 레이어에 대한 상기 제2 컴퓨팅 리소스 할당을 더 할당하는, 다중 경로 신경망의 레이어들에 리소스를 할당하는 방법.
  11. 제6항에 있어서,
    상기 제2 컴퓨팅 리소스 할당을 식별하는 것은, 사용자로부터 상기 제2 컴퓨팅 리소스 할당의 선택을 수신하는 것을 더 포함하는, 다중 경로 신경망의 레이어들에 리소스를 할당하는 방법.
  12. 제6항에 있어서,
    상기 다중 경로 신경망을 실행 가능한 상기 컴퓨팅 리소스는, 다수의 컴퓨팅 유닛 코어들, 메모리 크기, 및 메모리 대역폭을 포함하는, 다중 경로 신경망의 레이어들에 리소스를 할당하는 방법.
  13. 제6항에 있어서,
    상기 2개 이상의 경로 중 적어도 하나는 컨볼루션 함수를 제공하는 레이어를 포함하는, 다중 경로 신경망의 레이어에 리소스를 할당하는 방법.
  14. 다중 경로 신경망을 통한 2개 이상의 경로 및 하나 이상의 레이어를 포함하는 2개 이상의 경로의 제1 경로를 포함하는 다중 경로 신경망을 수신하는 인터페이스; 및
    상기 다중 경로 신경망을 실행 가능한 컴퓨팅 리소스의 제1 할당이 할당되는 상기 다중 경로 신경망을 통한 임계 경로의 하나 이상의 레이어를 포함하는 상기 다중 경로 신경망을 생성하는 처리 장치를 포함하고,
    상기 임계 경로는 상기 다중 경로 신경망의 처리량을 제한하고,
    상기 컴퓨팅 리소스의 제1 할당은 상기 다중 경로 신경망의 실행 시간을 상기 다중 경로 신경망에 대한 컴퓨팅 리소스의 제2 할당의 기준 실행 시간 미만으로 감소시키고,
    임계 경로의 제1 레이어에 대한 상기 컴퓨팅 리소스의 제1 할당은 임계 경로의 제1 레이어에 대한 컴퓨팅 리소스의 제2 할당과 상이한, 다중 경로 신경망 분석기.
  15. 제14항에 있어서,
    상기 다중 경로 신경망을 실행 가능한 상기 컴퓨팅 리소스는 다수의 컴퓨팅 유닛 코어들, 메모리 크기 및 메모리 대역폭을 포함하는, 다중 경로 신경망 분석기.
  16. 제14항에 있어서,
    상기 다중 경로 신경망 분석기는,
    상기 다중 경로 신경망을 실행하기 위한 상기 컴퓨팅 리소스의 제2 할당에 기초하여 상기 다중 경로 신경망을 통한 2개 이상의 경로의 기준 실행 시간을 결정하고,
    상기 2개 이상의 경로에 대한 적어도 하나의 컴퓨팅 리소스의 제3 할당에 대해 상기 다중 경로 신경망을 통한 2개 이상의 경로에 대한 실행 시간을 반복적으로 결정하고,
    상기 다중 경로 신경망에 대한 기준 실행 시간보다 짧은 다중 경로 신경망에 대한 실행 시간을 제공하는 컴퓨팅 리소스의 제3 할당을 식별하고,
    상기 컴퓨팅 리소스의 제3 할당은 각각 상기 컴퓨팅 리소스의 제2 할당과 상이한, 다중 경로 신경망 분석기.
  17. 제16항에 있어서,
    상기 다중 경로 신경망에 대한 상기 기준 실행 시간은, 상기 임계 경로에 대한 상기 컴퓨팅 리소스의 제2 할당을 위한 상기 다중 경로 신경망의 임계 경로를 통한 실행 시간에 대응하는, 다중 경로 신경망 분석기.
  18. 제16항에 있어서,
    상기 처리 장치는, 상기 임계 경로에 대한 상기 컴퓨팅 리소스의 제3 할당이 상기 임계 경로에 대한 상기 컴퓨팅 리소스의 제1 할당이 되도록 더 할당하는, 다중 경로 신경망 분석기.
  19. 제18항에 있어서,
    상기 처리 장치는, 상기 다중 경로 신경망이 실행되기 전에, 상기 임계 경로에 대한 상기 컴퓨팅 리소스의 제1 할당을 할당하는, 다중 경로 신경망 분석기.
  20. 제18항에 있어서,
    상기 처리 장치는, 상기 다중 경로 신경망이 실행되는 도중에, 상기 임계 경로에 대한 상기 컴퓨팅 리소스의 제1 할당을 할당하는, 다중 경로 신경망 분석기.
KR1020190144279A 2019-01-23 2019-11-12 Gpu 연산의 동시 실행을 위한 플랫폼 KR20200091790A (ko)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US201962796071P 2019-01-23 2019-01-23
US62/796,071 2019-01-23
US16/442,440 US11620510B2 (en) 2019-01-23 2019-06-14 Platform for concurrent execution of GPU operations
US16/442,440 2019-06-14

Publications (1)

Publication Number Publication Date
KR20200091790A true KR20200091790A (ko) 2020-07-31

Family

ID=71608978

Family Applications (2)

Application Number Title Priority Date Filing Date
KR1020190144253A KR20200091789A (ko) 2019-01-23 2019-11-12 Gpu 연산의 동시 실행을 위한 플랫폼
KR1020190144279A KR20200091790A (ko) 2019-01-23 2019-11-12 Gpu 연산의 동시 실행을 위한 플랫폼

Family Applications Before (1)

Application Number Title Priority Date Filing Date
KR1020190144253A KR20200091789A (ko) 2019-01-23 2019-11-12 Gpu 연산의 동시 실행을 위한 플랫폼

Country Status (5)

Country Link
US (2) US11687771B2 (ko)
JP (1) JP2020119564A (ko)
KR (2) KR20200091789A (ko)
CN (1) CN111476344A (ko)
TW (1) TWI827792B (ko)

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11537436B2 (en) * 2019-10-02 2022-12-27 Qualcomm Incorporated Method of configuring a memory block allocation of a machine learning network
CN112349419A (zh) * 2020-08-27 2021-02-09 北京颢云信息科技股份有限公司 一种基于医学数据及人工智能的真实世界研究方法
KR20220052546A (ko) * 2020-10-21 2022-04-28 삼성전자주식회사 데이터 처리 방법 및 장치 및 이를 포함한 전자 장치 및 가속기 시스템
US20230071278A1 (en) * 2021-09-03 2023-03-09 International Business Machines Corporation Using a machine learning module to determine a group of execution paths of program code and a computational resource allocation to use to execute the group of execution paths
CN114091688B (zh) * 2021-11-25 2022-05-20 北京九章云极科技有限公司 一种计算资源获取方法、装置、电子设备和存储介质
WO2024113184A1 (en) * 2022-11-29 2024-06-06 Paypal, Inc. Optimizing allocation of graphical processing unit (gpu) resources in a production workspace
CN117114055B (zh) * 2023-10-24 2024-04-09 北京航空航天大学 面向工业应用场景的fpga二值神经网络加速方法

Family Cites Families (44)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH06187309A (ja) * 1992-12-21 1994-07-08 Hitachi Ltd プロセッサ割付制御方式
US5704012A (en) 1993-10-08 1997-12-30 International Business Machines Corporation Adaptive resource allocation using neural networks
US7656959B2 (en) * 2001-04-13 2010-02-02 Agere Systems Inc. Pipelined decision-feedback unit in a reduced-state viterbi detector with local feedback
TWI246114B (en) * 2002-09-24 2005-12-21 Asml Netherlands Bv Lithographic apparatus, device manufacturing method, and device manufactured thereby
US20060253677A1 (en) * 2005-05-04 2006-11-09 Arm Limited Data access prediction
US8347293B2 (en) * 2005-10-20 2013-01-01 Network Appliance, Inc. Mutual exclusion domains to perform file system processes on stripes
US7606807B1 (en) * 2006-02-14 2009-10-20 Network Appliance, Inc. Method and apparatus to utilize free cache in a storage system
US20080071755A1 (en) 2006-08-31 2008-03-20 Barsness Eric L Re-allocation of resources for query execution in partitions
TWI313437B (en) * 2006-09-20 2009-08-11 Nat Chiao Tung Universit Matching method for interdependent scheduling
CN101908003B (zh) * 2009-06-05 2014-10-22 Sap股份公司 并行化查询的多核调度
US8627331B1 (en) * 2010-04-30 2014-01-07 Netapp, Inc. Multi-level parallelism of process execution in a mutual exclusion domain of a processing system
US8868867B2 (en) * 2011-09-15 2014-10-21 The Regents Of The University Of California Method for reducing latency of accessing data stored in a file system on a computer storage device by caching file system permission information in the computer storage device
JP5961402B2 (ja) * 2012-02-20 2016-08-02 株式会社日立製作所 計算機システム
US20140133574A1 (en) * 2012-11-13 2014-05-15 Mediatek Inc. Method and Apparatus for Sign Data Hiding of Video and Image Data
JP2014179957A (ja) * 2013-03-15 2014-09-25 Toshiba Corp 画像符号化装置および画像復号化装置
WO2015058063A1 (en) * 2013-10-17 2015-04-23 Georgia Tech Research Corporation An improved lattice-reduction-aided k-best algorithm for low complexity and high performance communications
US20150220420A1 (en) * 2014-01-31 2015-08-06 Schlumberger Technology Corporation Performance evaluation and tuning systems and methods
US10417554B2 (en) 2014-05-22 2019-09-17 Lee J. Scheffler Methods and systems for neural and cognitive processing
US10346941B2 (en) 2014-05-30 2019-07-09 Apple Inc. System and method for unified application programming interface and model
US20160164537A1 (en) * 2014-12-08 2016-06-09 Samsung Electronics Co., Ltd. Method and apparatus for parallel concatenated ldpc convolutional codes enabling power-efficient decoders
US9779469B2 (en) 2015-08-17 2017-10-03 Qualcomm Incorporated Register spill management for general purpose registers (GPRs)
US9443192B1 (en) * 2015-08-30 2016-09-13 Jasmin Cosic Universal artificial intelligence engine for autonomous computing devices and software applications
US20170123799A1 (en) * 2015-11-03 2017-05-04 Intel Corporation Performing folding of immediate data in a processor
WO2017091833A1 (en) * 2015-11-29 2017-06-01 Arterys Inc. Automated cardiac volume segmentation
US10891540B2 (en) * 2015-12-18 2021-01-12 National Technology & Engineering Solutions Of Sandia, Llc Adaptive neural network management system
US10177782B2 (en) * 2015-12-26 2019-01-08 Intel Corporation Hardware apparatuses and methods for data decompression
WO2017171771A1 (en) * 2016-03-31 2017-10-05 Hewlett Packard Enterprise Development Lp Data processing using resistive memory arrays
US20180039884A1 (en) * 2016-08-03 2018-02-08 Barnaby Dalton Systems, methods and devices for neural network communications
US10116582B2 (en) * 2016-08-08 2018-10-30 Bank Of America Corporation Resource assignment system with allocation assist
US10264264B2 (en) * 2016-09-24 2019-04-16 Apple Inc. Multi-bin decoding systems and methods
WO2018057749A1 (en) * 2016-09-26 2018-03-29 Arizona Board Of Regents On Behalf Of Arizona State University Cascaded computing for convolutional neural networks
JP6778130B2 (ja) * 2017-02-24 2020-10-28 日本電信電話株式会社 仮想計算機システムおよびそのリソース割当て方法
US10387298B2 (en) * 2017-04-04 2019-08-20 Hailo Technologies Ltd Artificial neural network incorporating emphasis and focus techniques
US20180308006A1 (en) 2017-04-24 2018-10-25 William Atkinson Method and Apparatus for Dynamic Evolving Cognitive questioning querying architecture iterative problem solving dynamically evolving feedback loop
GB2563473B (en) * 2017-06-15 2019-10-02 Accelercomm Ltd Polar coder with logical three-dimensional memory, communication unit, integrated circuit and method therefor
US10970630B1 (en) 2017-06-15 2021-04-06 National Technology & Engineering Solutions Of Sandia, Llc Neuromorphic computing architecture with dynamically accessible contexts
US10198832B2 (en) * 2017-06-28 2019-02-05 Deepmind Technologies Limited Generalizable medical image analysis using segmentation and classification neural networks
US11694066B2 (en) * 2017-10-17 2023-07-04 Xilinx, Inc. Machine learning runtime library for neural network acceleration
CN107832840B (zh) * 2017-10-31 2020-05-22 中国科学院计算技术研究所 一种用于神经网络处理器的方法
US20190044883A1 (en) * 2018-01-11 2019-02-07 Intel Corporation NETWORK COMMUNICATION PRIORITIZATION BASED on AWARENESS of CRITICAL PATH of a JOB
CN108875752B (zh) * 2018-03-21 2022-06-07 北京迈格威科技有限公司 图像处理方法和装置、计算机可读存储介质
US11568220B2 (en) 2018-07-25 2023-01-31 International Business Machines Corporation Deep neural network implementation
US20200042856A1 (en) * 2018-07-31 2020-02-06 International Business Machines Corporation Scheduler for mapping neural networks onto an array of neural cores in an inference processing unit
US10963300B2 (en) * 2018-12-06 2021-03-30 Raytheon Company Accelerating dataflow signal processing applications across heterogeneous CPU/GPU systems

Also Published As

Publication number Publication date
TW202029064A (zh) 2020-08-01
US20200234146A1 (en) 2020-07-23
TWI827792B (zh) 2024-01-01
JP2020119564A (ja) 2020-08-06
KR20200091789A (ko) 2020-07-31
US11687771B2 (en) 2023-06-27
US20200234115A1 (en) 2020-07-23
CN111476344A (zh) 2020-07-31
US11620510B2 (en) 2023-04-04

Similar Documents

Publication Publication Date Title
KR20200091790A (ko) Gpu 연산의 동시 실행을 위한 플랫폼
Yang et al. A framework for partitioning and execution of data stream applications in mobile cloud computing
CN109669772B (zh) 计算图的并行执行方法和设备
US9563474B2 (en) Methods for managing threads within an application and devices thereof
Zatsarinny et al. Toward high performance solutions as services of research digital platform
US10949259B2 (en) System and method of scheduling and computing resource allocation optimization of machine learning flows
Iserte et al. Efficient scalable computing through flexible applications and adaptive workloads
Yun et al. An integrated approach to workflow mapping and task scheduling for delay minimization in distributed environments
KR20120055353A (ko) 이종 멀티 프로세서 환경에서의 데이터 처리 최적화 장치 및 방법
US10853137B2 (en) Efficient resource allocation for concurrent graph workloads
KR102238600B1 (ko) 스케쥴러 컴퓨팅 장치, 그것을 포함하는 분산 컴퓨팅 시스템의 데이터 노드 및 그것의 방법
Saleem et al. A Survey on Dynamic Application Mapping Approaches for Real-Time Network-on-Chip-Based Platforms
KR20200063962A (ko) 분산 처리 시스템 및 이의 동작 방법
WO2014027444A1 (ja) スケジューリング装置、及び、スケジューリング方法
WO2022252091A1 (zh) 一种计算模型的处理方法及装置
WO2013058396A1 (ja) タスク配置装置及びタスク配置方法
US11392415B2 (en) Electronic devices and methods for 5G and B5G multi-core load balancing
CN110415162B (zh) 大数据中面向异构融合处理器的自适应图划分方法
Kaufmann et al. The {HCl} Scheduler: Going all-in on Heterogeneity
JP7423757B2 (ja) 同期プロセッサのためのシャーディング
Cojean et al. Resource aggregation for task-based Cholesky Factorization on top of heterogeneous machines
JP6322968B2 (ja) 情報処理装置、情報処理方法およびプログラム
CN116541018B (zh) 一种分布式模型编译系统、方法、装置、介质及设备
Ye et al. Storage-aware task scheduling for performance optimization of big data workflows
Chen et al. A Heterogeneous Multicore Co-scheduling Algorithm Based on Multi-characteristic Fuzzy Cluster