KR20220107616A - 추론 태스크들을 병렬적으로 처리하는 가속기 및 이의 동작 방법 - Google Patents

추론 태스크들을 병렬적으로 처리하는 가속기 및 이의 동작 방법 Download PDF

Info

Publication number
KR20220107616A
KR20220107616A KR1020210010439A KR20210010439A KR20220107616A KR 20220107616 A KR20220107616 A KR 20220107616A KR 1020210010439 A KR1020210010439 A KR 1020210010439A KR 20210010439 A KR20210010439 A KR 20210010439A KR 20220107616 A KR20220107616 A KR 20220107616A
Authority
KR
South Korea
Prior art keywords
group
weights
time
accelerator
size
Prior art date
Application number
KR1020210010439A
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 삼성전자주식회사
Priority to KR1020210010439A priority Critical patent/KR20220107616A/ko
Priority to US17/372,788 priority patent/US20220237487A1/en
Publication of KR20220107616A publication Critical patent/KR20220107616A/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N5/00Computing arrangements using knowledge-based models
    • G06N5/04Inference or reasoning models
    • G06N5/048Fuzzy inferencing
    • 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
    • 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
    • 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
    • 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
    • G06N5/00Computing arrangements using knowledge-based models
    • G06N5/04Inference or reasoning models

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Data Mining & Analysis (AREA)
  • Mathematical Physics (AREA)
  • Computing Systems (AREA)
  • Artificial Intelligence (AREA)
  • Evolutionary Computation (AREA)
  • Computational Linguistics (AREA)
  • Biophysics (AREA)
  • Biomedical Technology (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Health & Medical Sciences (AREA)
  • General Health & Medical Sciences (AREA)
  • Molecular Biology (AREA)
  • Neurology (AREA)
  • Automation & Control Theory (AREA)
  • Fuzzy Systems (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Complex Calculations (AREA)

Abstract

가속기가 개시된다. 일 실시예는 복수의 그룹들 중에서 제1 그룹의 가중치들을 공유하는 그룹이 있는지 여부를 확인하고, 상기 제1 그룹의 가중치들을 공유하는 그룹이 없는 경우, 유휴한(idle) PE 어레이가 있는지 여부를 확인하며, 상기 유휴한 PE 어레이가 있는 경우, 상기 복수의 그룹들 중에서 상기 제1 그룹의 연산 시간과 오버랩되는 메모리 시간을 갖는 제2 그룹을 선택한다.

Description

추론 태스크들을 병렬적으로 처리하는 가속기 및 이의 동작 방법{ACCELERATOR OF PROCESSING INFERENCE TASKS IN PARALLEL AND OPERATING METHOD THEREOF}
아래 실시예들은 추론 태스크를 병렬적으로 처리하는 가속기에 관한 것이다.
인공 지능(Artificial Intelligence; AI) 기술이 발전함에 따라 인공 지능만을 위한 독자적인 하드웨어의 필요성이 증가하고 있다. 인공 지능은 예를 들어, 특정한 연산을 통해 추론과 학습을 수행할 수 있다. 이와 같이 인공 지능을 구현하고 실행하기 위한 전용 하드웨어로서 다양한 장치들이 개발되고 있다.
인공 지능을 위한 전용 하드웨어는 예를 들어, CPU(Central Processing Unit), GPU(Graphics Processing Unit) 등에 의해 구현될 수도 있고, 용도 변경이 가능한 FPGA(Field Programmable Gate Array), 및 ASIC(Application Specific Integrated Circuit) 등에 의해 구현될 수도 있다.
일 측에 따른 가속기의 동작 방법은 복수의 그룹들 중에서 제1 그룹의 가중치들을 공유하는 그룹이 있는지 여부를 확인하는 단계; 상기 제1 그룹의 가중치들을 공유하는 그룹이 없는 경우, 유휴한(idle) 프로세싱 엘리먼트(PE, processing element) 어레이(array)가 있는지 여부를 확인하는 단계; 및 상기 유휴한 PE 어레이가 있는 경우, 상기 복수의 그룹들 중에서 상기 제1 그룹의 연산 시간과 오버랩되는 메모리 시간을 갖는 제2 그룹을 선택하는 단계를 포함한다.
상기 복수의 그룹들은 하나 이상의 추론 태스크의 레이어들이 분할되어 생성된 서브 레이어들이 그룹핑된 것일 수 있다.
상기 확인하는 단계는 복수의 PE 어레이들의 사이즈와 상기 제1 그룹의 가중치들의 사이즈를 비교하는 단계; 및 상기 제1 그룹의 가중치들의 사이즈가 상기 PE 어레이들의 사이즈보다 작은 경우, 상기 유휴한 PE 어레이가 있는 것으로 확인하는 단계를 포함할 수 있다.
상기 제2 그룹을 선택하는 단계는 상기 가속기 내의 PE 어레이들의 사이즈, 상기 가속기의 온 칩 메모리의 용량, 및 상기 제1 그룹의 연산 시간의 예측값을 기초로 상기 그룹들 중에서 제2 그룹을 선택하는 단계를 포함할 수 있다.
상기 제2 그룹을 선택하는 단계는 상기 그룹들의 정보가 기록된 테이블을 참조하여 상기 제1 그룹과 의존성(dependency)이 없는 하나 이상의 그룹을 식별하는 단계; 상기 식별된 하나 이상의 그룹을 후보 큐에 인큐잉하는 단계; 및 상기 제1 그룹의 가중치들의 사이즈와 상기 후보 큐 내의 제1 인큐잉된 그룹의 가중치들의 사이즈의 합이 PE 어레이들의 사이즈를 초과하는지 여부를 결정하는 단계; 상기 계산된 합이 상기 PE 어레이들의 사이즈보다 작은 경우, 상기 제1 인큐잉된 그룹의 가중치들의 전달 시간의 예측값이 상기 온 칩 메모리의 잔여 용량을 기초로 계산된 시간값을 초과하는지 여부를 결정하는 단계; 상기 제1 인큐잉된 그룹의 가중치들의 전달 시간의 예측값이 상기 시간값보다 작은 경우, 상기 제1 인큐잉된 그룹의 가중치들의 전달 시간의 예측값이 상기 제1 그룹의 연산 시간의 예측값보다 작은지 여부를 결정하는 단계; 및 상기 제1 인큐잉된 그룹의 가중치들의 전달 시간의 예측값이 상기 제1 그룹의 연산 시간의 예측값보다 작은 경우, 상기 제1 인큐잉된 그룹을 상기 제2 그룹으로 선택하는 단계를 포함할 수 있다.
상기 전달 시간의 예측값은 상기 제1 인큐잉된 그룹의 가중치들이 호스트의 메모리에서 상기 가속기로 전달되는데 소요되는 시간의 예측값을 나타낼 수 있다.
상기 제2 그룹의 메모리 시간은 상기 제2 그룹의 가중치들이 상기 가속기로 전달되는 시간을 나타낼 수 있다.
상기 제1 그룹의 가중치들의 사이즈와 상기 제2 그룹의 가중치들의 사이즈의 합이 상기 가속기 내의 PE 어레이들의 사이즈보다 작은 경우, 상기 PE 어레이들의 사이즈, 상기 가속기의 온 칩 메모리의 잔여 용량, 상기 제1 그룹의 연산 시간의 예측값, 및 상기 제2 그룹의 가중치들의 전달 시간의 예측값을 기초로 상기 제1 및 제2 그룹과 의존성을 갖지 않은 그룹들 중에서 제3 그룹을 선택하는 단계를 더 포함할 수 있다.
상기 제3 그룹을 선택하는 단계는 상기 제1 그룹의 연산 시간의 예측값과 상기 제2 그룹의 가중치들의 전달 시간의 예측값 사이의 차이값을 계산하는 단계; 상기 제1 그룹의 가중치들의 사이즈, 상기 제2 그룹의 가중치들의 사이즈, 및 상기 제1 및 제2 그룹과 의존성을 갖지 않은 그룹들 중 어느 하나 그룹의 가중치들의 사이즈의 합을 계산하는 단계; 상기 계산된 합이 PE 어레이들의 사이즈를 초과하는지 여부를 결정하는 단계; 상기 계산된 합이 상기 PE 어레이들의 사이즈보다 작은 경우, 상기 어느 하나 그룹의 가중치들의 전달 시간의 예측값이 상기 가속기 내의 온 칩 메모리의 잔여 용량을 기초로 계산된 시간값을 초과하는지 여부를 결정하는 단계; 상기 제3 그룹의 가중치들의 전달 시간의 예측값이 상기 시간값보다 작은 경우, 상기 제3 그룹의 가중치들의 전달 시간의 예측값이 상기 계산된 차이값 보다 작은 지 여부를 결정하는 단계; 및 상기 제3 그룹의 가중치들의 전달 시간의 예측값이 상기 계산된 차이값 보다 작은 경우, 상기 어느 하나 그룹을 상기 제3 그룹으로 선택하는 단계를 포함할 수 있다.
상기 제1 그룹은 상기 복수의 그룹들 중 우선순위가 가장 높은 그룹일 수 있다.
일 측에 따른 가속기는 복수의 PE 어레이들; 및 복수의 그룹들 중에서 제1 그룹의 가중치들을 공유하는 그룹이 있는지 여부를 확인하고, 상기 제1 그룹의 가중치들을 공유하는 그룹이 없는 경우, 상기 복수의 PE 어레이들 중에서 유휴한(idle) PE 어레이가 있는지 여부를 확인하며, 상기 유휴한 PE 어레이가 있는 경우, 상기 복수의 그룹들 중에서 상기 제1 그룹의 연산 시간과 오버랩되는 메모리 시간을 갖는 제2 그룹을 선택하는 스케줄러를 포함한다.
상기 복수의 그룹들은 하나 이상의 추론 태스크의 레이어들이 분할되어 생성된 서브 레이어들이 그룹핑된 것일 수 있다.
상기 스케줄러는 상기 PE 어레이들의 사이즈와 상기 제1 그룹의 가중치들의 사이즈를 비교하고, 상기 제1 그룹의 가중치들의 사이즈가 상기 PE 어레이들의 사이즈보다 작은 경우, 상기 유휴한 PE 어레이가 있는 것으로 확인할 수 있다.
상기 스케줄러는 상기 PE 어레이들의 사이즈, 상기 가속기의 온 칩 메모리의 용량, 및 상기 제1 그룹의 연산 시간의 예측값을 기초로 상기 그룹들 중에서 제2 그룹을 선택할 수 있다.
상기 스케줄러는 상기 그룹들의 정보가 기록된 테이블을 참조하여 상기 제1 그룹과 의존성(dependency)이 없는 하나 이상의 그룹을 식별하고, 상기 식별된 하나 이상의 그룹을 후보 큐에 인큐잉하며, 상기 제1 그룹의 가중치들의 사이즈와 상기 후보 큐 내의 제1 인큐잉된 그룹의 가중치들의 사이즈의 합이 상기 PE 어레이들의 사이즈를 초과하는지 여부를 결정하고, 상기 계산된 합이 상기 PE 어레이들의 사이즈보다 작은 경우, 상기 제1 인큐잉된 그룹의 가중치들의 전달 시간의 예측값이 상기 온 칩 메모리의 잔여 용량을 기초로 계산된 시간값을 초과하는지 여부를 결정하고, 상기 제1 인큐잉된 그룹의 가중치들의 전달 시간의 예측값이 상기 시간값보다 작은 경우, 상기 제1 인큐잉된 그룹의 가중치들의 전달 시간의 예측값이 상기 제1 그룹의 연산 시간의 예측값보다 작은지 여부를 결정하고, 상기 제1 인큐잉된 그룹의 가중치들의 전달 시간의 예측값이 상기 제1 그룹의 연산 시간의 예측값보다 작은 경우, 상기 제1 인큐잉된 그룹을 상기 제2 그룹으로 선택할 수 있다.
상기 전달 시간의 예측값은 상기 제1 인큐잉된 그룹의 가중치들이 호스트의 메모리에서 상기 가속기로 전달되는데 소요되는 시간의 예측값을 나타낼 수 있다.
상기 제2 그룹의 메모리 시간은 상기 제2 그룹의 가중치들이 상기 가속기로 전달되는 시간을 나타낼 수 있다.
상기 스케줄러는 상기 제1 그룹의 가중치들의 사이즈와 상기 제2 그룹의 가중치들의 사이즈의 합이 상기 PE 어레이들의 사이즈보다 작은 경우, 상기 PE 어레이들의 사이즈, 상기 가속기의 온 칩 메모리의 잔여 용량, 상기 제1 및 제2 그룹의 연산 시간의 예측값, 및 상기 제1 및 제2 그룹의 가중치들의 전달 시간의 예측값을 기초로 상기 제1 및 제2 그룹과 의존성을 갖지 않은 그룹들 중에서 제3 그룹을 선택할 수 있다.
상기 스케줄러는 상기 제1 그룹의 연산 시간의 예측값과 상기 제2 그룹의 가중치들의 전달 시간의 예측값 사이의 차이값을 계산하고, 상기 제1 그룹의 가중치들의 사이즈, 상기 제2 그룹의 가중치들의 사이즈, 및 상기 제1 및 제2 그룹과 의존성을 갖지 않은 그룹들 중 어느 하나 그룹의 가중치들의 사이즈의 합을 계산하며, 상기 계산된 합이 PE 어레이들의 사이즈를 초과하는지 여부를 결정하고, 상기 계산된 합이 상기 PE 어레이들의 사이즈보다 작은 경우, 상기 어느 하나 그룹의 가중치들의 전달 시간의 예측값이 상기 가속기 내의 온 칩 메모리의 잔여 용량을 기초로 계산된 시간값을 초과하는지 여부를 결정하고, 상기 제3 그룹의 가중치들의 전달 시간의 예측값이 상기 시간값보다 작은 경우, 상기 제3 그룹의 가중치들의 전달 시간의 예측값이 상기 계산된 차이값 보다 작은 지 여부를 결정하고, 상기 제3 그룹의 가중치들의 전달 시간의 예측값이 상기 계산된 차이값 보다 작은 경우, 상기 어느 하나 그룹을 상기 제3 그룹으로 선택할 수 있다.
상기 제1 그룹은 상기 복수의 그룹들 중 우선순위가 가장 높은 그룹일 수 있다.
도 1은 일 실시예에 따른 호스트와 가속기를 포함하는 시스템을 설명하기 위한 도면이다.
도 2 내지 도 3은 일 실시예에 따른 호스트의 동작을 설명하기 위한 도면이다.
도 4는 일 실시예에 따른 가속기를 설명하기 위한 도면이다.
도 5 내지 도 11은 일 실시예에 따른 스케줄러의 스케줄링 방법을 설명하기 위한 도면이다.
도 12는 일 실시예에 따른 다수의 추론 태스크들의 병렬 처리를 설명하기 위한 도면이다.
도 13은 일 실시예에 따른 가속기의 동작 방법을 설명하기 위한 순서도이다.
실시예들에 대한 특정한 구조적 또는 기능적 설명들은 단지 예시를 위한 목적으로 개시된 것으로서, 다양한 형태로 변경되어 구현될 수 있다. 따라서, 실제 구현되는 형태는 개시된 특정 실시예로만 한정되는 것이 아니며, 본 명세서의 범위는 실시예들로 설명한 기술적 사상에 포함되는 변경, 균등물, 또는 대체물을 포함한다.
제1 또는 제2 등의 용어를 다양한 구성요소들을 설명하는데 사용될 수 있지만, 이런 용어들은 하나의 구성요소를 다른 구성요소로부터 구별하는 목적으로만 해석되어야 한다. 예를 들어, 제1 구성요소는 제2 구성요소로 명명될 수 있고, 유사하게 제2 구성요소는 제1 구성요소로도 명명될 수 있다.
어떤 구성요소가 다른 구성요소에 "연결되어" 있다고 언급된 때에는, 그 다른 구성요소에 직접적으로 연결되어 있거나 또는 접속되어 있을 수도 있지만, 중간에 다른 구성요소가 존재할 수도 있다고 이해되어야 할 것이다.
단수의 표현은 문맥상 명백하게 다르게 뜻하지 않는 한, 복수의 표현을 포함한다. 본 명세서에서, "포함하다" 또는 "가지다" 등의 용어는 설명된 특징, 숫자, 단계, 동작, 구성요소, 부분품 또는 이들을 조합한 것이 존재함으로 지정하려는 것이지, 하나 또는 그 이상의 다른 특징들이나 숫자, 단계, 동작, 구성요소, 부분품 또는 이들을 조합한 것들의 존재 또는 부가 가능성을 미리 배제하지 않는 것으로 이해되어야 한다.
다르게 정의되지 않는 한, 기술적이거나 과학적인 용어를 포함해서 여기서 사용되는 모든 용어들은 해당 기술 분야에서 통상의 지식을 가진 자에 의해 일반적으로 이해되는 것과 동일한 의미를 가진다. 일반적으로 사용되는 사전에 정의되어 있는 것과 같은 용어들은 관련 기술의 문맥상 가지는 의미와 일치하는 의미를 갖는 것으로 해석되어야 하며, 본 명세서에서 명백하게 정의하지 않는 한, 이상적이거나 과도하게 형식적인 의미로 해석되지 않는다.
이하, 실시예들을 첨부된 도면들을 참조하여 상세하게 설명한다. 첨부 도면을 참조하여 설명함에 있어, 도면 부호에 관계없이 동일한 구성 요소는 동일한 참조 부호를 부여하고, 이에 대한 중복되는 설명은 생략하기로 한다.
도 1은 일 실시예에 따른 호스트와 가속기를 포함하는 처리 시스템을 설명하기 위한 도면이다.
도 1을 참조하면, 일 실시예에 따른 처리 시스템(100)은 호스트(110), 메모리(120), 및 가속기(130)를 포함한다.
처리 시스템(100)은 서버 장치 또는 서버 시스템에 포함될 수 있다. 이에 제한되지 않고, 처리 시스템(100)은 이동 단말(예를 들어, 스마트폰 등)에 포함될 수 있다.
호스트(110), 메모리(120), 및 가속기(130)는 버스(bus)를 통해 서로 통신할 수 있다.
호스트(110)는 CPU(Central Processing Unit)를 포함할 수 있다.
호스트(110)는 하나 이상의 디바이스로부터 추론 요청과 데이터를 수신할 수 있다. 디바이스는, 예를 들어 스마트폰, 태블릿 PC, 차량, IoT 디바이스 등을 포함할 수 있으나 이에 제한되지 않는다. 추론 요청은 디바이스가 전송한 데이터로부터 가속기(130)가 추론 태스크를 수행하여 추론 결과를 생성하게 끔 하는 요청일 수 있다. 추론 요청은, 예를 들어, 객체 인식, 패턴 인식, 컴퓨터 비전, 음성 인식, 기계 번역, 기계 통역, 추천 서비스, 자율 주행 등을 포함할 수 있으나 이에 제한되지 않는다. 디바이스로부터 수신한 데이터는 가속기(130)가 추론 태스크를 수행하는데 이용하는 입력 데이터에 해당할 수 있다.
추론 태스크는 뉴럴 네트워크의 복수의 레이어들을 포함할 수 있다. 뉴럴 네트워크는 컨볼루션 뉴럴 네트워크(CNN; Convolutional Neural Network), 회귀 뉴럴 네트워크(RNN; Recurrent Neural Network)를 포함할 수 있으나 이에 제한되지 않는다.
메모리(120)는 가속기(130)의 외부에 배치된 메모리로서, 예를 들어, DRAM(Dynamic Random Access Memory) 또는 HBM(High Bandwidth Memory)일 수 있으나 이에 제한되지 않는다. 메모리(120)는 뉴럴 네트워크의 가중치들과 상술한 입력 데이터를 저장할 수 있다.
가속기(130)는 NPU(Neural Processing Unit) 또는 뉴럴 프로세서로 달리 표현될 수 있다.
가속기(130)는 복수의 PE(Processing Element)들 및 온 칩 메모리를 포함할 수 있다. PE 어레이들의 개수는, 예를 들어, 16개일 수 있고 각 PE 어레이의 사이즈는, 예를 들어, 128Х128일 수 있다. 전술한 PE 어레이들의 개수와 각 PE 어레이의 사이즈는 예시적인 사항일 뿐, PE 어레이들의 개수와 각 PE 어레이의 사이즈는 전술한 예로 제한되지 않는다. 온 칩 메모리는 온-칩 버퍼로 달리 표현될 수 있다. 온 칩 메모리는 스크래치패드 메모리(scratchpad memory), SRAM(Static Random Access Memory)를 포함할 수 있다. 메모리(120)에 저장된 가중치들과 입력 데이터가 온 칩 메모리로 전달될 수 있다.
호스트(110)는 컴파일러의 런타임(runtime) 동안 추론 태스크에 포함된 레이어들 각각을 하나 이상의 서브 레이어로 분할할 수 있고, 추론 태스크의 각 레이어 별로 서브 레이어들을 포함하는 그룹을 생성할 수 있다. 또한, 호스트(110)는 추론 태스크로부터 생성된 그룹들 각각의 정보를 해당 추론 태스크의 스케줄링 테이블에 기록할 수 있고 해당 스케줄링 테이블을 가속기(130)로 전달할 수 있다. 이에 대해선 도 2를 통해 후술한다.
가속기(130)는 후술할 동적 스케줄링 알고리즘을 기초로 PE 어레이들에 그룹들을 할당하여 다수의 그룹들(또는 추론 태스크들)을 병렬로 처리할 수 있다. 이에 따라, 동일한 가중치들을 공유하는 그룹들(또는 추론 태스크들)이 우선시되어 병렬로 처리될 수 있다. 또한, 가속기(130) 내의 PE 어레이가 그룹에 대한 연산을 수행하는 연산 시간이 다른 그룹의 가중치가 다른 PE 어레이로 전달되는 메모리 시간과 오버랩(overlap)될 수 있어, 자원 효율성이 향상될 수 있다.
도 2 내지 도 3은 일 실시예에 따른 호스트의 동작을 설명하기 위한 도면이다.
도 2를 참조하면, 추론 태스크 1(210)이 도시된다. 추론 태스크 1(210)은 레이어 1 내지 레이어 A를 포함할 수 있다. 가속기(130)는 16개의 PE 어레이들을 포함할 수 있다.
호스트(110)는 추론 태스크 1(210)의 각 레이어를 PE 어레이 사이즈(예를 들어, 128Х128)를 기초로 분할하여 서브 레이어를 생성할 수 있고, 각 레이어마다 PE 어레이들의 개수(예를 들어, 16개) 만큼의 서브 레이어들을 그룹으로 형성할 수 있다. 호스트(110)는 어떤 레이어가 16개 미만의 서브 레이어들로 분할된 경우, 해당 서브 레이어들을 하나의 그룹으로 형성할 수 있다. 호스트(110)는 어떤 레이어를 16개를 초과한 서브 레이어들로 분할한 경우, 16개의 서브 레이어들을 하나의 그룹으로 형성할 수 있고, 나머지를 별도 그룹으로 형성할 수 있다.
도 2에 도시된 예에서, 추론 태스크 1(210)의 레이어 1의 사이즈는 PE 어레이 사이즈와 동일할 수 있다. 이 경우, 추론 태스크 1의 레이어 1(210-1)은 복수의 서브 레이어들로 분할되지 않는다. 호스트(110)는 추론 태스크 1(210)의 레이어 2(210-2)를 PE 어레이 사이즈를 기초로 분할하여 16개의 서브 레이어들(210-2-1 내지 210-2-16)을 생성할 수 있다. 호스트(110)는 추론 태스크 1(210)의 레이어 A(210-A)를 PE 어레이 사이즈를 기초로 분할하여 18개의 서브 레이어들(210-A-1 내지 210-A-18)을 생성할 수 있다.
호스트(110)는 레이어 1(210-1)을 그룹 1_1로 형성할 수 있다. 추론 태스크 1의 레이어 2(210-2)는 16개의 서브 레이어들(210-2-1 내지 210-2-16)로 분할되었으므로, 호스트(110)는 16개의 서브 레이어들(210-2-1 내지 210-2-16)을 그룹 1_2로 형성할 수 있다. 추론 태스크 1의 레이어 A(210-A)는 18개의 서브 레이어들(210-A-1 내지 210-2-18)로 분할되었다. 이 경우, 호스트(110)는 16개의 서브 레이어들(210-A-1 내지 210-A-16)을 그룹 1_A_1로 형성할 수 있고, 나머지 서브 레이어들(210-A-17 및 210-A-18)을 그룹 1_A_2로 형성할 수 있다.
아래 표 1은 추론 태스크 1(210)의 레이어 별 그룹을 보여준다.
레이어 그룹
레이어 1(210-1) 그룹 1_1
레이어 2(210-2) 그룹 1_2
레이어 A(210-A) 그룹 1_A_1 및 그룹 1_A_2
호스트(110)는 추론 태스크 1(210)의 스케줄링 테이블(310-1)에 추론 태스크 1(210)의 각 레이어 별 그룹의 정보를 기록할 수 있다. 그룹의 정보는, 예를 들어, 그룹의 MB(Memory Block) 정보, CB(Computation Block) 정보, 및 의존성(dependency) 정보를 포함할 수 있다. MB 정보는 그룹의 사이클(cycle)을 포함할 수 있다. MB 정보 내의 cycle은 그룹의 연산에 필요한 데이터(예를 들어, 그룹의 가중치들)가 메모리(120)에서 가속기(130)(또는 가속기(130) 내부의 PE 어레이들)로 전달되는데 소요되는 전달 시간(이하, 메모리 시간(memory time))의 예측값을 나타낼 수 있다.
CB 정보는 그룹의 cycle을 포함할 수 있다. CB 정보 내의 cycle은 그룹에 대한 연산이 수행되는 시간(이하, 연산 시간(computation time))의 예측값을 나타낼 수 있다. 또한, CB 정보는 그룹의 가중치들의 메모리 주소, 그룹의 입력 데이터의 메모리 주소를 포함할 수 있다.
의존성 정보는 그룹과 의존성을 갖는 후행 그룹의 식별자와 그룹의 레이어의 식별자를 포함할 수 있다.
도 3에 추론 태스크 1(210)의 스케줄링 테이블(310)의 일례가 도시된다.
도 3에 도시된 예에서, 호스트(110)는 그룹 1_1의 가중치들이 메모리(120)에서 가속기(130)로 전달되는데 소요되는 전달 시간의 예측값을 그룹 1_1의 가중치들의 사이즈를 이용하여 계산할 수 있고, 계산된 예측값을 항목(311-1)에 기록할 수 있다. 호스트(110)는 그룹 1_1의 연산이 수행되는 시간의 예측값을 그룹 1_1의 입력 데이터의 사이즈를 이용하여 계산할 수 있고, 계산된 예측값을 항목(311-2)에 기록할 수 있다. 호스트(110)는 그룹 1_1의 가중치들의 메모리 시작 주소와 메모리 끝 주소 각각을 항목(311-3)과 항목(311-4) 각각에 기록할 수 있다. 호스트(110)는 그룹 1_1의 입력 데이터의 메모리 시작 주소와 메모리 끝 주소 각각을 항목(311-5)과 항목(311-6) 각각에 기록할 수 있다. 호스트(110)는 그룹 1_1과 의존성을 갖는 후행 그룹의 식별자를 항목(311-7)에 기록할 수 있다. 일례로, 그룹 1_2는 그룹 1_1과 의존성을 갖는 후행 그룹일 수 있다. 호스트(110)는 항목(311-7)에 그룹 1_2의 식별자를 기록할 수 있다. 그룹 1_1의 레이어는 레이어 1(210-1)이므로 호스트(110)는 항목(311-8)에 레이어 1(210-1)의 식별자를 기록할 수 있다.
앞서 설명한 그룹 1_1의 정보를 스케줄링 테이블(310)에 기록하는 것과 유사하게, 호스트(110)는 그룹 1_2의 정보를 스케줄링 테이블(310)에 기록할 수 있다. 도 3에 도시된 예에서, 호스트(110)는 그룹 1_2의 메모리 시간의 예측값을 항목(312-1)에 기록할 수 있다. 호스트(110)는 그룹 1_2의 연산 시간의 예측값을 항목(312-2)에 기록할 수 있다. 호스트(110)는 그룹 1_2의 가중치들의 메모리 시작 주소와 메모리 끝 주소 각각을 항목(312-3)과 항목(312-4) 각각에 기록할 수 있다. 호스트(110)는 그룹 1_2의 입력 데이터의 메모리 시작 주소와 메모리 끝 주소 각각을 항목(312-5)과 항목(312-6) 각각에 기록할 수 있다. 호스트(110)는 그룹 1_2와 의존성을 갖는 후행 그룹의 식별자를 항목(312-7)에 기록할 수 있고, 그룹 1_2의 레이어는 레이어 2(210-2)이므로 항목(312-8)에 레이어 2(210-2)의 식별자를 기록할 수 있다.
호스트(110)는 추론 태스크 1(210)의 나머지 그룹들 각각의 정보를 스케줄링 테이블(310)에 기록할 수 있다.
호스트(110)는 스케줄링 테이블(310)을 가속기(130)로 전달할 수 있다.
다시 도 2로 돌아와서, 호스트(110)는 디바이스로부터 데이터와 추론 요청을 수신함으로써 호스트(110)에는 추론 태스크 2(220)가 있을 수 있다.
추론 태스크 2(220)는 레이어 1(220-1) 내지 레이어 B(220-B)를 포함할 수 있다.
호스트(110)는 추론 태스크 2(220)의 각 레이어를 PE 어레이 사이즈를 기초로 분할하여 하나 이상의 서브 레이어를 생성할 수 있고, 각 레이어마다 16개의 서브 레이어들을 그룹으로 형성할 수 있다.
도 2에 도시된 예에서, 호스트(110)는 추론 태스크 2(220)의 레이어 1(220-1)를 PE 어레이 사이즈를 기초로 분할하여 2개의 서브 레이어들(220-1-1 및 220-1-2)을 생성할 수 있다. 호스트(110)는 추론 태스크 2(220)의 레이어 2(220-2)를 PE 어레이 사이즈를 기초로 분할하여 16개의 서브 레이어들(220-2-1 내지 220-2-16)을 생성할 수 있다. 호스트(110)는 추론 태스크 2(220)의 레이어 B(220-B)를 PE 어레이 사이즈를 기초로 분할하여 17개의 서브 레이어들(220-B-1 내지 210-B-17)을 생성할 수 있다.
추론 태스크 2(220)의 레이어 1(220-1)는 서브 레이어들(220-1-1 및 220-1-2)로 분할되었으므로, 호스트(110)는 서브 레이어들(220-1-1 및 220-1-2)을 그룹 2_1로 형성할 수 있다. 추론 태스크 2의 레이어 2(220-2)는 16개의 서브 레이어들(210-2-1 내지 210-2-16)로 분할되었으므로, 호스트(110)는 서브 레이어들(220-2-1 내지 220-2-16)을 그룹 2_2로 형성할 수 있다. 추론 태스크 2의 레이어 B(220-B)는 17개의 서브 레이어들(220-B-1 내지 220-B-17)로 분할되었다. 이 경우, 호스트(110)는 16개의 서브 레이어들(220-B-1 내지 220-B-16)을 그룹 2_B_1로 형성할 수 있고, 나머지 서브 레이어(220-B-17)를 그룹 2_B_2로 형성할 수 있다.
아래 표 2는 추론 태스크 2(220)의 레이어 별 그룹을 보여준다.
레이어 그룹
레이어 1(220-1) 그룹 2_1
레이어 2(220-2) 그룹 2_2
레이어 B(220-B) 그룹 2_B_1 및 그룹 2_B_2
호스트(110)는 추론 태스크 2(220)의 스케줄링 테이블(310-2)에 추론 태스크 2(220)의 각 레이어 별 그룹의 정보를 기록할 수 있고, 스케줄링 테이블(310-2)을 가속기(130)로 전달할 수 있다.
도 4는 일 실시예에 따른 가속기를 설명하기 위한 도면이다.
도 4를 참조하면, 가속기(130)는 메모리(410), 스케줄러(411), 메모리 컨트롤러(412), 온 칩 메모리(413), 입력 fetcher(414), 가중치 fetcher(415), PE 어레이들(416), 어큐뮬레이터(accumulator)(417), 정규화/활성화부(normalization/activation unit)(418), 및 풀링부(polling unit)(419)를 포함한다.
가속기(130) 외부에 있는 메모리(420)는 도 1을 통해 설명한 메모리(120)에 해당할 수 있다. 메모리(420)는 그룹들 각각의 입력 데이터와 가중치들을 저장할 수 있다. 이에 제한되지 않고, 메모리(420)는 상술한 메모리(120)와 물리적으로 구별되는 별도의 메모리일 수 있다.
가속기(130) 내부의 메모리(410)는 호스트(110)로부터 수신한 스케줄링 테이블을 저장한다. 일례로, 메모리(410)는 추론 태스크 1(210)의 스케줄링 테이블(310)을 저장할 수 있다. 또한, 메모리(410)는 추론 태스크 2(220)의 스케줄링 테이블(320)을 저장할 수 있다.
메모리(410)는 SRAM일 수 있으나 이에 제한되지 않는다.
스케줄러(411)는 메모리(410)에 저장된 스케줄링 테이블을 참조하여 동적 스케줄링을 수행할 수 있다. 스케줄러(411)에 대한 설명은 후술한다.
메모리 컨트롤러(412)는 가속기(130) 외부의 메모리(420)에 저장된 입력 데이터와 가중치들을 온 칩 메모리(413)에 저장할 수 있다.
입력 fetcher(414)는 온 칩 메모리(413)에서 그룹의 입력 데이터를 페칭할 수 있다. 그룹의 입력 데이터는 추론 태스크의 입력 데이터의 일부일 수 있다. 입력 fetcher(414)는 페칭된 입력 데이터를 PE 어레이들(416) 중 해당 그룹이 할당된 하나 이상의 PE 어레이에 전달할 수 있다. 일례로, 그룹들(예: 상술한 표 1의 그룹) 중 제1 그룹이 PE 어레이 1과 2에 할당된 경우, 입력 fetcher(414)는 스케줄링 테이블을 참조하여 온 칩 메모리(413)에 저장된 제1 그룹의 입력 데이터를 페칭할 수 있고, 제1 그룹의 입력 데이터를 PE 어레이 1과 2에 전달할 수 있다. 여기서, 제1 그룹은 위 표 1의 그룹들 중 우선순위가 가장 높을 그룹을 나타낼 수 있다.
가중치 fetcher(415)는 온 칩 메모리(413)에서 그룹의 가중치들을 페칭할 수 있고, 페칭된 가중치들을 PE 어레이들(416)에 전달할 수 있다. 그룹의 가중치들은 온 칩 메모리(413)에 저장된 가중치들 중 일부일 수 있다. 일례로, 가중치 fetcher(415)는 스케줄링 테이블을 참조하여 온 칩 메모리(413)에서 제1 그룹의 가중치들을 페칭할 수 있고, 제1 그룹의 가중치들을 PE 어레이 1과 2에 전달할 수 있다.
PE 어레이들(416)은 멀티 시스톨릭(systolic) 어레이들일 수 있다. PE 어레이들(416)의 개수는 n개이다. PE 어레이들(416) 각각은 가중치 스테이셔너리 시스톨릭 어레이(weight stationary systolic array)로, 예를 들어, 128Х128 사이즈의 PE들을 포함할 수 있다.
PE 어레이들(416) 각각은 입력받은 가중치들과 입력 데이터를 기초로 연산을 수행할 수 있다. 일례로, PE 어레이 1과 2 각각은 제1 그룹의 가중치들과 입력 데이터를 기초로 제1 그룹에 대한 연산을 수행할 수 있다.
PE 어레이들(416) 각각은 연산 결과를 어큐뮬레이터(417)로 전달할 수 있다.
어큐뮬레이터(417)는 PE 어레이들(416) 각각의 연산 결과의 부분합(partial sum)을 수행할 수 있다. 이 때, 어떤 연산 결과끼리 부분합이 수행될지는 스케줄러(411)에 의해 결정될 수 있다. 어큐뮬레이터(417)는 부분합의 결과를 온 칩 메모리(413)에 저장할 수 있다. 부분합의 결과는 어떤 그룹의 입력 데이터가 될 수 있다.
어큐뮬레이터(417)는 부분합의 결과를 정규화/활성화부(418)에 전달할 수 있다.
정규화/활성화부(418)는 뉴럴 네트워크의 정규화/활성화 레이어를 구현한 회로를 포함할 수 있다. 정규화/활성화부(418)는 부분합의 결과에 정규화 및/또는 활성화(예를 들어, ReLU 함수)를 수행할 수 있다.
풀링부(419)는 뉴럴 네트워크의 풀링 레이어를 구현한 회로를 포함할 수 있다. 풀링부(419)는 정규화/활성화부(418)의 출력에 풀링(예를 들어, max 풀링)을 수행할 수 있다. 풀링부(419)는 풀링 결과를 온 칩 메모리(413)에 저장할 수 있다.
도 5 내지 도 11은 일 실시예에 따른 가속기 내의 스케줄러의 스케줄링 방법을 설명하기 위한 도면이다.
도 5를 참조하면, 스케줄러(411)는 후보 큐(510), 동적 스케줄링 알고리즘(520), 및 CB 큐 집합(530)를 포함한다.
후술하겠지만, 후보 큐(510)에는 연산이 수행되는 그룹과 의존성을 갖지 않은 그룹이 삽입 또는 인큐잉될 수 있다.
CB 큐 집합(530)은 PE 어레이들(416) 각각에 대한 큐를 포함할 수 있다. PE 어레이들(416) 각각에 대한 큐에는 PE 어레이들(416) 각각이 수행할 그룹의 CB가 삽입 또는 인큐잉될 수 있다. 달리 표현하면, CB 큐 집합(530)은 PE 어레이들(416) 각각이 어떤 그룹의 CB를 수행할 지(또는 수행하고 있는지)를 알기 위한 CB 큐를 포함할 수 있다.
아래 표 3과 표 4는 동적 스케줄링 알고리즘(520)의 일례를 보여준다.
Figure pat00001
Figure pat00002
위 표 3과 표 4에서 SG는 상술한 그룹을 나타낸다.SRAM_C는 온 칩 메모리(413)의 잔여 용량을 기초로 계산된 시간값을 나타낸다. 이에 대해선 후술한다.
CB_C는 수행된 총 CB의 cycle을 나타내고, MB_C는 수행된 총 MB의 cycle을 나타내며, CB_Q_C는 CB_PQ에 있는 CB_Q에서 수행된 CB들의 cycle 집합을 나타낸다. 여기서, CB_PQ는 CB 큐 집합(530)를 나타내고, CB_Q는 각 PE 어레이에 대한 CB 큐를 나타낸다. SG_Q는 상술한 후보 큐(510)를 나타낼 수 있다.
E_sum은 병렬 처리(또는 동시 수행)될 그룹들의 서브 레이어들의 개수의 합을 나타낸다.
이하, 도 6 내지 도 11을 참조하면서 동적 스케줄링 알고리즘(530)에 따른 스케줄러(411)의 상세 동작에 대해 설명한다.
도 6을 참조하면, 스케줄러(411)의 스케줄링 방법이 도시된다.
스케줄링 방법은 동작(610) 내지 동작(660)을 포함한다.
동작(610)에서, 스케줄러(411)는 복수의 그룹들 중에서 우선순위가 가장 높은 그룹을 선택할 수 있다. 그룹의 우선순위는 해당 그룹의 추론 태스크의 우선순위로 결정될 수 있다. 일례로, 상술한 표 1의 그룹들 각각의 우선순위는 추론 태스크 1(210)의 우선순위로 결정될 수 있고, 상술한 표 2의 그룹들 각각의 우선순위는 추론 태스크 2(220)의 우선순위로 결정될 수 있다.
스케줄러(411)는 그룹들의 우선순위가 동일하면 가장 먼저 수행되어야 하는 그룹을 선택할 수 있다. 일례로, 상술한 표 1의 그룹들은 하나의 추론 태스크 1(210)로부터 생성된 것이어서, 상술한 표 1의 그룹들의 우선순위는 동일할 수 있다. 스케줄러(411)는 스케줄링 테이블(310)의 최상단에 기록된 정보를 갖는 그룹 1_1(즉, 가장 먼저 수행되어야 하는 그룹 1_1)을 선택할 수 있다.
동작(620)에서, 스케줄러(411)는 선택된 그룹과 가중치들을 공유하는 그룹이 있는지 여부를 확인할 수 있다. 스케줄러(411)는 동작(610)에서 우선순위가 가장 높은 제1 그룹을 선택한 경우, 제1 그룹의 가중치들을 공유하는 그룹이 있는지 여부를 확인할 수 있다. 제1 그룹의 가중치들을 공유하는 그룹을 "가중치 공유 그룹"이라 지칭한다.
제1 그룹의 가중치 공유 그룹이 있는 경우, 동작(630)에서 스케줄러(411)는 2개의 그룹들(다시 말해, 제1 그룹 및 가중치 공유 그룹)이 병렬로 수행되도록 할 수 있다. 일례로, 스케줄러(411)는 PE 어레이들(416) 중 절반(예를 들어, PE 어레이 1~8)에 제1 그룹을 할당할 수 있고, PE 어레이들(416) 중 나머지 절반(예를 들어, PE 어레이 9~16)에 가중치 공유 그룹을 할당할 수 있다. 가중치 fetcher(415)는 온 칩 메모리(413)에 저장된 제1 그룹의 가중치들을 fetching할 수 있고, 제1 그룹의 가중치들을 PE 어레이 1~16으로 전달할 수 있다. 입력 fetcher(414)는 온 칩 메모리(413)에 저장된 제1 그룹의 입력 데이터를 페칭할 수 있고 제1 그룹의 입력 데이터를 PE 어레이 1~8로 전달할 수 있다. 입력 fetcher(414)는 온 칩 메모리(413)에 저장된 가중치 공유 그룹의 입력 데이터를 페칭할 수 있고 가중치 공유 그룹의 입력 데이터를 PE 어레이 9~16으로 전달할 수 있다.
PE 어레이 1~8은 제1 그룹의 입력 데이터와 가중치들을 기초로 연산을 수행하여 제1 그룹의 연산 결과를 생성할 수 있다. PE 어레이 9~16은 가중치 공유 그룹의 입력 데이터와 가중치들을 기초로 연산을 수행하여 가중치 공유 그룹의 연산 결과를 생성할 수 있다. 이에 따라, 도 7에 도시된 예와 같이, PE 어레이들(416)은 제1 그룹과 가중치 공유 그룹을 병렬로 처리할 수 있다. 구현에 따라, 복수의 가중치 공유 그룹들이 있을 수 있다. 이 경우, 스케줄러(411)는 제1 그룹과 복수의 가중치 공유 그룹들이 병렬로 처리되도록 스케줄링을 수행할 수 있다. 일례로, 스케줄러(411)는 가중치 공유 그룹들이 2개인 경우, PE 어레이들(416)의 개수 "16"을 제1 그룹의 개수 "1"과 가중치 공유 그룹들의 개수 "2"의 합(3)으로 나눌 수 있다. 나눴을 때 몫은 5이고 나머지는 1이다. 이 경우, 스케줄러(411)는 제1 그룹에는 6개의 PE 어레이들을 할당할 수 있고, 첫번째 가중치 공유 그룹에는 5개의 PE 어레이들을 할당할 수 있으며, 두번째 가중치 공유 그룹에는 5개의 PE 어레이들을 할당할 수 있다. 다른 일례로, 스케줄러(411)는 가중치 공유 그룹들이 3개인 경우, PE 어레이들(416)의 개수 "16"을 제1 그룹의 개수 "1"과 가중치 공유 그룹들의 개수 "3"의 합(4)으로 나눌 수 있다. 나눴을 때 몫은 4이고 나머지는 없다. 스케줄러(411)는 제1 그룹과 3개의 가중치 공유 그룹들 각각에 4개의 PE 어레이들을 할당할 수 있다.
도 6으로 돌아와서, 스케줄러(411)는 제1 그룹의 가중치들을 공유하는 그룹이 없는 경우 동작(640)에서 유휴한(idle) PE 어레이가 있는지 여부를 확인할 수 있다. 스케줄러(411)는 PE 어레이들(416) 전부가 제1 그룹을 수행하고 있는 경우 유휴한 PE 어레이가 없다고 결정할 수 있고, PE 어레이들(416) 중 일부가 제1 그룹을 수행하고 있는 경우 유휴한 PE 어레이가 있다고 결정할 수 있다. 동작(640)에서, 유휴한 PE 어레이가 있는지 확인하기 위해 스케줄러(411)는 제1 그룹에 포함된 서브 레이어들의 개수가 PE 어레이들(416)의 개수보다 작은 지 여부를 확인할 수 있다. 달리 표현하면, 스케줄러(411)는 제1 그룹의 가중치들의 사이즈가 PE 어레이들(416)의 전체 사이즈보다 작은 지 여부를 확인할 수 있다.
유휴한 PE 어레이가 없는 경우 동작(660)에서, 스케줄러(411)는 연산이 필요한 그룹이 남아 있는지 여부를 확인할 수 있다. 연산이 필요한 그룹이 남아 있는 경우, 동작(610)에서 스케줄러(411)는 남아있는 그룹에서 우선순위가 가장 높은 그룹을 선택할 수 있다.
유휴한 PE 어레이가 있는 경우, 동작(650)에서, 스케줄러(411)는 메모리 시간과 연산 시간을 오버랩하기 위해 다른 그룹을 선택할 수 있다. 달리 표현하면, 스케줄러(411)는 제1 그룹의 연산 시간과 오버랩되는 메모리 시간을 갖는 제2 그룹을 선택할 수 있다. 동작(660)에서, 스케줄러(411)는 제2 그룹을 선택한 경우 연산이 필요한 그룹이 남아있는지 확인할 수 있고 남아있는 그룹이 있는 경우 동작(610)을 수행할 수 있다.
이하, 동작(650)에 대해서 상세히 설명한다.
스케줄러(411)는 메모리(410)에 저장된 스케줄링 테이블을 참조하여 제1 그룹의 CB의 cycle을 리메인더(remainder)로 정의(또는 결정)할 수 있다. 여기서, 제1 그룹의 CB의 cycle은 제1 그룹의 연산 시간의 예측값을 나타낼 수 있다.
스케줄러(411)는 메모리(410)에 저장된 스케줄링 테이블을 참조하여 제1 그룹과 의존성을 갖지 않는 하나 이상의 그룹을 식별할 수 있고 식별된 그룹을 후보 큐(510)에 인큐잉할 수 있다. 스케줄러(411)는 인큐잉된 그룹들 중 제1 인큐잉된 그룹의 가중치들의 사이즈와 제1 그룹의 가중치들의 사이즈의 합이 PE 어레이들(416)의 사이즈를 초과하는지 여부를 결정할 수 있다. 달리 표현하면, 스케줄러(411)는 제1 인큐잉된 그룹에 포함된 서브 레이어들의 개수와 제1 그룹에 포함된 서브 레이어들의 개수의 합(즉, 위 표 3의 알고리즘의 E_sum)이 PE 어레이들(416)의 개수를 초과하는지 여부를 결정할 수 있다.
스케줄러(411)는 제1 인큐잉된 그룹의 가중치들의 사이즈와 제1 그룹의 가중치들의 사이즈의 합이 PE 어레이들(416)의 사이즈보다 작은 경우, 온 칩 메모리(413)의 잔여 용량(또는 잔여 사이즈)만큼의 사이즈를 갖는 데이터가 PE 어레이들(416)로 이동하는데 걸리는 시간의 예측값(즉, 위 표 3과 표 4의 알고리즘의 SRAM_C)을 계산할 수 있다.
스케줄러(411)는 스케줄링 테이블로부터 제1 인큐잉된 그룹의 MB의 cycle을 획득할 수 있다. 어떤 그룹의 MB의 cycle은 위 표 3의 알고리즘에서 MB.cycle로 표현되어 있다. 제1 인큐잉된 그룹의 MB의 cycle은 제1 인큐잉된 그룹의 메모리 시간(즉, 가중치들이 PE 어레이들(416)로 전달되는데 소요되는 전달 시간)의 예측값을 나타낼 수 있다. 스케줄러(411)는 제1 인큐잉된 그룹의 MB의 cycle이 SRAM_C를 초과하는지 여부를 결정할 수 있다.
스케줄러(411)는 제1 인큐잉된 그룹의 MB의 cycle이 SRAM_C보다 작은 경우(즉, 제1 인큐잉된 그룹의 메모리 시간의 예측값이 SRAM_C보다 작은 경우), 제1 인큐잉된 그룹의 MB의 cycle이 상술한 remainder(즉, 제1 그룹의 CB의 cycle)보다 작은 지 여부를 결정할 수 있다. 스케줄러(411)는 제1 인큐잉된 그룹의 MB의 cycle이 remainder보다 작은 경우 제1 인큐잉된 그룹을 제2 그룹으로 선택할 수 있다.
스케줄러(411)는 제2 그룹에 하나 이상의 PE 어레이를 할당할 수 있다. 스케줄러(411)는 제2 그룹 내의 서브 레이어들의 개수만큼의 PE 어레이들을 제2 그룹에 할당할 수 있다. 일례로, 제2 그룹이 4개의 서브 레이어들을 포함하면, 스케줄러(411)는 4개의 PE 어레이들을 제2 그룹에 할당할 수 있다.
스케줄러(411)는 어떤 PE 어레이가 어떤 그룹의 CB를 수행하는지를 관리할 수 있다. 일례로, 제1 그룹이 PE 어레이 1과 2에 수행되는 경우, 도 8에 도시된 예와 같이 스케줄러(411)는 CB 큐 집합(530)에서 PE 어레이 1~2 각각에 대한 큐에 제1 그룹의 CB를 인큐잉할 수 있다. 제2 그룹이 PE 어레이 3~6에 의해 수행되는 경우, 스케줄러(411)는 PE 어레이 3~6 각각에 대한 큐에 제2 그룹의 CB를 인큐잉할 수 있다. 도 9를 통해 후술하겠지만, PE 어레이 3~6은 제2 그룹의 연산을 수행하기 전에 제1 그룹의 연산을 수행할 수 있다. 이러한 경우 실시예에 따라 PE 어레이 3~6 각각에 대한 큐에는 제1 그룹의 CB가 더 인큐잉될 수 있다.
도 9를 참조하면, PE 어레이 1~2는 제1 그룹에 대한 연산을 수행할 수 있다.
도 9에 도시된 예에서, PE 어레이 7~16에는 제1 그룹과 제2 그룹이 할당되어 있지 않아, PE 어레이 7~16은 PE 어레이 1~2의 연산 시간(920) 동안 유휴할 수 있다. 스케줄러(411)는 PE 어레이 7~16이 유휴하지 않고 제1 그룹이 보다 빠르게 처리되도록 PE 어레이 7~16이 제1 그룹에 대한 연산을 수행하게 할 수 있다. 일례로, 제1 그룹의 CB의 cycle과 제2 그룹의 CB의 cycle 중 제1 그룹의 cycle이 더 클 수 있다. 달리 표현하면, 제2 그룹의 CB보다 제1 그룹의 CB가 더 길수 있다. 스케줄러(411)는 제1 그룹이 보다 빠르게 처리되도록 PE 어레이 7~16이 제1 그룹에 대한 연산을 수행하도록 스케줄링할 수 있다.
또한, PE 어레이 3~6이 제2 그룹을 수행하기 전에는 유휴할 수 있다. 이 경우, 스케줄러(411)는 제1 그룹이 보다 빠르게 처리되도록 PE 어레이 3~6이 제2 그룹을 수행하기 전 제1 그룹에 대한 연산을 수행하도록 할 수 있다.
PE 어레이 1~2의 연산 시간(920) 동안 제2 그룹의 가중치들은 가중치 fetcher(415)를 통해 PE 어레이 3~6으로 전달될 수 있고 제2 그룹의 입력 데이터가 입력 fetcher(414)를 통해 PE 어레이 3~6으로 전달될 수 있다. 다시 말해, 제2 그룹의 메모리 시간(910) 동안 제2 그룹의 가중치들과 입력 데이터가 PE 어레이 3~6으로 전달될 수 있다. 도 9에 도시된 예와 같이, 제2 그룹의 메모리 시간(910)은 제1 그룹의 연산 시간(920)과 연산 시간(930)과 오버랩될 수 있다. 이에 따라, 자원 효율성이 향상될 수 있다.
PE 어레이 3~6은 제2 그룹의 가중치들과 입력 데이터를 전달받을 수 있고, 제2 그룹의 가중치들과 입력 데이터를 기초로 제2 그룹에 대한 연산을 수행할 수 있다. 연산 시간(930)과 메모리 시간(910)은 동일할 수 있다. PE 어레이 3~6은 연산 시간(940) 동안 제2 그룹에 대한 연산을 수행할 수 있다. 도 9에 도시된 예와 같이, PE 어레이들(416)에서 제1 그룹과 제2 그룹은 병렬적으로 처리될 수 있다. 이에 따라, 자원 효율성이 향상될 수 있다.
실시예에 따라, 스케줄러(411)는 제1 그룹의 가중치들의 사이즈와 제2 그룹의 가중치들의 사이즈의 합이 PE 어레이들(416)의 사이즈보다 작은 경우, 제1 그룹 및 제2 그룹과 의존성을 갖지 않는 제3 그룹을 선택할 수 있다. 달리 표현하면, 스케줄러(411)는 PE 어레이들(416)이 병렬 처리할 여력이 있는 경우 제3 그룹을 선택할 수 있다. 이하, 제3 그룹 선택에 대해 설명한다.
스케줄러(411)는 제1 그룹의 CB의 cycle과 제2 그룹의 MB의 cycle 사이의 차이값을 계산할 수 있고, 앞서 정의한 remainder를 계산된 차이값으로 업데이트할 수 있다. 다시 말해, 스케줄러(411)는 제1 그룹의 CB의 cycle로 정의하였던 remainder를 "제1 그룹의 CB의 cycle
Figure pat00003
제2 그룹의 MB의 cycle"로 업데이트할 수 있다.
스케줄러(411)는 제1 그룹의 가중치들의 사이즈, 제2 그룹의 가중치들의 사이즈, 및 후보 큐(510) 상의 제2 인큐잉된 그룹의 가중치들의 사이즈의 합을 계산할 수 있고, 계산된 사이즈의 합이 PE 어레이들(416)의 사이즈를 초과하는지 여부를 결정할 수 있다. 달리 표현하면, 스케줄러(411)는 제1 그룹에 포함된 서브 레이어들의 개수, 제2 그룹에 포함된 서브 레이어들의 개수, 및 제2 인큐잉된 그룹에 포함된 서브 레이어들의 개수의 합을 계산할 수 있고 계산된 개수의 합이 PE 어레이들(416)의 개수를 초과하는지 여부를 결정할 수 있다.
스케줄러(411)는 계산된 사이즈의 합이 PE 어레이들(416)의 사이즈를 초과하지 않는 경우, SRAM_C를 업데이트할 수 있다. 일례로, 스케줄러(411)는 온 칩 메모리(413)의 잔여 용량을 재차 확인할 수 있고 확인된 잔여 용량을 기초로 SRAM_C를 업데이트할 수 있다. 스케줄러(411)는 제2 인큐잉된 그룹의 MB의 cycle이 업데이트된 SRAM_C 보다 작은 지 여부를 확인할 수 있다.
스케줄러(411)는 제2 인큐잉된 그룹의 MB의 cycle이 업데이트된 SRAM_C 보다 작은 경우, 제2 인큐잉된 그룹의 MB의 cycle이 업데이트된 remainder보다 작은 지 여부를 결정할 수 있다.
스케줄러(411)는 제2 인큐잉된 그룹의 MB의 cycle이 업데이트된 remainder보다 작은 경우, 제2 인큐잉된 그룹을 제3 그룹으로 선택할 수 있다.
스케줄러(411)는 제3 그룹에 하나 이상의 PE 어레이를 할당할 수 있다. 일례로, 앞서 도 9를 통해 설명한 예에서 PE 어레이 7~16은 PE 어레이 1~2와 중복으로 제1 그룹을 처리하고 있으므로, 스케줄러(411)는 제3 그룹에 PE 어레이 7~16을 할당할 수 있다.
스케줄러(411)는 도 10에 도시된 예와 같이 CB 큐 집합(530)에서 PE 어레이 7~16 각각에 대한 큐에 제3 그룹의 CB를 인큐잉할 수 있다.
도 11에 메모리 시간과 PE 어레이들(416)의 연산 시간의 일례가 도시된다.
도 11에 도시된 메모리 시간을 참조하면, 메모리 시간(1110) 동안 제3 그룹의 가중치들과 입력 데이터가 PE 어레이 7~16로 전달될 수 있다. 제3 그룹의 메모리 시간(1110)은 연산 시간(920), 연산 시간(940), 및 연산 시간(1130)과 오버랩될 수 있다. 이에 따라, 제3 그룹이 보다 빠르게 처리될 수 있다.
PE 어레이 7~16은 제3 그룹의 가중치들과 입력 데이터를 통해 제3 그룹에 대한 연산을 연산 시간(1140) 동안 수행할 수 있다.
스케줄러(411)는 PE 어레이 3~6이 제2 그룹의 연산을 종료하면(즉, 연산 시간(940)이 끝나면) PE 어레이 3~6이 유휴하지 않도록 PE 어레이 3~6이 제3 그룹에 대한 연산을 수행하도록 할 수 있다. PE 어레이 3~6은 제2 그룹의 연산이 종료한 후 연산 시간(1120) 동안 제3 그룹의 연산을 수행할 수 있다.
도 11에 도시된 예와 같이 PE 어레이들(416)은 제1 그룹 내지 제3 그룹을 병렬적으로 처리할 수 있어, 자원이 효율적으로 활용될 수 있다.
도 12는 일 실시예에 따른 다수의 추론 태스크들의 병렬 처리를 설명하기 위한 도면이다.
도 12를 참조하면, 가속기(130)는 추론 태스크 1(210)을 처리한다.
호스트(110)에 추론 태스크 2(220)가 있으면, 스케줄러(411)는 동적 스케줄링 알고리즘(520)(또는 앞서 설명한 스케줄링 방법)에 따라 동작하여 PE 어레이들(416)이 추론 태스크 1(210)과 추론 태스크 2(220)를 병렬로 처리하도록 스케줄링할 수 있다.
호스트(110)에 추론 태스크 3(1210)이 있으면, 호스트(110)는 추론 태스크 3(1210)의 스케줄링 테이블을 생성할 수 있고, 추론 태스크 3(1210)의 스케줄링 테이블을 가속기(130)로 전달할 수 있다. 스케줄러(411)는 추론 태스크 2(220)의 스케줄링 테이블(320)과 추론 태스크 3(1210)의 스케줄링 테이블을 참조하여 PE 어레이들(416)이 여러 그룹들을 병렬로 처리하도록 스케줄링 할 수 있다. 이 때, 추론 태스크 2(220)보다 추론 태스크 3(1210)의 우선순위가 더 높으므로 스케줄러(411)는 추론 태스크 3(1210)이 우선적으로 처리되도록 스케줄링할 수 있다. 도 12에 도시된 예와 같이, 가속기(130)는 추론 태스크 2(220)와 추론 태스크 3(1210)을 병렬로 처리할 수 있다.
도 13은 일 실시예에 따른 가속기의 동작 방법을 설명하기 위한 순서도이다.
도 13을 참조하면, 동작(1310)에서, 가속기(130)는 복수의 그룹들 중에서 제1 그룹에 대한 연산을 실행할 수 있다.
동작(1320)에서, 가속기(130)는 그룹들 중에서 제1 그룹의 가중치들을 공유하는 그룹이 있는지 여부를 확인할 수 있다.
동작(1330)에서, 가속기(130)는 제1 그룹의 가중치들을 공유하는 그룹이 없는 경우, 제1 그룹의 가중치들의 사이즈와 PE 어레이들(416)의 사이즈를 비교할 수 있다. 달리 표현하면, 가속기(130)는 제1 그룹 내의 서브 레이어의 개수와 PE 어레이들의 개수를 비교할 수 있다.
동작(1340)에서, 가속기(130)는 제1 그룹의 가중치들의 사이즈가 PE 어레이들(416)의 사이즈보다 작은 경우, PE 어레이들(416)의 사이즈, 온 칩 메모리(413)의 용량, 및 제1 그룹의 연산 시간의 예측값(상술한 제1 그룹의 CB의 cycle)을 기초로 그룹들 중에서 제2 그룹을 선택할 수 있다.
동작(1340)에서, 가속기(130)는 그룹들의 정보가 기록된 테이블(예를 들어, 상술한 스케줄링 테이블)을 참조하여 제1 그룹과 의존성이 없는 하나 이상의 그룹을 식별할 수 있고, 식별된 하나 이상의 그룹을 후보 큐(510)에 인큐잉할 수 있다. 가속기(130)는 제1 그룹의 가중치들의 사이즈와 후보 큐(510) 내의 제1 인큐잉된 그룹의 가중치들의 사이즈의 합이 PE 어레이들(416)의 사이즈를 초과하는지 여부를 결정할 수 있다. 달리 표현하면, 가속기(130)는 제1 그룹에 포함된 서브 레이어들의 개수와 제1 인큐잉된 그룹에 포함된 서브 레이어들의 개수의 합이 PE 어레이들(416)의 개수를 초과하는지 여부를 결정할 수 있다.
가속기(130)는 계산된 사이즈의 합(또는 계산된 개수의 합)이 PE 어레이들(416)의 사이즈(또는 PE 어레이들(416)의 개수)보다 작은 경우, 제1 인큐잉된 그룹의 가중치들의 전달 시간의 예측값(즉, 제1 인큐잉된 그룹의 MB의 cycle)이 온 칩 메모리(413)의 잔여 용량을 기초로 계산된 시간값(즉, 상술한 SRAM_C)을 초과하는지 여부를 결정할 수 있다.
가속기(130)는 제1 인큐잉된 그룹의 가중치들의 전달 시간의 예측값이 앞서 설명한 시간값(즉, SRAM_C)보다 작은 경우, 제1 인큐잉된 그룹의 가중치들의 전달 시간의 예측값이 제1 그룹의 연산 시간의 예측값(즉, 제1 그룹의 CB의 cycle)보다 작은 지 여부를 결정할 수 있다. 가속기(130)는 제1 인큐잉된 그룹의 가중치들의 전달 시간의 예측값이 제1 그룹의 연산 시간의 예측값보다 작은 경우, 제1 인큐잉된 그룹을 제2 그룹으로 선택할 수 있다.
가속기(130)는 제2 그룹에 하나 이상의 PE 어레이를 할당할 수 있다.
동작(1350)에서, 가속기(130)는 제2 그룹에 대한 연산을 실행한다.
일 실시 예에 있어서, 가속기(130)는 제1 그룹의 가중치들의 사이즈와 제2 그룹의 가중치들의 사이즈의 합이 PE 어레이들(416)의 사이즈보다 작은 경우, PE 어레이들(416)의 사이즈, 온 칩 메모리(413)의 잔여 용량, 제1 그룹의 연산 시간의 예측값, 및 제2 그룹의 가중치들의 전달 시간의 예측값을 기초로 제1 및 제2 그룹과 의존성을 갖지 않은 제3 그룹을 선택할 수 있다. 가속기(130)는 제3 그룹을 선택한 경우, 제3 그룹에 하나 이상의 PE 어레이를 할당할 수 있다.
도 1 내지 도 12를 통해 기술된 사항들은 도 13을 통해 기술된 사항들에 적용될 수 있으므로, 상세한 설명을 생략한다.
이상에서 설명된 실시예들은 하드웨어 구성요소, 소프트웨어 구성요소, 및/또는 하드웨어 구성요소 및 소프트웨어 구성요소의 조합으로 구현될 수 있다. 예를 들어, 실시예들에서 설명된 장치, 방법 및 구성요소는, 예를 들어, 프로세서, 콘트롤러, ALU(arithmetic logic unit), 디지털 신호 프로세서(digital signal processor), 마이크로컴퓨터, FPGA(field programmable gate array), PLU(programmable logic unit), 마이크로프로세서, 또는 명령(instruction)을 실행하고 응답할 수 있는 다른 어떠한 장치와 같이, 범용 컴퓨터 또는 특수 목적 컴퓨터를 이용하여 구현될 수 있다. 처리 장치는 운영 체제(OS) 및 상기 운영 체제 상에서 수행되는 소프트웨어 애플리케이션을 수행할 수 있다. 또한, 처리 장치는 소프트웨어의 실행에 응답하여, 데이터를 접근, 저장, 조작, 처리 및 생성할 수도 있다. 이해의 편의를 위하여, 처리 장치는 하나가 사용되는 것으로 설명된 경우도 있지만, 해당 기술분야에서 통상의 지식을 가진 자는, 처리 장치가 복수 개의 처리 요소(processing element) 및/또는 복수 유형의 처리 요소를 포함할 수 있음을 알 수 있다. 예를 들어, 처리 장치는 복수 개의 프로세서 또는 하나의 프로세서 및 하나의 컨트롤러를 포함할 수 있다. 또한, 병렬 프로세서(parallel processor)와 같은, 다른 처리 구성(processing configuration)도 가능하다.
소프트웨어는 컴퓨터 프로그램(computer program), 코드(code), 명령(instruction), 또는 이들 중 하나 이상의 조합을 포함할 수 있으며, 원하는 대로 동작하도록 처리 장치를 구성하거나 독립적으로 또는 결합적으로(collectively) 처리 장치를 명령할 수 있다. 소프트웨어 및/또는 데이터는, 처리 장치에 의하여 해석되거나 처리 장치에 명령 또는 데이터를 제공하기 위하여, 어떤 유형의 기계, 구성요소(component), 물리적 장치, 가상 장치(virtual equipment), 컴퓨터 저장 매체 또는 장치, 또는 전송되는 신호 파(signal wave)에 영구적으로, 또는 일시적으로 구체화(embody)될 수 있다. 소프트웨어는 네트워크로 연결된 컴퓨터 시스템 상에 분산되어서, 분산된 방법으로 저장되거나 실행될 수도 있다. 소프트웨어 및 데이터는 컴퓨터 판독 가능 기록 매체에 저장될 수 있다.
실시예에 따른 방법은 다양한 컴퓨터 수단을 통하여 수행될 수 있는 프로그램 명령 형태로 구현되어 컴퓨터 판독 가능 매체에 기록될 수 있다. 컴퓨터 판독 가능 매체는 프로그램 명령, 데이터 파일, 데이터 구조 등을 단독으로 또는 조합하여 저장할 수 있으며 매체에 기록되는 프로그램 명령은 실시예를 위하여 특별히 설계되고 구성된 것들이거나 컴퓨터 소프트웨어 당업자에게 공지되어 사용 가능한 것일 수도 있다. 컴퓨터 판독 가능 기록 매체의 예에는 하드 디스크, 플로피 디스크 및 자기 테이프와 같은 자기 매체(magnetic media), CD-ROM, DVD와 같은 광기록 매체(optical media), 플롭티컬 디스크(floptical disk)와 같은 자기-광 매체(magneto-optical media), 및 롬(ROM), 램(RAM), 플래시 메모리 등과 같은 프로그램 명령을 저장하고 수행하도록 특별히 구성된 하드웨어 장치가 포함된다. 프로그램 명령의 예에는 컴파일러에 의해 만들어지는 것과 같은 기계어 코드뿐만 아니라 인터프리터 등을 사용해서 컴퓨터에 의해서 실행될 수 있는 고급 언어 코드를 포함한다.
위에서 설명한 하드웨어 장치는 실시예의 동작을 수행하기 위해 하나 또는 복수의 소프트웨어 모듈로서 작동하도록 구성될 수 있으며, 그 역도 마찬가지이다.
이상과 같이 실시예들이 비록 한정된 도면에 의해 설명되었으나, 해당 기술분야에서 통상의 지식을 가진 자라면 이를 기초로 다양한 기술적 수정 및 변형을 적용할 수 있다. 예를 들어, 설명된 기술들이 설명된 방법과 다른 순서로 수행되거나, 및/또는 설명된 시스템, 구조, 장치, 회로 등의 구성요소들이 설명된 방법과 다른 형태로 결합 또는 조합되거나, 다른 구성요소 또는 균등물에 의하여 대치되거나 치환되더라도 적절한 결과가 달성될 수 있다.
그러므로, 다른 구현들, 다른 실시예들 및 청구범위와 균등한 것들도 후술하는 청구범위의 범위에 속한다.

Claims (20)

  1. 가속기의 동작 방법에 있어서,
    복수의 그룹들 중에서 제1 그룹의 가중치들을 공유하는 그룹이 있는지 여부를 확인하는 단계;
    상기 제1 그룹의 가중치들을 공유하는 그룹이 없는 경우, 유휴한(idle) 프로세싱 엘리먼트(PE, processing element) 어레이(array)가 있는지 여부를 확인하는 단계; 및
    상기 유휴한 PE 어레이가 있는 경우, 상기 복수의 그룹들 중에서 상기 제1 그룹의 연산 시간과 오버랩되는 메모리 시간을 갖는 제2 그룹을 선택하는 단계
    를 포함하는,
    가속기의 동작 방법.
  2. 제1항에 있어서,
    상기 복수의 그룹들은 하나 이상의 추론 태스크의 레이어들이 분할되어 생성된 서브 레이어들이 그룹핑된 것인,
    가속기의 동작 방법.
  3. 제1항에 있어서,
    상기 확인하는 단계는,
    복수의 PE 어레이들의 사이즈와 상기 제1 그룹의 가중치들의 사이즈를 비교하는 단계; 및
    상기 제1 그룹의 가중치들의 사이즈가 상기 PE 어레이들의 사이즈보다 작은 경우, 상기 유휴한 PE 어레이가 있는 것으로 확인하는 단계
    를 포함하는,
    가속기의 동작 방법.
  4. 제1항에 있어서,
    상기 제2 그룹을 선택하는 단계는,
    상기 가속기 내의 PE 어레이들의 사이즈, 상기 가속기의 온 칩 메모리의 용량, 및 상기 제1 그룹의 연산 시간의 예측값을 기초로 상기 그룹들 중에서 제2 그룹을 선택하는 단계
    를 포함하는,
    가속기의 동작 방법.
  5. 제1항에 있어서,
    상기 제2 그룹을 선택하는 단계는,
    상기 그룹들의 정보가 기록된 테이블을 참조하여 상기 제1 그룹과 의존성(dependency)이 없는 하나 이상의 그룹을 식별하는 단계;
    상기 식별된 하나 이상의 그룹을 후보 큐에 인큐잉하는 단계; 및
    상기 제1 그룹의 가중치들의 사이즈와 상기 후보 큐 내의 제1 인큐잉된 그룹의 가중치들의 사이즈의 합이 PE 어레이들의 사이즈를 초과하는지 여부를 결정하는 단계;
    상기 계산된 합이 상기 PE 어레이들의 사이즈보다 작은 경우, 상기 제1 인큐잉된 그룹의 가중치들의 전달 시간의 예측값이 상기 온 칩 메모리의 잔여 용량을 기초로 계산된 시간값을 초과하는지 여부를 결정하는 단계;
    상기 제1 인큐잉된 그룹의 가중치들의 전달 시간의 예측값이 상기 시간값보다 작은 경우, 상기 제1 인큐잉된 그룹의 가중치들의 전달 시간의 예측값이 상기 제1 그룹의 연산 시간의 예측값보다 작은지 여부를 결정하는 단계; 및
    상기 제1 인큐잉된 그룹의 가중치들의 전달 시간의 예측값이 상기 제1 그룹의 연산 시간의 예측값보다 작은 경우, 상기 제1 인큐잉된 그룹을 상기 제2 그룹으로 선택하는 단계
    를 포함하는,
    가속기의 동작 방법.
  6. 제5항에 있어서,
    상기 전달 시간의 예측값은 상기 제1 인큐잉된 그룹의 가중치들이 호스트의 메모리에서 상기 가속기로 전달되는데 소요되는 시간의 예측값을 나타내는,
    가속기의 동작 방법.
  7. 제1항에 있어서,
    상기 제2 그룹의 메모리 시간은 상기 제2 그룹의 가중치들이 상기 가속기로 전달되는 시간을 나타내는,
    가속기의 동작 방법.
  8. 제1항에 있어서,
    상기 제1 그룹의 가중치들의 사이즈와 상기 제2 그룹의 가중치들의 사이즈의 합이 상기 가속기 내의 PE 어레이들의 사이즈보다 작은 경우, 상기 PE 어레이들의 사이즈, 상기 가속기의 온 칩 메모리의 잔여 용량, 상기 제1 그룹의 연산 시간의 예측값, 및 상기 제2 그룹의 가중치들의 전달 시간의 예측값을 기초로 상기 제1 및 제2 그룹과 의존성을 갖지 않은 그룹들 중에서 제3 그룹을 선택하는 단계
    를 더 포함하는,
    가속기의 동작 방법.
  9. 제8항에 있어서,
    상기 제3 그룹을 선택하는 단계는,
    상기 제1 그룹의 연산 시간의 예측값과 상기 제2 그룹의 가중치들의 전달 시간의 예측값 사이의 차이값을 계산하는 단계;
    상기 제1 그룹의 가중치들의 사이즈, 상기 제2 그룹의 가중치들의 사이즈, 및 상기 제1 및 제2 그룹과 의존성을 갖지 않은 그룹들 중 어느 하나 그룹의 가중치들의 사이즈의 합을 계산하는 단계;
    상기 계산된 합이 PE 어레이들의 사이즈를 초과하는지 여부를 결정하는 단계;
    상기 계산된 합이 상기 PE 어레이들의 사이즈보다 작은 경우, 상기 어느 하나 그룹의 가중치들의 전달 시간의 예측값이 상기 가속기 내의 온 칩 메모리의 잔여 용량을 기초로 계산된 시간값을 초과하는지 여부를 결정하는 단계;
    상기 제3 그룹의 가중치들의 전달 시간의 예측값이 상기 시간값보다 작은 경우, 상기 제3 그룹의 가중치들의 전달 시간의 예측값이 상기 계산된 차이값 보다 작은 지 여부를 결정하는 단계; 및
    상기 제3 그룹의 가중치들의 전달 시간의 예측값이 상기 계산된 차이값 보다 작은 경우, 상기 어느 하나 그룹을 상기 제3 그룹으로 선택하는 단계
    를 포함하는,
    가속기의 동작 방법.
  10. 제1항에 있어서,
    상기 제1 그룹은 상기 복수의 그룹들 중 우선순위가 가장 높은 그룹인,
    가속기의 동작 방법.
  11. 가속기에 있어서,
    복수의 프로세싱 엘리먼트(PE, processing element) 어레이(array)들; 및
    복수의 그룹들 중에서 제1 그룹의 가중치들을 공유하는 그룹이 있는지 여부를 확인하고, 상기 제1 그룹의 가중치들을 공유하는 그룹이 없는 경우, 상기 복수의 PE 어레이들 중에서 유휴한(idle) PE 어레이가 있는지 여부를 확인하며, 상기 유휴한 PE 어레이가 있는 경우, 상기 복수의 그룹들 중에서 상기 제1 그룹의 연산 시간과 오버랩되는 메모리 시간을 갖는 제2 그룹을 선택하는 스케줄러
    를 포함하는,
    가속기.
  12. 제11항에 있어서,
    상기 복수의 그룹들은 하나 이상의 추론 태스크의 레이어들이 분할되어 생성된 서브 레이어들이 그룹핑된 것인,
    가속기.
  13. 제11항에 있어서,
    상기 스케줄러는,
    상기 PE 어레이들의 사이즈와 상기 제1 그룹의 가중치들의 사이즈를 비교하고, 상기 제1 그룹의 가중치들의 사이즈가 상기 PE 어레이들의 사이즈보다 작은 경우, 상기 유휴한 PE 어레이가 있는 것으로 확인하는,
    가속기.
  14. 제11항에 있어서,
    상기 스케줄러는,
    상기 PE 어레이들의 사이즈, 상기 가속기의 온 칩 메모리의 용량, 및 상기 제1 그룹의 연산 시간의 예측값을 기초로 상기 그룹들 중에서 제2 그룹을 선택하는,
    가속기.
  15. 제11항에 있어서,
    상기 스케줄러는,
    상기 그룹들의 정보가 기록된 테이블을 참조하여 상기 제1 그룹과 의존성(dependency)이 없는 하나 이상의 그룹을 식별하고,
    상기 식별된 하나 이상의 그룹을 후보 큐에 인큐잉하며,
    상기 제1 그룹의 가중치들의 사이즈와 상기 후보 큐 내의 제1 인큐잉된 그룹의 가중치들의 사이즈의 합이 상기 PE 어레이들의 사이즈를 초과하는지 여부를 결정하고,
    상기 계산된 합이 상기 PE 어레이들의 사이즈보다 작은 경우, 상기 제1 인큐잉된 그룹의 가중치들의 전달 시간의 예측값이 상기 온 칩 메모리의 잔여 용량을 기초로 계산된 시간값을 초과하는지 여부를 결정하고,
    상기 제1 인큐잉된 그룹의 가중치들의 전달 시간의 예측값이 상기 시간값보다 작은 경우, 상기 제1 인큐잉된 그룹의 가중치들의 전달 시간의 예측값이 상기 제1 그룹의 연산 시간의 예측값보다 작은지 여부를 결정하고,
    상기 제1 인큐잉된 그룹의 가중치들의 전달 시간의 예측값이 상기 제1 그룹의 연산 시간의 예측값보다 작은 경우, 상기 제1 인큐잉된 그룹을 상기 제2 그룹으로 선택하는,
    가속기.
  16. 제15항에 있어서,
    상기 전달 시간의 예측값은 상기 제1 인큐잉된 그룹의 가중치들이 호스트의 메모리에서 상기 가속기로 전달되는데 소요되는 시간의 예측값을 나타내는,
    가속기.
  17. 제11항에 있어서,
    상기 제2 그룹의 메모리 시간은 상기 제2 그룹의 가중치들이 상기 가속기로 전달되는 시간을 나타내는,
    가속기.
  18. 제11항에 있어서,
    상기 스케줄러는,
    상기 제1 그룹의 가중치들의 사이즈와 상기 제2 그룹의 가중치들의 사이즈의 합이 상기 PE 어레이들의 사이즈보다 작은 경우, 상기 PE 어레이들의 사이즈, 상기 가속기의 온 칩 메모리의 잔여 용량, 상기 제1 및 제2 그룹의 연산 시간의 예측값, 및 상기 제1 및 제2 그룹의 가중치들의 전달 시간의 예측값을 기초로 상기 제1 및 제2 그룹과 의존성을 갖지 않은 그룹들 중에서 제3 그룹을 선택하는,
    가속기.
  19. 제18항에 있어서,
    상기 스케줄러는,
    상기 제1 그룹의 연산 시간의 예측값과 상기 제2 그룹의 가중치들의 전달 시간의 예측값 사이의 차이값을 계산하고,
    상기 제1 그룹의 가중치들의 사이즈, 상기 제2 그룹의 가중치들의 사이즈, 및 상기 제1 및 제2 그룹과 의존성을 갖지 않은 그룹들 중 어느 하나 그룹의 가중치들의 사이즈의 합을 계산하며,
    상기 계산된 합이 PE 어레이들의 사이즈를 초과하는지 여부를 결정하고,
    상기 계산된 합이 상기 PE 어레이들의 사이즈보다 작은 경우, 상기 어느 하나 그룹의 가중치들의 전달 시간의 예측값이 상기 가속기 내의 온 칩 메모리의 잔여 용량을 기초로 계산된 시간값을 초과하는지 여부를 결정하고,
    상기 제3 그룹의 가중치들의 전달 시간의 예측값이 상기 시간값보다 작은 경우, 상기 제3 그룹의 가중치들의 전달 시간의 예측값이 상기 계산된 차이값 보다 작은 지 여부를 결정하고,
    상기 제3 그룹의 가중치들의 전달 시간의 예측값이 상기 계산된 차이값 보다 작은 경우, 상기 어느 하나 그룹을 상기 제3 그룹으로 선택하는,
    가속기.
  20. 제11항에 있어서,
    상기 제1 그룹은 상기 복수의 그룹들 중 우선순위가 가장 높은 그룹인,
    가속기.
KR1020210010439A 2021-01-25 2021-01-25 추론 태스크들을 병렬적으로 처리하는 가속기 및 이의 동작 방법 KR20220107616A (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020210010439A KR20220107616A (ko) 2021-01-25 2021-01-25 추론 태스크들을 병렬적으로 처리하는 가속기 및 이의 동작 방법
US17/372,788 US20220237487A1 (en) 2021-01-25 2021-07-12 Accelerator for processing inference tasks in parallel and operating method thereof

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020210010439A KR20220107616A (ko) 2021-01-25 2021-01-25 추론 태스크들을 병렬적으로 처리하는 가속기 및 이의 동작 방법

Publications (1)

Publication Number Publication Date
KR20220107616A true KR20220107616A (ko) 2022-08-02

Family

ID=82494708

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020210010439A KR20220107616A (ko) 2021-01-25 2021-01-25 추론 태스크들을 병렬적으로 처리하는 가속기 및 이의 동작 방법

Country Status (2)

Country Link
US (1) US20220237487A1 (ko)
KR (1) KR20220107616A (ko)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN115543587B (zh) * 2022-11-29 2023-03-07 暨南大学 一种使用寿命驱动的OpenCL应用调度方法及系统

Also Published As

Publication number Publication date
US20220237487A1 (en) 2022-07-28

Similar Documents

Publication Publication Date Title
US7689694B2 (en) Process management apparatus, computer systems, distributed processing method, and computer program for avoiding overhead in a process management device
KR102362037B1 (ko) 컨테이너 워크로드 스케줄러 및 컨테이너 워크로드 계획 방법
US11003429B1 (en) Compile-time scheduling
US9405711B2 (en) On-chip traffic prioritization in memory
US11609792B2 (en) Maximizing resource utilization of neural network computing system
KR20190136431A (ko) 뉴럴 네트워크 시스템, 이를 포함하는 어플리케이션 프로세서 및 뉴럴 네트워크 시스템의 동작방법
KR20210108749A (ko) 가속기, 가속기의 동작 방법 및 이를 포함한 가속기 시스템
US11507386B2 (en) Booting tiles of processing units
KR20210148586A (ko) 스케줄러, 스케줄러의 동작 방법 및 이를 포함한 가속기 시스템
US20210303978A1 (en) Load balancing for memory channel controllers
EP1768024B1 (en) Processing management device, computer system, distributed processing method, and computer program
US20210158131A1 (en) Hierarchical partitioning of operators
US11847507B1 (en) DMA synchronization using alternating semaphores
US11941528B2 (en) Neural network training in a distributed system
KR20220052546A (ko) 데이터 처리 방법 및 장치 및 이를 포함한 전자 장치 및 가속기 시스템
CN115686805A (zh) Gpu资源共享的方法和装置、调度gpu资源共享的方法和装置
KR20210103367A (ko) 가속기, 가속기의 동작 방법 및 이를 포함한 전자 장치
KR20220107616A (ko) 추론 태스크들을 병렬적으로 처리하는 가속기 및 이의 동작 방법
US11093291B2 (en) Resource assignment using CDA protocol in distributed processing environment based on task bid and resource cost
US11221979B1 (en) Synchronization of DMA transfers for large number of queues
KR101620896B1 (ko) 이기종 프로세싱 타입을 고려한 맵리듀스 프로그램 모델의 수행 성능 향상 방법, 수행 성능 향상 장치 및 수행 성능 향상 시스템
KR20240007354A (ko) 가속기를 분할하는 전자 장치, 배치를 할당하는 전자 장치 및 그 동작 방법
JP6817827B2 (ja) アクセラレータ処理管理装置、ホスト装置、アクセラレータ処理実行システム、方法およびプログラム
US20140317627A1 (en) Scheduling apparatus and method of dynamically setting the size of a rotating register
US11500802B1 (en) Data replication for accelerator

Legal Events

Date Code Title Description
A201 Request for examination