KR101959376B1 - 멀티 코어 최적화된 순환 신경망을 위한 시스템 및 방법 - Google Patents

멀티 코어 최적화된 순환 신경망을 위한 시스템 및 방법 Download PDF

Info

Publication number
KR101959376B1
KR101959376B1 KR1020160167747A KR20160167747A KR101959376B1 KR 101959376 B1 KR101959376 B1 KR 101959376B1 KR 1020160167747 A KR1020160167747 A KR 1020160167747A KR 20160167747 A KR20160167747 A KR 20160167747A KR 101959376 B1 KR101959376 B1 KR 101959376B1
Authority
KR
South Korea
Prior art keywords
rnn
module
modules
processor
layer
Prior art date
Application number
KR1020160167747A
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 바이두 유에스에이 엘엘씨
Application granted granted Critical
Publication of KR101959376B1 publication Critical patent/KR101959376B1/ko

Links

Images

Classifications

    • G06N3/0445
    • 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/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/06Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
    • G06N3/063Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/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/08Learning methods
    • G06N3/084Backpropagation, e.g. using gradient descent
    • 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/088Non-supervised learning, e.g. competitive learning

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Health & Medical Sciences (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Biomedical Technology (AREA)
  • Biophysics (AREA)
  • General Health & Medical Sciences (AREA)
  • General Physics & Mathematics (AREA)
  • Evolutionary Computation (AREA)
  • Computational Linguistics (AREA)
  • Molecular Biology (AREA)
  • Computing Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Data Mining & Analysis (AREA)
  • Mathematical Physics (AREA)
  • Software Systems (AREA)
  • Artificial Intelligence (AREA)
  • Neurology (AREA)
  • Multi Processors (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)
  • Computer And Data Communications (AREA)
  • Mobile Radio Communication Systems (AREA)

Abstract

본 발명은 멀티 코어 최적화된(multi-core optimized) 순환 신경망(RNN) 아키텍처를 위한 시스템 및 방법을 개신한다. 여러가지 아키텍처는 기정 프로세서의 멀티 벌크 동기화 병렬(MBSP) 모델로 통신 조작과 동기화 조작에 영향을 준다. MBSP-RNN으로 불리우는 네트워크 아키텍처 패밀리는, 동일한 수량의 파라미터를 갖는 통상적인 RNN과 유사하게 실행되지만, 현대 범용 프로세서에 매핑될 경우, 실질적으로 더 효율적이다. 연산 효율이 대폭적으로 향상됨으로 인해, 고정 컴퓨팅 예산에 있어서, MBSP-RNN은 예컨대 엔드 투 엔드(end-to-end)의 음성 인식과 같은 응용에서 RNN보다 우수하다.

Description

멀티 코어 최적화된 순환 신경망을 위한 시스템 및 방법{SYSTEMS AND METHODS FOR A MULTI-CORE OPTIMIZED RECURRENT NEURAL NETWORK}
본 발명은 컴퓨터 처리에 관한 것으로, 더 구체적으로는, 동기화 및 통신 코스트를 절감하여 연산 효율을 향상시키는 시스템, 기기 및 방법에 관한 것이다.
순환 신경망(RNN)은 인공 신경망의 일종으로서, 기정 시간 단계에서의 유닛 집합의 출력은 다음 시간 단계에서의 동일한 유닛의 입력에 공급됨으로써, 네트워크에 대해 시간에 따라 지속되는 기억의 개념을 부여한다. RNN의 연산 구조 자체는, 예를 들어 시계열 데이터(time series data)의 변환이 필요한 문제와 같은 복잡한 시퀀스-투-시퀀스(sequence-to-sequence) 매핑(mapping) 문제를 해결할 수 있는 네트워크를 생성하기에 적합하다. 음성 인식 어플리케이션에서 기록된 오디오 파형을 아날로그 도메인으로부터 상기 오디오 데이터의 텍스트 표현에 매핑시키는 변환이 예가 될 수 있다.
그러나, CMOS 기술과 RNN 아키텍처(architecture)의 작은 독립 조각(piece)으로 비교적 큰 타스크의 각 부분을 동시에 수행하는 병행성을 이용하는 능력에 의해 산술 연산의 처리량이 증가되고 있음에도 불구하고, 재래의 RNN에는 여전히 높은 동기화 코스트 및 통신 코스트와 같은 큰 단점이 있다.
구체적으로, 컴퓨터의 기본 물리적 한계로 인하여, RNN 뉴런의 올-투-올(all-to-all) 연결은 상대적으로 많은 양의 통신 대역폭을 요구한다. 또한, 일 시계열 중의 연속된 시간 단계에서 연산 유닛(뉴런)들 사이에 연결이 설정될 때마다, 반드시 비용이 많이 드는 동기화 조작을 실행해야 한다. RNN 내의 각각의 유닛은 모든 입력을 판독하고 모든 출력에 대해 기입함으로써, 상기 유닛들이 컴퓨터의 처리 유닛에 매핑될 경우, 데이터는 반드시 한정된 시간 내에 여러 컴퓨터들을 넘나들어야 한다. 그러나, 유닛들 사이의 이와 같은 통신은 연속된 시간 단계에서의 연결의 실행 속도를 늦추고, 데이터가 전송될 수 있는 시간 간격을 증가시킴으로써, 실제로 유닛 사이에서 이동되는 데이터의 수량에 상관없이 통신 지연이 발생하게 된다. 따라서, 한 뉴런의 출력으로부터 다른 한 뉴런의 입력으로의 통신 사이에 경과된 허용 기간을 증가시켜 기존의 지연 요구를 완화시킴으로써, 데이터 통신 단계 사이에 다수의 시간 단계들이 발생하도록 하는 것이 바람직하다.
이 외에, 동기화 조작에 의해 도입된 시간 제한 이슈와는 별도로, 기존의 RNN 아키텍처의 또 다른 제한성은, 개별적인 유닛들은 처음에 반드시 각 컴퓨터들을 넘나들면서 서로 통신을 진행해야 한다는 사실에서 발단되었다. 이러한 통신은 컴퓨터가 기정 시간 동안 인접한 뉴런들 사이에서 통신할 수 있는 데이터 총량의 최대치에 의해 제한을 받는다.
일반적인 디자인 접근방법은 주로, 예를 들어, 긴 시간척도(long timescales) 동안 데이터를 저장하는 능력 또는 다수의 시간척도에서 신호를 처리하는 능력과 같이 주로 RNN의 알고리즘적 속성을 개선하는데 주력한다. 이러한 접근방법은 보통 동기화 및 통신 코스트를 절감하는 방식으로 RNN의 연산 효율을 향상시키는 것에 대해 관심이 없다.
이에 따라, 바람직하게는, 간단하고 완전 연결된(fully-connected) RNN에 의해 제공된 정확한 시퀀스-투-시퀀스 변환을 이용함과 동시에, 현대 범용 프로세서에 매핑 시 연산 효율을 향상시키기 위해 RNN에 의해 실행되는 동기화 및 통신의 양을 저감함으로써, 최종적으로 성능을 향상시키도록 하는 방법 및 구조가 필요하다.
본 출원은 순환 신경망(RNN) 아키텍처를 컴퓨팅 기기의 프로세서의 마이크로 아키텍처(microarchitecture)에 매핑시킴으로써 상기 컴퓨팅 기기의 컴퓨팅 성능을 개선하는 방법, 순환 신경망 아키텍처 및 컴퓨팅 기기의 프로세서의 마이크로 아키텍처 상에서 RNN 아키텍처를 작동시켜, 상기 컴퓨팅 기기의 컴퓨팅 성능을 개선하는 방법을 제공하는데 그 목적이 있다.
제1 양태에 있어서, 순환 신경망(RNN) 아키텍처를 컴퓨팅 기기의 프로세서의 마이크로 아키텍처에 매핑시킴으로써 상기 컴퓨팅 기기의 컴퓨팅 성능을 개선하는 방법을 제공하고, 상기 방법은, 상기 프로세서의 마이크로 아키텍처의 설명에 기반하여, 메모리의 레벨에 연관된 값을 획득하는 단계; 및 상기 RNN 아키텍처의 계층 중의 최저 레벨로부터 최고 레벨에 있어서, 각각의 레벨은, 상기 프로세서의 마이크로 아키텍처에 연관되고, 메모리 용량, 프로세서 코어의 개수, 대역폭, 연산 대역폭 및 지연 중의 적어도 2 개에 의해 설명되는 단계; 뉴런을 모듈로 그루핑(grouping)하되, 각각의 모듈은 상기 RNN 아키텍처 내의 RNN층 중의 논리 유닛을 표시하는 단계; 및 상기 모듈이, 메모리 용량, 프로세서 코어의 개수, 대역폭, 연산 대역폭 및 지연 중의 적어도 2 개에 관련되는, 상기 RNN 아키텍처의 사전 정의된 조건을 만족시키도록 상기 모듈 사이의 연결을 배치하는 단계;를 포함한다.
제2 양태에 있어서, 컴퓨팅 프로세서 마이크로 아키텍처에서 작동하여 컴퓨팅 기기의 컴퓨팅 성능을 개선하도록 설계된 순환 신경망 아키텍처를 제공하고, 상기 순환 신경망 아키텍처는, 뉴런; 모델, 상기 뉴런을 포함하고, 논리 유닛을 표시하며, 상기 모듈은 프로세서를 포함한 개별적인 컴퓨팅 자원의 계층 구조를 시뮬레이션함으로써 계층 구조의 각 레벨이 프로세서 메모리의 적어도 하나의 레벨에 연관되고 제1 RNN층 및 제2 RNN층을 포함하도록, 프로세서 마이크로 아키텍처의 계층 구조의 레벨에 따라 배치되며, 상기 계층 구조의 각 레벨은 저장 용량, 프로세서 코어의 개수, 메모리 대역폭, 연산 대역폭 및 메모리 지연 중의 적어도 2 개에 의해 설명되며; 및 상기 RNN 아키텍처의 사전 정의된 조건을 만족시키도록 상기 제1 RNN층과 상기 제2 RNN층 사이에서 통신이 가능하도록 하는 모듈 간의 양방향 연결을 포함하되, 상기 RNN 아키텍처의 사전 정의된 조건은 저장 용량, 프로세서 코어의 개수, 대역폭, 연산 대역폭 및 지연 중의 적어도 2 개에 관련된다.
제3 양태에 있어서, 컴퓨팅 기기의 프로세서의 마이크로 아키텍처 상에서 RNN 아키텍처를 작동시켜, 상기 컴퓨팅 기기의 컴퓨팅 성능을 개선하는 방법을 제공하고, 상기 방법은, 프로세서의 마이크로 아키텍처의 설명을 바탕으로 하는 메모리 레벨에 연관된 값에 기반하여, RNN 아키텍처의 계층 구조의 최저 레벨로부터 최고 레벨에 있어서, 각각의 레벨은 상기 프로세서 마이크로 아키텍처에 연관되고, 저장 용량, 프로세서 코어의 개수, 대역폭, 연산 대역폭 및 지연 중의 적어도 2 개에 의해 설명되는 단계; 뉴런을 모듈로 그루핑하되, 각각의 모듈은 상기 RNN 아키텍처 내의 RNN층 중의 논리 유닛을 표시하는 단계; 및 상기 모듈이, 메모리 용량, 프로세서 코어의 개수, 대역폭, 연산 대역폭 및 지연 중의 적어도 2 개에 관련되는, 상기 RNN 아키텍처의 사전 정의된 조건을 만족시키도록 상기 모듈 사이의 연결을 배치하는 단계;를 포함한다.
본 개시의 실시예들을 참고로 하되, 이러한 실시예들의 예시들은 첨부된 도면에 도시될 수 있다. 첨부된 도면들은 오직 예시적인 것일 뿐, 본 발명을 한정하기 위한 것은 아니다. 본 발명은 이러한 실시예들에 관한 문맥에서 개략적으로 설명되나, 이러한 설명들은 본 개시의 범위를 이러한 구체적인 실시예들에 한정하기 위한 것이 아님을 이해하여야 한다. 도면 중의 항목들은 비율에 맞춰 도시된 것은 아니다.
도1은 본 개시의 다양한 실시예에 따른, RNN을 포함함으로써 연산 효율을 향상시키는 컴퓨팅 시스템의 간소화된 블록도를 나타낸다.
도2a는 일반적인, 완전 연결된 베이스 라인 RNN층 아키텍처를 나타낸다.
도2b는 일 시계열에서의 쾌속 모듈과 저속 모듈을 이용한 일반적인 RNN층 아키텍처 중의 모듈들 사이의 연결을 나타낸다.
도2c는 멀티 벌크 동기 병렬(MBSP, Multi-Bulk-Synchronous-Parallel) 머신 모델의 계층 중의 단일 레벨을 나타낸다.
도2d는 최저 레벨 계층의 MBSP 모듈의 예시이다.
도3a는 본 개시의 다양한 실시예에 따른, RNN의 계층 중의 제2 레벨 중의 2 개의 MBSP 모듈 사이의 상호 연결을 나타낸다.
도3b는 본 개시의 다양한 실시예에 따른, 예시적인 프로세서의 MBSP 머신 모델 계층을 나타낸다.
도3c는 본 개시의 다양한 실시예에 따른, 효율적인 RNN층 아키텍처를 형성하는 과정의 흐름도이다.
도3d는 본 개시의 다양한 실시예에 따른, RNN의 사전 정의된 조건을 평형시키기 위한 과정의 흐름도이다.
도4는 본 개시의 다양한 실시예에 따른, 특정된 프로세서에서 샐행되는 RNN 중의 모듈 계층 레벨의 개념을 나타낸다.
도5는 본 개시의 다양한 실시예에 따른, 쾌속 모듈과 저속 모듈로 나뉜 RNN를 나타낸다.
도6은 본 개시의 다양한 실시예에 따른, 연결의 병렬 프리픽스(prefix) 패턴을 나타낸다.
도7은 본 개시의 다양한 실시예에 따른, 글로벌 통신을 허용하는 동시에, 지연과 대역폭을 최소화시키는 다른 한 방법을 나타낸다.
이하에서 설명되는 세부 사항을 참조하여 본 개시의 각 실시예 및 양태에 대해 설명할 것이고, 첨부된 도면은 각 실시예들을 나타낼 것이다. 아래의 설명 및 도면들은 본 개시의 예시일 뿐, 본 발명을 한정하는 것으로 이해해서는 안된다. 본 개시의 각 실시예들에 대한 충분한 이해를 제공하기 위해 많은 구체적인 세부 사항들에 대해 설명하였다. 그러나, 특정 경우에 있어서, 본 발명에 대한 간결한 설명을 제공하기 위해, 공지된 또는 종래의 세부 사항들에 대해 설명하지 않았다.
본 명세서에서 “일 실시예(one embodiment)” 또는 “실시예(an embodiment)”라고 지칭하는 것은 실시예에 결부하여 설명한 구체적인 특징, 구조 또는 특성이 본 개시의 적어도 하나의 실시예에 포함될 수 있음을 의미한다. 본 명세서의 여러가지 부분에서 관용구 “일 실시예에 있어서”가 나타날 경우, 이는 항상 동일한 실시예를 가리켜야만 하는 것은 아니다.
또한, 도면에서의 부재들 사이 또는 방법 단계들 사이의 연결은 직접적인 영향을 받는 연결에 한정되지 않는다. 반면으로, 본 개시의 시사를 벗어나지 않는 한, 도면에 도시된 부재들 사이 또는 방법 단계들 사이의 연결은 이에 기타 중간 부재 또는 중간 방법 단계를 추가하여 보정하거나 또는 기타 방식으로 변경할 수 있다. 본 문서에서, 용어 “아키텍처”와 “네트워크 아키텍처”는 RNN층 중의 뉴런들 사이의 연결의 특정 패턴을 가리킨다. “글로벌 통신”은 뉴런이 네트워크 중의 모든 기타 뉴런과 대화하는 동시에 지연과 대역폭 요구를 최소화시키는 능력을 가리킨다.
도1은 본 개시의 다양한 실시예에 따른, RNN을 포함함으로써 연산 효율을 향상시키는 컴퓨팅 시스템의 간소화된 블록도를 나타낸다. 시스템(1000)에 대해 도시한 기능들은 정보 처리 시스템의 다양한 실시예를 지원하도록 동작할 수 있으나, 정보 처리 시스템은 다르게 설정될 수 있고 상이한 부재들을 포함할 수 있음을 이해해야 할 것이다. 도1에 도시된 바와 같이, 시스템(1000)은 컴퓨팅 자원을 제공하고 컴퓨터를 제어하는 중앙 처리 기기(1001; CPU)를 포함한다. CPU(1001)는 마이크로 프로세서 등으로 구현될 수 있고, 그래픽 프로세서(1017; GPU) 및/또는 수학적 계산을 위한 부동 소수점 코프로세서(floating point coprocessor)를 더 포함할 수 있다. 시스템(1000)은 랜덤 액세스 메모리(RAM)와 읽기 전용 메모리(ROM) 형식일 수 있는 시스템 메모리(1002)를 더 포함할 수 있다.
도1에 도시된 바와 같이, 다수의 제어 장치와 주변 기기를 더 제공할 수 있다. 입력 제어 장치(1003)는 예를 들어, 키보드, 마우스 또는 스타일러스(stylus)와 같은 다양한 입력 기기(1004)의 인터페이스를 표시한다. 스캐너(1006)와 통신하는 스캐너 제어 장치(1005)도 존재할 수 있다. 시스템(1000)은 하나 또는 다수의 저장 기기(1008)에 연결되기 위한 저장 제어 장치(1007)를 더 포함할 수 있고, 저장 기기(1008) 중의 각각은 저장 매체(예를 들어, 테이프 또는 디스크), 또는 광학 매체(이는 운영 체제, 실용 프로그램과 응용 프로그램에 사용되는 명령어(instruction)을 기록하기 위한 프로그램인 바, 이러한 프로그램은 본 발명의 여러 양태들을 구현하는 프로그램의 실시예를 포함할 수 있음)를 포함한다. 저장 기기(1008)는 또 본 발명에 따라 처리된 데이터 또는 처리될 데이터를 저장할 수도 있다. 시스템(1000)은 표시 장치(1011)에 인터페이스를 제공하는 표시 제어 장치(1009)를 더 포함할 수 있고, 표시 장치(1011)는 음극선관(CRT) 표시 장치, 박막 트랜지스터(TFT) 표시 장치 또는 기타 유형의 표시 장치일 수 있다. 컴퓨팅 시스템(1000)은 프린터(1013)와 통신하는 프린터 제어 장치(1012)를 더 포함할 수 있다. 통신 제어 장치(1014)는 하나 또는 다수의 통신 기기(1015)와 연결될 수 있고, 통신 기기(1015)는 시스템(1000)이 여러가지 네트워크(인터넷, 이더넷 클라우드(Ethernet cloud), FCoE/DCB 클라우드, 근거리 통신망(LAN), 광역 통신망(WAN), 저장 영역 네트워크(SAN)를 포함함) 중의 임의의 하나의 네트워크, 또는 임의의 적합한 전자기 반송파 신호(적외선 신호를 포함함))를 통하여 원격 기기에 연결되도록 한다.
도시된 시스템에서, 모든 주요 시스템 부재는 하나 이상의 물리적 버스(bus)를 표시할 수 있는 버스(1016)에 연결될 수 있다. 그러나, 다양한 시스템 부재들은 물리적으로 서로 접근될 수도 있고 서로 접근되지 않을 수도 있다. 예를 들어, 입력 데이터 및/또는 출력 데이터는 원격으로 하나의 물리적 위치로부터 다른 하나의 물리적 위치에 전송될 수 있다. 또한, 본 발명의 여러 양태들을 구현하는 프로그램들은 네트워크를 통해 원격 위치(예를 들어, 서버)로부터 방문할 수 있다. 이러한 유형의 데이터 및/또는 프로그램은 여러가지 머신 판독 가능한 매체 중의 임의의 하나를 통하여 전송될 수 있는 바, 여기서, 머신 판독 가능한 매체는, 예컨대 하드디스크, 플로피디스크 및 자기 테이프와 같은 자기 매체; 예컨대 CD-ROM 및 홀로그래픽(holographic) 기기와 같은 광학 매체; 광자기 매체; 및 예를 들어, 전용집적회로(ASIC), 프로그램 가능한 논리 기기(PLD), 플래시 메모리 기기, 및 ROM과 RAM 기기와 같은 프로그램 코드를 저장하거나 또는 저장하고 실행하도록 특별히 구성된 하드웨어 기기를 포함하나 이에 한정되지 않는다.
본 발명의 실시예는, 하나 또는 다수의 프로세서 또는 처리 유닛이 단계를 수행하도록 하나 또는 다수의 비 일시적(non-transitory) 컴퓨터 판독 가능한 매체에서 명령어로 암호화될 수 있다. 하나 또는 다수의 비 일시적 컴퓨터 판독 가능한 매체는 휘발성 메모리와 비휘발성 메모리를 포함해야 한다는 것을 유의하여야 한다. 하드웨어 구현 또는 소프트웨어/하드웨어 구현을 포함하는 대체 구현이 가능하다는 것도 유의하여야 한다. 하드웨어로 구현되는 기능은 ASIC, 프로그램 가능한 어레이(programmable array), 디지털 신호처리회로 등으로 실현될 수 있다. 따라서, 임의의 청구항 중의 용어 “수단”은 소프트웨어 구현과 하드웨어 구현을 포괄하는 것을 가리킨다. 유사하게, 본 명세서에서 사용되는 용어 “컴퓨터 판독 가능한 매개물 또는 매체”는 해당 매개물 또는 매체에 포함된 명령어의 프로그램을 구비한 소프트웨어 및/또는 하드웨어 또는 이들의 조합을 포함한다. 이러한 대체 구현 방식들을 염두에 두면, 필요한 처리를 수요되는 기능 정보를 실행하도록, 도면 및 이에 수반된 설명은 해당 기술분야의 통상의 지식을 가진 자가 필요한 처리를 수행하기 위한 프로그램 코드(즉, 소프트웨어)의 작성 및/또는 회로(즉, 하드웨어)의 제조에 필요하게 될 기능성 정보를 제공한다는 것을 이해할 것이다.
본 발명의 실시예들은, 나아가 여러가지 컴퓨터 실현 조작들을 수행하기 위해 컴퓨터 코드를 구비한 비일시적인 유형(tangible) 컴퓨터 판독 가능한 매체를 포함한 컴퓨터 제품에 관련될 수 있다. 매체와 컴퓨터 코드는, 본 발명의 목적으로 특별힌 설계되고 구성된 매체와 컴퓨터 코드일 수 있거나, 또는 관련 분야의 통상의 지식을 가진 자에게 알려진 또는 이들이 획득 가능한 유형일 수 있다. 유형(tangible) 컴퓨터 판독 가능한 매체의 예시는 예컨대 하드디스크, 플로피디스크 및 자기 테이프와 같은 자가 매체; 예컨대 CD-ROM 및 홀로그래픽 기기와 같은 광학 매체; 광자기 매체; 및 예를 들어, 전용집적회로(ASIC), 프로그램 가능한 논리 기기(PLD), 플래시 기기, 및 ROM과 RAM 기기와 같이 프로그램 코드를 저장하거나 또는 저장하고 실행하도록 특별히 구성도니 하드웨어 기기를 포함하나 이에 한정되지 않는다. 컴퓨터 코드의 예시는 머신 코드(예를 들어, 컴파일러(compiler)에 의해 생성된 코드) 및 인터프리터를 이용하여 컴퓨터에 의해 실행되는 더 높은 레벨의 코드를 포함한 파일을 포함한다. 본 발명의 실시예는 전체적으로 또는 부분적으로 기계 실행 가능한 명령어로 구현될 수 있고, 상기 기계 실행 가능한 명령어는 처리 기기에 의해 실행되는 프로그램 모듈 속에 위치할 수 있다. 프로그램 모듈의 예시는 라이브러리(library), 프로그램, 루틴(routine), 대상(object), 부재와 데이터 구조를 포함한다. 분산형 컴퓨팅 환경에 있어서, 프로그램 모듈은 로칼, 원격 또는 양자의 결합으로 이루어진 세팅 속에 물리적으로 위치할 수 있다.
본 기술분야의 통상의 지식을 가진 자는 컴퓨팅 시스템 또는 프로그래밍 언어가 본 발명의 실천에 대해 그다지 중요하지 않다는 것을 자명할 것이다. 또한, 본 기술분야의 통상의 지식을 가진 자는 상기 다수의 소자들이 물리적으로 및/또는 기능적으로 서브 모듈로 구획되거나, 또는 함께 조합될 수 있다는 것을 자명할 것이다.
인공 신경망 중의 뉴런은, N차원 입력 열벡터(column vector) x를 처리하고, 함수 f(WT x)를 출력하는 연산 유닛으로서, 여기서 W는 N차원 입력 행벡터(row vector)이고, f(실제 범위의 정의역 함수)는 활성화 함수라고 불린다. 일반적인 활성화 함수는, sigmoid 함수, 정류된 선형(rectified linear) 함수와 tanh 함수를 포함한다. 신경망은 다수의 “뉴런”을 포함함으로써, 기정 “뉴런”의 입력이 네트워크의 입력으로 될 수 있거나 또는 다른 한 뉴런의 출력으로 될 수 있다. 뉴런 사이의 연결의 특정 패턴은 상기 네트워크의 “아키텍처”라고 지칭된다.
일반적인 네트워크 아키텍처는 완전 연결된 층의 스택(stack)이다. 완전 연결된 층은 N개의 입력 값을 수신하고, N개의 입력 값 중의 각각은 해당 층 중의 M개의 뉴런 중의 각각에 연결되며, 각각의 뉴런에 하나씩 M개의 출력 값을 생성한다.
소프트웨어로 구현하고 프로세서에서 실행될 경우, 이러한 신경망 아키텍처는 흔히 각 층의 부동 소수점의 이차원 매트릭스(웨이트 매트릭스(weight matrix), 또는 W라고 칭함)를 이용하여 표시되고, 여기서 하나의 차원은 층 중의 뉴런을 표시하며, 다른 하나의 차원은 상기 층에 대한 입력을 표시한다. , 트워크의 입력과 출력은 조밀한 단일 차원 벡터를 이용하여 표시된다. 이는 네트워크가 일련의 매트릭스-벡터 승적(matrix-vector product)으로 평가되도록 하고, 상기 매트릭스-벡터 승적은 각 층에 하나씩 대응되며, 그 이후 각 층에 대해 활성화 함수를 적용한다. 매트릭스-벡터와 매트릭스-매트릭스 승적 연산(matrix-matrix product operation)을 제공하는 고도 조정을 거친 조밀한 선형대수 라이브러리는 대다수의 범용 프로세서에 의해 용이하게 사용될 수 있으므로, 이러한 방법은 간단하고 효율적인 구현이 가능하도록 한다.
현대 범용 프로세서가 메모리 대역폭보다 더 높은 연산 대역폭을 갖고 있다는 사실로 인하여, 상기 연산이 현대 범용 프로세서에 매핑 시 그의 주요한 코스트는 각각의 층에 대하여 웨이트 매트릭스 W를 로딩한다. 상기 코스트는 다수의 네트워크 입력에서 할당될 수 있고, 일반적으로 “배칭(batching)”이라고 칭한다. 배칭은 다수의 입력 벡터를 더 큰 매트릭스에 효율적으로 패킹(packing)함으로써, 매트릭스-벡터 승적이 아니라, 매트릭스-매트릭스 승적을 이용하여 네트워크에 대한 평가를 실행하도록 허용한다. 충분히 큰 배칭 크기를 위하여, 상기 연산은 프로세서의 부동 소수점의 연산 대역폭의 제한을 받을 수 있으나, 메모리 대역폭의 제한을 받지 않는다.
완전 연결된 층을 구비한 순환 신경망은, 정상적인 완전 연결된 층으로부터 시작되고, 현재 시간 단계(current timestep)상의 각 뉴런의 출력으로부터 다음 시간 단계상의 모든 기타 뉴런으로의 부가적 연결을 이용하여 상기 정상적인 완전 연결된 층을 강화한다.
단일 입력 서열 x와 대응되는 출력 서열 y는 트레이닝 세트 X={(x (1) ; y (1) ); (x (2) ; y (2 )), ...}로부터 샘플링(sampling)된다고 가정한다. 각각의 입력 서열 x (i) 는 길이 T (i) 의 시계열이고, 각 타임 슬라이스(time-slice)는 특정 응용에 따른 특징(예를 들어, 오디오 샘플)의 벡터이며,
Figure 112016121071485-pat00001
, t= 0, ..., T (i) -1 이다.
시간 순방향(forward-in-time) h l 순환층 활성화는 하기와 같이 컴퓨팅된다.
Figure 112016121071485-pat00002
(1)
함수 f는 표준 순환 연산일 수 있다
Figure 112016121071485-pat00003
(2)
여기서 W l 는 입력 히든 웨이트 매트릭스(input-hidden weight matrix)이고, U l 는 순환 웨이트 매트릭스(recurrent weight matrix)이며, b l 는 바이어스 텀(bias term)이다.
RNN의 구현은 각 시간 단계에 대하여 연산을 2 개의 단계로 나눈다. 제1 단계
Figure 112016121071485-pat00004
에서, 상기 시간 단계의 뉴런의 입력을 이용하여 각 시간 단계의 각 뉴런에 대한 출력의 기여를 연산한다. 피드포워드 네트워크(feed-forward network)와 같이, 제1 단계에서는 층 중의 모든 뉴런의 입력 웨이트를 조밀한 이차원 매트릭스로 표시하고, 각각의 시간 단계의 층으로의 입력을 1차원 조밀한 벡터로 표시한다. 일반적인 최적화 방식은 시간 차원을 전개하고, 다수의 1차원 입력 벡터를 함께 단일 이차원 매트릭스로 패킹하는 것이다. 이는 웨이트 매트릭스가 모든 시간 단계에서 공유되기 때문에 가능하다.
제2 단계
Figure 112016121071485-pat00005
에서, 기정 시간 단계에서의 층 뉴런의 출력과 다음 시간 단계에서의 층 뉴런의 입력 사이의 연결은 이차원 매트릭스로 표시되고, 순환 웨이트 매트릭스로 칭한다. 이러한 경우에서, 각각의 시간 단계는 순차적으로 처리되고, 다음 시간 단계의 출력은 현재 시간 단계의 출력에 의해 결정되므로, 매트릭스-벡터 승적을 이용하여 상기 연산을 실행고, 그 이후 활성화 함수를 응용하기를 요구한다.
도2a는 일반적인, 완전 연결된 베이스 라인 RNN층 아키텍처를 나타낸다. 118~124로 표기된 블록들은 벡터를 표시하고, 상기 벡터는 입력 데이터 세트를 포함하는 바, 예컨대 특정된 시간에서 측정하여 얻은 전기 신호, 예를 들어, 시간 t=0초일 경우, 샘플링한 오디오 파형 신호의 진폭 데이터를 포함한다. 각각의 벡터(118~124)는 개별 값(116)을 포함하고, 입력 시계열(102) 중의 각 벡터(118~124)와 샘플링 시간을 연관시키는 시간 척도 상에 배치된다. 샘플 사이의 시간 간격은 등거리(equidistant)일 필요가 없고, 벡터 중의 값들은 동일하게 변환된 값일 수 있음을 유의하여야 한다.
입력 벡터(118~124)와 유사하게, 출력 벡터(136~138) 중의 데이터는 출력 시계열(104) 중에 배치된다. 출력 벡터(136~138)는 다수의 샘플의 출력 데이터 세트를 포함한다. 출력 벡터(136) 중의 각각의 개별 값(134)은 입력 데이터 벡터(118~124)로부터의 적어도 하나의 입력 값에 연관되는 캐릭터에 대응된다. 각각의 캐릭터(134)는 측정된 오디오 신호로부터 도출된 값(116)에 대응하는 예측 값을 표시한다. 예를 들어, 벡터(136)중의 값(134)은 예를 들어, 캐릭터 “b”를 표시할 수 있다. 각각의 캐릭터에는 예를 들어 0.2와 같이 확율로 해석되는 값이 할당될 수 있다. 여기서, RNN(150)는, 출력 벡터(136)에 연관된 시간 단계에서 출력된 캐릭터 중의 하나가 캐릭터 “b” 일 확율이 20%라고 예측할 것이다.
중간층(106)에서의 컴퓨팅은 변환을 허용하는 선형과 비선형 네트워크 부재의 기능적 구조에 의해 실행되는 것으로 고려할 수 있다. 선형 변환은 매트릭스(108)로 표시될 수 있고, 매트릭스(108)는 층(106) 중의 등가 그래픽의 표현이다. 예를 들어, 도2a 중의 매트릭스(108)는 행과 열 형식의 네트워크 파라미터를 저장하고, 매트릭스(108)의 행은 개별적인 뉴런을 표시하고, 열은 개별적인 뉴런에 입력되고 개별적인 뉴런으로부터 출력되는 연결을 표시한다. 층(106)과 층(108)의 각자의 기능은 각각의 시간 단계에 대하여 반복되고, 이로써 전체 RNN(100)를 한정한다.
도2a 중의 중간층(106)은, 입력 값(145)을 포함하는 모듈(140), 비선형 변환 모듈(148) 및 선형 변환모듈(152; 예를 들어, 합산 모듈)을 포함한다. 모듈(140)은 입력 값(145)에 연결되고 선형 및/또는 비선형 변환을 거칠 수 있는 출력 값(146)을 생성하는 개별적인 뉴런(142)의 서브 그룹을 포함한다.
조작에 있어서, RNN(150) 중의 모든 뉴런들은 서로 통신한다. 뉴런(142)에 연결된 하나 또는 다수의 입력 값(145)은 출력 값(146)을 생성하고, 뉴런(142)은 그 자체로 지정하여 되돌아가는(pointing back) 소자(142~156)를 포함하는 룹(loop)을 구비하도록 표현될 수 있으므로, 일정한 포인트(156)에서 뉴런(142) 자체 중에 연결될 수 있다. 실시예에서, 합산 소자(152)에 의한 합산을 진행한 후, 뉴런(142)은 RNN(150) 중의 모든 기타 뉴런에 연결된다. 출력은 진일보로 입력 서열(102)의 벡터(120)에 대응되는 후속 시간 단계의 벡터(120)의 출력과 합산된다. 동기화 조작에 있어서, 후속 시간 단계에서, 뉴런(143)의 출력은 뉴런(142)에 의해 사용된다.
제2 단계는 연산 코스트가 가장 높은 단계임을 명확해야 한다. 순환 웨이트 매트릭스가 각각의 시간 단계에 대해 재사용될 수 있더라도, 시간 단계 사이의 순차적인 의존성은 시간 단계 사이의 명확한 동기화에 관련되고, 매트릭스가 지나치게 큼으로 인해 온칩 메모리에 적합하지 않을 경우, 각각의 시간 단계에서 메모리로부터 재로딩된 순환 웨이트 매트릭스에 관련된다.
멀티 벌크 동기화 병렬(MBSP) 추상 머신 모델은 프로세서의 특성을 설명하는 고급 성능 모델이고, 이는 제한된 저장 용량 및 컴퓨팅 자원을 구비한 다수의 프로세서 코어의 물리적인 현실 및 프로세서 코어의 개수에 따라 증가하는 통신 코스트와 동기화 코스트도 고려한다. 이러한 코스트는 프로세서 코어의 물리적 특성 및 프로세서 코어 사이의 물리적 거리로부터 도출된다.
MBSP 모델은 임의의 수량의 레벨에 적용되는 계층 모델이다. 각각의 레벨에서, 모델은 온칩 메모리 용량과 캐시(cache) 용량의 각도로부터 프로세서 코어 집합을 설명한다. 구체적으로, 고정량의 시간 내에서 물리적 프로세서 코어로부터 방문 가능한 메모리 량의 물리적 제한 및 각 코어에 사용되는 메모리의 물리적 영역과 더 많은 수량의 코어 사이의 기본 균형은 메모리 계층에 대한 수요를 형성한다. MBSP 모델 중의 계층의 각 레벨은, 1) 서브 부재/코어의 수량; 2) 통신 대역폭; 3) 동기화 코스트; 및 4) 캐시/메모리 크기와 같은 4개의 파라미터로 설명될 수 있다.
기정 문제의 최적의 MBSP 알고리즘은, i) 병렬 컴퓨팅 조작; ii) 병렬 통신 코스트; 및 iii) 콘스턴트 곱셈 인자에 대한 동기화 코스트 등 부분에서 동시에 최적화를 실현한다. MBSP 모델을 직접 RNN의 제1 단계에 적용할 수 있으며, 이는 컴퓨팅함에 있어서 조밀한 매트릭스 곱셈에 상응하고, MBSO 최적의 알고리즘은 직접 조밀한 매트릭스 곱셈에 적용될 수 있기 때문이다. 그러나, 제2 단계는 더 어렵다. 일련의 매트릭스-벡터 곱셈을 이용하는 직접적인 알고리즘은 병렬 컴퓨팅 조작에 있어서 가장 최적화된것이다. 그러나, 순환 웨이트 매트릭스가 MBSP 계층의 기정 레벨에서 메모리에 적합하지 않으면, 반드시 연산 코스트를 차지할 통신 조작을 이용하여 계층의 다음 레벨로부터 방문되어야 한다. 유사하게, 시간 단계 사이의 순차적인 의존과 뉴런 사이의 올 투 올(all-to-all) 연결은 함께 강제로 각 시간 단계 사이의 모든 프로세서 사이에서 글로벌 동기화 조작을 진행하도록 한다. 통신 코스트가 연산 코스트보다 약 80배 높고, 글로벌 동기화 코스트는 연산 코스트보 약 6백만 배 높은 현대 프로세서에 있어서, 통신 코스트 또는 동기화 코스트는 지배적 위치를 차지하고, 프로세서의 사용 가능한 컴퓨팅 자원은 충분히 이용되지 못하고 있다는 것을 예상할 수 있다. 빈번한 통신 절차와 올 투 올(all-to-all) 동기화 단계는 효율을 대대적으로 저하시키며, 이는 현대 프로세서(예를 들어 도1에 도시된 CPU 또는 GPU)에서, 통신 조작과 동기화 조작의 처리량이 산수 연산의 처리량보다 실질적으로 낮기 때문이다.
층의 크기는 더 큰 데이터 세트에 따라 계속하여 늘어남에 따라, 대형 네트워크는 웨이트를 로딩하는 코스트는 할당할 수 없으며, 이는 시간 단계 사이의 순차적인 의존이, 해당 층이 다음 시간 단계로 이동하기 전에 전체 시간 단계를 평가하는 것을 요구하기 때문이다. 또한, 온칩 메모리, 특히 가장 신속하고 가장 효율적인 메모리는(예를 들어, L1캐시 및 레지스터(register)) 일반적으로 모든 층을 저장할 만큼 충분히 크지 못하다.
동시에, 약간의 샘플에 대한 업데이트를 연산하는 것(“소형 배칭”이라고 칭함, 전체 데이터 세트를 이용하는 배칭 방법과는 달리, 단일 샘플을 이용하는 순 랜덤 방법임)은 하기와 같은 방식을 통하여 통신 문제 중의 일부 문제를 완화시킨다. 다수의 입력 벡터를 더 큰 매트릭스로 조합하여 매트릭스-벡터 곱셈이 아닌 매트릭스-매트릭스 승적을 이용하여 RNN(150)을 평가하고, 상이한 시간 단계에 대응되는 다수의 입력 데이터 요소에서 동일한 수량의 웨이트를 재사용한다. 그러나, 이러한 방법의 하나의 주요 단점은, 처리된 모든 상이한 샘플들 및 이들의 연산의 중간 단계는 반드시 배칭 크기와 동일한 인자에 의해 저장되어야 하고, 이로써 RNN(100)를 평가하는 메모리 요구를 실질적으로 증가시키며, 이는 현대 프로세서에서 높은 효율성을 실현함에 있어서 상대적으로 큰 배칭 크기(예를 들어, 128~256)를 요구하기 때문이다. 다른 하나의 주요 단점은, 해당 방법이 단지 RNN(100)의 트레이닝(training)에만 유용하고, 트레이닝을 완성한 후 사용되지 않는 것이다. 또한, 소형 배칭 방법은, 업데이트 속도 자체를 증가시키는 것이 아니라, 단지 매번 업데이트를 완성한 작업량만 증가시키기므로, 모델 트레이닝 시간을 개선할 수 없다.
전반적으로, RNN가 요구하는 올 투 올(all-to-all) 연결은 이들을 평가하기에 필요한 대역폭과 지연을 증가시킨다. 따라서, 종래의 RNN 설계에서의 고유의 동기화 지연과 대역폭 제한에 한정되지 않으면서 RNN 아키텍처에 의해 제공된 서퀀스 투 시퀀스 변환을 허용하는 방법과 구조를 구비하는 것이 바람직하다.
도2b는 일 시계열에서의 쾌속 모듈과 저속 모듈을 이용한 일반적인 RNN층 아키텍처 중의 모듈들 사이의 연결을 나타낸다. 도2a 중의 베이스 라인 네트워크(150)와 같이, 도2b 중의 네트워크(200)는 개별적인 뉴런을 포함하는 모듈의 개념을 사용한다. 네트워크(200)는, 쾌속 모듈(254~260)의 단일층(252) 및 상대적으로 더 느린 저속 모듈(204~206)의 2 개 또는 그 이상의 층(202)을 포함한다. 조작에 있어서, 각자의 적합한 연결(220 및 270)을 통하여, 네트워크(200) 중의 쾌속 모듈(254~260)끼리 서로 통신하고, 저속 모듈(204~206)끼리 서로 통신한다. 쾌속 층(252) 중의 쾌속 모듈(254~260)과 저속 층(202) 중의 저속 모듈(204~206) 사이의 통신은 빈번하지 않다. 또한, 이러한 유형의 통신은 저속 층(202)으로부터 쾌속 층(252)으로의 단일 방향 통신(222)에 제한된다. 다시 말하면, 쾌속 층(252) 중의 쾌속 모듈(254~260)은 저속 층(202) 중의 저속 모듈(204~206)에 전송되지 않는다.
상기 설계의 주요 목적은, 네트워크(200)가 다수의 해상도에서의 신호의 처리를 허용하는데 있음을 유의하여야 한다. 이러한 목적은, 예를 들어, 완전 연결된 모델(예를 들어, 도2a에 도시된 베이스 라인 모델)과 같이, 네트워크(200)의 구조 하의 통신 모델 유형이 특정 유형의 함수에 더 근사하다는 가설에 기반한다. 오디오 어플리케이션에 있어서, 예를 들어, 입력 오디오 데이터 중의 빈도 성분이 일반적으로 상이한 속도로 변화되고, 동시에 쾌속적으로 개변되는 성분과 느리게 개변되는 성분을 형성하는 어플리케이션에 있어서, 네트워크(200)의 매핑 함수는 상기 함수에 의해 모델링될 하층 샘플링 과정을 자연스럽게 시뮬레이션할 가능성이 더 크다.
도2c는 멀티 벌크 동기 병렬(MBSP) 머신 모델의 계층 중의 단일 레벨 중의 모듈을 나타낸다. 도2d는 6개의 시간 단계를 크로스하여 전개되는 최저 레벨 계층의 MBSP 모듈의 예시를 나타낸다. 각각의 모듈은 4개의 뉴런을 포함한다.
도2c에서, 모듈(282) 중의 계층의 레벨은 관련 지연과 대역폭을 구비한 메모리, 및 6개의 서브 레벨을 포함한다. 맨 마지막 서브 레벨은 도2c의 우측에서 확대도로 도시된다. 각각의 모듈(282)은 M(m, n)으로 표기되는 바, 여기서 m은 계층의 레벨(최저로부터 최고)이며, n은 계층 중의 기정 레벨 내의 모듈의 인덱스(index) 번호이다. 모듈(282)은 인공 신경망 유닛의 완전 연결된 세트를 포함한다. 유닛들은 예를 들어, 장단기 저장(LSTM) 유닛 또는 게이트 순환 유닛(GRU)과 같은 간단한 선형 역치 유닛, 또는 더 복잡한 유닛일 수 있다.
본 개시의 실시예에 따른 MBSP-RNN는 모듈의 계층을 포함할 수 있다. 계층의 최저 레벨에서, MBSP-RNN 모듈은 간단한 RNN층일 수 있다. 계층 중의 모든 기타 레벨에서, 모듈은 재귀적으로 MBSP-RNN 층의 사례로 한정된다. 도3a는 본 개시의 다양한 실시예에 따른, RNN의 계층의 제2 레벨 중의 2 개의 MBSP 모듈 사이의 상호 연결을 나타낸다. 네트워크(300)는 개별적인 뉴런(303)을 포함하고, 개별적인 뉴런(303)은 전략적으로 그루핑(grouping)되며, 서브 그룹 또는 논리 모듈(예를 들어, 304) 중에서 연결되는 바, 여기서, 데이터는 서브 그룹 또는 논리 모듈로 구획될 수 있다. 실시예에서, 네트워크(300)는 쾌속 모듈 또는 원격 모듈(예를 들어, 310~312)의 하나 또는 다수의 층(352) 및 상대적으로 더 느린 저속 모듈 또는 로칼 모듈(예를 들어, 304~308)의 하나 또는 다수의 층(302)을 포함한다. 실시예에서, 층(302) 중의 각각의 모듈은 층(302) 중의 모든 기타 모듈에 연결된다. 유사하게, 실시예에서, 층(352) 중의 각각의 모듈은 층(352) 중의 모든 기타 모듈에 연결된다. 또한, 임의의 수량의 모듈은, 모듈 간의 연결을 표시하는 연결(330)을 통하여 서로 통신하도록 연결된다.
조작에 있어서, 계층의 기정 레벨 내에서, 모듈은 성기게 연결되고, 비교적 낮은 빈도하에 업데이트되며, 지연에 따라 업데이트될 수 있다. 실시예에서, 스파스 연결(332)은 기정 모듈의 출력이 기타 모듈의 입력의 서브셋(subset)에만 연결되도록 설계된다. 예를 들어, 계층 중의 기정 레벨이 4개의 모듈을 포함할 경우, 각각의 모듈은 가장 가까이 인접한 2 개의 모듈에 연결될 수 있고, 기타 모든 모듈에 연결되지 않는다. 스파스 연결(sparse connections)은 모듈이 요구하는 통신 대역폭을 감소시킨다. 이들은 또한 모듈에 의해 저장되어야 하는 웨이트 수량을 감소시킴으로써, 모듈의 온칩 메모리의 요구를 줄인다.
실시예에서, 네트워크(300)는 3인 지연(td)을 가지며, 이는 모듈 간의 연결(330)이 앞으로 세 개의 시간 단계를 뛰어넘는 다는 것을 의미한다. 지연의 연결은 각각의 시간 단계에서 데이터를 송신하나, 상기 데이터는 다수의 추가 시간 단계 내에서 목적지에 도달할 필요가 없다. 즉, 출력은 다음 모듈의 입력이 도달하기 전에 D개의 시간 단계에 의해 지연된다. 이러한 지연은 뉴런에 더 많은 시간을 부여하여 동기화를 실행하도록 하며, 지연 연결에 따라 동기화 총수를 감소시킨다.
실시예에서, MBSP-RNN의 제1 레벨에 사용되는 활성화는 계층 중의 M개의 레벨과 각각의 레벨에 N개의 모듈로 표시할 수 있다.
Figure 112016121071485-pat00006
(3)
여기서,
Figure 112016121071485-pat00007
은 이전 층으로부터의 정상적인 피드 포워드 기여(feed-forward contribution)이고,
Figure 112016121071485-pat00008
은 단일 모듈의 기여이며, 여기서 단지 상기 모듈만 사용하며 자체의 이전 시간 단계로부터의 출력을 입력으로 한다.
계층 중의 각 연속적인 레벨의 활성화에 대한 기여는 하기와 같이 표시한다.
Figure 112016121071485-pat00009
(4)
여기서
Figure 112016121071485-pat00010
은 수학식3으로부터의 기여이고, 나머지 항은 계층 중의 상기 레벨에서의 기타 모듈의 기여의 합계이다.
Figure 112016121071485-pat00011
는 한 쌍의 모듈 사이의 연결을 표시하고,
Figure 112016121071485-pat00012
는 저속 업데이트 연결에 사용되는 선택 함수이다
Figure 112016121071485-pat00013
모듈 nj 사이의 성긴 연결을 실현하도록,
Figure 112016121071485-pat00014
중의 일부 항목들은 강제적으로 0으로 설정될 수 있음을 유의하여야 한다.
우리는 하기와 같이 계층 중의 최고 레벨의 각각의 모듈의 완전한 활성화를 형성할 수 있다.
Figure 112016121071485-pat00015
(5)
마지막으로, 계층 중의 최고 레벨의 각각의 모듈의 직렬한 전체 층의 완전한 활성화는 하기와 같이 표시될 수 있다.
Figure 112016121071485-pat00016
도3a 중의 RNN (300)는 2인 저속 업데이트 인자를 가지고 있음으로써, 모듈 간의 연결(370)은 단지 매 1개의 시간 단계를 간격으로 하여 응용된다. 함수S(x) (372)는 모듈 간의 성긴 연결을 표시하는 바, 예를 들어, 원격 모듈(352) 중의 뉴런(311)의 출력은 로칼 모듈(302) 중의 뉴런의 서브셋에만 연결된다. 저속 업데이트는 정상적인 연결보다 낮은 빈도로 샘플링된다. 저속 업데이트는 성긴 연결(연결을 완전히 생략함)과 각각의 시간 단계 후에 업데이트된 규칙적인 연결 사이의 타협이라고 볼 수 있다.
실시예에서, 입력 서열로부터 변환된 출력 서열은 다음 층(미도시)의 입력 서열로 한다. 이러한 방식으로, 임의의 수량의 층은 스태킹되어 계층 중의 단계 또는 레벨의 스택을 생성하도록 하고, 이는 RNN(300)이 더 복잡한 함수를 모델링할수 있도록 한다. 서브 그룹(304) 내(예를 들어, 계층 중의 아주 낮은 층의 위치)의 뉴런(303)은 규칙층 중의 뉴런과 동일한 기능을 실행할 수 있다.
도3a에 도시된 RNN(300)의 소자의 수량과 크기(예를 들어, 뉴런의 수량, 연결 및 연결 사이의 시간 단계)는 단지 파라미터일 뿐이고, 이를 한정하려는 것이 아님을 이해해야 할 것이다. 임의의 수량의 소자를 RNN(300)에 추가하거나 또는 이로부터 삭제할 수 있는 바, 예를 들어, 작동전 및 작동 기간에 네트워크 크기를 변화시킬 수 있다. 또한, 비선형 기능의 상이한 조합은 상이한 유형의 어플리케이션 중에 사용될 수 있다
실시예에서, 2 개 또는 그 이상의 모듈들은 계층 중의 더 높은 레벨에 연관된, 개별적인 모듈(304)의 유닛보다 더 큰 유닛을 형성할 수 있고, 동시에 통신 사이를 경과하는 시간이 증가되고 통신 데이터 량이 감소되는 특성을 유지한다. 사실상, RNN(300)는 프로세서의 개별적인 컴퓨팅 자원의 구성을 시뮬레이션할 것을 요구한다.
실시예에서, RNN(300)은 타깃 프로세서 또는 프로세서 패밀리에서 실행되도록 설계된다. 타깃 프로세서에 있어서, 실시예에서, RNN(300)는 파라미터(서브 모듈 또는 프로세서 코어, 통신 대역폭, 동기화 코스트와 캐시/메모리 용량) 세트 리스트가 설치되어 있는 바, 여기서 각각의 파라미터 세트는, 도2c의 프로세서 메모리 계층의 레벨과 근사하다는 것을 표시한다. 그러나, 임의의 수량의 레벨 또는 서브 레벨을 선택할 수 있음을 유의해야 한다. 프로세서에 대한 상기 설명을 기반으로 하여, 실시예에서, 계층 중의 최저 레벨을 시작으로 하여 최고 레벨까지 작업하는 경우에서, 개별적인 뉴런의 세트는 논리 모듈로 나뉘어 지고, 모듈 사이의 연결은 하기 제약 중의 하나 또는 다수의 방식을 만족시키면서 프루닝(pruning)된다.
- 기정 모듈에 대해 선택된 뉴런을 표시하는 파라미터는 완전히 메모리 계층의 상기 레벨의 캐시/메모리 용량에 적합하도록 함으로써, 예를 들어, 캐시/메모리 용량이 모듈 크기를 확정하도록 한다.
- 모듈 내의 연결 및 모듈 간의 연결을 실행하기에 필요한 통신 코스트는, 모듈을 평가하는 뉴런의 연산 코스트와 거의 동일하다. 모듈 사이의 수량을 감소시키도록, 대역폭은 연결 수량을 결정한다. 개별적인 뉴런은 모듈의 최저층으로 취급될 수 있다.
- 모듈 간의 연결을 실행하기에 필요한 동기화 코스트는, 모듈의 뉴런을 평가하는 연산 코스트와 거의 동일하다.
지연은 데이터가 모듈 사이의 연결 상에서 발송 되는 시간와 해당 데이터가 수신되는 시간 사이의 지연의 량으로 정의될 수 있다. 데이터 통신을 진행하는 모듈들 사이의 연결의 지연을 증가시키는 것은 필요한 동기화 조작의 수량을 감소시키는 효과가 있다. 로칼 통신은 각각의 시간 단계에서 발생하지만, 글로벌 통신에서는 지연이 발생할 수있다. 이러한 개변은 RNN의 컴퓨팅, 통신, 동기화와 메모리 용량 요구를 평형시키고, 어느 하나의 자원이 현저하게 병목되는 상황이 나타나지 않게 되도록 하며, 이로써 대역폭을 향상시키고 비교적 엄격하지 않는 지연 요구를 실현한다.
실시예에서, 제약은 다수의 시간 단계에서 다시 MBSP-RNN 웨이트 파라미터를 사용하는 것으로 평형을 이루고, 온칩(on-chip) 외의 메모리(예를 들어, DRAM)에서 중복되게 웨이트 로딩하는 것을 방지하며, 동기화 및 온칩 외의 메모리의 방문을 감소시키고, 이들은 부동 소수점 연산에 비해 코스트가 현저하게 높다. 실제 구현은 2 개 또는 그 이상의 전략들을 조합하여, RNN에 대한 평가가 컴퓨팅 조작과 통신 조작 사이에서 평형되도록 하기에 필요한 량의 웨이트를 획득할 수 있다는 것을 유의하여야 한다.
실시예에서, 각각의 시간 단계 상에서, 상응한 연결, 쾌속 모듈(예를 들어, RNN(300) 중의 (310)~(312)을 경과한 모든 연결은 서로 통신하고, 저속 모듈(예를 들어, 304~308)의 모든 연결도 서로 통신한다. 실시예에서, 쾌속 층(352) 중의 쾌속 모듈(예를 들어, 310~312)과 저속 층(302)중의 저속 모듈(예를 들어, 304~308) 사이의 모듈 간의 통신(330) 상대적으로 빈번하지 않기에, 데이터 교환이 감소된다.
모듈 간의 통신(330)은 단일방향 통신에만 한정되는 것이 아니며 이는 각각의 층(302, 352) 사이의 양방향 통신도 가능하기 때문이라는 것을 유의하여야 한다. 실시예에서, 계층 중의 최저 레벨에서, 모듈(예를 들어, 304~312)은 단일 RNN 층을 형성하는 바, 여기서 각각의 모듈(304~312)은, 인공 신경망 유닛의 완전 연결된 세트를 포함한다. 유닛은, 예를 들어, LSTM 유닛 또는 GRU과 같이 간단한 선형 역치 유닛, 또는 더 복잡한 유닛일 수 있다. 실시예에서, 계층 중의 모든 기타 레벨에서, 모듈은 재귀적으로 간단한 RNN층의 사례로 한정될 수 있다. 실시예에서, 계층 중의 기정 레벨 내에서, 모듈(예를 들어, 304~312)은 성기게 연결되고, 낮은 빈도로 업데이트되며, 지연에 따라 업데이트된다.
실시예에서, 계층 중의 기정 레벨 내의 모듈(예를 들어, 모듈(310))의 출력은 기타 모듈(여기서, 310와308)의 입력의 서브셋에만 연결되고, 모든 기타 모듈에 연결되는 것이 아니다. 따라서, 스파스 연결을 형성함으로써, 이는 요구하는 통신 대역폭을 감소시킨다. 또한, 일부 연결을 완전히 생략하는 것을 통하여, 성긴 연결은 모듈이 저장해야 할 웨이트 수량을 감소하여, 모듈(304~312)이 요구하는 온칩 메모리를 감소시킨다. 실시예에서, RNN(300)는 저속 업데이트 연결(예를 들어, 320~322)을 포함하고, 상기 저속 업데이트 연결은 각각의 시간 단계 후에 업데이트되는 정상적인 RNN연결보다 낮은 빈도로 샘플링된다.
도6을 참조하여 더 상세하게 논술된 바와 같이, 일부 실시예에서, 계층 중의 기정 레벨 내에서, 모듈의 출력은 다음 시간 단계에서의 기타 모듈의 입력에 전송되지 않는다. 대체적으로, 출력은 비교적 낮은 빈도로 송신(매 P개 시간 단계에 한번)되고, 다음 모듈의 입력이 도달하기 전에 D개의 시간 단계가 지연된다. 모듈 사이의 이러한 지연의 연결은, 모듈 사이의 동기화 조작과 차후의 시간 단계에서의 컴퓨팅 중첩을 허용한다.
실시예에서, 단일 글로벌 장애 다층 구조(global barrier multiple layers architecture)는 멀티 레벨의 뒤를 따르지만, RNN의 크기는, 상기 모듈의 모든 웨이트가 온칩 메모리(예를 들어, 레지스터, L2캐시와 L3캐시)에 적합하도록 설정된다. 이는 웨이트가 한번만 로딩되고, 이어서, 모든 시간 단계에서 재사용되는 것을 허용한다. 실시예에서, 각각의 시간 단계 후, 프로세서 코어 중의 전체 교환 출력은 활성화되고 동기화된다. 모듈 수량, 모듈 사이의 연결의 수량과 동기화의 빈도는 프로세서의 MBSP파라미터에 따라 설정될 수 있다. 따라서, MBSP-RNN는 컴퓨팅 조작, 통신 조작과 동기화 조작이 요구하는 시간이 거의 평형되도록 실행된다. 비록 이러한 아키텍처는 기정 층에서 최대 파라미터 수량 제한이 존재하지만, 실시예에서, 다수의 층으로 스태킹되는 것을 제한하여, 더 큰 네트워크를 형성하는 것을 제한함으로써 극복하였다. 네트워크 깊이와 파라미터 수량 사이의 균형을 잡도록, 층은 수직으로 또는 수평으로 스태킹될수 있다.
실시예에서, 스파스 시간이 지연된 MBSP-RNN 아키텍처는 비교적 더 완전한 계층을 사용하여 단일 층 중의 임의의 수량의 파라미터를 지지한다. 이러한 아키텍처는 도3a에 도시된 아키텍처와 유사하다. 실시예에서, 온칩 메모리의 모든 레벨이 대응되는 메모리 소자에 매칭되기까지, 계층 중의 제1 레벨(예를 들어, 최저 레벨)은 RNN 모듈을 직접 프로세서 코어(예를 들어, 스레드(thread))에 매칭시키고, 후속의 레벨은 메모리 계층의 기타 레벨(예를 들어, 레지스터, L2 캐시, L3 캐시, DRAM, 분산식 공유 메모리 등)에 매칭되어, 모든 네트워크 파라미터가 저장되도록 허용한다. 실시예에서, 메모리 레벨은, 다른 프로세서(예를 들어, 온칩 외의 프로세서)를 포함하도록 확장될 수 있고, 상기 다른 프로세서는 서로 통신 및/또는 상이한 특성을 가지는 상이한 유형의 메모리(예를 들어, 디스크)와 통신할 수 있다.
실시예에서, 피드포워드 층 RNN 아키텍처로 분리된 MBSP는 2 개의 층을 포함한다. 제1 층은 예를 들어 도2d에 도시된 모듈과 같은 다수의 병렬 모듈을 포함할 수 있다. 각각의 모듈은 층 입력(반드시 서로 배척할 필요가 없음)의 서브셋에서 작업할 수 있다. 모듈은 타깃 프로세서에 사용되는 MBSP 계층에 따라, 이들과 인접한 모듈과 통신할 수 있어, 이는 작동이 작업 제한을 유지하도록 한다. 실시예에서, 제1 층에 사용되는 모든 웨이트가 온칩 메모리에 적합하도록 해야 한다고 요구하지 않는 바, 따라서, 상기 층 중의 파라미터 수량을 제한하지 않는다. 그러나, 더 많은 파라미터를 구비하는 네트워크는 더 적은 파라미터를 구비하는 네트워크에 비해 더 빈번하지 않는 모듈 사이의 통신이 필요할 수 있다. 실시예에서, 제2 층은 순피드포워드 층인 바, 이는 제1 층이 실행한 변환의 역변환과 대응되는, 제1 MBSP-RNN 층으로부터의 모듈의 서브셋의 출력을 처리하는 바, 예를 들어, 상이한 크기 또는 차원을 구비하는 중간표시를 생성하여, 역변환의 처리가 제1 층의 오리지날 포맷(original format)을 생성하도록 한다. 직관적으로, 제1 층 중의 모듈은 입력의 서브셋을 처리하고, 제2 층은 제1 층에서 강력하게 연결되지 않은 모듈의 결과를 조합한다.
본 명세서에 개시된 모듈들 사이의 연결을 그루핑하고 프루닝하기 위한 전략은 재귀적으로 적용(예를 들어, 프로세서의 하나의 섹션에 매핑된 RNN의 파티션(division)에 적용되고, 이어서 다시 프로세서의 하나의 서브 섹션(sub sections)에 매핑된 RNN의 서브 파티션에 적용됨)될 수 있고, 동시에 계층 중의 각각의 층 부분의 모듈의 기본 구조를 유지한다.
도3b는 본 개시의 다양한 실시예에 따른, 예시적인 프로세서의 MBSP 머신 모델 계층을 나타낸다. 도3a에서 언급된 바와 같이, MBSP 머신 모델 중의 계층 중의 각각의 레벨은 타깃 프로세서의 파라미터 또는 속성(프로세서 코어의 개수, 통신 대역폭, 동기화 지연과 메모리 용량을 포함함)의 세트의 리스트로 설명할 수 있다. 구체적 프로세서의 세부사항은 프로세서의 작동 설명서 또는 데이터 시트로부터 얻을 수 있다.
도3b의 예시에서, 계층(352~356) 중의 각각의 레벨은, 지연(362)과 대역폭(364)에 관련되는 메모리 용량(360) 및, 서브 레벨 또는 연산 유닛(368)의 세트를 포함한다. 도3b 중의 예시적인 GPU, 코어 및 스레드는 세 개의 상이한 계층의 레벨(352~356) 부분에서 생성된 소자들을 표시하며, 여기서, 레벨(352~356)은 예시적인 프로세서 소자(372~376)의 메모리 계층(370) 중의 세 개의 상이한 레벨(예들 들어, 레벨1~3)에 대응된다. 설명한 실시예에서, GPU는 서브 레벨 코어(354)과 최저 서브 레벨 스레드(356)를 포함하는 최고 레벨(352)이다. 메모리 용량(360)은 바이트로 표시할 수 있다. 프로세서 코어 컴퓨팅 능력은 대응되는 컴퓨팅 회로의 컴퓨팅 속도(368)(예를 들어, 각각의 스레드는 2 GFLOPS/s임)로서 매초마다 부동 소수점 연산으로 표시될 수 있는 파라미터이나, 기타 단위나 또는 도량도 가능하다는 것을 유의하여야 한다. 통신 대역폭(364)은 GB/s로 표시하고, 일 레벨(예를 들어, 스레드 레벨(356)) 내에서 메모리를 방문할 경우의 동기화 지연(362)은 나노초로 표시할 수 있다.
도3b의 실시예에서, 프로세서(372)는 24개의 개별적인 코어(374)의 타깃 프로세서를 포함하고, 각각의 개별적인 코어(374)는 부가적으로 128개의 개별적인 스레드(376)를 더 포함한다. 실시예에서, 계층의 레벨 또는 서브셋(352~356)의 수량은 타깃 프로세서의 메모리 레벨을 기반으로 하여 선택된다. 실시예에서, 이러한 프로세서에 대한 설명을 기반으로 하여, 계층 중의 최저 레벨(356)로부터 최고 레벨(352)까지 규칙적으로 각각의 레벨에 응용된다.
각각의 뉴런이 일정한 량의 메모리와 컴퓨팅을 요구할 경우, 각각의 뉴런의 크기 및 메모리(372~376)에 적합한 뉴런의 수량을 확정하도록, 예를 들어 메모리 용량(360)에 기반하여 뉴런을 표시하는 파라미터를 선택할 수 있다. 통신 코스트는 메모리 중의 모든 뉴런을 방문하는데 소요되는 코스트이고, 모듈 간의 모듈 연결에 내포될 수 있다. 실시예에서, 뉴런 사이의 통신 코스트는 대역폭과 지연으로부터 확정된다. 대역폭(364)은 구체적인 메모리(372~376)에서 연산 유닛이 방문할 수 있는 최대 속도의 도량이다. 대역폭(즉, 방문 속도)으로 구획된 메모리의 총량은 메모리를 방문하는데 소요되는 시간 총량이다. 실시예에서, 이러한 시간은 컴퓨팅을 실행하는데 소요되는 시간 총량과 동일하다. 실시예에서, 통신 코스트와 연산 코스트는 비교되고, 연산 코스트와 거의 동일하게 설계된다. 연산 코스트는 컴퓨팅 속도로부터 확정될 수 있고, 시간을 통하여 표준화되는 바, 그 방법은 모든 뉴런의 수량에 각각의 뉴런 코스트를 곱하여 컴퓨팅 속도를 나누고, 동시에 단위를 표준화하는 것이다(예를 들어, 초단위까지 표준화함).
MBSP 모델을 기반으로 하여, 스레드 그리드(378)중의 각각의 스레드(376)는, RNN중의 모든 뉴런의 일부 서브셋의 층(356)을 포함한다. 실시예에서, 스레드 레벨(356) 중의 뉴런의 모듈은 스레드(376)에 매핑되어, 상이한 모듈이 상이한 스레드(376)에 매핑되도록 한다. 그리드(378) 중의 스레드(376)가 개별적인으로 작동되어, 메모리 중에 저장된 임의의 데이터를 방문하려고 할 경우, 뉴런은 모듈 내의 연결을 통하여 스레드(376) 내에서 통신하고, 방문 그리드(378) 중의 상이한 스레드 중의 뉴런은 모듈 간의 연결을 구성한다. 전자일 경우, 최저 레벨(356)에 있어서, 지연의 값은 6 ns이고, 후자일 경우, 스레드(376)가 서로 함께 작동할 경우, 지연의 값은 프로세서(372)의 계층 중의 다음 더 높은 레벨(여기서, 코어 레벨(354))의 지연의 값인 바, 즉 30 ns이다.
이는 각각의 128개의 스레드(376)가 하나의 코어(372)를 가지고, 대역폭은 128개의 스레드(376) 사이에서 공유하는 경우에서, 대역폭 정보(즉, 모듈 내의 연결에 있어서, 16GB/s이고, 모듈 간의 연결에 있어서는 128GB/s임)와 함께 흔히 사용하여 통신하는데 수요되는 시간을 확정하도록 한다.
실시예에서, 뉴런의 파라미터의 수량은 프루닝을 통하여 감소되는 바, 즉 뉴런 사이의 연결 중의 일부를 제거하여, 파라미터를 평형시키도록 한다. 실시예에서, 모듈 사이의 연결은, 도3a을 참조하여 논술된 제약 중의 하나 또는 다수에 의해 만족되는 방식으로 프루닝된다. 실시예에서, 프루닝은 메모리를 가득 채우고 각각의 규칙과의 준수성을 검사하는 것을 포함하고, 필요시(즉, 너무 많은 뉴런 또는 뉴런 사이의 연결이 존재하면), 연결을 제거한다. 나머지 뉴런과 연결은 타깃 프로세서(372)의 성능을 최적화 배치(예를 들어, 매트릭스의 형식)하는 최종적인 수량이다.
본 기술분야의 통상의 지식을 가진 자는, 프로세서 소자(372~376)의 값은 예시적인 프로세서에 대해 정해진다는 것을 이해할 것이다. 유사하게, 타깃 프로세서(372)에 사용되는 값은 단지 예시적인 것일 뿐이고, 따라서 기타 프로세서와 프로세서 소자는 상이한 값을 가질 수 있다.
본 기술분야의 통상의 지식을 가진 자는, 매트릭스 컴퓨팅 방법은 이어서 처리량과 같은 강화 성능 특성을 강화시키기 위해 사용될 수 있다는 것을 이해할 것이다.
도3c는 본 개시의 다양한 실시예에 따른, 효율적인 RNN층 아키텍처를 형성하는 과정의 흐름도이다. 과정(380)은 설계에 따라, 하나 또는 다수의 타깃 프로세서에서 실행되는 MBSP 모델의 단계(382)로부터 시작된다. 실시예에서, 단계(384)에서, 뉴런은 최저 프로세서 메모리 계층으로부터 최고 프로세서 메모리 계층까지 논리 모듈로 그루핑된다.
단계(386)에서, 예를 들어 RNN의 사전 정의된 조건을 평형시키도록, 모듈 사이에서 뉴런을 연결한다. 예시적인 조건은 바로 RNN의 컴퓨팅 요구, 통신 요구, 동기화 요구와 메모리 용량 요구이다. 평형 결과는, 예를 들어 도5~7에서 논술한 여러가지 방법에 따른, 뉴런 사이의 연결을 프루닝(즉, 제거)하기에 사용된다.
마지막으로, 단계388에서, 평형 과정 기간에 프루닝되지 않은 나머지 연결을 포함하고, 프루닝을 거친 RNN가 하나 또는 다수의 타깃 프로세서에서 실행된다.
도3d는 본 개시의 다양한 실시예에 따른, RNN의 사전 정의된 조건을 평형시키기 위한 과정의 흐름도이다. 과정(390)의 단계392에서, 메모리 계층 중의 기정 레벨에 있어서, 연결은, 기정 프로세서에 대해 선택한, 뉴런을 표시하는 파라미터의 수량이 캐시 또는 메모리 용량에 적합하도록 배치된다.
단계394에서, 연결은 모듈 간의 연결을 실행하는데 소요되는 동기화 코스트가 거의 동일하게 뉴런을 평가하는 연산 코스트와 거의 동일하도록 배치된다.
단계396에서, 지연 요구와 대역폭 요구가 감소되도록, 연결은 모듈 간의 연결과 모듈 내의 연결을 실행하는데 소요되는 통신 코스트가, 뉴런을 평가하는 코스트와 거의 동일하도록 배치된다.
실시예에서, 뉴런의 수량은 카운트될 수 있고, 각각의 뉴런의 코스트로 곱할 수 있으며, 이어서 그 결과는 RNN모델 중의 어느 하나의 제한(예를 들어, 연산 코스트)에 비교된다. 파라미터 제한을 벗어나면, 수량이 역치 제한 이하로 감소될 때까지, 뉴런의 수량은 감소된다. 실시예에서, 이러한 과정은 모든 조건을 만족시킬 때까지, 제한 중의 각각의 및 각각의 레벨(예를 들어, 도3b 중의 모든 레벨)에 대해 반복적으로 진행되고. 예를 들어, 뉴런의 수량은 먼저 적합할 수 있고, 이어서 통신 코스트, 동기화 코스트와 지연이 적합할 수 있다. 후속적인 적합화 과정에서 RNN 모델 중의 뉴런의 수량을 증가시키지 않으므로, 아무런 대가가 없이 임의의 서열을 선택할 수 있다. 본 기술분야의 통상의 지식을 가진 자는, 각각의 조건을 수학식으로 작성될 수 있는 변량으로 한정될 수 있음을 이해할 것이다.
도4는 본 개시의 다양한 실시예에 따른, 특정된 프로세서에서 샐행되는 RNN 중의 모듈 계층 레벨의 개념을 나타낸다. RNN(400)은 칩 디자이너가, 회로 소자를 포함하는 일정한 유형의 물리적 기기(예를 들어 어느 한 유형의 메모리)를 동일한 유형의 기타 기기에 근접하게 위치한 파티션 중에 배치함으로써 칩 상에 위치한 개별적인 회로들 사이에서 메모리 계층을 형성하는 것을 목적으로 하는 사실을 이용한다. 프로세서의 파티션 내의 인근 회로는, 컴퓨팅 기능을 실행하는 유닛(예를 들어, 가산기 또는 곱셈기) 및 캐시와 메모리 기기로 조합될 수 있다.
실시예에서, RNN(400)는, 물리적 기기의 메모리 계층의 레벨에 따라 형성된 계층의 레벨을 포함하되, 여기서, RNN(400)는 상기 물리적 기기에서 작동되도록 설계된다. 예를 들어, 계층 중의 제1 레벨은 계층 중의 최하층을 표시하는 모듈(402)과 모듈(404)로 형성될 수 있고, 각각의 모듈은 한 그룹의 뉴런을 포함한다. 다음 더 높은 레벨, 즉 제2 레벨은, 2 개의 모듈(402)과 모듈(404)을 그루핑된 다른 하나의 모듈(410)로 형성될 수 있다. 모듈(410)의 상기 제2 레벨은 물리적 기기(예컨대 2 개 또는 그 이상의 파티션에 의해 방문되는 한 그룹의 공유 메모리 기기)의 계층 중의 제2 레벨에 대응될 수 있다. 제3 레벨은 물리적 기기의 계층 중의 다른 하나의 레벨에 대응될 수 있는 바, 예를 들어 프로세서의 모든 파티션이 하나의 더 큰 유형의 메모리 기기에 연결된 레벨에 연결된다. 제4 레벨은 물리적 기기의 계층 중의 또 다른 하나의 레벨에 연결되는 바, 예를 들어, 파티션이 더 많은 메모리를 제공하는 다른 하나의 그룹 기기의 레벨에 연결될 수 있는 등이다. 이상적으로, 뉴런 사이의 연결의 계층의 레벨의 수량은 정확하게 물리적 기기 중의 계층의 레벨의 수량에 매칭된다. 그러나, 이는 한정하기 위한 것이 아니다. 계층의 레벨은 어떤 특정된 수량에 한정되는 것이 아님을 이해해야 할 것이다.
실시예에서, 모듈(402)은 상이한 시간 단계에서 그 자체와 통신한다. 모듈(402)과 모듈(404) 중의 내부 통신(예를 들어, 402-404)의 량은, 모듈(410)과 모듈(420)을 크로스하는 통신보다 더 높은 대역폭을 갖는다.
실시예에서, 계층 중의 임의의 기정 레벨에서, 도3a를 참조하여 논술한 제약은 하기와 같은 항의 가이드 라인으로 사용된다. 1) 프로세서의 사용 가능한 메모리 자원에 기반하여, 모듈 크기를 선택하고; 2) 프로세서의 용량에 기반하여(즉, 각각의 시간 단계에서 발송될수 있는 데이터의 량에 기반하여), 모듈 사이에서 전송되는 데이터 량; 및 3) 프로세서의 상이한 부재들 사이의 동기화 지연에 관련되는 코스트, 즉, 하나의 모듈로부터 다른 하나의 모듈로 송신되는 데이터 사이에는 반드시 시간 간격이 존재하므로, 프로세서의 하나의 부분에서 다른 하나의 부분으로 메시지를 송신하는데 소요되는 시간이다. 가이드 라인을 준수하는 것을 통하여, 계층 모듈(hierarchical module)은 더 긴 지연을 견딜 수 있어, RNN(400)이 더 엄격한 지연 요구하에 작동할 수 있도록 한다. 또한, 계층 모듈은 통신량을 감소시키고, 기타 층의 대역폭을 증가시킨다.
도5는 본 개시의 다양한 실시예에 따른, 쾌속 모듈과 저속 모듈로 나뉜 RNN을 나타낸다. 상이한 빈도로 업데이트되는 모듈 사이의 연결을 구비하는 것 외에, 실시예에서, 모듈을 명확하게 쾌속 모듈(554~576)과 상대적인 저속 모듈(504~510)로 글로벌 통신 요구를 저하시킨다. 저속 모듈(504~510)은 쾌속 모듈(502~552)보다 느린 속도로 업데이트되고, 여기서, 쾌속 모듈(502~552)은 비교적 높은 빈도로, 더 많은 데이터를 이용하여 업데이트된다. 실시예에서, 도5에 설명된 바와 같이, 이러한 모듈은, 쾌속 모듈을 포함하는 제1 층(502)과 저속 모듈을 포함하는 제2 층(552) 중에 배치된다. 실시예에서, 2 개 또는 그 이상의 쾌속 모듈(554~576)을 병행으로 작동시켜 연결함으로써, 하나의 쾌속 모듈로부터 다른 하나의 쾌속 모듈까지의 통신 경로를 구축하는 유일한 방식은, 저속 모듈(504~510) 중의 하나를 거치는 것이다.
실시예에서, 쾌속 모듈(554~576)은 빈번하게 업데이트되는 연결로 밀접하게 내부 연결되나, 이어서 저속 모듈(504~510)에만 연결되고 쾌속 모듈(572~576)에는 연결되지 않는다. 저속 모듈(504~510)은 내부적으로 연결되고, 또 기타 쾌속 모듈에 연결되며; 및 모든 연결은 쾌속 모듈(554~576)보다 느린 속도로 업데이트 된다. 직관적으로, 저속 모듈(504~510)은 쾌속 모듈(554~576) 사이의 고급 통신을 허용하는 바, 여기서 쾌속 모듈(554~576)은, 입력 데이터의 거의 독립된 서브셋을 처리한다.
실시예에서, 쾌속 모듈(554~576)은 내부적으로만 통신할 수 있고, 저속 모듈(504~510)은 쾌속 모듈(554~576) 사이의 통신을 조화롭게 한다. 실시예에서, 예시적 소스 쾌속 모듈(exemplary source fast module)(554)과 예시적 목적인 쾌속 모듈(exemplary destination fast module)(560) 사이의 통신을 구축하기 위하여, 주기적인 간격 중에서, 먼저 쾌속 모듈(554)로부터 저속 모듈(506)까지의 통신을 구축한다. 다른 하나의 단계에서, 저속 모듈(506)로부터 목적으로의 쾌속 모듈(560) 사이의 통신을 구축한다.
도6은 본 개시의 다양한 실시예에 따른, 연결의 병렬 프리픽스 패턴을 나타낸다. 네트워크(600)는 모듈의 쾌속과 저속 2 개의 유형을 더 포함한다. 도6에 도시된 바와 같이, 실시예에서, RNN의 통신 요구와 동기화 요구를 감소시키기 위하여, 입력 순서 데이터 시간 단계는 독립된 연속 서브 섹션으로 나뉘어지고, 이들 중의 각각은 각각의 서브 섹션의 중간 결과를 생성하도록 RNN에 의해 처리된다. 그리고 다른 하나의 RNN(더 작은)는 중간 결과 상에서 실행되고, 최종적으로, 처리된 중간 결과를 다른 한 입력으로 이용하여, 또 다른 하나의 RNN는 입력 데이터 서브 섹션에서 다시 실행된다. 개념상에서, 각각의 서브 섹션 중의 시계열 정보는 제1 단계에 의해 압축된 중간 표시로 감소될 수 있다. 각각의 서브 섹션으로부터의 정보는 제2 단계에 의해 효율적으로 조합된다. 마지막으로, 개별적인 서브 섹션은, 모든 시간 단계로부터의 조합의 맥락 관련 정보를 이용하여 처리될 수 있다. 이러한 형식은 프리픽스 트리(prefix tree)의 형식으로부터 계발을 받아 얻은 것이다.
도6에서, 네트워크(600) 중의 통신에 대해 개별적인 시계열 입력(662~672)을 생성하는 입력 시계열(660)은 시간 세그먼트(680~684)로 나뉘어지고, 층을 세크먼트로 분할하는 것이 아니다. 실시예에서, 네트워크(600) 중의 일부 모듈(예를 들어, 모듈(642) 및 모듈(644))은 입력 시계열(660)의 시간 세그먼트(예를 들어, 시간 세그먼트(680)) 내에서 서로 통신을 진행하나, 네트워크(600) 중의 기타 모듈(예를 들어, 모듈(644)과 모듈(646))은 시간 세그먼트(예를 들어, 시간 세그먼트(680)와 세크먼트(682) 사이) 사이에서 절대로 서로 통신하지 않으며, 이로써 빈도를 저하시키고, 나아가 시간 단계 사이의 통신의 데이터량을 감소시키므로, 통신에 소요되는 시간을 감소시킨다. 지연에 영향 주는 그 어떤 부작용도 더 많은 조작들이 동일한 시간에 병행으로 실행됨으로써 보상된다.
도7은 본 개시의 다양한 실시예에 따른, 글로벌 통신을 허용하는 동시에, 지연과 대역폭을 최소화시키는 다른 한 방법을 나타낸다. 네트워크(700)는 제1 층(702) 중의 서브 모듈(710~716), 미러 이미지 제2 층(760) 중의 서브 모듈(762~768), 치환 모듈(750), 입력층(미도시), 및 출력층(790)을 포함한다.
조작에 있어서, 층(702) 중의 모듈(710~716)과 층(760) 중의 모듈(762~768)은 선택적으로 치환 모듈(752)을 통하여 통신한다. 실시예에서, 모듈(710~716)은 모듈(762~768)과는 별도로 독립적으로 작동하고, 상대적으로 더 빠른 속도로 작동한다. 각각의 모듈(710)은 시계열 중의 제1 시간 단계에서 예를 들어 4개의 출력을 생성함으로써, 층(702) 중의 모든 모듈(710~716)이 매 시간 단계에서 총 16개의 출력(730)을 생성한다. 상기 통신은 프로세서의 상이한 국부적인 부분에서 1차 실행될 수 있다. 모든 출력(730)을 획득한 후, 시간 단계 사이의 2차에서, 모듈(710~716)의 모든 연산된 사용 가능한 출력(730)을 셔플링(Shuffling)하고, 이어서 1:1로 모듈(762~768)의 입력에 복제한다.
실시예에서, 치환 모듈(752)은 선택 및 출력을 혼합함으로써 이러한 16개의 출력의 서열을 재배치한다. 예를 들어, 모듈(710) 중의 뉴런 0, 1, 2 및 3의 출력(730)은 각각 모듈(770)의 출력(780)(예를 들어, 12, 13, 8 및 9) 속으로 매핑될 수 있고, 이로써 2 개의 층(702 및 760) 중의 모듈 사이의 통신 패턴을 변경한다. 치환 모듈(750)은 자유롭게 선택될 수 있고, 임의의 수량의 출력을 재배치할 수 있음을 이해하여야 한다. 실시예에서, 1차 과정은 전체 시계열에 관련되지 않으므로, 프로세서로의 매핑이 시작되기 전에 먼저 모든 출력(730)을 획득해야 하는 것은 아니다.
실시예에서, 기타 또는 부가적인 요인을 고려할 수 있음을 유의하여야 한다. 이하는 MBSP-RNN을 설계할 경우 고려되는 부가적인 요인들이다.
각각의 입력이 계층 중의 임의의 레벨에서 단일 모듈에 의해 처리되도록, MBSP-RNN층으로의 입력 활성화는 모듈 사이에서 균일하게 구획된다.
MBSP-RNN층은 시스템 중의 프로세서 코어를 충분히 예약(subscribe)하거나 또는 심지어 더 많이 예약하도록 충분한 모듈을 구비하여야 한다. 이는 층이 충분한 병렬 타스크를 구비하도록 확보함으로써, 모든 프로세서 자원을 이용할 수 있도록 한다.
관련된 연결의 웨이트가 프로세서 메모리 계층의 대응되는 레벨 중에 저장될 수 없는 것을 피면하도록, 계층의 임의의 레벨에서의 MBSP-RNN 모듈은 과하게 많은 메모리를 사용하지 말아야 한다.
계층의 비교적 낮은 레벨에서의 뉴런은 더 밀집하게 연결되어야 하고, 연결은 지연이 없이 높은 빈도로 업데이트되어야 한다. 계층을 따라 우로 행진하고, 뉴런은 더 성기게 연결되며, 또한 지연을 증가시키고, 비교적 낮은 빈도로 업데이트된다. 계층의 레벨의 정확한 수량 및 연결, 지연과 업데이트 빈도는 RNN이 매핑되는 프로세서의 MBSP 파라미터를 이용하여 확정된다. 구체적으로, 연산 코스트, 통신 코스트 및 동기화 코스트가 거의 동일하도록 값을 선택해야 한다.
RNN의 주요 온칩 메모리 요구는 각각의 연결의 웨이트 파라미터에 대응된다. 네트워크를 평가하는 연산 부재와 통신 부재를 평형시키기 위하여, 오프칩(off-chip) 리부터 로딩된 각각의 웨이트 파라미터는 여러번 재사용되어야 한다. 웨이트 파라미터를 재사용하기 위한 세 개의 기본 전략은 시간에 따른 배칭, 샘플에 따른 배칭, 및 연결에 따른 배칭을 포함한다.
오직 비교적 낮은 빈도 또는 지연 하에서 모듈의 출력을 기타 모듈에 발송하는 능력은 다수의 시간 단계가 메모리로부터 상기 모듈에 연관된 웨이트를 다시 로딩하지 않고서 처리되는 것을 허용한다. 구체적으로, RNN가 계층 중의 상기 레벨 상에서 너무 많은 모듈들을 포함하여 온칩 메모리에 적합하지 않더라도, 동기화(각 시간 단계보다 더 낮은 빈도로 발생) 사이의 시간 단계는 웨이트를 재로딩하지 않고서 기정 모듈에 의해 처리될 수 있다. 하나의 모듈은 동기화 포인트에 닿을 때까지 평가될수 있고, 동기화 포인트에서, 프로세서는 다른 하나의 모듈로 전환될 수 있다. 동일한 효과는 지연 후의 동기화의 연결에 응용된다. 하나의 모듈은 현재 시간 단계부터 다음 시간 일자(time-day)까지 진행될 수 있고, 해당 다음 시간 일자에서, 프로세서는 동일한 범위의 시간 단계를 거쳐 평가를 진행하는 다른 하나의 모듈로 전환될 수 있다.
웨이트 파라미터를 재사용하기 위한 다른 하나의 전략은 다수의 독립적인 입력 서열에 대하여 동일한 시간 단계를 동시에 평가하는 것이다. 상기 방법은 특히 RNN의 트레이닝에 효과적이며, 이는 많은 최적화 알고리즘들이 일정한 정도의 입력에 따른 배칭을 요구하기 때문이다. 그러나, 상기 전략은 트레이닝된 네트워크를 이용하여 실시간으로 타스크를 실행할 경우 그다지 효율적이 못하며, 이는 상기 방법이 다수의 입력 서열이 사용 가능하다고 가정하나, 이러한 다수의 입력 서열은 일부 경우에 사용 불가능하기 때문이다. 예를 들어, 신경망이 모바일 기기에서 음성 인식을 수행하는 것은 일반적으로 한 번에 한 사용자의 대화만 지원한다.
마지막으로, 다수의 연결에서 동일한 웨이트 파라미터를 재사용할 수 있으며, 이는 콘벌루션 신경망 층(convolutional neural network layer)과 유사하다. 이러한 경우에 있어서, 모듈은 전부 동일한 웨이트를 공유하는 상이한 기타 모듈로부터 여러 입력을 구비할 수 있다. 이는 동시에 기정 수량의 연결을 지원하기에 필요한 모듈의 메모리 점용을 감소시키고, 각각의 웨이트가 각각의 시간 단계에서 모듈에 의해 사용되는 회수를 증가시킨다.
본 명세서 중의 예시 및 실시예는 예시적인 것일 뿐, 본 개시의 범위를 한정하려는 것이 아님을 본 기술분야의 통상의 지식을 가진 자는 이해할 것이다. 본 기술분야의 통상의 기술자는 본 명세서을 열독한 후, 본 기술분야의 통상의 지식을 가진 자에게 자명한 본 발명에 대한 모든 교체, 강화, 균등물, 조합 및 개선은 본 개시의 참된 정신과 범위내에 포함되어야 한다.

