KR20220036493A - 뉴럴 네트워크 추론을 위한 최적화 방법 및 이를 수행하는 컴퓨팅 장치 - Google Patents

뉴럴 네트워크 추론을 위한 최적화 방법 및 이를 수행하는 컴퓨팅 장치 Download PDF

Info

Publication number
KR20220036493A
KR20220036493A KR1020200118759A KR20200118759A KR20220036493A KR 20220036493 A KR20220036493 A KR 20220036493A KR 1020200118759 A KR1020200118759 A KR 1020200118759A KR 20200118759 A KR20200118759 A KR 20200118759A KR 20220036493 A KR20220036493 A KR 20220036493A
Authority
KR
South Korea
Prior art keywords
inference
neural network
data
input data
batch size
Prior art date
Application number
KR1020200118759A
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 KR1020200118759A priority Critical patent/KR20220036493A/ko
Priority to US17/244,006 priority patent/US20220083838A1/en
Publication of KR20220036493A publication Critical patent/KR20220036493A/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
    • 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/044Recurrent networks, e.g. Hopfield networks
    • 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
    • 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
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Computing Systems (AREA)
  • Software Systems (AREA)
  • Artificial Intelligence (AREA)
  • Mathematical Physics (AREA)
  • Computational Linguistics (AREA)
  • Data Mining & Analysis (AREA)
  • Evolutionary Computation (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Biomedical Technology (AREA)
  • Molecular Biology (AREA)
  • General Health & Medical Sciences (AREA)
  • Biophysics (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Health & Medical Sciences (AREA)
  • Devices For Executing Special Programs (AREA)
  • Debugging And Monitoring (AREA)

Abstract

뉴럴 네트워크 추론을 위한 최적화 방법이 개시된다. 일 실시예는 제1 구간의 입력 데이터 개수 및 상기 제1 구간의 하나 이상의 이전 구간의 입력 데이터 개수를 이용하여 상기 제1 구간의 다음 구간의 입력 데이터 개수를 예측하고, 상기 예측된 입력 데이터 개수를 상기 다음 구간의 배치 사이즈로 결정하며, 타겟 디바이스의 자원 상태를 기초로 상기 타겟 디바이스에서 파이프라이닝이 수행될지 여부를 결정하고, 상기 결정된 배치 사이즈 및 상기 파이프라이닝이 상기 타겟 디바이스에서 수행되는지 여부를 나타내는 정보를 포함하는 추론 정책을 상기 타겟 디바이스에 적용한다.

Description

뉴럴 네트워크 추론을 위한 최적화 방법 및 이를 수행하는 컴퓨팅 장치{METHOD WITH NEURAL NETWORK INFERENCE OPTIMIZATION AND COMPUTING APPARATUS PERFORMING THE METHOD}
아래 실시예들은 뉴럴 네트워크 추론을 위한 최적화에 관한 것이다.
DNN(Deep Neural Network) 모델에서 여러 입력 데이터들을 모아 실행하는 배치(batch) 처리 기법은 자원 사용률을 높이기 위해 널리 사용되고 있다.
배치는 가속기에서 처리될 수 있다. 가속기의 자원은 한정되어 있으므로, 배치 사이즈는 DNN 모델을 컴파일하여 생성된 실행 코드에 영향을 주는 인자가 된다. 이에 따라, 적절한 배치 사이즈는 가속기가 최적화된 실행 코드로 추론을 수행하게 할 수 있다.
전술한 배경기술은 발명자가 본원의 개시 내용을 도출하는 과정에서 보유하거나 습득한 것으로서, 반드시 출원 전에 일반 공중에 공개된 공지기술이라고 할 수는 없다.
일 측에 따른 뉴럴 네트워크 추론을 위한 최적화 방법은 제1 구간의 입력 데이터 개수 및 상기 제1 구간의 하나 이상의 이전 구간의 입력 데이터 개수를 이용하여 상기 제1 구간의 다음 구간의 입력 데이터 개수를 예측하는 단계; 상기 예측된 입력 데이터 개수를 상기 다음 구간의 배치 사이즈로 결정하는 단계; 타겟 디바이스의 자원 상태를 기초로 상기 타겟 디바이스에서 파이프라이닝이 수행될지 여부를 결정하는 단계; 및 상기 결정된 배치 사이즈 및 상기 파이프라이닝이 상기 타겟 디바이스에서 수행되는지 여부를 나타내는 정보를 포함하는 추론 정책을 상기 타겟 디바이스에 적용하는 단계를 포함한다.
타이머를 실행한 후 어느 데이터의 입력 시간과 추론 레이턴시의 합이 제한 시간보다 큰 경우, 상기 타이머를 실행한 후부터 상기 입력 시간 사이의 데이터들의 개수를 상기 제1 구간의 입력 데이터 개수로 결정하는 단계를 더 포함할 수 있다.
상기 데이터들을 포함하는 배치를 형성하여 상기 타겟 디바이스로 전송하는 단계를 더 포함할 수 있다.
상기 예측하는 단계는 상기 제1 구간의 입력 데이터 개수 및 상기 하나 이상의 이전 구간의 입력 데이터 개수의 이동 평균을 계산하고, 상기 계산된 이동 평균을 상기 다음 구간의 입력 데이터 개수로 예측하는 단계를 포함할 수 있다.
상기 예측하는 단계는 뉴럴 네트워크 기반 예측 모델을 이용하여 상기 제1 구간의 입력 데이터 개수 및 상기 하나 이상의 이전 구간의 입력 데이터 개수로부터 상기 다음 구간의 입력 데이터 개수를 예측하는 단계를 포함할 수 있다.
상기 뉴럴 네트워크 기반 예측 모델은 RNN(Recurrent Neural Network) 또는 LSTM(Long Short Term Memory)을 포함할 수 있다.
상기 적용하는 단계는 상기 추론 정책을 기초로 뉴럴 네트워크 모델에 컴파일을 수행하고, 상기 컴파일 결과를 상기 타겟 디바이스에 로딩(loading)하는 단계를 포함할 수 있다.
상기 결정된 배치 사이즈가 기 설정된 배치 사이즈와 다른 경우, 상기 다음 구간에서 상기 결정된 배치 사이즈에 따라 배치를 생성하도록 상기 설정된 배치 사이즈에서 상기 결정된 배치 사이즈로 변경하는 단계를 더 포함할 수 있다.
추론 모드에 따라 초기 설정을 수행하는 단계; 및 상기 초기 설정에 따라 뉴럴 네트워크 모델을 컴파일하여 초기 실행 코드를 생성하고 상기 생성된 초기 실행 코드를 상기 타겟 디바이스에 로딩하는 단계를 더 포함할 수 있다.
상기 초기 설정은 초기 배치 사이즈 및 상기 파이프라이닝이 수행되지 않음을 나타내는 정보를 포함할 수 있다.
상기 추론 모드는 배치 사이즈가 제1 값인 제1 모드; 상기 배치 사이즈가 제2 값인 제2 모드; 미리 정해진 사이즈의 배치를 처리하기 위한 뉴럴 네트워크 모델의 연산을 반복하는 제3 모드; 및 상기 추론 정책을 결정하는 제4 모드 중 어느 하나에 해당할 수 있다.
일 측에 따른 뉴럴 네트워크 추론을 위한 최적화 방법을 수행하는 컴퓨팅 장치는 제1 구간의 입력 데이터 개수 및 상기 제1 구간의 하나 이상의 이전 구간의 입력 데이터 개수를 이용하여 상기 제1 구간의 다음 구간의 입력 데이터 개수를 예측하고, 상기 예측된 입력 데이터 개수를 상기 다음 구간의 배치 사이즈로 결정하며, 타겟 디바이스의 자원 상태를 기초로 상기 타겟 디바이스에서 파이프라이닝이 수행될지 여부를 결정하고, 상기 결정된 배치 사이즈 및 상기 파이프라이닝이 상기 타겟 디바이스에서 수행되는지 여부를 나타내는 정보를 포함하는 추론 정책을 상기 타겟 디바이스에 적용하는 프로세서를 포함한다.
상기 프로세서는 타이머를 실행한 후 어느 데이터의 입력 시간과 추론 레이턴시의 합이 제한 시간보다 큰 경우, 상기 타이머를 실행한 후부터 상기 입력 시간 사이의 데이터들의 개수를 상기 제1 구간의 입력 데이터 개수로 기록할 수 있다.
상기 프로세서는 상기 데이터들을 포함하는 배치를 형성하여 상기 타겟 디바이스로 전송할 수 있다.
상기 프로세서는 상기 제1 구간의 입력 데이터 개수 및 상기 하나 이상의 이전 구간의 입력 데이터 개수의 이동 평균을 계산하고, 상기 계산된 이동 평균을 상기 다음 구간의 입력 데이터 개수로 예측할 수 있다.
상기 프로세서는 뉴럴 네트워크 기반 예측 모델을 이용하여 상기 제1 구간의 입력 데이터 개수 및 상기 하나 이상의 이전 구간의 입력 데이터 개수로부터 상기 다음 구간의 입력 데이터 개수를 예측할 수 있다.
상기 프로세서는 상기 추론 정책을 기초로 뉴럴 네트워크 모델에 컴파일을 수행하고, 상기 컴파일 결과를 상기 타겟 디바이스에 로딩할 수 있다.
상기 프로세서는 상기 결정된 배치 사이즈가 기 설정된 배치 사이즈와 다른 경우, 상기 다음 구간에서 상기 결정된 배치 사이즈에 따라 배치를 생성하도록 상기 설정된 배치 사이즈에서 상기 결정된 다음 배치 사이즈로 변경할 수 있다.
상기 프로세서는 추론 모드에 따라 초기 설정을 수행하고, 상기 초기 설정에 따라 뉴럴 네트워크 모델을 컴파일하여 초기 실행 코드를 생성하며, 상기 생성된 초기 실행 코드를 상기 타겟 디바이스에 로딩할 수 있다.
상기 추론 모드는 배치 사이즈가 제1 값인 제1 모드; 상기 배치 사이즈가 제2 값인 제2 모드; 미리 정해진 사이즈의 배치를 처리하기 위한 뉴럴 네트워크 모델의 연산을 반복하는 제3 모드; 및 상기 추론 정책을 결정하는 제4 모드 중 어느 하나에 해당할 수 있다.
도 1은 일 실시예에 따른 컴퓨팅 장치와 타겟 디바이스를 설명하기 위한 도면이다.
도 2 내지 도 6은 일 실시예에 따른 컴퓨팅 장치가 뉴럴 네트워크 추론을 위한 최적화 동작을 수행하는 것을 설명하기 위한 도면이다.
도 7은 일 실시예에 따른 추론 레이턴시를 설명하기 위한 도면이다.
도 8은 일 실시예에 따른 컴퓨팅 장치를 설명하기 위한 블록도이다.
도 9는 일 실시예에 따른 컴퓨팅 장치의 동작 방법을 설명하기 위한 순서도이다.
도 10은 일 실시예에 따른 서버 시스템을 설명하기 위한 도면이다.
실시예들에 대한 특정한 구조적 또는 기능적 설명들은 단지 예시를 위한 목적으로 개시된 것으로서, 다양한 형태로 변경되어 구현될 수 있다. 따라서, 실제 구현되는 형태는 개시된 특정 실시예로만 한정되는 것이 아니며, 본 명세서의 범위는 실시예들로 설명한 기술적 사상에 포함되는 변경, 균등물, 또는 대체물을 포함한다.
제1 또는 제2 등의 용어를 다양한 구성요소들을 설명하는데 사용될 수 있지만, 이런 용어들은 하나의 구성요소를 다른 구성요소로부터 구별하는 목적으로만 해석되어야 한다. 예를 들어, 제1 구성요소는 제2 구성요소로 명명될 수 있고, 유사하게 제2 구성요소는 제1 구성요소로도 명명될 수 있다.
어떤 구성요소가 다른 구성요소에 "연결되어" 있다고 언급된 때에는, 그 다른 구성요소에 직접적으로 연결되어 있거나 또는 접속되어 있을 수도 있지만, 중간에 다른 구성요소가 존재할 수도 있다고 이해되어야 할 것이다.
단수의 표현은 문맥상 명백하게 다르게 뜻하지 않는 한, 복수의 표현을 포함한다. 본 명세서에서, "포함하다" 또는 "가지다" 등의 용어는 설명된 특징, 숫자, 단계, 동작, 구성요소, 부분품 또는 이들을 조합한 것이 존재함으로 지정하려는 것이지, 하나 또는 그 이상의 다른 특징들이나 숫자, 단계, 동작, 구성요소, 부분품 또는 이들을 조합한 것들의 존재 또는 부가 가능성을 미리 배제하지 않는 것으로 이해되어야 한다.
다르게 정의되지 않는 한, 기술적이거나 과학적인 용어를 포함해서 여기서 사용되는 모든 용어들은 해당 기술 분야에서 통상의 지식을 가진 자에 의해 일반적으로 이해되는 것과 동일한 의미를 가진다. 일반적으로 사용되는 사전에 정의되어 있는 것과 같은 용어들은 관련 기술의 문맥상 가지는 의미와 일치하는 의미를 갖는 것으로 해석되어야 하며, 본 명세서에서 명백하게 정의하지 않는 한, 이상적이거나 과도하게 형식적인 의미로 해석되지 않는다.
이하, 실시예들을 첨부된 도면들을 참조하여 상세하게 설명한다. 첨부 도면을 참조하여 설명함에 있어, 도면 부호에 관계없이 동일한 구성 요소는 동일한 참조 부호를 부여하고, 이에 대한 중복되는 설명은 생략하기로 한다.
도 1은 일 실시예에 따른 컴퓨팅 장치와 타겟 디바이스를 설명하기 위한 도면이다.
도 1을 참조하면, 컴퓨팅 장치(110)는 데이터들을 입력 받는다. 이러한 데이터들은 하나 이상의 사용자 단말로부터 전송된 추론 요청일 수 있다. 데이터들은, 예를 들어, 음성 데이터, 영상 데이터 등을 포함할 수 있으나 이에 제한되지 않는다.
컴퓨팅 장치(110)는 데이터들을 배치 사이즈에 맞게 모을 수 있고, 설정된 배치 사이즈만큼의 데이터들을 타겟 디바이스(120)로 전송한다. 다시 말해, 컴퓨팅 장치(110)는 배치를 타겟 디바이스(120)로 전송한다. 타겟 디바이스(120)는 가속기로, 예를 들어, NPU(Neural Processing Unit)를 포함할 수 있으나 이에 제한되지 않는다.
컴퓨팅 장치(110)는 추론 과정(또는 추론 서비스)에서 런타임 시 실시간 상황을 고려하여 최적의 추론 정책을 결정한다. 아래에서 자세히 설명하겠지만, 컴퓨팅 장치(110)는 다음 구간의 입력 데이터의 분포가 어떨지를 예측할 수 있고(예를 들어, 다음 구간의 입력 데이터 개수를 예측함), 예측 결과와 타겟 디바이스(120)의 실시간 자원 상태를 기초로 추론 정책을 결정할 수 있다. 이 때, 추론 정책은 다음 구간의 배치 사이즈(즉, 다음 배치 사이즈)와 타겟 디바이스(120)에서 파이프라이닝(pipelining)이 수행될지 여부에 대한 정보를 포함할 수 있다.
컴퓨팅 장치(110)는 결정된 추론 정책을 타겟 디바이스(120)에 적용할 수 있다. 일례로, 컴퓨팅 장치(110)는 결정된 추론 정책이 기 추론 정책과 다른 경우(예를 들어, 다음 배치 사이즈가 기 설정된 배치 사이즈와 다른 경우), 결정된 추론 정책을 기초로 뉴럴 네트워크 모델을 컴파일(또는 re-컴파일)할 수 있고, 컴파일에 의해 생성된 실행 코드를 타겟 디바이스(120)에 로딩할 수 있다. 다시 말해, 컴퓨팅 장치(110)는 실시간 상황에 맞게 최적화된 실행 코드를 타겟 디바이스(120)로 전송할 수 있다. 이에 따라, 타겟 디바이스(120)는 실시간 상황에 맞게 최적화된 실행 코드로 추론을 실행할 수 있다. 이하, 일 실시예에 대해 설명한다.
도 2 내지 도 6은 일 실시예에 따른 컴퓨팅 장치가 뉴럴 네트워크 추론을 위한 최적화 동작을 수행하는 것을 설명하기 위한 도면이다.
도 2를 참조하면, 컴퓨팅 장치(110)는 단계(210) 내지 단계(290)을 수행하고, 도 3을 참조하면, 컴퓨팅 장치(110)는 배치 생성기(310), 버퍼(320), 입력 카운터(330), 타이머(340), 통계 관리기(350), 입력수 예측기(360), 정책 결정기(370), 컴파일러(380), 및 로딩기(390)를 포함한다. 배치 생성기(310), 입력 카운터(330), 타이머(340), 통계 관리기(350), 입력수 예측기(360), 정책 결정기(370), 컴파일러(380), 및 로딩기(390)는 하나 이상의 프로세서로 구현될 수 있다.
단계(210)에서 컴퓨팅 장치(110)는 추론 모드에 따라 초기 설정을 수행할 수 있고, 단계(220)에서 컴퓨팅 장치(110)는 초기 실행 코드를 타겟 디바이스(120)에 로딩할 수 있다. 아래 표 1은 추론 모드의 일례를 보여준다.
추론 모드 설명
latency 모드(또는 제1 모드) 배치 사이즈가 제1 값인 모드
throughput 모드(또는 제2 모드) 배치 사이즈가 제2 값인 모드
iteration 모드(또는 제3 모드) 사이즈 1의 배치를 처리하기 위한 뉴럴 네트워크 모델의 연산을 반복하는 모드
dynamic 모드(또는 제4 모드) 추론 정책을 최적화(또는 결정)하고 최적화된 추론 정책에 따라 뉴럴 네트워크 모델을 컴파일(re-컴파일)하는 모드
latency 모드(또는 제1 모드)에서, 배치 사이즈는 제1 값(예를 들어, 1)으로 고정된다. latency 모드에서 배치 사이즈는 1로 고정되어, 추론 요청한 사용자가 느끼는 latency는 최소화될 수 있다.추론 모드가 latency 모드로 설정되면, 컴파일러(380)는 "파이프라이닝 off", 초기 배치 사이즈(예를 들어, 1), 및 타겟 디바이스(120)의 하드웨어 정보를 기초로 뉴럴 네트워크 모델을 컴파일함으로써 초기 실행 코드를 생성할 수 있고, 로딩기(390)는 생성된 초기 실행 코드를 타겟 디바이스(120)의 메모리에 로딩할 수 있다. 여기서, "파이프라이닝 off"는 타겟 디바이스(120)에서 파이프라이닝이 수행되지 않는 것을 나타낸다. "파이프라이닝 on"은 타겟 디바이스(120)에서 파이프라이닝이 수행되는 것을 나타낸다.
throughput 모드(또는 제2 모드)에서, 배치 사이즈는 제2 값(예를 들어, N)으로 고정된다. 여기서, N은 2이상의 정수로, 추론 서비스 제공자에 의해 결정되거나 타겟 디바이스(120)의 메모리를 고려한 최대 배치 사이즈일 수 있다.
추론 모드가 throughput 모드로 설정되면, 컴파일러(380)는 "파이프라이닝 off", 초기 배치 사이즈(예를 들어, N), 및 타겟 디바이스(120)의 하드웨어 정보를 기초로 뉴럴 네트워크 모델을 컴파일함으로써 초기 실행 코드를 생성할 수 있다. 로딩기(390)는 생성된 초기 실행 코드를 타겟 디바이스(120)의 메모리에 로딩할 수 있다.
iteration 모드(또는 제3 모드)는 사이즈 1의 배치를 처리하기 위한 뉴럴 네트워크 모델의 연산을 반복하는 모드를 나타낸다. 일례로, 타겟 디바이스(120)로 사이즈 M의 배치가 입력되면 iteration 모드에서 사이즈 1의 배치를 처리하기 위한 뉴럴 네트워크 모델은 M번 반복 수행될 수 있다.
추론 모드가 iteration 모드로 설정되면, 컴파일러(380)는 "파이프라이닝 off", 초기 배치 사이즈(예를 들어, 1), 및 타겟 디바이스(120)의 하드웨어 정보를 기초로 뉴럴 네트워크 모델을 컴파일함으로써 초기 실행 코드를 생성할 수 있다. 로딩기(390)는 생성된 초기 실행 코드를 타겟 디바이스(120)의 메모리에 로딩할 수 있다.
dynamic 모드(또는 제4 모드)에서, 추론 정책이 최적화(또는 결정)될 수 있다. dynamic 모드가 설정되면 적절한 배치 사이즈가 결정될 수 있다. 배치 사이즈 결정에 대해선 후술한다.
추론 모드가 dynamic 모드로 설정되면, 컴파일러(380)는 "파이프라이닝 off", 초기 배치 사이즈(예를 들어, 1), 및 타겟 디바이스(120)의 하드웨어 정보를 기초로 뉴럴 네트워크 모델을 컴파일함으로써 초기 실행 코드를 생성할 수 있다. 로딩기(390)는 생성된 초기 실행 코드를 타겟 디바이스(120)의 메모리에 로딩할 수 있다. dynamic 모드에서, 추론 과정이 진행될 수록 실시간 상황에 맞게 추론 정책이 최적화(또는 결정)될 수 있다.
실시예에 있어서, 컴퓨팅 장치(110)는 제한 시간을 입력 받아 저장할 수 있다. 제한 시간은 추론 서비스 제공자에 의해 설정될 수 있다. 제한 시간은 사용자가 추론 요청을 한 시점부터 추론 요청에 대한 응답을 수신하기 까지의 최대 시간을 나타낼 수 있다.
이하, 추론 모드가 dynamic 모드로 설정된 경우에 대해 설명한다.
단계(230)에서, 컴퓨팅 장치(110)는 초기 실행 코드를 타겟 디바이스(120)에 로딩한 후, 하나 이상의 사용자 단말로부터 데이터들을 수신할 수 있다.
컴퓨팅 장치(110)는 초기 배치 사이즈에 따라 배치를 생성할 수 있고 생성된 배치를 타겟 디바이스(120)로 전송할 수 있다. 또한, 컴퓨팅 장치(110)는 다음 구간의 입력 데이터 개수를 예측할 수 있고, 타겟 디바이스(120)의 실시간 자원 상태와 예측된 입력 데이터 개수를 이용하여 추론 정책을 결정할 수 있다. 컴파일러(380)는 결정된 추론 정책을 기초로 뉴럴 네트워크 모델을 컴파일 할 수 있어, 실시간 상황에 최적화된 실행 코드를 생성할 수 있다. 타겟 디바이스(120)는 해당 실행 코드를 컴퓨팅 장치(110)로부터 수신할 수 있고 다음 구간의 입력 데이터들에 해당 실행 코드로 추론을 실행할 수 있다.
시간이 흘러, 단계(240)에서, 컴퓨팅 장치(110)는 하나 이상의 사용자 단말로부터 데이터를 수신할 수 있다. 이 때, 배치 사이즈는 A로 설정되어 있다고 하자. 또한, 현재 T 구간이라 하자.
단계(250)에서, 컴퓨팅 장치(110)는 배치 사이즈 A에 따라 배치를 생성할 수 있다. 일례로, 배치 생성기(310)는 컴퓨팅 장치(110)로 입력된 데이터들을 버퍼(320)에 저장할 수 있다. 배치 생성기(310)는 버퍼(320)에 저장된 데이터들의 사이즈가 배치 사이즈 A에 도달한 경우 또는 타이머(340) 실행 후 제한 시간에 도달한 경우 버퍼(320)에 저장된 데이터들을 타겟 디바이스(120)로 전송할 수 있다. 단계(250)에 대해선 도 4 내지 도 5b를 통해 후술한다.
단계(260)에서, 컴퓨팅 장치(110)는 T 구간의 입력 데이터 개수를 카운팅할 수 있다. 일례로, 입력 카운터(330)는 타이머(340)를 실행한 후 컴퓨팅 장치(110)로 데이터가 입력될 때마다 입력 카운트를 업데이트할 수 있다. 입력 카운터(330)는 타이머(340)를 실행한 후 어느 데이터의 입력 시간과 추론 레이턴시의 합이 제한 시간보다 큰 경우, 타이머(340)를 실행한 후부터 해당 데이터의 입력 시간 사이의 데이터들의 개수를 T 구간의 입력 데이터 개수로 결정할 수 있다. 단계(260)에 대해선 도 6을 통해 후술한다.
단계(270)에서, 컴퓨팅 장치(110)는 T 구간의 입력 데이터 개수와 T 구간의 하나 이상의 이전 구간의 입력 데이터 개수를 기초로 T 구간의 다음 구간의 입력 데이터 개수를 예측할 수 있다. 달리 표현하면, 컴퓨팅 장치(110)는 다음 구간의 입력 분포를 예측할 수 있다.
일례로, 입력수 예측기(360)는 T 구간의 입력 데이터 개수 및 T 구간의 이상의 이전 구간의 입력 데이터 개수의 이동 평균을 계산할 수 있고, 계산된 이동 평균을 T 구간의 다음 구간의 입력 데이터 개수로 예측할 수 있다. 실시예에 따라, 입력수 예측기(260)는 ARIMA(Auto-regressive Integrated Moving Average) 등의 통계 모델을 이용하여 T 구간의 다음 구간의 입력 데이터 개수를 예측할 수 있다.
다른 일례로, 입력수 예측기(360)는 뉴럴 네트워크 기반 예측 모델을 포함할 수 있고, 해당 뉴럴 네트워크 기반 예측 모델은 T 구간의 입력 데이터 개수 및 T 구간의 하나 이상의 이전 구간의 입력 데이터 개수로부터 다음 구간의 입력 데이터 개수를 예측할 수 있다. 뉴럴 네트워크 기반 예측 모델은, 예를 들어, RNN(Recurrent Neural Network) 또는 LSTM(Long Short Term Memory)을 포함할 수 있다. 실시예에 따르면, 뉴럴 네트워크 기반 예측 모델의 연산을 위한 별도의 가속기가 있을 수 있다.
단계(280)에서, 컴퓨팅 장치(110)는 다음 구간의 예측된 입력 데이터 개수 및 타겟 디바이스(120)의 자원 상태를 기초로 추론 정책을 결정할 수 있다. 이 때, 결정된 추론 정책은 타겟 디바이스(120)에서 파이프라이닝이 수행될지 여부에 대한 정보 및 다음 배치 사이즈를 포함할 수 있다.
일례로, 정책 결정기(370)는 다음 구간의 예측된 입력 데이터 개수를 다음 배치 사이즈로 결정할 수 있다. 정책 결정기(370)는 결정된 다음 배치 사이즈가 배치 사이즈 A와 다르면 배치 사이즈 A에서 다음 배치 사이즈로 변경할 수 있다. 또한, 정책 결정기(370)는 타겟 디바이스(120)의 자원 상태를 고려하여 타겟 디바이스(120)에서 파이프라이닝이 수행될지 여부를 결정할 수 있다. 정책 결정기(370)는 타겟 디바이스(120)의 여유 자원이 파이프라이닝이 수행될 정도로 충분하면 "파이프라이닝 on"으로 결정할 수 있고, 타겟 디바이스(120)의 여유 자원이 파이프라이닝이 수행될 정도로 충분하지 않으면 "파이프라이닝 off"로 결정할 수 있다. 실시예에 따라, 타겟 디바이스(120)가 뉴럴 네트워크 모델의 크기 만큼의 스크래치패드 메모리 사용이 가능하고 타겟 디바이스(120)의 이용 가능한 코어 수가 스테이지들의 개수보다 많은 경우, 타겟 디바이스(120)는 파이프라이닝을 수행함으로써 이점을 얻을 수 있다. 여기서, 스테이지들은 뉴럴 네트워크 모델이 분할된 것들이다. 정책 결정기(370)는 타겟 디바이스(120)가 뉴럴 네트워크 모델의 크기 만큼의 스크래치패드 메모리 사용이 가능하고 타겟 디바이스(120)의 이용 가능한 코어 수가 스테이지들의 개수보다 많은 경우, "파이프라이닝 on"으로 결정할 수 있다.
단계(290)에서, 컴퓨팅 장치(110)는 결정된 추론 정책이 기 추론 정책과 다른 경우, 결정된 추론 정책이 반영된 실행 코드를 타겟 디바이스(120)에 로딩할 수 있다(280). 일례로, 컴파일러(380)는 다음 배치 사이즈가 기 설정된 배치 사이즈 A와 다른 경우, 결정된 추론 정책을 기초로 뉴럴 네트워크 모델에 컴파일을 수행하여 실행 코드를 생성할 수 있다. 구현에 따라, 컴파일러(380)는 다음 배치 사이즈와 기 설정된 배치 사이즈 A와 동일하지만, 기 추론 정책에는 "파이프라이닝 off"를 포함하고 결정된 추론 정책은 "파이프라이닝 on"을 포함하는 경우 또는 기 추론 정책은 "파이프라이닝 on"을 포함하지만 결정된 추론 정책은 "파이프라이닝 off"를 포함하는 경우, 결정된 추론 정책을 기초로 뉴럴 네트워크 모델에 컴파일을 수행할 수 있다. 로딩기(390)는 생성된 실행 코드를 타겟 디바이스(120)의 메모리에 로딩할 수 있다.
타겟 디바이스(120)는 다음 구간의 입력 데이터들에는 보다 최적화된 실행 코드로 추론을 수행할 수 있어, 자원 활용성이 보다 향상될 수 있다.
도 4 내지 도 5b를 참조하면서, 단계(250)의 배치 생성에 대해 구체적으로 설명한다.
도 4를 참조하면, 배치 생성기(310)는 컴퓨팅 장치(110)로 데이터가 입력되면(410), 해당 데이터를 버퍼(320)에 저장할 수 있다(420). 통계 관리기(250)는 해당 데이터의 입력 시간 정보를 저장할 수 있다. 일례로, 통계 관리기(250)는 타이머(240)를 이용하여 해당 데이터의 입력 시간 정보를 데이터베이스에 저장할 수 있다.
배치 생성기(310)는 배치 사이즈 A만큼의 데이터들이 버퍼(320)에 저장되어 있는지 여부를 확인할 수 있다(430). 달리 표현하면, 배치 생성기(330)는 버퍼(320)에 저장된 데이터들의 사이즈가 배치 사이즈 A에 도달하였는지 여부를 결정할 수 있다.
배치 생성기(310)는 배치 사이즈 A만큼의 데이터들이 버퍼(320)에 저장되어 있는 경우, 배치 사이즈 A만큼의 데이터들을 타겟 디바이스(120)에 전송할 수 있다(450). 배치 생성기(310)는 배치 사이즈 A만큼의 데이터들이 버퍼(320)에 저장되어 있지 않은 경우, 단계(410)의 데이터의 입력 시간과 추론 레이턴시(La)의 합을 제한 시간과 비교할 수 있다(440). 추론 레이턴시(La)에 대해선 도 7을 통해 후술한다. 배치 생성기(310)는 단계(410)의 데이터의 입력 시간과 추론 레이턴시(La)의 합이 제한 시간보다 큰 경우, 제한 시간을 초과하지 않은 데이터들을 타겟 디바이스(120)에 전송할 수 있다(450).
타겟 디바이스(120)는 컴퓨팅 장치(110)로부터 수신한 데이터들에 대해 추론을 실행할 수 있고 추론 결과를 컴퓨팅 장치(110)로 전송할 수 있다.
배치 생성기(310)는 배치 사이즈 A에 따른 추론 레이턴시(LT)를 획득 또는 계산할 수 있다(460). 일례로, 컴퓨팅 장치(110)가 타겟 디바이스(120)로 추론을 위해 데이터들을 시간 ta에 전송하였고 타깃 디바이스(120)로부터 추론 결과를 시간 tb에 수신한 경우, 배치 생성기(310)는 tb와 ta 사이의 차이(즉, tb―ta)를 배치 사이즈 A에 따른 추론 레이턴시(LT)로 결정할 수 있다.
도 4를 통해 설명한 배치 생성에 대한 보다 구체적인 일례를 도 5a를 참조하면서 설명한다.
도 5a에 도시된 예에서, 컴퓨팅 장치(110)가 데이터 1을 입력받으면, 배치 생성기(310)는 데이터 1을 버퍼(320)에 저장할 수 있다.
배치 생성기(310)는 버퍼(320)에 저장된 데이터 1의 사이즈와 배치 사이즈 A를 비교할 수 있다. 버퍼(320)에 저장된 데이터 1의 사이즈가 배치 사이즈 A보다 작은 경우, 배치 생성기(310)는 데이터 1의 입력 시간과 추론 레이턴시(La)의 합을 제한 시간과 비교할 수 있다. 도 5a에 도시된 예에서, 타이머(240)가 실행된 후 t1에 데이터 1이 컴퓨팅 장치(110)로 입력되었으므로, 배치 생성기(310)는 데이터 1의 입력 시간을 t1로 확인할 수 있다. 데이터 1의 입력 시간(t1)과 추론 레이턴시(La)의 합은 제한 시간보다 작을 수 있다.
컴퓨팅 장치(110)로 데이터 2가 입력될 수 있고 배치 생성기(310)는 데이터 2를 버퍼(320)에 저장할 수 있다.
배치 생성기(310)는 버퍼(320)에 저장된 데이터 1 및 2의 사이즈를 배치 사이즈 A와 비교할 수 있다. 데이터 1 및 2의 사이즈가 배치 사이즈 A보다 작으면, 배치 생성기(310)는 데이터 2의 입력 시간(t2)과 추론 레이턴시(La)의 합을 제한 시간과 비교할 수 있다. 여기서, 데이터 2의 입력 시간(t2)과 추론 레이턴시(La)의 합은 제한 시간보다 작을 수 있다.
시간이 흘러, 데이터 m이 컴퓨팅 장치(110)로 입력될 수 있다. 이 때, 버퍼(320)에는 데이터 1 내지 데이터 m-1이 저장되어 있다. 배치 생성기(310)는 데이터 m을 버퍼(320)에 저장할 수 있고, 버퍼(320)에 저장된 데이터 1 내지 데이터 m의 사이즈를 배치 사이즈 A와 비교할 수 있다. 데이터 1 내지 데이터 m의 사이즈가 배치 사이즈 A보다 작으면, 배치 생성기(310)는 데이터 m의 입력 시간(tm)과 추론 레이턴시(La)의 합을 제한 시간과 비교할 수 있다. 여기서, 데이터 m의 입력 시간(tm)과 추론 레이턴시(La)의 합은 제한 시간보다 작을 수 있다.
데이터 m+1이 컴퓨팅 장치(110)로 입력될 수 있고, 배치 생성기(310)는 데이터 m+1을 버퍼(320)에 저장할 수 있다. 배치 생성기(310)는 버퍼(320)에 저장된 데이터 1 내지 데이터 m+1의 사이즈를 배치 사이즈 A와 비교할 수 있다.
배치 생성기(310)는 버퍼(320)에 저장된 데이터 1 내지 데이터 m+1의 사이즈가 배치 사이즈 A보다 작은 경우, 데이터 m+1의 입력 시간(tm+1)과 추론 레이턴시(La)의 합을 제한 시간과 비교할 수 있다. 데이터 m+1의 입력 시간(tm+1)과 추론 레이턴시(La)의 합이 제한 시간보다 크다고 할 때, 배치 생성기(310)는 제한 시간을 초과하지 않은 데이터 1 내지 데이터 m을 포함하는 배치를 생성할 수 있다. 일례로, 도 5b에 도시된 예와 같이, 배치 생성기(310)는 데이터 1 내지 데이터 m을 포함하는 배치(510)를 생성할 수 있다. 배치(510)에는 배치 사이즈 A와 데이터 1 내지 데이터 m의 사이즈 사이의 차이만큼 비어있을 수 있다. 이 경우, 배치 생성기(310)는 배치(510)에 미리 정해진 값들(예를 들어, 0)을 채울 수 있다. 다시 말해, 데이터 1 내지 데이터 m의 사이즈가 B일 때, 배치 생성기(310)는 A와 B 사이의 차이만큼 "0"을 배치(510)에 채울 수 있다. 배치 생성기(310)는 배치(510)를 타겟 디바이스(120)로 전송할 수 있다.
타겟 디바이스(120)는 컴퓨팅 장치(110)로부터 수신한 데이터 1 내지 데이터 m에 대해 추론을 수행할 수 있고 추론 결과를 컴퓨팅 장치(110)로 전송할 수 있다.
도 5a 내지 도 5b를 통해 설명한 예와 달리, 배치 생성기(310)는 버퍼(320)에 저장된 데이터 1 내지 데이터 m+1의 사이즈가 배치 사이즈 A와 일치하는 경우, 데이터 1 내지 데이터 m+1을 배치로 형성하여 타겟 디바이스(120)로 전송할 수 있다. 이 경우, 타겟 디바이스(120)는 컴퓨팅 장치(110)로부터 수신한 데이터 1 내지 데이터 m+1에 대해 추론을 수행할 수 있고 추론 결과를 컴퓨팅 장치(110)로 전송할 수 있다.
도 6을 참조하면서 T 구간의 입력 데이터 개수를 카운팅하는 것에 대해 설명한다.
도 6을 참조하면, 입력 카운터(330)는 컴퓨팅 장치(110)로 데이터가 입력되면(410), 데이터의 입력 시간과 추론 레이턴시(La)의 합을 제한 시간과 비교할 수 있다(610). 입력 카운터(330)는 데이터의 입력 시간과 추론 레이턴시(La)의 합이 제한 시간 이하이면 T 구간의 입력 카운트를 업데이트할 수 있다. 입력 카운터(330)는 데이터의 입력 시간과 추론 레이턴시(La)의 합이 제한 시간보다 크면 최종 업데이트된 입력 카운트를 T 구간의 입력 데이터 개수로 결정할 수 있다(630). 통계 관리기(350)는 T 구간의 입력 데이터 개수를 데이터베이스에 기록할 수 있다.
일례로, 앞서 도 5a에 도시된 예에서, 컴퓨팅 장치(110)로 데이터 1이 입력되면 입력 카운터(330)는 데이터 1의 입력 시간(t1)과 추론 레이턴시(La)의 합을 제한 시간과 비교할 수 있다. 이 때, 데이터 1이 입력되었을 때 T 구간의 입력 카운트는 0이라 하자. 데이터 1의 입력 시간(t1)과 추론 레이턴시(La)의 합이 제한 시간보다 작으므로 입력 카운터(330)는 T 구간의 입력 카운트를 0에서 1로 업데이트할 수 있다. 컴퓨팅 장치(110)로 데이터 2가 입력되면 입력 카운터(330)는 데이터 2의 입력 시간(t2)과 추론 레이턴시(La)의 합을 제한 시간과 비교할 수 있다. 데이터 2의 입력 시간(t2)과 추론 레이턴시(La)의 합은 제한 시간보다 작으므로, 입력 카운터(330)는 T 구간의 입력 카운트를 1에서 2로 업데이트할 수 있다.
시간이 흘러, 데이터 m이 컴퓨팅 장치(110)로 입력될 수 있다. 입력 카운터(330)는 데이터 m의 입력 시간(tm)과 추론 레이턴시(La)의 합을 제한 시간과 비교할 수 있다. 데이터 m의 입력 시간(tm)과 추론 레이턴시(La)의 합이 제한 시간보다 작으므로, 입력 카운터(330)는 T 구간의 입력 카운트를 m으로 업데이트할 수 있다.
컴퓨팅 장치(110)로 데이터 m+1이 입력되면 입력 카운터(330)는 데이터 m+1의 입력 시간(tm+1)과 추론 레이턴시(La)의 합을 제한 시간과 비교할 수 있다. 데이터 m+1의 입력 시간(tm+1)과 추론 레이턴시(La)의 합은 제한 시간보다 크므로, 입력 카운터(330)는 최종 업데이트된 입력 카운트 m을 T 구간의 입력 데이터 개수로 결정할 수 있다. 다시 말해, 입력 카운터(330)는 데이터 m+1의 입력 시간(tm+1)과 추론 레이턴시(La)의 합이 제한 시간보다 크므로, 타이머(340)의 실행 후부터 데이터 m+1의 입력 시간(tm+1) 사이의 데이터들의 개수 m을 T 구간의 입력 데이터 개수로 결정할 수 있다.
통계 관리기(350)는 T 구간의 입력 데이터 개수 m을 데이터베이스에 기록할 수 있다. 데이터베이스에는 T 구간의 이전 구간들 각각에서의 입력 데이터 개수가 기록되어 있다.
통계 관리기(350)는 T 구간의 입력 데이터 개수와 T 구간의 하나 이상의 이전 구간의 입력 데이터 개수를 입력수 예측기(360)로 전달할 수 있다. 위에서 설명한 것과 같이, 입력수 예측기(360)는 T 구간의 입력 데이터 개수와 T 구간의 하나 이상의 이전 구간의 입력 데이터 개수를 기초로 T 구간의 다음 구간의 입력 데이터 개수를 예측할 수 있다.
도 7은 일 실시예에 따른 추론 레이턴시를 설명하기 위한 도면이다.
도 7을 참조하면, 컴퓨팅 장치(110)는 데이터들(710-1)을 타겟 디바이스(120)로 전송할 수 있다. 이 때, 배치 사이즈를 B라 하자. 타겟 디바이스(120)는 데이터들(710-1)에 추론을 실행할 수 있고, 추론 결과(710-2)를 컴퓨팅 장치(110)로 전송할 수 있다.
컴퓨팅 장치(110)(또는 배치 생성기(310))는 추론 결과(710-2)를 수신했을 때의 시간 t추론 결과(710-2)와 데이터들(710-1)을 전송했을 때의 시간 t데이터(710-1) 사이의 차이를 배치 사이즈 B에 따른 추론 레이턴시(LT-1)로 결정할 수 있다. 다시 말해, 추론 레이턴시(LT-1)=t추론 결과(710-2)―t데이터(710-1)일 수 있다.
추론 레이턴시(LT-1)는 상술한 추론 레이턴시(La)에 해당할 수 있다. 이는 일 실시예에 따른 예일 뿐, 상술한 추론 레이턴시(La)는 T 구간의 이전 구간들에서의 추론 레이턴시들의 평균일 수 있다.
위 단계(460)을 통해 설명한 배치 사이즈 A에 따른 추론 레이턴시(LT)는 다음 구간에서 배치 생성기(310)가 배치를 생성할 때 이용할 수 있고 입력 카운터(330)가 입력 데이터 개수를 카운팅할 때 이용할 수 있다.
도 8은 일 실시예에 따른 컴퓨팅 장치를 설명하기 위한 블록도이다.
도 8을 참조하면, 일 실시예에 따른 컴퓨팅 장치(110)는 프로세서(810) 및 메모리(820)를 포함한다.
메모리(820)는 뉴럴 네트워크 모델을 저장할 수 있다.
프로세서(810)는 제1 구간(예를 들어, 상술한 T 구간)의 입력 데이터 개수 및 제1 구간의 하나 이상의 이전 구간의 입력 데이터 개수를 이용하여 제1 구간의 다음 구간의 입력 데이터 개수를 예측한다. 일례로, 프로세서(810)는 타이머(340)를 실행한 후 어느 데이터의 입력 시간과 추론 레이턴시의 합이 제한 시간보다 큰 경우, 타이머(340)를 실행한 후부터 어느 데이터(예를 들어, 상술한 데이터 m+1)의 입력 시간 사이의 데이터들(예를 들어, 상술한 데이터 1 내지 데이터 m)의 개수를 제1 구간의 입력 데이터 개수로 결정할 수 있다. 그리고, 프로세서(810)는 데이터들(예를 들어, 상술한 데이터 1 내지 데이터 m)을 포함하는 배치를 형성하여 타겟 디바이스로 전송할 수 있다.
프로세서(810)는 예측된 입력 데이터 개수를 다음 구간의 배치 사이즈로 결정하고, 타겟 디바이스(120)의 자원 상태를 기초로 타겟 디바이스(120)에서 파이프라이닝이 수행될지 여부를 결정한다.
프로세서(810)는 결정된 배치 사이즈 및 파이프라이닝이 타겟 디바이스(120)에서 수행되는지 여부를 나타내는 정보를 포함하는 추론 정책을 타겟 디바이스(120)에 적용한다.
도 1 내지 도 7을 통해 설명된 사항들은 도 8을 통해 설명된 사항들에 적용될 수 있으므로, 상세한 설명을 생략한다.
도 9는 일 실시예에 따른 컴퓨팅 장치의 동작 방법을 설명하기 위한 순서도이다.
도 9를 참조하면, 컴퓨팅 장치(110)는 제1 구간의 입력 데이터 개수 및 제1 구간의 하나 이상의 이전 구간의 입력 데이터 개수를 이용하여 제1 구간의 다음 구간의 입력 데이터 개수를 예측한다(910).
컴퓨팅 장치(110)는 예측된 입력 데이터 개수를 다음 배치 사이즈로 결정한다(920). 위에서 설명한 것과 같이, 다음 배치 사이즈는 다음 구간의 배치 사이즈를 나타낸다. 단계(920)에서, 컴퓨팅 장치(110)는 결정된 다음 배치 사이즈가 기 설정된 배치 사이즈와 다른 경우, 기 설정된 배치 사이즈를 결정된 다음 배치 사이즈로 변경할 수 있다. 이에 따라, 컴퓨팅 장치(110)는 결정된 다음 배치 사이즈에 따라 다음 구간에서 배치를 생성할 수 있다.
컴퓨팅 장치(110)는 타겟 디바이스(120)의 자원 상태를 기초로 타겟 디바이스(120)에서 파이프라이닝이 수행될지 여부를 결정한다(930).
컴퓨팅 장치(110)는 결정된 다음 배치 사이즈 및 파이프라이닝이 타겟 디바이스(120)에서 수행되는지 여부를 나타내는 정보를 포함하는 추론 정책을 타겟 디바이스(120)에 적용한다(940). 단계(940)에서 컴퓨팅 장치(110)는 추론 정책을 기초로 뉴럴 네트워크 모델에 컴파일을 수행할 수 있고, 컴파일 결과를 타겟 디바이스(120)에 로딩할 수 있다.
도 1 내지 도 8을 통해 설명된 사항들은 도 9를 통해 설명된 사항들에 적용될 수 있으므로, 상세한 설명을 생략한다.
도 10은 일 실시예에 따른 서버 시스템을 설명하기 위한 도면이다.
도 10을 참조하면, 서버 시스템(1000)은 호스트(1010) 및 NPU(1020)를 포함한다.
호스트(1010)와 NPU(1020)는 버스를 통해 통신할 수 있다.
호스트(1010)는 컴퓨팅 장치(110)에 해당할 수 있고, NPU(1020)는 타겟 디바이스(120)에 해당할 수 있다.
도 10에는 서버 시스템(1000)이 하나의 NPU(1020)를 포함하지만 이는 예시적인 사항일 뿐, 서버 시스템(1000)은 복수의 NPU들을 포함할 수 있다.
도 1 내지 도 9를 통해 설명된 사항들은 도 10을 통해 설명된 사항들에 적용될 수 있으므로, 상세한 설명을 생략한다.
다른 실시예에 따라, 컴퓨팅 장치(110)와 타겟 디바이스(120)는 이동 단말(예를 들어, 스마트폰, 태블릿 등)에 포함될 수 있다.
이상에서 설명된 실시예들은 하드웨어 구성요소, 소프트웨어 구성요소, 및/또는 하드웨어 구성요소 및 소프트웨어 구성요소의 조합으로 구현될 수 있다. 예를 들어, 실시예들에서 설명된 장치, 방법 및 구성요소는, 예를 들어, 프로세서, 콘트롤러, 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 구간의 하나 이상의 이전 구간의 입력 데이터 개수를 이용하여 상기 제1 구간의 다음 구간의 입력 데이터 개수를 예측하는 단계;
    상기 예측된 입력 데이터 개수를 상기 다음 구간의 배치 사이즈로 결정하는 단계;
    타겟 디바이스의 자원 상태를 기초로 상기 타겟 디바이스에서 파이프라이닝이 수행될지 여부를 결정하는 단계; 및
    상기 결정된 배치 사이즈 및 상기 파이프라이닝이 상기 타겟 디바이스에서 수행되는지 여부를 나타내는 정보를 포함하는 추론 정책을 상기 타겟 디바이스에 적용하는 단계
    를 포함하는,
    뉴럴 네트워크 추론을 위한 최적화 방법.
  2. 제1항에 있어서,
    타이머를 실행한 후 어느 데이터의 입력 시간과 추론 레이턴시의 합이 제한 시간보다 큰 경우, 상기 타이머를 실행한 후부터 상기 입력 시간 사이의 데이터들의 개수를 상기 제1 구간의 입력 데이터 개수로 결정하는 단계
    를 더 포함하는,
    뉴럴 네트워크 추론를 위한 최적화 방법.
  3. 제2항에 있어서,
    상기 데이터들을 포함하는 배치를 형성하여 상기 타겟 디바이스로 전송하는 단계
    를 더 포함하는,
    뉴럴 네트워크 추론를 위한 최적화 방법.
  4. 제1항에 있어서,
    상기 예측하는 단계는,
    상기 제1 구간의 입력 데이터 개수 및 상기 하나 이상의 이전 구간의 입력 데이터 개수의 이동 평균을 계산하고, 상기 계산된 이동 평균을 상기 다음 구간의 입력 데이터 개수로 예측하는 단계
    를 포함하는,
    뉴럴 네트워크 추론를 위한 최적화 방법.
  5. 제1항에 있어서,
    상기 예측하는 단계는,
    뉴럴 네트워크 기반 예측 모델을 이용하여 상기 제1 구간의 입력 데이터 개수 및 상기 하나 이상의 이전 구간의 입력 데이터 개수로부터 상기 다음 구간의 입력 데이터 개수를 예측하는 단계
    를 포함하는,
    뉴럴 네트워크 추론를 위한 최적화 방법.
  6. 제5항에 있어서,
    상기 뉴럴 네트워크 기반 예측 모델은,
    RNN(Recurrent Neural Network) 또는 LSTM(Long Short Term Memory)을 포함하는,
    뉴럴 네트워크 추론를 위한 최적화 방법.
  7. 제1항에 있어서,
    상기 적용하는 단계는,
    상기 추론 정책을 기초로 뉴럴 네트워크 모델에 컴파일을 수행하고, 상기 컴파일 결과를 상기 타겟 디바이스에 로딩(loading)하는 단계
    를 포함하는,
    뉴럴 네트워크 추론를 위한 최적화 방법.
  8. 제1항에 있어서,
    상기 결정된 배치 사이즈가 기 설정된 배치 사이즈와 다른 경우, 상기 다음 구간에서 상기 결정된 배치 사이즈에 따라 배치를 생성하도록 상기 설정된 배치 사이즈에서 상기 결정된 배치 사이즈로 변경하는 단계
    를 더 포함하는,
    뉴럴 네트워크 추론를 위한 최적화 방법.
  9. 제1항에 있어서,
    추론 모드에 따라 초기 설정을 수행하는 단계; 및
    상기 초기 설정에 따라 뉴럴 네트워크 모델을 컴파일하여 초기 실행 코드를 생성하고 상기 생성된 초기 실행 코드를 상기 타겟 디바이스에 로딩하는 단계
    를 더 포함하는,
    뉴럴 네트워크 추론를 위한 최적화 방법.
  10. 제9항에 있어서,
    상기 초기 설정은 초기 배치 사이즈 및 상기 파이프라이닝이 수행되지 않음을 나타내는 정보를 포함하는,
    뉴럴 네트워크 추론를 위한 최적화 방법.
  11. 제9항에 있어서,
    상기 추론 모드는,
    배치 사이즈가 제1 값인 제1 모드;
    상기 배치 사이즈가 제2 값인 제2 모드;
    미리 정해진 사이즈의 배치를 처리하기 위한 뉴럴 네트워크 모델의 연산을 반복하는 제3 모드; 및
    상기 추론 정책을 결정하는 제4 모드
    중 어느 하나에 해당하는,
    뉴럴 네트워크 추론를 위한 최적화 방법.
  12. 뉴럴 네트워크 추론을 위한 최적화 방법을 수행하는 컴퓨팅 장치에 있어서,
    제1 구간의 입력 데이터 개수 및 상기 제1 구간의 하나 이상의 이전 구간의 입력 데이터 개수를 이용하여 상기 제1 구간의 다음 구간의 입력 데이터 개수를 예측하고, 상기 예측된 입력 데이터 개수를 상기 다음 구간의 배치 사이즈로 결정하며, 타겟 디바이스의 자원 상태를 기초로 상기 타겟 디바이스에서 파이프라이닝이 수행될지 여부를 결정하고, 상기 결정된 배치 사이즈 및 상기 파이프라이닝이 상기 타겟 디바이스에서 수행되는지 여부를 나타내는 정보를 포함하는 추론 정책을 상기 타겟 디바이스에 적용하는 프로세서
    를 포함하는,
    컴퓨팅 장치.
  13. 제12항에 있어서,
    상기 프로세서는,
    타이머를 실행한 후 어느 데이터의 입력 시간과 추론 레이턴시의 합이 제한 시간보다 큰 경우, 상기 타이머를 실행한 후부터 상기 입력 시간 사이의 데이터들의 개수를 상기 제1 구간의 입력 데이터 개수로 기록하는,
    컴퓨팅 장치.
  14. 제13항에 있어서,
    상기 프로세서는,
    상기 데이터들을 포함하는 배치를 형성하여 상기 타겟 디바이스로 전송하는,
    컴퓨팅 장치.
  15. 제12항에 있어서,
    상기 프로세서는,
    상기 제1 구간의 입력 데이터 개수 및 상기 하나 이상의 이전 구간의 입력 데이터 개수의 이동 평균을 계산하고, 상기 계산된 이동 평균을 상기 다음 구간의 입력 데이터 개수로 예측하는,
    컴퓨팅 장치.
  16. 제12항에 있어서,
    상기 프로세서는,
    뉴럴 네트워크 기반 예측 모델을 이용하여 상기 제1 구간의 입력 데이터 개수 및 상기 하나 이상의 이전 구간의 입력 데이터 개수로부터 상기 다음 구간의 입력 데이터 개수를 예측하는,
    컴퓨팅 장치.
  17. 제12항에 있어서,
    상기 프로세서는,
    상기 추론 정책을 기초로 뉴럴 네트워크 모델에 컴파일을 수행하고, 상기 컴파일 결과를 상기 타겟 디바이스에 로딩(loading)하는,
    컴퓨팅 장치.
  18. 제12항에 있어서,
    상기 프로세서는,
    상기 결정된 배치 사이즈가 기 설정된 배치 사이즈와 다른 경우, 상기 다음 구간에서 상기 결정된 배치 사이즈에 따라 배치를 생성하도록 상기 설정된 배치 사이즈에서 상기 결정된 배치 사이즈로 변경하는,
    컴퓨팅 장치.
  19. 제12항에 있어서,
    상기 프로세서는,
    추론 모드에 따라 초기 설정을 수행하고, 상기 초기 설정에 따라 뉴럴 네트워크 모델을 컴파일하여 초기 실행 코드를 생성하며, 상기 생성된 초기 실행 코드를 상기 타겟 디바이스에 로딩하는,
    컴퓨팅 장치.
  20. 제12항에 있어서,
    상기 추론 모드는,
    배치 사이즈가 제1 값인 제1 모드;
    상기 배치 사이즈가 제2 값인 제2 모드;
    미리 정해진 사이즈의 배치를 처리하기 위한 뉴럴 네트워크 모델의 연산을 반복하는 제3 모드; 및
    상기 추론 정책을 결정하는 제4 모드
    중 어느 하나에 해당하는,
    컴퓨팅 장치.
KR1020200118759A 2020-09-16 2020-09-16 뉴럴 네트워크 추론을 위한 최적화 방법 및 이를 수행하는 컴퓨팅 장치 KR20220036493A (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020200118759A KR20220036493A (ko) 2020-09-16 2020-09-16 뉴럴 네트워크 추론을 위한 최적화 방법 및 이를 수행하는 컴퓨팅 장치
US17/244,006 US20220083838A1 (en) 2020-09-16 2021-04-29 Method and apparatus with neural network inference optimization implementation

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020200118759A KR20220036493A (ko) 2020-09-16 2020-09-16 뉴럴 네트워크 추론을 위한 최적화 방법 및 이를 수행하는 컴퓨팅 장치

Publications (1)

Publication Number Publication Date
KR20220036493A true KR20220036493A (ko) 2022-03-23

Family

ID=80627785

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020200118759A KR20220036493A (ko) 2020-09-16 2020-09-16 뉴럴 네트워크 추론을 위한 최적화 방법 및 이를 수행하는 컴퓨팅 장치

Country Status (2)

Country Link
US (1) US20220083838A1 (ko)
KR (1) KR20220036493A (ko)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116192759A (zh) * 2022-12-13 2023-05-30 网易(杭州)网络有限公司 数据传输量的调整方法、装置、电子设备及存储介质

Also Published As

Publication number Publication date
US20220083838A1 (en) 2022-03-17

Similar Documents

Publication Publication Date Title
US11216310B2 (en) Capacity expansion method and apparatus
US20140245319A1 (en) Method for enabling an application to run on a cloud computing system
KR102167747B1 (ko) 사용자 이용 패턴을 신경망 알고리즘으로 분석하여 다음 어플리케이션을 예측하는 모바일 디바이스 메모리 관리 장치 및 방법
US9557976B2 (en) Adaptable and extensible runtime and system for heterogeneous computer systems
CN104123184A (zh) 一种用于为构建过程中的任务分配资源的方法和***
CN109753300B (zh) 一种算法升级方法、计算任务发送方法及相关装置
CN117396850A (zh) 用于为深度学习作业弹性分配资源的***、方法和介质
CN115860079A (zh) 神经网络加速装置、方法、芯片、电子设备及存储介质
KR20220036493A (ko) 뉴럴 네트워크 추론을 위한 최적화 방법 및 이를 수행하는 컴퓨팅 장치
CN113988287A (zh) 基于nGraph框架实现分布式神经网络训练的方法
CN116932174B (zh) Eda仿真任务动态资源调度方法、装置、终端及介质
JP6857196B2 (ja) 1つまたは複数の通信チャネルにより相互接続された複数の異なるメモリ・ロケーションを有するコンピューティング・システムのアプリケーションを最適化する方法、コンピュータ可読プログラムを含む非一時的コンピュータ可読記憶媒体、およびシステム
CN112955909A (zh) 神经网络的分布式训练方法及装置
WO2024002753A1 (en) Thermal and performance management
KR20200139909A (ko) 전자 장치 및 그의 연산 수행 방법
KR102376527B1 (ko) Dnn 프레임워크를 이용하는 단일 가속기용 프로그램을 복수의 가속기에서 처리하는 방법 및 컴퓨터 프로그램
US11748138B2 (en) Systems and methods for computing a success probability of a session launch using stochastic automata
US11954527B2 (en) Machine learning system and resource allocation method thereof
CN117056068B (zh) ETL中JobEngine任务拆分方法
WO2024087844A1 (zh) 图神经网络的训练方法、训练***及异常账号识别方法
KR102410651B1 (ko) 부하 분산을 위한 컨텐츠 저장 방법 및 이를 수행하는 장치들
CN110879744B (zh) 利用多线程执行计算图的方法和***
US20220222177A1 (en) Systems, apparatus, articles of manufacture, and methods for improved data transfer for heterogeneous programs
KR20240033989A (ko) 모바일 비전 어플리케이션을 위한 dnn 모델 분할 추론 방법 및 시스템
Zhang et al. Machine Learning on the Cheap: An Optimized Strategy to Exploit Spot Instances

Legal Events

Date Code Title Description
A201 Request for examination