KR20240010548A - 다중-태스크 순환 신경망 - Google Patents

다중-태스크 순환 신경망 Download PDF

Info

Publication number
KR20240010548A
KR20240010548A KR1020247001245A KR20247001245A KR20240010548A KR 20240010548 A KR20240010548 A KR 20240010548A KR 1020247001245 A KR1020247001245 A KR 1020247001245A KR 20247001245 A KR20247001245 A KR 20247001245A KR 20240010548 A KR20240010548 A KR 20240010548A
Authority
KR
South Korea
Prior art keywords
rnn
neural network
data
recurrent neural
memory
Prior art date
Application number
KR1020247001245A
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 KR20240010548A publication Critical patent/KR20240010548A/ko

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0862Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with prefetch
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/0284Multiple user address space allocation, e.g. using different base addresses
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0604Improving or facilitating administration, e.g. storage management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0659Command handling arrangements, e.g. command buffers, queues, command scheduling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • 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
    • G06N3/044Recurrent networks, e.g. Hopfield networks
    • G06N3/0442Recurrent networks, e.g. Hopfield networks characterised by memory or gating, e.g. long short-term memory [LSTM] or gated recurrent units [GRU]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/60Details of cache memory
    • G06F2212/6024History based prefetching

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Computing Systems (AREA)
  • Software Systems (AREA)
  • Computational Linguistics (AREA)
  • Data Mining & Analysis (AREA)
  • Evolutionary Computation (AREA)
  • General Health & Medical Sciences (AREA)
  • Molecular Biology (AREA)
  • Biomedical Technology (AREA)
  • Artificial Intelligence (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Mathematical Physics (AREA)
  • Biophysics (AREA)
  • Health & Medical Sciences (AREA)
  • Human Computer Interaction (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Image Analysis (AREA)
  • Advance Control (AREA)
  • Executing Machine-Instructions (AREA)
  • Control Of Position, Course, Altitude, Or Attitude Of Moving Bodies (AREA)
  • Small-Scale Networks (AREA)
  • Feedback Control In General (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

다중-태스크 순환 신경망과 관련된 컴퓨터 저장 매체에 인코딩된 컴퓨터 프로그램을 포함하는 방법, 시스템 및 장치가 제공된다. 방법 중 하나는, 순환 신경망에 대해, 복수의 메모리 영역 각각에 대한 별도의 내부 상태를 지정하는 데이터를 유지하는 단계; 현재 입력을 수신하는 단계; 현재 입력에 의해 정의된 메모리 액세스 주소의 특정 메모리 영역을 식별하는 단계; 상기 유지된 데이터에 지정된 내부 상태들로부터 특정 메모리 영역에 대한 내부 상태를 선택하는 단계; 특정 메모리 영역에 대해 선택된 내부 상태에 따라, 순환 신경망을 사용하여 입력 시퀀스의 상기 현재 입력을 프로세싱하는 단계 -상기 현재 입력을 프로세싱하는 단계는, 예측된 메모리 액세스 주소의 확률 분포를 정의하는 출력을 생성하는 단계, 특정 메모리 영역의 선택된 내부 상태를 업데이트하는 단계를 포함함-; 업데이트된 선택된 내부 상태를 상기 유지된 데이터의 특정 메모리 영역과 연관시키는 단계를 포함한다.

Description

다중-태스크 순환 신경망{MULTI-TASK RECURRENT NEURAL NETWORKS}
본 명세서는 다중-태스크 순환 신경망에 관한 것이다.
신경망은 하나 이상의 입력에서 하나 이상의 출력을 예측하기 위해 여러 계층의 태스크를 사용하는 기계 학습 모델이다. 신경망은 일반적으로 입력층과 출력층 사이에 위치한 하나 이상의 은닉층을 포함한다. 각 은닉층의 출력은 다음 계층(레이어)(예: 다음 은닉층 또는 출력층)에 대한 입력으로 사용된다.
신경망의 각 계층은 계층에 대한 입력에서 수행할 하나 이상의 변환 연산을 지정한다. 일부 신경망 계층에는 뉴런이라고하는 연산이 있다. 각 뉴런은 하나 이상의 입력을 수신하고 다른 신경망 계층에서 수신한 출력을 생성한다. 종종 각 뉴런은 다른 뉴런으로부터 입력을 수신하고, 각 뉴런은 하나 이상의 다른 뉴런에 출력을 제공한다.
각 계층은 계층에 대한 파라미터 세트의 현재 값을 사용하여 하나 이상의 출력을 생성한다. 신경망 훈련에는 입력에 대한 순방향 전달을 지속적으로 수행하고, 기울기(gradient) 값을 계산하고, 각 계층에 대한 파라미터 세트의 현재 값을 업데이트하는 것이 포함된다. 신경망이 훈련되면 최종 파라미터 세트을 사용하여 프로덕션 시스템에서 예측을 수행할 수 있다.
일부 신경망은 순환 신경망이다. 순환 신경망은 입력 시퀀스를 수신하고 입력 시퀀스에서 출력 시퀀스를 생성하는 신경망이다. 특히, 순환 신경망은 현재 시간 단계(스텝)에서 출력을 계산할 때 이전 시간 단계의 네트워크 내부 상태의 일부 또는 전체를 사용할 수 있다. 이를 통해 순환 신경망이 동적 시간적 동작(dynamic temporal behavior)을 나타낼 수 있다. 즉, 순환 신경망은 현재 시간 단계까지 수신한 모든 정보를 요약하고 데이터 시퀀스에서 장기적인 종속성을 캡처할 수 있다.
본 명세서는 다중-태스크 순환 신경망에 관한 것으로서, 보다 구체적으로는 마이크로프로세서에서 시계열 예측을 개선하는 다중-태스크 순환 신경망을 설명한다.
다중-태스크 순환 신경망을 구현하는 회로는 순환 신경망의 연산을 수행하도록 구성된 순환 신경망 셀("RNN 셀")을 포함한다. 즉, RNN 셀은 순환 신경망의 각 계층에서 정의한 변환 연산을 수행하도록 구성된다. 회로에는 상태 레지스터도 포함된다. 각 상태 레지스터는(i) 순환 신경망에 대한 내부 상태 데이터를 저장하고(ii) 순환 신경망이 수행하도록 훈련된 각 태스크에 해당하도록 구성된다. 상태 데이터는 시간 단계에 걸쳐 지속되는 데이터이며, 즉, 시퀀스의 다음 입력을 처리(프로세싱)하는 데 사용하기 위해 시퀀스의 한 입력을 처리한 후에 유지되는 데이터이다. 예를 들어, 순환 신경망이 LSTM(long short-term memory) 네트워크인 경우, 상태 데이터는 네트워크의 각 LSTM 유닛에 대해 은닉 상태 h와 셀 상태 c를 포함할 수 있다.
회로는 시퀀스 식별 데이터 및 입력 시퀀스의 현재 입력을 수신한다. 회로는 시퀀스 식별 데이터를 기반으로 특정 태스크를 식별한다. 회로는 식별된 태스크에 해당하는 상태 레지스터에서 내부 상태 데이터를 획득한다. 이는 획득된 내부 상태 데이터 및 현재 입력을 RNN 셀에 제공하여, RNN 셀이 획득된 내부 상태 데이터 및 현재 입력을 처리하여 식별된 태스크에 대한 신경망 출력 및 업데이트된 내부 상태 데이터를 생성하도록 한다. 회로는 RNN 셀, 신경망 출력 및 식별된 태스크에 대한 업데이트된 내부 상태 데이터를 수신한다. 마지막으로 회로는 업데이트된 내부 상태 데이터를 식별된 태스크에 해당하는 상태 레지스터에 기록한다.
위에서 설명한 회로는 다음에서 설명하는 방법에 따라 컴퓨팅 시스템에서 메모리 액세스를 보다 정확하게 예측하는 데 사용될 수 있다. 회로는, 복수의 메모리 영역 중 하나에서 컴퓨터 프로그램의 메모리 액세스 주소를 예측하도록 훈련된 순환 신경망에 대해, 각 메모리 영역에 대한 별도의 내부 상태를 지정하는 데이터를 유지하고; 컴퓨터 프로그램의 이전 메모리 액세스 주소의 시퀀스를 정의하는 입력 시퀀스에서 현재 입력을 수신하고; 입력 시퀀스의 현재 입력에 의해 정의된 메모리 액세스 주소의 특정 메모리 영역을 식별하고; 유지된 데이터에 지정된 내부 상태들로부터 특정 메모리 영역에 대한 내부 상태를 선택하고; 특정 메모리 영역에 대해 선택된 내부 상태에 따라, 순환 신경망을 사용하여 입력 시퀀스의 현재 입력을 처리(프로세싱)하고(현재 입력을 처리하는 것은(i) 예측된 메모리 액세스 주소의 확률 분포를 정의하는 출력을 생성하고 -예측된 메모리 액세스 주소는 특정 메모리 영역에서 컴퓨터 프로그램의 미래 메모리 액세스 주소임-,(ii) 특정 메모리 영역의 선택된 내부 상태를 업데이트하는 것을 포함함); 업데이트된 선택된 내부 상태를 상기 유지된 데이터의 특정 메모리 영역과 연관시킨다.
일부 실시 예에서, 하나 이상의 처리 장치에 의해 실행될 때 하나 이상의 처리 장치가 본 명세서에 설명된 임의의 실시 예 또는 양태에 따른 방법 및 단계를 포함하는 동작을 수행하게 하는 명령어로 인코딩된 하나 이상의 컴퓨터 판독 가능 저장 매체가 제공된다.
일부 실시 예에서, 시스템은, 하나 이상의 컴퓨터; 및 하나 이상의 컴퓨터에 의해 실행될 때 본 명세서에 설명된 임의의 실시 예 또는 양태에 따른 방법 및 단계를 수행하는 명령어를 저장하는 하나 이상의 저장 장치를 포함한다.
본 명세서에 설명된 요지는 다음의 장점 중 하나 이상을 실현하기 위해 특정 실시 예에서 구현될 수 있다. 순환 신경망에 연결된 상태 레지스터에 순환 신경망 상태를 저장하는 것을 포함하여 하드웨어에서 순환 신경망을 구현함으로써, 순환 신경망은 여러 태스크를 빠르고 연속적으로 수행할 수 있으며, 이를 멀티 태스킹이라고 한다. 보다 구체적으로, 각 상태 레지스터는 각 태스크에 대한 상태를 저장할 수 있다. 순환 신경망은 제1 상태 레지스터로부터 제1 상태를 획득하여 제1 입력 시퀀스를 처리할 수 있고, 제1 입력 시퀀스의 처리가 완료되기 전에 제2 상태 레지스터로부터 제2 상태를 획득하여 제2 상이한 입력 시퀀스를 처리할 수 있다. 예를 들어, 순환 신경망을 구현하는 단일 하드웨어 회로는 단순히 각 상태 레지스터에서 이러한 태스크 중 하나에 해당하는 상태를 획득함으로써 메모리 액세스, 캐시 미스(cache misses) 및 분기(branches)를 예측할 수 있다. 상태 레지스터에 상태 데이터를 저장하면 RNN이 각 시간 단계에서 계산해야 하는 순차적 종속성(dependencies)의 수가 줄어들고 입력 시퀀스의 길이만큼 총 지연시간이 감소한다.
본 명세서는 또한 입력 시퀀스를 잠재적 원인에 따라 분류하고 분리하는 방법을 설명한다. 데이터 프리페칭(prefetching)에서 잠재적 원인에 의한 분해(disaggregation)의 한 가지 예는 메모리의 서로 다른 영역에서 메모리 액세스 주소의 인터리브된 스트림(interleaved streams)을 분리하는 것이다. 이러한 각 영역은 서로 다른 메모리 액세스 패턴을 가질 수 있으며, 순환 신경망에 대한 입력으로 사용되기 전에 스트림이 분리되면 기계 학습 모델이 더 효과적으로 학습할 수 있다. 데이터 프리페칭에서 잠재 원인에 의한 분해의 또 다른 예는 메모리 액세스를 유발한 데이터 구조별로 메모리 액세스 스트림을 분리하는 것이다. 다시 말하지만, 그렇게하면 기계 학습 모델이 더 효과적으로 학습할 수 있다.
본 명세서의 요지의 하나 이상의 실시 예의 세부 사항은 첨부된 도면 및 이하의 설명에서 설명된다. 요지의 다른 특징, 측면 및 이점은 설명, 도면 및 청구 범위로부터 명백해질 것이다.
도 1은 하드웨어로 구현된 예시적인 순환 신경망의 다이어그램이다.
도 2는 상태 레지스터 및 멀티플렉서를 갖는 예시적인 순환 신경망 시스템의 다이어그램이다.
도 3은 하드웨어 회로를 사용하여 다중-태스크 순환 신경망을 처리하기 위한 예시적인 프로세스의 흐름도이다.
도 4는 메모리로부터 데이터를 프리-페치하도록 구성된 예시적인 컴퓨팅 시스템의 다이어그램이다.
도 5는 컴퓨팅 시스템에서 실행되는 컴퓨터 프로그램의 미래 메모리 액세스 주소를 예측하기 위한 예시적인 프로세스의 흐름도이다.
다양한 도면에서 참조 번호와 명칭은 같은 구성요소를 나타낸다.
본 명세서는 다중-태스크 순환 신경망에 관한 것으로서, 보다 구체적으로는 마이크로프로세서에서 시계열 예측을 개선하는 다중-태스크 순환 신경망을 설명한다.
도 1은 하드웨어로 구현되는 순환 신경망(100)의 다이어그램이다. 순환 신경망은 일반적으로 입력층, 하나 이상의 은닉층 및 출력층을 포함한다.
순환 신경망의 입력층은 일반적으로 0에서 현재 시간 단계 N까지의 각 시간 단계에서 각 입력을 포함하는 입력 시퀀스(입력들의 시퀀스)을 수신하고, 입력 시퀀스를 처리하여 시퀀스의 특징 표현을 생성하도록 구성된다.
순환 신경망의 은닉층은 순환 계층이며, 즉, 시퀀스의 입력들 간에 상태를 유지하고 현재 시간 단계에 대한 출력 생성의 일부로 현재 상태를 업데이트한다. 기존의 순환 신경망에는 출력과 계층의 다음 상태를 계산하는 은닉층이 있으며, 다음 상태는 이전 상태와 현재 입력에 기초한다. 상태는 시간 단계에 걸쳐 유지되며 입력 시퀀스의 종속성을 캡처한다.
특정 유형의 순환 신경망은 LSTM(long short-term memory) 네트워크이다. LSTM 네트워크의 은닉층에는 입력 시퀀스의 입력 당 하나의 LSTM 유닛이 포함된다. 각 LSTM 유닛은 자체 계층의 다른 LSTM 유닛과 다음 은닉층 또는 출력층의 LSTM 유닛에 출력을 제공한다. 각 LSTM 유닛은 은닉 상태(h), 셀 상태(c), 입력 게이트(i), 망각(forget) 게이트(f) 및 출력 게이트(o)를 포함한다. 세 개의 게이트 각각은 가중치 합의 활성화를 계산하는 개별 뉴런으로 생각할 수 있다. 직관적으로 입력 게이트는 새로운 값이 셀로 유입되는 범위를 제어하고, 망각 게이트는 값이 셀에 남아있는 범위를 제어하고, 출력 게이트는 셀의 값이 LSTM 유닛의 출력 활성화를 계산하는 데 사용되는 범위를 제어한다. 즉, 이러한 게이트는 LSTM 유닛이 "리멤버(remembers)"하는 것을 또는 이전 상태가 상태에 미치는 영향을 제어한다.
순환 신경망의 출력층은 일반적으로 마지막 은닉층으로부터 입력을 수신하고 각 시간 단계에서 출력, 예를 들어 예측을 생성하도록 구성된다. 출력층은 소프트- 맥스 계층, 로지스틱 계층, 선형 계층 등이 될 수 있다. 소프트맥스 출력층은 시간 단계에 대해 가능한 출력에 대해 이산(discrete) 확률 분포를 생성한다. 즉, 가능한 각 출력은 이산 점수와 연관된다. 로지스틱 출력층은 시간 단계에 대해 가능한 출력에 대한 분포의 파라미터(예: 평균, 로그 스케일 또는 혼합 가중치)를 생성한다. 그리고 선형 계층은 마지막 은닉 계층의 출력을 적절한 출력 공간에 투영한다. 일부 구현에서, 순환 신경망은 출력층을 갖지 않으며, 즉, 마지막 은닉층의 출력은 순환 신경망의 출력이다.
순환 신경망에 대한 훈련 데이터에는 입력 시퀀스와 해당 입력 시퀀스에 대한 레이블(label)이 포함된다. 각 레이블은 특정 입력 시퀀스에 대한 특정 시간 단계에서 원하는 또는 예상되는 출력에 해당한다. 순환 신경망을 훈련시키는 것은 주어진(소정의) 입력 시퀀스에 대한 실제 출력과 예상 출력 사이의 불일치를 최소화하기 위해 입력층, RNN 셀 및 출력층의 가중치와 같은 네트워크의 가중치를 설정하는 것을 포함한다. 주어진 입력 시퀀스에 대해 실제 출력과 예상 출력간에 불일치가 있는 경우, 예를 들어, 시간 훈련 기법을 통한 기존의 역전파(backpropagation)를 사용하여 순환 신경망의 가중치를 업데이트할 수 있다. 당 업계에 알려진 다른 기술은 또한 순환 신경망의 가중치를 업데이트하는데 사용될 수 있다.
순환 신경망(100)은 은닉층 당 하나의 상태 레지스터와 은닉층 당 하나의 RNN 셀을 포함하는 순환 신경망의 하드웨어 구현이다. 일부 구현에서, 각각의 RNN 셀은 처리 유닛의 수축기(systolic) 어레이 내의 처리 유닛이다. 각 처리 장치는, 매트릭스 곱셈을 집합적으로 수행하는 곱셈 누적 장치 세트와 필요한 게이팅 함수(gating functions)를 적용하고 요소 별 곱셈을 수행하는 기타 회로를 포함하여, 하드웨어에서 순환 신경망 계층의 매트릭스 곱셈 및 기타 연산을 수행한다.
시간 단계 N에서, 입력 유닛(110)은 입력 시퀀스에서 입력 N을 수신하고 그 입력의 특징 표현(feature representation)을 생성한다. RNN 셀(120 및 130)은 순환 신경망의 고정된 파라미터와 각 은닉층에 대한 상태 레지스터에 저장된 상태 데이터를 모두 사용하여 특징 표현을 처리(프로세싱)한다. RNN 셀(130)의 출력은 시간 단계 N + 1에 대한 출력을 생성하는 출력 유닛(140)에 제공된다. RNN 셀(120 및 130)은 또한 입력 N을 반영하기 위해 각각의 상태 레지스터에서 상태 데이터를 업데이트한다. 이 상태 데이터는 모든 이전 입력 및 상태를 캡처한다.
도 2는 다른 방식으로 상태 레지스터를 이용하는 예시적인 순환 신경망 시스템(200)의 다이어그램이다. 상태 레지스터(210a-210n)는 각각 순환 신경망의 상이한 내부 상태를 지정하는 데이터를 저장할 수 있다. 각 내부 상태 및 결과적으로 각 상태 레지스터는 신경망이 수행하도록 훈련된 각각의 다른 태스크에 해당한다. 예를 들어, 제1 상태 레지스터는 메모리 액세스 주소 예측에 해당하는 내부 상태를 지정하는 데이터를 저장할 수 있으며, 즉 주소를 로드 및 저장하는 반면, 제2 상태 레지스터는 컴퓨터 프로그램 분기(branches) 예측에 해당하는 내부 상태를 지정하는 데이터를 저장할 수 있다. 한편, 다른 상태 레지스터는 예를 들어 향후(미래) 프로그램 명령어 또는 캐시 미스 예측에 해당하는 내부 상태를 지정하는 데이터를 저장할 수 있다.
멀티플렉서인 RNN 선택기(220)는 시퀀스 식별 데이터(Sequence Identifying Data)에 기초하여 순환 신경망이 특정 시간에 사용하는 특정 내부 상태를 선택할 수 있다. 시퀀스 식별 데이터는 상태 레지스터(결과적으로 RNN 컴퓨팅 셀(230)에 로드되어야 하는 내부 상태)를 지정한다. 시퀀스 식별 데이터는 RNN 컴퓨팅 셀(230)이 수행(예를 들어 메모리 액세스 주소를 예측(분기, 프로그램 명령어 또는 캐시 미스와 반대))해야 하는 특정 태스크를 지정하는 사용자 입력에 기초할 수 있다. 또는 시퀀스 식별 데이터는 현재 입력에 대한 관측치(observation)를 기반으로 할 수 있다. 예를 들어, 시퀀스 식별 데이터는 현재 입력이 캐시 주소라는 관측치를 기반으로 할 수 있다. 그러한 상황에서, 시퀀스 식별 데이터는 캐시 미스를 예측하는 태스크에 대응하는 내부 상태가 RNN 컴퓨팅 셀(230)로 로드되어야 한다고 지정할 수 있다.
순환 신경망 시스템(200)은 또한 고정 파라미터 세트가 로드된 입력 유닛(240)을 포함한다. 입력 유닛(240)은 현재 입력을 수신하고, 현재 입력의 특징(Feature) 표현을 생성하고, 특징 표현을 RNN 컴퓨팅 셀(230)에 제공할 수 있다.
선택된 상태, 특징 표현 및 RNN 컴퓨팅 셀(230)에 유지되는 고정 가중치 세트를 사용하여, RNN 컴퓨팅 셀(230)은 태스크에 대한 다음 상태(Next State) 및 예측(Prediction)을 생성할 수 있다. 순환 신경망에 은닉층이 여러 개 있는 경우, RNN 컴퓨팅 셀(230)은 생성된 예측을 자신의 상태 레지스터 및 RNN 선택기를 갖는 또 다른 RNN 컴퓨팅 셀에 제공할 수 있다. 또한, 순환 신경망 시스템은 선택적으로 출력 유닛을 포함할 수 있다. 한편, RNN 컴퓨팅 셀(230)은 적절한 상태 레지스터(210a-210n)에 태스크에 대한 다음 상태를 제공하여 해당 레지스터의 이전 상태를 덮어쓸(overwriting) 수 있다. 위에서 설명한 것과 같은 다중-태스크 순환 신경망을 훈련하려면 각 태스크를 수행하기 위해 순환 신경망을 훈련해야 한다.
대안적으로, 상태 레지스터(210a-210n)는 복수의 메모리 영역에서 컴퓨터 프로그램의 메모리 액세스 주소를 예측하도록 훈련된 순환 신경망에 대해, 복수의 메모리 영역 각각에 대한 별도의 내부 상태를 지정하는 데이터를 저장할 수 있다. 이러한 방식으로 메모리 영역 별 메모리 액세스를 분리하면 단일 메모리 영역 내의 메모리 액세스가 일반적으로 둘 이상의 메모리 영역에 걸친 메모리 액세스보다 더 예측 가능한 패턴을 따르기 때문에 메모리 액세스 예측을 향상시킬 수 있다. 즉, RNN 컴퓨팅 셀(230)은 전체 주소 공간을 가로 지르는 것이 아니라 특정 메모리 영역에서 메모리 액세스를 예측할 때 더 정확한 예측을 생성한다.
도 3은 다중-태스크 순환 신경망을 처리하기 위한 예시적인 프로세스(300)의 흐름도이다. 프로세스(300)는 적절하게 프로그래밍된 회로에 의해 수행된다. 회로에는 순환 신경망, 여러 상태 레지스터 및 기타 회로의 동작을 수행하도록 구성된 RNN 셀이 포함된다. 각 상태 레지스터는 (i) 순환 신경망에 대한 내부 상태 데이터를 저장하도록 구성되고, (ii) 신경망이 수행하도록 훈련된 여러 태스크의 각 태스크에 해당한다.
회로는 시퀀스 식별 데이터 및 입력 시퀀스의 현재 입력을 수신한다(310). 입력 시퀀스는 각 시간 단계의 각 입력을 포함한다. 시간 단계는 연속적일 수도 있고 아닐 수도 있다. 시퀀스 식별 데이터는 태스크(결과적으로 내부 상태 데이터가 RNN 셀에 로드되는 상태 레지스터)를 지정한다.
회로는 시퀀스 식별 데이터에 기초하여 수행될 특정 태스크를 식별한다(320). 시퀀스 식별 데이터는 RNN 셀이 수행해야 하는 특정 태스크(예: 메모리 액세스 주소 예측)를 지정하는(예: 분기, 프로그램 명령어 또는 캐시 미스와 반대) 사용자 입력을 기반으로 할 수 있다. 또는 시퀀스 식별 데이터는 현재 입력에 대한 관측치를 기반으로 할 수 있다. 예를 들어, 시퀀스 식별 데이터는 현재 입력이 캐시 주소라는 관측치를 기반으로 할 수 있다. 이러한 상황에서 시퀀스 식별 데이터는 캐시 미스 예측 태스크에 해당하는 내부 상태를 RNN 셀에 로드하도록 지정할 수 있다.
회로는 식별된 태스크에 대응하는 상태 레지스터로부터 내부 상태 데이터를 획득한다(330). 회로는 획득된 내부 상태 데이터 및 현재 입력을 RNN 셀에 제공하여 RNN 셀이 획득된 내부 상태 데이터 및 현재 입력을 처리하여 식별된 태스크에 대한 신경망 출력 및 업데이트된 내부 상태 데이터를 생성하도록 한다(340).
회로는 RNN 셀로부터, 식별된 태스크에 대한 신경망 출력 및 업데이트된 내부 상태 데이터를 수신한다(350). 마지막으로, 회로는 업데이트된 내부 상태 데이터를 식별된 태스크에 해당하는 상태 레지스터에 기록한다(360).
도 1 및 조 2를 참조하여 설명된 예시적인 순환 신경망은 컴퓨팅 시스템에서 향후 메모리 액세스 주소를 예측하는 데 사용할 수 있다.
컴퓨터 프로그램은 컴퓨팅 시스템이 컴퓨팅 시스템의 다양한 메모리 위치에 저장된 데이터에서 작동하도록 한다. 일반적으로 컴퓨팅 시스템은 해당 데이터에서 작동하기 전에 주(메인) 메모리 또는 로컬 캐시에서 로컬 레지스터로 데이터를 로드해야한다. 그러나 주 메모리에서 데이터를 로드하는 것은 일반적으로 주 메모리가 크고 물리적으로 로컬 레지스터에서 멀리 떨어져 있기 때문에 특히 느리다. 따라서, 일상적으로 컴퓨팅 시스템이 주 메모리에서 데이터를 검색하도록 하는 컴퓨터 프로그램은 그렇지 않은 컴퓨터 프로그램보다 느리게 실행된다. 주 메모리에서 데이터를 프리-페칭하여 필요하기 전에 더 빠른 로컬 캐시에 저장함으로써 컴퓨팅 시스템은 컴퓨터 프로그램의 실행 시간을 줄일 수 있다. 순환 신경망은 프리-페칭해야 하는 데이터를 예측하는 데 사용될 수 있다.
도 4는 메모리로부터 데이터를 프리-페치하고 그 데이터를 로컬 캐시에 저장하도록 구성된 예시적인 컴퓨팅 시스템(400)의 도면이다. 컴퓨팅 시스템(400)은 도시되지 않은 하나 이상의 프로세서를 사용하여 컴퓨터 프로그램 명령어를 실행할 수 있다. 특히, 컴퓨팅 시스템(400)은 컴퓨터 프로그램 명령어를 명령어 메모리에 저장한 다음 컴퓨터 프로그램에 의해 정의된 순서대로 명령어를 실행할 수 있다.
컴퓨팅 시스템(400)은 프로그램 카운터(410)를 갖는다. 프로그램 카운터, 즉 명령어 주소 레지스터는 실행될 다음 컴퓨터 프로그램 명령어를 가리키는 값을 저장하는 레지스터이다. 즉, 프로그램 카운터(410)는 실행될 다음 컴퓨터 프로그램 명령어가 저장되는 메모리 주소를 저장한다.
명령어 사이클이 시작될 때, 컴퓨팅 시스템(400)은 프로그램 카운터(410)에 의해 지정된 주소로부터 다음 컴퓨터 프로그램 명령어를 검색한다. 프로그램 카운터(410)에 저장된 주소는 메모리(420)의 메모리 블록인 명령어 메모리(422)의 위치에 대응한다.
일반적으로 주어진 컴퓨터 프로그램 명령은 로드, 저장, 더하기, 빼기 또는 분기 등과 같은 동작, 하나 이상의 소스 레지스터 및 목적지 레지스터를 지정한다. 컴퓨팅 시스템(400)은 소스 레지스터에 저장된 데이터에 대해 지정된 동작을 수행하고 그 결과를 목적지 레지스터에 저장한다. 예를 들어, 컴퓨터 프로그램 명령어는 레지스터 A에 저장된 데이터를 레지스터 B에 저장된 데이터에 추가하고 결과를 레지스터 C에 저장해야한다고 지정할 수 있다.
일반적으로 컴퓨팅 시스템에는 제한된 수의 로컬 레지스터가 있으므로 작동 할 데이터는 필요할 때만 해당 로컬 레지스터에 로드된다. 그러나 메모리에서 데이터를 페치하는 것은 시간이 많이 걸리고 컴퓨터 프로그램 실행 속도가 느려진다. 이 문제에 대한 한 가지 해결책은 미래(향후)에 작동할 데이터를 예측하고, 해당 데이터를 프리-페칭하여 로컬 캐시(430)와 같은 더 빠른 로컬 메모리에 저장하는 것이다. 로컬 캐시는 일반적으로 주 메모리보다 시스템에 물리적으로 더 가깝고 주 메모리보다 작기 때문에 로컬 캐시에서 데이터를 페칭하는 것이 주 메모리에서 데이터를 페칭하는 것보다 빠르다.
그러나 로컬 캐시도 크기가 제한되어 있기 때문에 컴퓨팅 시스템은 주어진 시간에 로컬 캐시에 주 메모리의 일부만 저장할 수 있다. 결과적으로, 컴퓨팅 시스템(400)은 유리하게는 미래의 메모리 액세스 주소의 서브세트를 예측하고 그 주소로부터의 데이터를 로컬 캐시에 저장할 수 있다. 컴퓨팅 시스템이 정확한 예측을 하면 컴퓨팅 시스템은 컴퓨터 프로그램 명령어를 더 빠르게 실행할 수 있다.
컴퓨팅 시스템(400)의 예측 서브시스템(440)은 이전 프로그램 카운터 주소 및 대응하는 메모리 액세스 주소의 시퀀스를 수신하고 미래의 메모리 액세스 주소를 예측하도록 구성된다. 예측 서브시스템(40)은 신경망 서브시스템(442)을 포함한다. 신경망 서브시스템(442)은 도 2를 참조하여 설명된 순환 신경망 시스템일 수 있다. 신경망 서브시스템(442)은 도 2를 참조하여 설명된 컴포넌트들에 더하여, 다수의 메모리 영역들 중에서 각각의 메모리 액세스의 특정 메모리 영역을 결정하도록 구성된 메모리 영역 분류기(444)를 포함한다. 메모리 영역별로 메모리 액세스를 분리하면 단일 메모리 영역 내의 메모리 액세스가 일반적으로 둘 이상의 메모리 영역에 걸친 메모리 액세스보다 더 예측 가능한 패턴을 따르기 때문에 메모리 액세스 예측을 향상시킬 수 있다. 메모리를 영역으로 분할하는 것의 중요성에 대해서는 도 5를 참조하여 더 자세히 설명한다.
예측 서브시스템(440)은 컴퓨터 프로그램이 실행되는 동일한 컴퓨터에서 구현될 수 있거나, 다른 컴퓨터에서 구현될 수 있다.
예측 서브시스템(440)이 특정 메모리 액세스 주소를 예측한 후, 컴퓨팅 시스템(400)은 그 주소로부터 데이터를 프리-페칭하고 이를 로컬 캐시(430)에 저장한다. 예측 서브시스템(440)은 컴퓨터 프로그램이 실행됨에 따라 메모리 액세스 주소를 계속 예측하고 컴퓨팅 시스템(400)은 해당 주소로부터 데이터를 계속 프리-페치(프리-페칭)한다. 데이터 메모리(424)로부터 데이터를 페치하는 것보다 로컬 캐시(430)로부터 데이터를 페치하는 것이 더 빠르다. 이는 컴퓨팅 시스템(400)에 의한 컴퓨터 프로그램의 더 빠른 실행을 초래한다.
본 명세서는 주로 데이터 프리 페칭을 설명하지만, 여기에 설명된 순환 신경망 시스템은 마이크로프로세서에서 다른 시계열 예측을 수행하도록 구성될 수 있다. 예를 들어, 시스템을 사용하여 명령어 메모리에서 명령어를 프리-페치할 수 있다.
상기 시스템은 메모리 명확성(disambiguation)을 최적화하는 데 사용될 수도 있다. 메모리 명확성은 메모리 액세스 명령어를 순서없이 실행하는 컴퓨팅 시스템에서 사용하는 일련의 기술이다. 이 기술은 메모리 동작들 간의 종속성을 감지하거나 예측하여 메모리 액세스 효율성과 속도를 높인다. 여기에 설명된 순환 신경망 시스템은 또한 캐시 교체 정책을 최적화하는 데 사용될 수 있다. 캐시의 크기가 제한되어 있기 때문에 컴퓨팅 시스템이 데이터를 캐시에 배치하면 일반적으로 캐시에서 해당하는 양의 데이터를 제거해야 한다. 순환 신경망 시스템은 캐시에서 제거하기 위해 가까운 장래에 컴퓨팅 시스템에서 사용할 가능성이 가장 적은 데이터와 같은 최상의(베스트) 데이터를 예측할 수 있다. 또는 순환 신경망 시스템은 가까운 미래에 가장 많이 사용될 데이터를 예측하고 데이터가 캐시에 남아 있는지 확인할 수 있다. 예를 들면, "가장 최근에 사용된" 캐시, 즉 캐시에서 가장 최근에 사용된 데이터를 새 데이터를 위해 제거하도록 지정하는 대체 정책이 있는 캐시에서, 시스템은 가까운 장래에 사용될 것으로 예상되는 데이터에 대해 "age bit(에이지 비트)"를 업데이트 할 수 있다. 에이지 비트를 업데이트하면 상기 데이터가 새로운 데이터로 대체되지 않는다.
도 5는 컴퓨팅 시스템에서 실행되는 컴퓨터 프로그램의 미래의 메모리 액세스 주소를 예측하기 위한 예시적인 프로세스(500)의 흐름도이다. 도 2를 참조하여 설명된 순환 신경망 시스템은 예시적인 프로세스(500)를 수행할 수 있다. 대안적으로, 프로세스(500)는 소프트웨어로 구현될 수 있다. 편의상, 프로세스(500)는 하나 이상의 위치에 있는 하나 이상의 컴퓨터의 적절하게 프로그래밍된 시스템에 의해 수행되는 것으로 설명될 것이다.
시스템은 여러 메모리 영역에서 컴퓨터 프로그램의 메모리 액세스 주소를 예측하도록 훈련된 순환 신경망에 대해, 여러 메모리 영역 각각에 대한 별도의 내부 상태를 지정하는 데이터를 유지한다(510).
시스템은 컴퓨터 프로그램의 이전 메모리 액세스 주소의 시퀀스를 정의하는 입력 시퀀스에서 현재 입력을 수신한다(520). 입력 시퀀스는 이전 프로그램 카운터 주소 및 해당 델타 값의 시퀀스일 수 있다. 각각의 델타 값은 각각의 제1 메모리 액세스 주소와 각각의 제2 메모리 액세스 주소 간의 차이를 정의한다. 제1 메모리 액세스 주소는 해당 프로그램 카운터 주소가 가리키는 명령어가 실행될 때 액세스된 메모리 주소이다. 예를 들어, 특정 프로그램 카운터 주소는 실행될 때 메모리에서 데이터를 페칭하는 명령어를 저장하는 메모리 주소를 가리킬 수 있다. 이 경우 해당 데이터의 메모리 주소가 제1 메모리 액세스 주소이다. 제2 메모리 액세스 주소는 제1 메모리 주소에 액세스하기 전에 액세스한 메모리 주소이다. 각각의 이전 메모리 액세스 주소는 컴퓨팅 시스템의 주 메모리에 있는 여러 메모리 영역 중 하나에 있는 주소이다. 시스템은 메모리가 액세스하는 메모리 페이지를 식별하여 메모리 영역을 결정할 수 있다. 대안적으로, 시스템은 클러스터링 알고리즘, 예를 들어 k-평균 클러스터링 알고리즘을 메모리 액세스에 적용함으로써 메모리 영역을 결정할 수 있다.
일부 구현에서, 시스템은 현재 입력의 입력 표현을 생성한다. 예를 들어, 현재 입력이 프로그램 카운터 주소와 델타 값인 구현에서, 시스템은 프로그램 카운터 주소와 델타 값을 입력 표현으로 사용되는 고차원 공간(high dimensional space)의 숫자 임베딩(NE: numeric embedding)(임베딩)에 매핑할 수 있다. NE는 고차원 실수 값 벡터이다.
시스템은 훈련된 신경망에서 생성된 룩업 테이블을 사용하여 상기 임베딩을 생성할 수 있다. 예를 들어, 프로그램 카운터 주소와 델타 값 쌍을 인덱스에 매핑 할 수 있으며, 인덱스를 사용하여 룩업 테이블에서 상기 임베딩을 조회할 수 있다. 또는 시스템은 훈련된 신경망에 직접 프로그램 카운터 주소와 델타 값을 제공하여 상기 임베딩을 생성할 수 있다.
시스템은 입력 시퀀스에서 현재 입력에 의해 정의된 메모리 액세스 주소의 특정 메모리 영역을 식별한다(530).
시스템은 유지된 데이터에 지정된 내부 상태들 중에서 특정 메모리 영역에 대한 내부 상태를 선택한다(540).
시스템은 특정 메모리 영역에 대해 선택된 내부 상태에 따라, 순환 신경망을 사용하여 입력 시퀀스의 현재 입력을 처리하여 출력을 생성하고 선택된 내부 상태를 업데이트한다(550). 출력은 예측된 메모리 액세스 주소의 확률 분포를 정의한다. 예측된 메모리 액세스 주소는 특정 메모리 영역에 있는 컴퓨터 프로그램의 미래 메모리 액세스 주소이다.
시스템은 임계치 기준을 설정하고 분포의 확률들이 해당 임계치 기준을 충족하는지 결정할 수 있다. 예를 들어, 임계치 기준은 0.5의 확률, 즉 특정 메모리 주소가 미래의 메모리 액세스 주소가 될 확률(즉 컴퓨터 프로그램이 컴퓨팅 시스템으로 하여금 메모리 주소의 데이터에 액세스하게 할 확률)이 50%일 수 있다. 시스템은 임계치 기준을 동적으로 조정할 수 있다. 예를 들어, 시스템은 메모리 대역폭 사용률이 높을 때 더 높은 임계치를 설정하고, 메모리 대역폭 사용률이 낮으면 더 낮은 임계치를 설정할 수 있다.
확률 분포의 특정 확률이 임계치 기준을 충족한다는 결정에 대한 응답으로, 시스템은 해당 확률과 연관된 메모리 주소에서 데이터를 페치(페칭)하여 해당 데이터를 로컬 캐시에 저장할 수 있다. 일부 경우에, 시스템은 다중 확률들이 임계치 기준을 충족한다고 결정하고, 이러한 확률들과 연관된 다중 메모리 주소들로부터 데이터를 프리-페치할 수 있다. 이렇게 하면 올바른 데이터를 프리-페칭할 가능성이 높아진다. 이는 컴퓨팅 시스템에서 실행되는 컴퓨터 프로그램의 실행 시간을 줄인다.
시스템은 일반적으로 식별된 메모리 영역에서 다음 메모리 액세스 주소를 예측하도록 구성된다. 그러나 미래에 더 먼(farther) 메모리 액세스 주소를 예측하도록 순환 신경망을 훈련시키는 것은 가능한다. 예를 들면, 순환 신경망은 식별된 메모리 영역에서 제2(두번째)에서 다음(second-to-next)(N + 2), 제4(네 번째)에서 다음(N + 4) 또는 제8에서 다음(N + 8) 메모리 액세스 주소를 예측하도록 훈련될 수 있다. 순환 신경망은 예를 들어, 순차적인 메모리 액세스 주소와는 반대로, 시간 단계(N)에서 메모리 액세스 주소를 사용하고, 시간 단계(N-2)에서 메모리 액세스 주소를 사용하여 각각 계산되는 델타 값들을 순환 신경망에 제공함으로써 제2에서 다음(second-to-next) 메모리 액세스 주소를 예측하도록 훈련될 수 있다.
일부 구현에서, 전술한 바와 같이 데이터를 프리-페치하는 대신, 시스템은 컴퓨터 프로그램에 페치 명령어를 삽입할 수 있다. 페치 명령어를 실행하면 임계치 기준을 충족하는 확률과 연관된 미래 메모리 주소에서 데이터가 페치된다. 페치 명령어는, 메모리에서 데이터를 페치하는 컴퓨터 프로그램의 미래(향후) 명령어 이전에 컴퓨터 프로그램에 삽입되어야 한다. 이런 방식으로, 미래 명령어가 실행될 때 미래 명령어에 필요한 데이터는 이미 로컬 캐시에 있을 것이다. 미래 명령어를 실행하면 캐시 미스 대신 캐시 히트(cache hit)가 발생하며 시스템은 메모리에서 데이터를 페치할 필요가 없다. 메모리에서 데이터를 페치하는 것이 시간 집약적(time-intensive)이기 때문에 컴퓨터 프로그램이 더 빠르게 실행된다. 시스템은 둘 이상의 확률이 임계치 기준을 충족하는 경우 컴퓨터 프로그램에 둘 이상의 페치 명령어를 삽입할 수 있다.
일부 구현에서, 시스템은 순환 신경망에 추가 기능을 제공한다. 예를 들어, 시스템은 가장 최근의 메모리 액세스가 로드인지 저장소인지 여부를 표시할 수 있다. 시스템은 또한 현재 캐시 점유률을 순환 신경망에 제공할 수 있다. 현재 캐시 점유율은 위에서 설명한 대로 임계치 기준에 영향을 줄 수 있다.
마지막으로, 시스템은 업데이트된 선택된 내부 상태를 상기 유지된 데이터의 특정 메모리 영역과 연관시킨다(560).
본 명세서에 기술된 요지 및 기능적 동작의 실시 예는 본 명세서 및 그 구조적 등가물에 개시된 구조를 포함하는, 디지털 전자 회로, 유형적으로 구현된 컴퓨터 소프트웨어 또는 펌웨어, 컴퓨터 하드웨어에서 구현될 수 있거나, 또는 이들 중 하나 이상의 조합으로 구현될 수 있다. 본 명세서에 설명된 요지의 실시 예는 하나 이상의 컴퓨터 프로그램, 즉, 데이터 처리 장치에 의해 실행되거나 데이터 처리 장치의 동작을 제어하기 위해 유형의 비-일시적 프로그램 캐리어에 인코딩된 컴퓨터 프로그램 명령어의 하나 이상의 모듈로서 구현될 수 있다. 대안적으로 또는 추가로, 프로그램 명령어는 인공적으로 생성된 전파 신호, 예를 들어 데이터 처리 장치에 의한 실행을 위해 적절한 수신기 장치로의 전송을 위해 정보를 인코딩하도록 생성되는 기계 생성 전기, 광학 또는 전자기 신호에 인코딩될 수 있다. 컴퓨터 저장 매체는 기계 판독 가능 저장 장치, 기계 판독 가능 저장 기판, 랜덤 또는 직렬 액세스 메모리 장치, 또는 이들 중 하나 이상의 조합일 수 있다.
용어 "데이터 처리 장치"는 데이터 처리 하드웨어를 지칭하며, 예를 들어 프로그램 가능한 프로세서 또는 다중 프로세서를 포함하여 데이터를 처리하기 위한 모든 종류의 장치, 장치 및 기계를 포함한다. 장치는 또한 기성품 또는 맞춤형 병렬 처리 서브시스템, 예를 들어 GPU 또는 다른 종류의 특수 목적 처리 서브시스템 일 수 있거나 더 포함할 수 있다. 장치는 또한 특수 목적 논리 회로, 예를 들어 FPGA(field programmable gate array) 또는 ASIC(application-specific integrated circuit)이거나 이를 더 포함할 수 있다. 장치는 선택적으로 하드웨어에 추가하여 컴퓨터 프로그램에 대한 실행 환경을 생성하는 코드, 예를 들어 프로세서 펌웨어, 프로토콜 스택, 운영 체제 또는 이들 중 하나 이상의 조합을 구성하는 코드를 포함할 수 있다.
프로그램, 소프트웨어, 소프트웨어 애플리케이션, 모듈, 소프트웨어 모듈, 스크립트 또는 코드로 지칭되거나 기술될 수 있는 컴퓨터 프로그램은 컴파일 또는 해석 언어, 선언적 또는 절차적 언어를 포함한 모든 형태의 프로그래밍 언어로 작성될 수 있으며, 이는 독립 실행형 프로그램 또는 컴퓨팅 환경에서 사용하기에 적합한 모듈, 컴포넌트, 서브루틴 또는 기타 장치를 포함하여 모든 형태로 배포될 수 있다. 컴퓨터 프로그램은 파일 시스템의 파일에 해당할 수 있지만 반드시 그런 것은 아니다. 프로그램은 다른 프로그램이나 데이터를 보유하는 파일의 일부에 저장될 수 있으며, 예를 들어 하나 이상의 스크립트는 마크업 언어 문서, 해당 프로그램 전용 단일 파일 또는 여러 개의 조정 파일(예: 하나 이상의 모듈, 서브프로그램 또는 코드 일부를 저장하는 파일에 저장된다. 컴퓨터 프로그램은 하나의 컴퓨터 또는 한 사이트에 위치하거나 여러 사이트에 분산되어 있고 통신 네트워크로 상호 연결된 여러 컴퓨터에서 실행되도록 배포할 수 있다.
본 명세서에서 사용되는 "엔진" 또는 "소프트웨어 엔진"은 입력과 다른 출력을 제공하는 소프트웨어 구현 입력/출력 시스템을 의미한다. 엔진은 라이브러리, 플랫폼, 소프트웨어 개발 키트("SDK") 또는 객체와 같은 인코딩된 기능 블록 일 수 있다. 각 엔진은 서버, 휴대폰, 태블릿 컴퓨터, 노트북 컴퓨터, 음악 플레이어, 전자 책 리더, 노트북 또는 데스크톱 컴퓨터, PDA, 스마트 폰 또는 기타 고정 또는 휴대용 장치와 같은, 하나 이상의 프로세서 및 컴퓨터 판독 가능 매체를 포함하는 적절한 유형의 컴퓨팅 장치에서 구현될 수 있다. 추가로, 둘 이상의 엔진은 동일한 컴퓨팅 장치 또는 다른 컴퓨팅 장치에서 구현될 수 있다.
본 명세서에 기술된 프로세스 및 논리 흐름은 입력 데이터를 조작하고 출력을 생성함으로써 기능을 수행하기 위해 하나 이상의 컴퓨터 프로그램을 실행하는 하나 이상의 프로그램 가능한 컴퓨터에 의해 수행될 수 있다. 프로세스 및 로직 흐름은 또한 FPGA 또는 ASIC와 같은 특수 목적 논리 회로, 또는 특수 목적 논리 회로와 하나 이상의 프로그래밍된 컴퓨터의 조합에 의해 수행될 수도 있다.
컴퓨터 프로그램의 실행에 적합한 컴퓨터는 예를 들어 일반 또는 특수 목적의 마이크로 프로세서 또는 둘 다를 포함하거나 다른 종류의 중앙 처리 장치를 포함한다. 일반적으로, 중앙 처리 장치는 판독 전용 메모리 또는 랜덤 액세스 메모리 또는 둘 다로부터 명령 및 데이터를 수신할 것이다. 컴퓨터의 필수 요소는 명령(명령어)을 수행 또는 실행하기 위한 중앙 처리 장치 및 명령 및 데이터를 저장하기 위한 하나 이상의 메모리 장치이다. 일반적으로, 컴퓨터는 또한 데이터를 저장하기 위한 하나 이상의 대용량 저장 장치, 예를 들어 자기, 광 자기 디스크 또는 광 디스크를 포함하거나 이들로부터 데이터를 송수신하도록 작동 가능하게 결합된다. 그러나 컴퓨터에는 이러한 장치가 필요하지 않다. 또한 컴퓨터는 휴대 전화기, PDA(Personal Digital Assistant), 모바일 오디오 또는 비디오 플레이어, 게임 콘솔, GPS(Global Positioning System) 수신기 또는 휴대용 저장 장치(예를 들어 범용 직렬 버스(USB) 플래시 드라이브)와 같은 다른 장치에 내장될 수 있다.
컴퓨터 프로그램 명령어 및 데이터를 저장하기에 적합한 컴퓨터 판독 가능 매체는 예를 들어 EPROM, EEPROM 및 플래시 메모리 장치와 같은 반도체 메모리 장치, 자기 디스크(예를 들어 내부 하드 디스크 또는 이동식 디스크); 광 자기 디스크; 및 CD-ROM 및 DVD-ROM 디스크를 포함하는 모든 형태의 비 휘발성 메모리, 매체 및 메모리 장치를 포함한다. 프로세서 및 메모리는 특수 목적 논리 회로에 의해 보완되거나 통합될 수 있다.
사용자와의 상호 작용을 제공하기 위해, 본 명세서에서 설명하는 요지의 실시 예는 사용자에게 정보를 표시하기 위한 LCD(액정 디스플레이) 모니터와 같은 디스플레이 장치와 사용자가 컴퓨터에 입력을 제공할 수 있는 키보드 및 포인팅 장치(예: 마우스 또는 트랙볼)가 있는 컴퓨터에서 구현될 수 있다. 사용자와의 상호 작용을 제공하기 위해 다른 종류의 장치가 사용될 수도 있으며, 예를 들어, 사용자에게 제공되는 피드백은 시각적 피드백, 청각적 피드백 또는 촉각적 피드백과 같은 모든 형태의 감각 피드백일 수 있으며; 사용자의 입력은 음향, 음성 또는 촉각 입력을 포함한 모든 형태로 수신될 수 있다. 또한, 컴퓨터는 사용자가 사용하는 장치로 문서를 전송하고 그 장치에서 문서를 수신함으로써, 예를 들어 웹 브라우저에서 수신한 요청에 대한 응답으로 사용자 기기의 웹 브라우저로 웹 페이지를 전송함으로써 사용자와 상호 작용할 수 있다. 또한, 컴퓨터는 문자 메시지 또는 기타 형태의 메시지를 개인 장치(예: 스마트 폰)에 전송하고, 메시징 애플리케이션을 실행하고, 사용자로부터 응답 메시지를 수신함으로써 사용자와 상호 작용할 수 있다.
본 명세서는 많은 특정 구현 세부 사항을 포함하지만, 이들은 청구될 수 있는 범위에 대한 제한으로 해석되어서는 안되며, 특정 실시 예에 특정될 수 있는 특징의 설명으로 해석되어야 한다. 별도의 실시 예들과 관련하여 본 명세서에서 설명된 특정 특징들은 또한 단일 실시 예에서 조합하여 구현될 수 있다. 반대로, 단일 실시 예와 관련하여 설명된 다양한 특징들은 또한 다수의 실시 예에서 개별적으로 또는 임의의 적절한 하위조합으로 구현될 수 있다. 더욱이, 특징들이 특정 조합으로 작용하는 것으로 설명되고 심지어 초기에 그렇게 청구될 수 있지만, 청구된 조합으로부터의 하나 이상의 특징은 일부 경우에 조합에서 제외될 수 있고, 청구된 조합은 하위 조합 또는 하위 조합의 변형에 관한 것일 수 있다.
마찬가지로 동작은 특정 순서로 도면에 표시되지만, 이는 바람직한 결과를 달성하기 위해 그러한 동작이 도시된 특정 순서 또는 순차적인 순서로 수행되거나 모든 예시된 동작이 수행될 것을 요구하는 것으로 이해되어서는 안된다. 특정 상황에서, 멀티 태스킹 및 병렬 처리가 유리할 수 있다. 위에서 설명된 실시 예에서 다양한 시스템 모듈 및 컴포넌트의 분리는 모든 실시 예에서 그러한 분리를 요구하는 것으로 이해되어서는 안되며, 설명된 프로그램 컴포넌트 및 시스템은 일반적으로 단일 소프트웨어 제품으로 함께 통합되거나 여러 소프트웨어 제품으로 패키지화될 수 있음을 이해해야 한다.
요지의 특정 실시 예가 설명되었다. 다른 실시 예는 다음의 청구 범위의 범위 내에 있다. 예를 들어, 청구 범위에 기재된 동작은 다른 순서로 수행될 수 있으며 여전히 바람직한 결과를 달성할 수 있다. 일례로서, 첨부 도면에 도시된 프로세스는 바람직한 결과를 달성하기 위해 도시된 특정 순서 또는 순차적 순서를 반드시 요구할 필요는 없다. 어떤 경우에는 멀티 태스킹 및 병렬 처리가 유리할 수 있다.

Claims (20)

  1. 방법으로서,
    순환 신경망(RNN)에서 현재 입력을 수신하는 단계;
    상기 현재 입력의 특징 표현을 생성하는 단계;
    상기 RNN의 RNN 셀에 상기 특징 표현을 제공하는 단계;
    복수의 상태 레지스터들로부터, 시퀀스 식별 데이터에 기초하여 상기 RNN이 사용하는 특정 내부 상태를 선택하는 단계; 그리고
    상기 특징 표현, 상기 특정 내부 상태 및 고정된 가중치 세트를 사용하여, 상기 RNN이 수행할 특정 태스크에 대한 상기 RNN의 예측 및 다음 상태를 생성하는 단계를 포함하는, 방법.
  2. 제1항에 있어서, 상기 복수의 상태 레지스터들 중 각각의 상태 레지스터는 상기 RNN의 서로 다른 내부 상태를 지정하는 데이터를 저장하는, 방법.
  3. 제2항에 있어서, 각각의 내부 상태는 상기 RNN이 수행하도록 훈련된 각각의 다른 태스크에 대응하는, 방법.
  4. 제3항에 있어서, 상기 RNN이 수행하도록 훈련된 제1 태스크는 메모리 액세스 주소를 예측하는 것을 포함하는, 방법.
  5. 제3항에 있어서, 상기 RNN이 수행하도록 훈련된 제1 태스크는 미래 프로그램 명령어 또는 캐시 미스(cache miss)를 예측하는 것을 포함하는, 방법.
  6. 제1항에 있어서, 상기 시퀀스 식별 데이터는 상태 레지스터를 지정하는, 방법.
  7. 제1항에 있어서, 상기 시퀀스 식별 데이터는 상기 RNN 셀이 수행해야 하는 특정 태스크를 지정하는 사용자 입력에 기초하는, 방법.
  8. 제1항에 있어서, 상기 시퀀스 식별 데이터는 상기 현재 입력에 대한 관측치에 기초하는, 방법.
  9. 제8항에 있어서, 상기 관측치는 상기 현재 입력이 캐시 주소라는 식별을 포함하는, 방법.
  10. 제1항에 있어서, 상기 방법은,
    상기 RNN의 다른 RNN 셀에 상기 예측을 제공하는 단계를 포함하는, 방법.
  11. 제1항에 있어서, 상기 방법은,
    상기 RNN 셀의 레지스터의 이전 상태를 덮어쓰는(overwriting) 단계를 포함하는, 방법.
  12. 하나 이상의 컴퓨터 그리고 상기 하나 이상의 컴퓨터에 의해 실행될 때 상기 하나 이상의 컴퓨터로 하여금 동작 세트를 수행하게 하는 명령어를 저장하는 하나 이상의 저장 장치를 포함하는 시스템으로서, 상기 동작 세트는,
    순환 신경망(RNN)에서 현재 입력을 수신하는 동작;
    상기 현재 입력의 특징 표현을 생성하는 동작;
    상기 RNN의 RNN 셀에 상기 특징 표현을 제공하는 동작;
    복수의 상태 레지스터들로부터, 시퀀스 식별 데이터에 기초하여 상기 RNN이 사용하는 특정 내부 상태를 선택하는 동작; 그리고
    상기 특징 표현, 상기 특정 내부 상태 및 고정된 가중치 세트를 사용하여, 상기 RNN이 수행할 특정 태스크에 대한 상기 RNN의 예측 및 다음 상태를 생성하는 동작을 포함하는, 시스템.
  13. 제12항에 있어서, 상기 복수의 상태 레지스터들 중 각각의 상태 레지스터는 상기 RNN의 서로 다른 내부 상태를 지정하는 데이터를 저장하는, 시스템.
  14. 제13항에 있어서, 각각의 내부 상태는 상기 RNN이 수행하도록 훈련된 각각의 다른 태스크에 대응하는, 시스템.
  15. 제14항에 있어서, 상기 RNN이 수행하도록 훈련된 제1 태스크는 메모리 액세스 주소를 예측하는 것을 포함하는, 시스템.
  16. 제14항에 있어서, 상기 RNN이 수행하도록 훈련된 제1 태스크는 미래 프로그램 명령어 또는 캐시 미스(cache miss)를 예측하는 것을 포함하는, 시스템.
  17. 제12항에 있어서, 상기 시퀀스 식별 데이터는 상태 레지스터를 지정하는, 시스템.
  18. 제12항에 있어서, 상기 시퀀스 식별 데이터는 상기 RNN 셀이 수행해야 하는 특정 태스크를 지정하는 사용자 입력에 기초하는, 시스템.
  19. 제12항에 있어서, 상기 시퀀스 식별 데이터는 상기 현재 입력에 대한 관측치에 기초하는, 시스템.
  20. 제19항에 있어서, 상기 관측치는 상기 현재 입력이 캐시 주소라는 식별을 포함하는, 시스템.
KR1020247001245A 2018-11-19 2019-11-15 다중-태스크 순환 신경망 KR20240010548A (ko)

Applications Claiming Priority (6)

Application Number Priority Date Filing Date Title
US201862769512P 2018-11-19 2018-11-19
US62/769,512 2018-11-19
US16/262,785 2019-01-30
US16/262,785 US11416733B2 (en) 2018-11-19 2019-01-30 Multi-task recurrent neural networks
PCT/US2019/061780 WO2020106581A1 (en) 2018-11-19 2019-11-15 Multi-task recurrent neural networks
KR1020207028824A KR102625762B1 (ko) 2018-11-19 2019-11-15 다중-태스크 순환 신경망

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
KR1020207028824A Division KR102625762B1 (ko) 2018-11-19 2019-11-15 다중-태스크 순환 신경망

Publications (1)

Publication Number Publication Date
KR20240010548A true KR20240010548A (ko) 2024-01-23

Family

ID=70726431

Family Applications (2)

Application Number Title Priority Date Filing Date
KR1020247001245A KR20240010548A (ko) 2018-11-19 2019-11-15 다중-태스크 순환 신경망
KR1020207028824A KR102625762B1 (ko) 2018-11-19 2019-11-15 다중-태스크 순환 신경망

Family Applications After (1)

Application Number Title Priority Date Filing Date
KR1020207028824A KR102625762B1 (ko) 2018-11-19 2019-11-15 다중-태스크 순환 신경망

Country Status (10)

Country Link
US (2) US11416733B2 (ko)
EP (1) EP3884391A1 (ko)
JP (3) JP7057437B2 (ko)
KR (2) KR20240010548A (ko)
CN (2) CN118170695A (ko)
BR (1) BR112020020110A2 (ko)
CA (1) CA3095205C (ko)
SG (1) SG11202009486PA (ko)
TW (2) TW202341009A (ko)
WO (1) WO2020106581A1 (ko)

Families Citing this family (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11494597B2 (en) * 2019-03-22 2022-11-08 Sri International Generative memory for lifelong machine learning
US11568246B2 (en) 2019-05-09 2023-01-31 Sri International Synthetic training examples from advice for training autonomous agents
US11586895B1 (en) * 2019-06-17 2023-02-21 Green Mountain Semiconductor, Inc. Recursive neural network using random access memory
US11868871B1 (en) * 2019-08-16 2024-01-09 Perceive Corporation Circuit for executing stateful neural network
JP7532934B2 (ja) 2020-06-15 2024-08-14 富士電機株式会社 機器、方法及びプログラム
TWI753630B (zh) * 2020-10-13 2022-01-21 財團法人工業技術研究院 基於神經網路的分類器及分類方法
CN112528664B (zh) * 2021-02-05 2021-04-27 湖南工商大学 基于多任务联合学习与地址层级结构知识的地址匹配方法
CN113705839B (zh) * 2021-09-13 2023-10-20 北京博瑞华通科技有限公司 一种燃料电池电堆的预测性维护方法以及维护系统
WO2023055462A1 (en) * 2021-09-30 2023-04-06 Micron Technology, Inc. Delta predictions for page scheduling
CN114268939B (zh) * 2021-11-12 2024-03-08 重庆市中冉数字科技有限公司 一种移动通信中异常用户识别的方法及智能设备
CN116208583A (zh) * 2023-01-16 2023-06-02 北京邮电大学 地址配置方法及相关设备
CN116431315B (zh) * 2023-06-07 2023-08-29 成都登临科技有限公司 批处理任务的处理方法、装置、电子设备及存储介质

Family Cites Families (34)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH10171653A (ja) * 1996-10-09 1998-06-26 Nkk Corp 情報処理装置の分岐予測方式及びそれを用いた装置
US9141390B2 (en) * 2001-03-05 2015-09-22 Pact Xpp Technologies Ag Method of processing data with an array of data processors according to application ID
US7664644B1 (en) 2006-06-09 2010-02-16 At&T Intellectual Property Ii, L.P. Multitask learning for spoken language understanding
US8938655B2 (en) 2007-12-20 2015-01-20 Spansion Llc Extending flash memory data retension via rewrite refresh
US8200593B2 (en) * 2009-07-20 2012-06-12 Corticaldb Inc Method for efficiently simulating the information processing in cells and tissues of the nervous system with a temporal series compressed encoding neural network
BR112012030903A2 (pt) * 2010-06-07 2019-09-24 Affectiva Inc método imnplantado por computador para analisar estados mentais, produto de programa de computador e sistema para analisar estados mentais
US8965819B2 (en) * 2010-08-16 2015-02-24 Oracle International Corporation System and method for effective caching using neural networks
US8683178B2 (en) 2011-01-21 2014-03-25 Apple Inc. Sharing a fault-status register when processing vector instructions
CN105264501B (zh) * 2013-06-19 2018-06-08 英派尔科技开发有限公司 定位多核处理器中的被高速缓存的数据的方法和装置
US9978014B2 (en) 2013-12-18 2018-05-22 Intel Corporation Reconfigurable processing unit
WO2015130928A1 (en) * 2014-02-26 2015-09-03 Nancy Packes, Inc. Real estate evaluating platform methods, apparatuses, and media
JP6444494B2 (ja) 2014-05-23 2018-12-26 データロボット, インコーポレイテッド 予測データ分析のためのシステムおよび技術
TWI655587B (zh) 2015-01-22 2019-04-01 美商前進公司 神經網路及神經網路訓練的方法
WO2017015390A1 (en) 2015-07-20 2017-01-26 University Of Maryland, College Park Deep multi-task learning framework for face detection, landmark localization, pose estimation, and gender recognition
US9652712B2 (en) 2015-07-27 2017-05-16 Google Inc. Analyzing health events using recurrent neural networks
US9336482B1 (en) 2015-07-27 2016-05-10 Google Inc. Predicting likelihoods of conditions being satisfied using recurrent neural networks
US9607616B2 (en) 2015-08-17 2017-03-28 Mitsubishi Electric Research Laboratories, Inc. Method for using a multi-scale recurrent neural network with pretraining for spoken language understanding tasks
US10546650B2 (en) * 2015-10-23 2020-01-28 Google Llc Neural network for processing aptamer data
EP3360081A1 (en) * 2015-11-12 2018-08-15 Google LLC Convolutional gated recurrent neural networks
US10410113B2 (en) 2016-01-14 2019-09-10 Preferred Networks, Inc. Time series data adaptation and sensor fusion systems, methods, and apparatus
CN108780521B (zh) 2016-02-04 2023-05-26 渊慧科技有限公司 关联长短期记忆神经网络层
EP3398117B1 (en) 2016-02-05 2023-12-20 Deepmind Technologies Limited Augmenting neural networks with external memory
US11783173B2 (en) 2016-06-23 2023-10-10 Microsoft Technology Licensing, Llc Multi-domain joint semantic frame parsing
US10154051B2 (en) * 2016-08-31 2018-12-11 Cisco Technology, Inc. Automatic detection of network threats based on modeling sequential behavior in network traffic
TWI612488B (zh) 2016-12-05 2018-01-21 財團法人資訊工業策進會 用於預測商品的市場需求的計算機裝置與方法
US10878314B2 (en) * 2017-03-09 2020-12-29 Alphaics Corporation System and method for training artificial intelligence systems using a SIMA based processor
US11250311B2 (en) * 2017-03-15 2022-02-15 Salesforce.Com, Inc. Deep neural network-based decision network
EP3563302A1 (en) * 2017-04-20 2019-11-06 Google LLC Processing sequential data using recurrent neural networks
US10417266B2 (en) 2017-05-09 2019-09-17 Apple Inc. Context-aware ranking of intelligent response suggestions
US10733380B2 (en) 2017-05-15 2020-08-04 Thomson Reuters Enterprise Center Gmbh Neural paraphrase generator
CN108197701A (zh) 2018-02-05 2018-06-22 哈工大机器人(合肥)国际创新研究院 一种基于rnn的多任务学习方法
JP2019204335A (ja) 2018-05-24 2019-11-28 株式会社日立製作所 データ処理装置およびプリフェッチ方法
US20190370632A1 (en) * 2018-05-31 2019-12-05 Google Llc Computer system prediction machine learning models
US20200193268A1 (en) * 2018-12-14 2020-06-18 Advanced Micro Devices, Inc. Multi-instance recurrent neural network prediction

Also Published As

Publication number Publication date
KR20200127028A (ko) 2020-11-09
CA3095205C (en) 2023-05-02
CN112970006A (zh) 2021-06-15
WO2020106581A1 (en) 2020-05-28
CN118170695A (zh) 2024-06-11
TW202020746A (zh) 2020-06-01
JP2021525404A (ja) 2021-09-24
EP3884391A1 (en) 2021-09-29
US11416733B2 (en) 2022-08-16
JP7494242B2 (ja) 2024-06-03
JP2022109919A (ja) 2022-07-28
JP7057437B2 (ja) 2022-04-19
CA3095205A1 (en) 2020-05-28
US20230033000A1 (en) 2023-02-02
SG11202009486PA (en) 2020-10-29
US20200160150A1 (en) 2020-05-21
TW202341009A (zh) 2023-10-16
JP2024119850A (ja) 2024-09-03
BR112020020110A2 (pt) 2021-05-25
CN112970006B (zh) 2024-04-09
KR102625762B1 (ko) 2024-01-16
US12033056B2 (en) 2024-07-09
TWI808219B (zh) 2023-07-11

Similar Documents

Publication Publication Date Title
KR102625762B1 (ko) 다중-태스크 순환 신경망
US20190370632A1 (en) Computer system prediction machine learning models
EP3446260B1 (en) Memory-efficient backpropagation through time
CN109844776B (zh) 具有片上学习和随机时间步长控制的可编程神经元核心
CN112236784A (zh) 修改机器学习模型以改善局部性
CN109716364A (zh) 使用延迟因果更新的突触前学习
CN114286985A (zh) 用于预测内核调谐参数的方法和设备
WO2022040963A1 (en) Methods and apparatus to dynamically normalize data in neural networks
US11829764B2 (en) Address manipulation using indices and tags
WO2020146724A1 (en) Address manipulation using indices and tags
US11841799B2 (en) Graph neural network accelerator with attribute caching
WO2024087185A1 (en) Memory access adaptive self-attention mechanism for transformer model
KR20240148098A (ko) 태스크 관계를 파악하는 연속학습 기반의 사용자 표현을 위한 방법, 컴퓨터 장치, 및 컴퓨터 프로그램
CN115860059A (zh) 用于深度神经网络中的激活函数预测的设备、方法和计算机可读介质
CN118355364A (zh) 可变历史记录长度感知器分支预测器

Legal Events

Date Code Title Description
A107 Divisional application of patent