Claims (20)

  1. 순환 신경망(RNN) 아키텍처를 컴퓨팅 기기의 프로세서의 마이크로 아키텍처(microarchitecture)에 매핑시킴으로써 상기 컴퓨팅 기기의 컴퓨팅 성능을 개선하는 방법에 있어서, 상기 컴퓨팅 기기의 프로세서가
    상기 프로세서의 마이크로 아키텍처의 설명에 기반하여, 메모리의 레벨에 연관된 값을 획득하는 단계;
    상기 RNN 아키텍처의 계층 구조의 최저 레벨로부터 최고 레벨에 있어서, 각각의 레벨은, 상기 프로세서의 마이크로 아키텍처에 연관되고, 메모리 용량, 프로세서 코어의 개수, 대역폭, 연산 대역폭 및 지연 중의 적어도 2 개에 의해 정의되는 단계;
    RNN의 뉴런을 모듈들로 그룹화하는 단계 - 각각의 모듈은 상기 RNN 아키텍처 내의 RNN 층의 논리 유닛을 나타냄(representing) - ; 및
    상기 모듈이, 메모리 용량, 프로세서 코어의 개수, 대역폭, 연산 대역폭 및 지연 중의 적어도 2 개에 관련되는, 상기 RNN 아키텍처의 사전 정의된 조건을 만족시키도록 상기 모듈 사이의 연결을 배치하는 단계;를 포함하는 것을 특징으로 하는 방법.
  2. 제1항에 있어서,
    상기 연결을 배치하는 단계는, 상기 컴퓨팅 기기의 프로세서가 상기 사전 정의된 조건을 평형시키도록, 상기 모듈 사이의 양방향 연결을 프루닝(pruning)하는 단계를 포함하는 것을 특징으로 하는 방법.
  3. 제1항에 있어서,
    상기 사전 정의된 조건은 프로세서 메모리의 각각의 레벨에 있어서 상기 RNN의 뉴런을 표시하는 파라미터가 상기 프로세서 메모리의 용량에 적합하도록 하는 것을 포함하는 것을 특징으로 하는 방법.
  4. 제1항에 있어서,
    상기 사전 정의된 조건은 프로세서 메모리의 각각의 레벨에 있어서 모듈 간의 연결에 관련되는 동기화 코스트는 상기 RNN의 뉴런에 대해 평가를 진행하는 연산 코스트와 동일하다는 것을 포함하는 것을 특징으로 하는 방법.
  5. 제1항에 있어서,
    상기 사전 정의된 조건은 프로세서 메모리의 각각의 레벨에 있어서 모듈내의 연결 및 모듈 간의 연결에 관련되는 대역폭 코스트와, 지연 코스트 중의 적어도 하나가 상기 RNN의 뉴런에 대해 평가를 진행하는 연산 코스트와 동일하다는 것을 포함하는 것을 특징으로 하는 방법.
  6. 제1항에 있어서,
    상기 연결을 배치하는 단계는, 상기 컴퓨팅 기기의 프로세서가 통신 대역폭을 감소시켜, 온칩(on-chip) 메모리에 로딩된 상기 모듈의 모든 웨이트(weight)가 모든 시간 단계에서 재사용 가능하도록, 다음 시간 단계(next timestep)에서 하나의 모듈의 출력을 기타 모듈의 입력의 서브셋(subset)에 연결함으로써 스파스 연결(sparse connections)을 형성하는 단계를 포함하는 것을 특징으로 하는 방법.
  7. 제1항에 있어서,
    상기 컴퓨팅 기기의 프로세서가 지연에 따라 모듈 사이의 연결을 업데이트하는 단계를 더 포함하되, 상기 지연은 상기 RNN의 뉴런들이 모듈 사이의 통신 대역폭 및 동기화 성능 중의 적어도 하나를 개선하도록 동기화를 실행하여야 하는 시간을 증가시키는 것을 특징으로 하는 방법.
  8. 제1항에 있어서,
    상기 컴퓨팅 기기의 프로세서가 동일한 층 내에서,
    각각의 시간 세그먼트에 대해 중간 결과를 생성하도록, 시계열(time series) 입력을, 상기 RNN의 제1 부분에 의해 처리되는 독립적이고 연속된 시간 세그먼트로 구획하는 단계;
    상기 중간 결과를 바탕으로 상기 RNN의 제2 부분을 실행하는 단계; 및
    처리된 중간 결과를 이용하여 입력 데이터 서브 섹션(sub sections) 상에서 상기 RNN의 제3 부분을 실행하는 단계;를 더 포함하는 것을 특징으로 하는 방법.
  9. 제1항에 있어서,
    상기 컴퓨팅 기기의 프로세서가
    제1 RNN층에 위치한 쾌속 모듈 중의 개별적인 뉴런을 제2 RNN층에 위치한 저속 모듈 중의 개별적인 뉴런에 연결시키는 단계;
    각각의 층의 각각의 모듈을 상기 각각의 층의 기타 모듈에 연결시키는 단계; 및
    모듈 간의 연결을 통해 상기 쾌속 모듈을 상기 저속 모듈에 연결시키는 단계;를 포함하는 것을 특징으로 하는 방법.
  10. 컴퓨팅 프로세서 마이크로 아키텍처에서 작동하여 컴퓨팅 기기의 컴퓨팅 성능을 개선하도록 설계된 순환 신경망(RNN) 아키텍처를 가진 데이터를 기록한 컴퓨터로 읽을 수 있는 기록 매체에 있어서, 상기 RNN 아키텍처는,
    RNN의 뉴런;
    상기 RNN의 뉴런을 포함하는 모듈 - 상기 모듈은 논리 유닛을 나타내고 프로세서를 포함한 개별적인 컴퓨팅 자원의 계층 구조를 시뮬레이션함으로써 계층 구조의 각 레벨이 프로세서 메모리의 적어도 하나의 레벨에 연관되고 제1 RNN층 및 제2 RNN층을 포함하도록, 프로세서 마이크로 아키텍처의 계층 구조의 레벨에 따라 배치되며, 상기 계층 구조의 각 레벨은 저장 용량, 프로세서 코어의 개수, 메모리 대역폭, 연산 대역폭 및 메모리 지연 중의 적어도 2 개에 의해 정의됨 -; 및
    상기 RNN 아키텍처의 사전 정의된 조건을 만족시키도록 상기 제1 RNN층과 상기 제2 RNN층 사이에서 통신이 가능하도록 하는 상기 모듈 간의 양방향 연결을 포함하되, 상기 RNN 아키텍처의 사전 정의된 조건은 저장 용량, 프로세서 코어의 개수, 대역폭, 연산 대역폭 및 지연 중의 적어도 2 개에 관련되는 것을 특징으로 하는 RNN 아키텍처를 가진 데이터를 기록한 컴퓨터로 읽을 수 있는 기록 매체.
  11. 제10항에 있어서,
    상기 RNN 아키텍처가 컴퓨팅, 통신, 동기화 조작 중의 적어도 하나를 실행하는데 소요되는 시간을 평형시키도록, 모듈 사이의 동기화 빈도와 연결의 양은, 상기 프로세서의 멀티 벌크 동기 병렬(MBSP) 파라미터에 따라 설정되는 것을 특징으로 하는 RNN 아키텍처를 가진 데이터를 기록한 컴퓨터로 읽을 수 있는 기록 매체.
  12. 제11항에 있어서,
    상기 계층 구조의 동일한 레벨에서, 데이터 교환량을 감소시키기 위해 저감된 속률로 상기 모듈 간의 연결을 업데이트하는 방식으로, 모듈의 출력이 비교적 낮은 빈도로 다음 모듈의 입력으로 전송되는 것을 특징으로 하는 RNN 아키텍처를 가진 데이터를 기록한 컴퓨터로 읽을 수 있는 기록 매체.
  13. 제12항에 있어서,
    모듈 간의 연결이 기정된 수량의 시간 단계에서 적용되도록, 상기 출력의 전송이 상기 기정된 수량의 시간 단계에 의해 지연되는 것을 특징으로 하는 RNN 아키텍처를 가진 데이터를 기록한 컴퓨터로 읽을 수 있는 기록 매체.
  14. 제11항에 있어서,
    연속된 시간 세그먼트 사이에서 모듈은 서로 통신하지 않음으로써, 시간 단계 사이에서 전송된 데이터의 빈도와 수량을 저감시켜 통신 시간을 감소시키며, 병렬 조작(parallel operations)의 수량을 증가시키도록 하는 것을 특징으로 하는 RNN 아키텍처를 가진 데이터를 기록한 컴퓨터로 읽을 수 있는 기록 매체.
  15. 제10항에 있어서,
    쾌속 모듈을 더 포함하되, 상기 쾌속 모듈은 저속 모듈의 연결보다 더 빈번하게 업데이트되는 연결을 포함하고, 병행으로 동작하며, 쾌속 모듈 사이의 통신을 증가시키도록 상기 저속 모듈을 통해 서로 통신하는 것을 특징으로 하는 RNN 아키텍처를 가진 데이터를 기록한 컴퓨터로 읽을 수 있는 기록 매체.
  16. 제15항에 있어서,
    상기 쾌속 모듈은 내부적으로 밀집되게 연결되고, 입력 데이터의 독립 서브셋을 처리하는 것을 특징으로 하는 RNN 아키텍처를 가진 데이터를 기록한 컴퓨터로 읽을 수 있는 기록 매체.
  17. 제15항에 있어서,
    상기 쾌속 모듈과 상기 저속 모듈은 치환 모듈을 통해 선택적으로 통신하되, 상기 치환 모듈은 쾌속 모듈 중의 뉴런의 출력을 저속 모듈의 뉴런의 출력에 매핑시킴으로써, 두개의 층 중의 모듈 사이의 통신 패턴을 변경시키도록 상기 쾌속 모듈의 연산 출력의 순서를 재배치하는 것을 특징으로 하는 RNN 아키텍처를 가진 데이터를 기록한 컴퓨터로 읽을 수 있는 기록 매체.
  18. 제10항에 있어서,
    상기 RNN 아키텍처를 확장시켜 상대적으로 더 복잡한 함수를 모델링하도록, 한 층 중의 입력 서열로부터 변환된 출력 서열을 다른 한 층의 입력 서열로 함으로써, 층들을 적층시키는 것을 특징으로 하는 RNN 아키텍처를 가진 데이터를 기록한 컴퓨터로 읽을 수 있는 기록 매체.
  19. 컴퓨팅 기기의 프로세서의 마이크로 아키텍처 상에서 RNN 아키텍처를 작동시켜, 상기 컴퓨팅 기기의 컴퓨팅 성능을 개선하는 방법에 있어서, 상기 컴퓨팅 기기의 프로세서가,
    프로세서의 마이크로 아키텍처의 설명을 바탕으로 하는 메모리 레벨에 연관된 값에 기반하여, RNN 아키텍처의 계층 구조의 최저 레벨로부터 최고 레벨에 있어서, 각각의 레벨은 상기 프로세서 마이크로 아키텍처에 연관되고, 저장 용량, 프로세서 코어의 개수, 대역폭, 연산 대역폭 및 지연 중의 적어도 2 개에 의해 정의되는 단계;
    RNN의 뉴런을 모듈들로 그룹화하는 단계 - 각각의 모듈은 상기 RNN 아키텍처 내의 RNN 층의 논리 유닛을 나타냄(representing) - ; 및
    상기 모듈이, 메모리 용량, 프로세서 코어의 개수, 대역폭, 연산 대역폭 및 지연 중의 적어도 2 개에 관련되는, 상기 RNN 아키텍처의 사전 정의된 조건을 만족시키도록 상기 모듈 사이의 연결을 배치하는 단계;를 포함하는 것을 특징으로 하는 방법.
  20. 제19항에 있어서,
    상기 연결을 배치하는 단계는, 상기 컴퓨팅 기기의 프로세서가 상기 사전 정의된 조건을 평형시키도록, 상기 모듈 사이의 양방향 연결을 프루닝하는 단계를 포함하는 것을 특징으로 하는 방법.
KR1020160167747A 2015-12-11 2016-12-09 멀티 코어 최적화된 순환 신경망을 위한 시스템 및 방법 KR101959376B1 (ko)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US201562266515P 2015-12-11 2015-12-11
US62/266,515 2015-12-11
US15/091,413 2016-04-05
US15/091,413 US10832120B2 (en) 2015-12-11 2016-04-05 Systems and methods for a multi-core optimized recurrent neural network

Publications (1)

Publication Number Publication Date
KR101959376B1 true KR101959376B1 (ko) 2019-07-04

Family

ID=57530591

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020160167747A KR101959376B1 (ko) 2015-12-11 2016-12-09 멀티 코어 최적화된 순환 신경망을 위한 시스템 및 방법

Country Status (5)

Country Link
US (1) US10832120B2 (ko)
EP (1) EP3179415B1 (ko)
JP (1) JP6348561B2 (ko)
KR (1) KR101959376B1 (ko)
CN (1) CN106875013B (ko)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102149495B1 (ko) * 2019-08-19 2020-08-28 고려대학교 산학협력단 환경 예측 모델의 훈련지표 최적화 장치 및 그 동작방법
WO2021055007A1 (en) * 2019-09-16 2021-03-25 Nec Laboratories America, Inc. Efficient and scalable enclave protection for machine learning programs
WO2023277585A1 (ko) * 2021-06-29 2023-01-05 삼성전자 주식회사 신경망을 통해 이미지를 처리하는 방법 및 그 전자 장치
WO2023128009A1 (ko) * 2021-12-30 2023-07-06 리벨리온 주식회사 뉴럴 프로세싱 장치 및 그의 동기화 방법

Families Citing this family (44)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20170178346A1 (en) * 2015-12-16 2017-06-22 High School Cube, Llc Neural network architecture for analyzing video data
WO2017136070A1 (en) * 2016-02-03 2017-08-10 Google Inc. Compressed recurrent neural network models
CN107203807B (zh) * 2016-03-16 2020-10-02 中国科学院计算技术研究所 神经网络加速器的片上缓存带宽均衡方法、系统及其装置
US10635969B2 (en) * 2016-10-14 2020-04-28 International Business Machines Corporation Core utilization optimization by dividing computational blocks across cores
WO2018084576A1 (en) 2016-11-03 2018-05-11 Samsung Electronics Co., Ltd. Electronic device and controlling method thereof
EP3657403A1 (en) * 2017-06-13 2020-05-27 Shanghai Cambricon Information Technology Co., Ltd Computing device and method
US11276071B2 (en) * 2017-08-31 2022-03-15 Paypal, Inc. Unified artificial intelligence model for multiple customer value variable prediction
WO2019078885A1 (en) * 2017-10-20 2019-04-25 Google Llc PARALLEL EXECUTION OF OPERATIONS OF ACTIVATION UNITS WITH RELEASE
GB2569098B (en) * 2017-10-20 2020-01-08 Graphcore Ltd Combining states of multiple threads in a multi-threaded processor
US11521046B2 (en) 2017-11-08 2022-12-06 Samsung Electronics Co., Ltd. Time-delayed convolutions for neural network device and method
US10417304B2 (en) 2017-12-15 2019-09-17 International Business Machines Corporation Dual phase matrix-vector multiplication system
CN109992198B (zh) * 2017-12-29 2020-07-24 深圳云天励飞技术有限公司 神经网络的数据传输方法及相关产品
CN108196882A (zh) * 2017-12-29 2018-06-22 普强信息技术(北京)有限公司 一种针对神经网络计算的加速方法及装置
JP6574004B2 (ja) * 2018-01-25 2019-09-11 株式会社モルフォ 計算手法決定システム、計算手法決定装置、処理装置、計算手法決定方法、処理方法、計算手法決定プログラム、及び、処理プログラム
US10657426B2 (en) * 2018-01-25 2020-05-19 Samsung Electronics Co., Ltd. Accelerating long short-term memory networks via selective pruning
EP3701351A4 (en) * 2018-01-30 2021-01-27 D5Ai Llc SELF-ORGANIZING PARTIALLY ORGANIZED NETWORKS
CN108647045B (zh) * 2018-03-20 2021-10-01 科大讯飞股份有限公司 激活函数的实现方法及装置、存储介质、电子设备
CN108564168B (zh) * 2018-04-03 2021-03-09 中国科学院计算技术研究所 一种对支持多精度卷积神经网络处理器的设计方法
US11568237B2 (en) 2018-05-10 2023-01-31 Samsung Electronics Co., Ltd. Electronic apparatus for compressing recurrent neural network and method thereof
RU2702978C1 (ru) * 2018-10-15 2019-10-14 Самсунг Электроникс Ко., Лтд. Байесовское разреживание рекуррентных нейронных сетей
US11847553B2 (en) * 2018-06-14 2023-12-19 International Business Machines Corporation Parallel computational architecture with reconfigurable core-level and vector-level parallelism
KR102607880B1 (ko) * 2018-06-19 2023-11-29 삼성전자주식회사 전자 장치 및 그의 제어 방법
US11663461B2 (en) 2018-07-05 2023-05-30 International Business Machines Corporation Instruction distribution in an array of neural network cores
KR20200013162A (ko) * 2018-07-19 2020-02-06 삼성전자주식회사 전자 장치 및 그의 제어 방법
US11315020B2 (en) * 2018-09-24 2022-04-26 International Business Machines Corporation Optimized partitioning of multi-layer networks in core-based neurosynaptic architectures
CN109409513B (zh) * 2018-10-10 2021-03-12 广州市百果园信息技术有限公司 一种基于神经网络的任务处理方法及相关设备
CN112955907A (zh) * 2018-10-30 2021-06-11 谷歌有限责任公司 量化训练的长短期记忆神经网络
US11599779B2 (en) * 2018-11-15 2023-03-07 Arizona Board Of Regents On Behalf Of Arizona State University Neural network circuitry having approximate multiplier units
KR20200069901A (ko) 2018-12-07 2020-06-17 삼성전자주식회사 뉴럴 네트워크를 분할하는 방법 및 뉴로모픽 장치
WO2020149511A1 (ko) * 2019-01-17 2020-07-23 삼성전자주식회사 전자 장치 및 이의 제어 방법
CN109767622B (zh) * 2019-02-14 2021-12-17 重庆邮电大学 面向卡口相似性划分和循环神经网络的交通流量预测方法
US11520592B2 (en) 2019-07-15 2022-12-06 Microsoft Technology Licensing, Llc Executing large artificial intelligence models on memory-constrained devices
US11436019B2 (en) * 2019-07-15 2022-09-06 Microsoft Technology Licensing, Llc Data parallelism in distributed training of artificial intelligence models
US11354579B2 (en) 2019-07-15 2022-06-07 Microsoft Technology Licensing, Llc Dynamic multi-layer execution for artificial intelligence modeling
CN112446483B (zh) * 2019-08-30 2024-04-23 阿里巴巴集团控股有限公司 一种基于机器学习的计算方法和计算单元
CN111047017B (zh) * 2019-12-18 2023-06-23 北京安兔兔科技有限公司 一种神经网络算法的评估方法、装置及电子设备
CN111860818B (zh) * 2020-07-23 2022-11-08 哈尔滨工业大学(威海) 基于智能芯片的som神经网络算法处理方法
US20220111860A1 (en) * 2020-10-14 2022-04-14 Volkswagen Aktiengesellschaft Detecting objects and determining behaviors of objects
CN112561056A (zh) * 2020-12-07 2021-03-26 北京百度网讯科技有限公司 神经网络模型的训练方法、装置、电子设备和存储介质
WO2021178981A1 (en) * 2021-05-03 2021-09-10 Innopeak Technology, Inc. Hardware-friendly multi-model compression of neural networks
CN113377546B (zh) * 2021-07-12 2022-02-01 中科弘云科技(北京)有限公司 通信避免方法、装置、电子设备和存储介质
WO2023053222A1 (ja) * 2021-09-28 2023-04-06 日本電気株式会社 データ変換装置、データ変換方法、及びプログラムが格納された非一時的なコンピュータ可読媒体
CN113884857B (zh) * 2021-09-29 2024-03-08 上海阵量智能科技有限公司 芯片、芯片压力测试方法、装置、电子设备及存储介质
CN114154616B (zh) * 2021-10-15 2023-08-18 西安交通大学 一种rnn并行模型及其在多核cpu上的实现方法及系统

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20130311412A1 (en) * 2011-02-09 2013-11-21 The Trustees Of Columbia University In The City Of New York Encoding and decoding machine with recurrent neural networks

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH05159087A (ja) * 1991-12-06 1993-06-25 Matsushita Electric Ind Co Ltd ニューロプロセッサ
JP2007299366A (ja) 2006-01-31 2007-11-15 Sony Corp 学習装置および学習方法、認識装置および認識方法、生成装置および生成方法、認識生成装置および認識生成方法、並びにプログラム
JP2009099008A (ja) * 2007-10-18 2009-05-07 Seiko Epson Corp 並列演算装置および並列演算方法
CN101308551B (zh) 2008-05-05 2010-06-02 西安理工大学 Ls-svm分类与回归学习递归神经网络硬件电路及实现方法
CN103023839B (zh) 2012-12-04 2016-12-28 温州大学 基于输出反馈偏置型复连续反馈神经网络结构的无线光通信系统盲均衡方法
US20160328644A1 (en) * 2015-05-08 2016-11-10 Qualcomm Incorporated Adaptive selection of artificial neural networks

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20130311412A1 (en) * 2011-02-09 2013-11-21 The Trustees Of Columbia University In The City Of New York Encoding and decoding machine with recurrent neural networks

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
Huqqani, Altaf Ahmad, et al. Multicore and gpu parallelization of neural networks for face recognition. Procedia Computer Science 18. 2013. *
Valiant, Leslie G. A bridging model for multi-core computing. Journal of Computer and System Sciences 77.1. 2011. *

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102149495B1 (ko) * 2019-08-19 2020-08-28 고려대학교 산학협력단 환경 예측 모델의 훈련지표 최적화 장치 및 그 동작방법
WO2021034106A1 (ko) * 2019-08-19 2021-02-25 고려대학교 산학협력단 환경 예측 모델의 훈련지표 최적화 장치 및 그 동작방법
WO2021055007A1 (en) * 2019-09-16 2021-03-25 Nec Laboratories America, Inc. Efficient and scalable enclave protection for machine learning programs
WO2023277585A1 (ko) * 2021-06-29 2023-01-05 삼성전자 주식회사 신경망을 통해 이미지를 처리하는 방법 및 그 전자 장치
WO2023128009A1 (ko) * 2021-12-30 2023-07-06 리벨리온 주식회사 뉴럴 프로세싱 장치 및 그의 동기화 방법

Also Published As

Publication number Publication date
US10832120B2 (en) 2020-11-10
CN106875013A (zh) 2017-06-20
JP2017107568A (ja) 2017-06-15
EP3179415B1 (en) 2019-09-18
CN106875013B (zh) 2020-06-02
US20170169326A1 (en) 2017-06-15
EP3179415A1 (en) 2017-06-14
JP6348561B2 (ja) 2018-06-27

Similar Documents

Publication Publication Date Title
KR101959376B1 (ko) 멀티 코어 최적화된 순환 신경망을 위한 시스템 및 방법
EP3480749B1 (en) Exploiting sparsity in a neural network
US11500959B2 (en) Multiple output fusion for operations performed in a multi-dimensional array of processing units
Yudanov et al. GPU-based simulation of spiking neural networks with real-time performance & high accuracy
KR102572757B1 (ko) 집약성을 개선하기 위한 머신 학습 모델들의 수정
GB2568102A (en) Exploiting sparsity in a neural network
CN103870335B (zh) 用于信号流编程的数字信号处理器代码的高效资源管理的系统和方法
CN113139648A (zh) 执行神经网络模型的pim架构的数据布局优化
Hurkat et al. VIP: A versatile inference processor
WO2021069211A1 (en) Method of and apparatus for processing data of a deep neural network
Siddavaatam et al. Grey wolf optimizer driven design space exploration: a novel framework for multi-objective trade-off in architectural synthesis
CN112732638B (zh) 基于ctpn网络的异构加速系统及方法
CN111506520B (zh) 一种地址生成的方法、相关装置以及存储介质
EP3742354A1 (en) Information processing apparatus, information processing method, and program
JP2020080048A (ja) 並列処理装置およびプログラム
US20230196124A1 (en) Runtime predictors for neural network computation reduction
Zeng et al. A Performance-driven Neural Network Compiler for Multi-core Computing-In-Memory Accelerator
Costa Customized Hardware for Long-Short Term Memory Networks in Embedded Systems
Kate A tensor processing unit design for FPGA benchmarking
Lopez et al. A Memory Layout for Dynamically Routed Capsule Layers
CN115952844A (zh) 用于提高神经网络应用中硬件加速器性能的系统和方法
Gay Optimization Tools and Techniques for Configurable Digital Signal Processor Synthesis