KR20230003443A - 특수 목적 뉴럴 네트워크 트레이닝 칩 - Google Patents

특수 목적 뉴럴 네트워크 트레이닝 칩 Download PDF

Info

Publication number
KR20230003443A
KR20230003443A KR1020227045015A KR20227045015A KR20230003443A KR 20230003443 A KR20230003443 A KR 20230003443A KR 1020227045015 A KR1020227045015 A KR 1020227045015A KR 20227045015 A KR20227045015 A KR 20227045015A KR 20230003443 A KR20230003443 A KR 20230003443A
Authority
KR
South Korea
Prior art keywords
vector
matrix
activation inputs
dimensional
special
Prior art date
Application number
KR1020227045015A
Other languages
English (en)
Other versions
KR102661910B1 (ko
Inventor
토마스 노리
올리버 테맘
앤드류 에버리트 펠프스
노먼 폴 주피
Original Assignee
구글 엘엘씨
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 구글 엘엘씨 filed Critical 구글 엘엘씨
Priority to KR1020247013765A priority Critical patent/KR20240056801A/ko
Publication of KR20230003443A publication Critical patent/KR20230003443A/ko
Application granted granted Critical
Publication of KR102661910B1 publication Critical patent/KR102661910B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • G06F17/10Complex mathematical operations
    • G06F17/16Matrix or vector computation, e.g. matrix-matrix or matrix-vector multiplication, matrix factorization
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/3001Arithmetic instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30032Movement instructions, e.g. MOVE, SHIFT, ROTATE, SHUFFLE
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30036Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30098Register arrangements
    • G06F9/30141Implementation provisions of register files, e.g. ports
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
    • G06F9/3887Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled by a single instruction for multiple data lanes [SIMD]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/06Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
    • G06N3/063Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods
    • G06N3/084Backpropagation, e.g. using gradient descent
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Mathematical Physics (AREA)
  • Data Mining & Analysis (AREA)
  • Health & Medical Sciences (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Biomedical Technology (AREA)
  • Biophysics (AREA)
  • Computing Systems (AREA)
  • Pure & Applied Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Optimization (AREA)
  • Evolutionary Computation (AREA)
  • Molecular Biology (AREA)
  • General Health & Medical Sciences (AREA)
  • Artificial Intelligence (AREA)
  • Computational Linguistics (AREA)
  • Neurology (AREA)
  • Databases & Information Systems (AREA)
  • Algebra (AREA)
  • Advance Control (AREA)
  • Complex Calculations (AREA)
  • Executing Machine-Instructions (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Computer Hardware Design (AREA)
  • Measuring Pulse, Heart Rate, Blood Pressure Or Blood Flow (AREA)
  • Rehabilitation Tools (AREA)
  • Nonlinear Science (AREA)

Abstract

뉴럴 네트워크들을 트레이닝시키기 위한 특수 목적 하드웨어 칩을 포함하는 장치, 시스템들, 및 방법들이 설명된다. 특수-목적 하드웨어 칩은 특수-목적 하드웨어 칩의 컴퓨테이션 연산을 제어하도록 구성된 스칼라 프로세서를 포함할 수 있다. 칩은 또한, 모두 단일 명령 다중-데이터 방식으로 동일한 명령을 실행하고 벡터 프로세서의 로드 및 저장 명령들을 통해 서로 통신하는 벡터 프로세싱 유닛들의 2차원 어레이를 갖도록 구성된 벡터 프로세서를 포함할 수 있다. 칩은 부가적으로, 곱셈 결과를 획득하기 위해 적어도 하나의 2차원 행렬을 제2의 1차원 벡터 또는 2차원 행렬과 곱하도록 구성되는, 벡터 프로세서에 커플링된 행렬 곱셈 유닛을 포함할 수 있다.

Description

특수 목적 뉴럴 네트워크 트레이닝 칩{SPECIAL PURPOSE NEURAL NETWORK TRAINING CHIP}
본 명세서는 하드웨어에서 뉴럴 네트워크 컴퓨테이션(computation)을 수행하는 것에 관한 것이다.
뉴럴 네트워크들은, 수신된 입력에 대한 출력, 예컨대, 분류를 생성하기 위해 모델들의 하나 이상의 계층들을 각각 이용하는 머신 러닝 모델(machine learning model)들이다. 일부 뉴럴 네트워크들은 출력 계층에 부가하여 하나 이상의 은닉 계층((hidden layer)들을 포함한다. 각각의 은닉 계층의 출력은 네트워크의 다음의 계층, 즉 네트워크의 다음의 은닉 계층 또는 출력 계층에 대한 입력으로서 사용된다. 네트워크의 각각의 계층은 파라미터들의 각각의 세트의 현재 값들에 따라, 수신된 입력으로부터 출력을 생성한다.
본 명세서는, 머신 러닝 작업로드들, 구체적으로는 트레이닝 페이즈(training phase)에 대해 최적화된 프로그래밍가능 선형 대수 가속기들인 특수-목적 하드웨어 칩들에 관한 기술들을 설명한다.
일반적으로, 본 명세서에 설명된 청구 대상의 하나의 혁신적인 양상은 특수 하드웨어 칩으로 구현될 수 있다.
이러한 양상의 다른 실시예들은 대응하는 컴퓨터 시스템들, 장치, 및 하나 이상의 컴퓨터 저장 디바이스들 상에 기록된 컴퓨터 프로그램들을 포함하며, 그 컴퓨터 프로그램들은 방법들의 액션들을 수행하도록 각각 구성된다. 하나 이상의 컴퓨터들의 시스템이 특정 동작들 또는 액션들을 수행하도록 구성된다는 것은, 동작 시에 시스템으로 하여금 동작들 또는 액션들을 수행하게 하는 소프트웨어, 펌웨어, 하드웨어, 또는 이들의 조합이 시스템에 설치된다는 것을 의미한다. 하나 이상의 컴퓨터 프로그램들이 특정 동작들 또는 액션들을 수행하도록 구성된다는 것은, 데이터 프로세싱 장치에 의해 실행될 경우, 장치로 하여금 동작들 또는 액션들을 수행하게 하는 명령들을 하나 이상의 프로그램들이 포함한다는 것을 의미한다.
전술한 그리고 다른 실시예들은 각각 선택적으로, 다음의 특징들 중 하나 이상을 단독으로 또는 조합하여 포함할 수 있다. 특히, 일 실시예는 다음의 특징들 모두를 조합하여 포함한다.
뉴럴 네트워크들을 트레이닝시키기 위한 특수-목적 하드웨어 칩은, 특수-목적 하드웨어 칩의 컴퓨테이션 연산을 제어하도록 구성된 스칼라 프로세서; 벡터 프로세서 ― 벡터 프로세서는, 모두 단일 명령 다중-데이터 방식으로 동일한 명령을 실행하고 벡터 프로세서의 로드 및 저장 명령들을 통해 서로 통신하는 벡터 프로세싱 유닛들의 2차원 어레이를 갖도록 구성됨 ―; 및 곱셈 결과를 획득하기 위해 적어도 하나의 2차원 행렬을 제2의 1차원 벡터 또는 2차원 행렬과 곱하도록 구성되는, 벡터 프로세서에 커플링된 행렬 곱셈 유닛을 포함할 수 있다.
벡터 메모리는 빠른 전용 메모리(private memory)를 벡터 프로세서에 제공하도록 구성될 수 있다. 스칼라 메모리는 빠른 전용 메모리를 스칼라 프로세서에 제공하도록 구성될 수 있다. 전치 유닛은 행렬의 전치 연산을 수행하도록 구성될 수 있다. 감소 및 치환 유닛은 벡터 어레이의 상이한 레인(lane)들 사이에서 수들에 대한 감소를 수행하고 수들을 치환(permute)시키도록 구성될 수 있다. 고-대역폭 메모리는 특수-목적 하드웨어 칩의 데이터를 저장하도록 구성될 수 있다. 특수 목적 하드웨어 칩은 희소(sparse) 컴퓨테이션 코어를 포함할 수 있다.
특수 목적 하드웨어 칩은, 인터페이스, 및 인터페이스 또는 특수 목적 하드웨어 칩 상의 리소스들을 다른 특수 목적 하드웨어 칩들 또는 리소스들에 연결시키는 칩간 인터커넥트(inter-chip interconnect)를 포함할 수 있다.
특수-목적 하드웨어 칩은 고대역폭 메모리를 포함할 수 있다. 칩간 인터커넥트는 인터페이스 및 고대역폭 메모리를 다른 특수-목적 하드웨어 칩들에 연결시킬 수 있다. 인터페이스는 호스트 컴퓨터에 대한 호스트 인터페이스일 수 있다. 인터페이스는 호스트 컴퓨터들의 네트워크에 대한 표준 네트워크 인터페이스일 수 있다.
본 명세서에 설명된 청구 대상은 다음의 장점들 중 하나 이상을 실현하기 위해 특정 실시예들로 구현될 수 있다. 특수-목적 하드웨어 칩은, 종래의 0 및 1차원 텐서(tensor) 컴퓨테이션들에 부가하여 더 높은 차수의 텐서들(즉, 2차원 및 그 이상)을 네이티브하게(natively) 지원하면서 또한 머신 러닝을 위한 32비트 또는 더 낮은 정밀도의 컴퓨테이션들을 위해 최적화되는 프로세서들을 포함한다.
본 명세서의 청구 대상의 하나 이상의 실시예들의 세부사항들은 아래의 설명 및 첨부한 도면들에서 기재된다. 청구 대상의 다른 특징들, 양상들, 및 장점들은 설명, 도면들, 및 청구항들로부터 명백해질 것이다.
도 1은 보드(board) 상에서 원형 토폴로지(topology)로 연결된 특수-목적 하드웨어 칩들의 예시적인 집합체를 연결시키는 고속 연결들의 예시적인 토폴로지를 예시한다.
도 2는 뉴럴 네트워크를 트레이닝시키기 위한 예시적인 특수-목적 하드웨어 칩의 고레벨 다이어그램을 도시한다.
도 3은 컴퓨트 코어의 고레벨 예를 도시한다.
도 4는 뉴럴 네트워크들에 대한 트레이닝을 수행하는 칩의 더 상세한 다이어그램을 도시한다.
다양한 도면들 내의 유사한 참조 번호들 및 지정들은 유사한 엘리먼트들을 표시한다.
다수의 계층들을 갖는 뉴럴 네트워크는 트레이닝되고, 그 후, 추론들을 컴퓨팅하기 위해 사용될 수 있다. 일반적으로, 뉴럴 네트워크의 계층들 중 일부 또는 전부는 뉴럴 네트워크의 트레이닝 동안 조정되는 파라미터들을 갖는다. 예컨대, 계층들 중 일부 또는 전부는 계층 출력을 생성하는 것의 일부로서, 계층에 대한 파라미터들(또한 가중치들로 지칭됨)의 행렬을 계층에 대한 입력과 곱할 수 있다. 행렬 내의 파라미터들의 값들은 뉴럴 네트워크의 트레이닝 동안 조정된다.
특히, 트레이닝 동안, 트레이닝 시스템은 뉴럴 네트워크의 파라미터들의 값들을 조정하기 위해, 예컨대 파라미터들의 초기 값들로부터 파라미터들의 트레이닝된 값들을 결정하기 위해 뉴럴 네트워크 트레이닝 절차를 수행한다. 트레이닝 시스템은, 뉴럴 네트워크의 파라미터들 각각에 대한 목적 함수의 그라디언트(gradient)들을 컴퓨팅하기 위해 최적화 방법과 함께 역전파(backward propagation)로서 알려진 에러들의 역전파를 사용하고, 파라미터들의 값들을 조정하기 위해 그라디언트들을 사용한다.
이어서, 트레이닝된 뉴럴 네트워크는 입력에 대한 뉴럴 네트워크 출력을 생성하기 위해 순전파(forward propagation)를 사용하여, 즉 뉴럴 네트워크의 계층들을 통한 입력을 프로세싱하여 추론들을 컴퓨팅할 수 있다.
예컨대, 입력이 주어지면, 뉴럴 네트워크는 입력에 대한 추론을 컴퓨팅할 수 있다. 뉴럴 네트워크는, 뉴럴 네트워크의 계층들 각각을 통해 입력을 프로세싱함으로써 이러한 추론을 컴퓨팅한다. 일부 구현들에서, 뉴럴 네트워크의 계층들은 시퀀스로 배열된다.
따라서, 수신된 입력으로부터 추론을 컴퓨팅하기 위해, 뉴럴 네트워크는 입력을 수신하고 시퀀스로 입력을 뉴럴 네트워크 계층들 각각을 통해 프로세싱하여, 추론을 생성하며, 하나의 뉴럴 네트워크 계층으로부터의 출력은 다음의 뉴럴 네트워크 계층에 대한 입력으로서 제공된다. 뉴럴 네트워크 계층에 대한 데이터 입력들, 예컨대 뉴럴 네트워크에 대한 입력 또는 뉴럴 네트워크 계층에 대한 시퀀스 내의 계층 아래의 계층의 출력들은 계층에 대한 활성화 입력들로 지칭될 수 있다.
일부 구현들에서, 뉴럴 네트워크의 계층들은 방향성 그래프(directed graph)로 배열된다. 즉, 임의의 특정한 계층은 다수의 입력들, 다수의 출력들, 또는 둘 모두를 수신할 수 있다. 뉴럴 네트워크의 계층들은 또한, 계층의 출력이 입력으로서 다시 이전의 계층으로 전송될 수 있도록 배열될 수 있다.
예시적인 시스템은 다수의 차원 어레이들의 행렬 곱셈 및 다른 계산들을 위해 최적화된 고성능 멀티-칩 텐서 컴퓨테이션 시스템이다. 이들 연산들은 뉴럴 네트워크들을 트레이닝시키는 데 그리고 선택적으로는 추론들을 컴퓨팅하기 위해 뉴럴 네트워크들을 사용하는 데 중요하다.
예시적인 시스템 내에서, 시스템이 트레이닝 및 추론 계산들을 효율적으로 수행하기 위해 다수의 특수 목적 칩들이 연산들을 분배하도록 배열된다. 일 구현에서, 보드 상에 4개의 칩들이 존재하며, 더 큰 시스템에서, 많은 보드들은 랙(rack)에서 서로 옆에 있거나 또는 다른 방식으로 서로 데이터 통신한다.
도 1은 보드 상에서 원형 토폴로지로 연결된 특수-목적 하드웨어 칩들(101a 내지 101d)의 예시적인 집합체를 연결시키는 고속 연결들의 예시적인 토폴로지를 예시한다. 각각의 칩은 2개의 프로세서들(102a 내지 102h)을 포함한다. 이러한 토폴로지는 1차원(1D) 토러스(torus)이며; 1D 토러스에서, 각각의 칩은 2개의 이웃들에 직접 연결된다. 도시된 바와 같이, 일부 구현들에서, 칩들은 연산들을 수행하기 위해 소프트웨어 또는 펌웨어 명령들로 프로그래밍되었던 마이크로프로세서 코어들을 포함한다. 도 1에서, 칩들 모두는 단일 모듈(100) 상에 존재한다. 프로세서들 사이에서 도면에 도시된 라인들은 고속 데이터 통신 링크들을 표현한다. 프로세서들은 유리하게 하나의 집적 회로 보드 상에서 제조되지만, 그들은 또한 다수의 보드들 상에서 제조될 수 있다. 칩 경계들에 걸쳐, 링크들은 칩간 네트워크 링크들이고; 동일한 칩 상의 프로세서들은 인트라-칩(intra-chip) 인터페이스 링크들을 통해 통신한다. 링크들은, 하나의 프로세서만이 한번에 데이터를 송신할 수 있는 하프 듀플렉스 링크들 또는 데이터가 양 방향들에서 동시에 송신될 수 있는 풀-듀플렉스 링크들일 수 있다. 이러한 예시적인 토폴로지 등을 사용하는 병렬 프로세싱은 발명의 명칭이 PARALLEL PROCESSING OF REDUCTION AND BROADCAST OPERATIONS ON LARGE DATASETS OF NON-SCALAR DATA인 미국 특허 출원 제 62/461,758호에서 더 상세히 설명되며, 그 출원은 2017년 2월 21일자로 출원되었고 인용에 의해 포함된다.
도 2는 뉴럴 네트워크를 트레이닝시키기 위한 예시적인 특수-목적 하드웨어 칩의 고레벨 다이어그램을 도시한다. 예시된 바와 같이, 단일 특수-목적 하드웨어 칩은 2개의 독립적인 프로세서들(202a, 202b)을 포함한다. 각각의 프로세서(202a, 202b)는 2개의 별개의 코어들: (1) 컴퓨트 코어, 예컨대 VLIW(very long instruction word) 머신(203a, 203b) 및 (2) 희소 컴퓨테이션 코어, 즉 임베딩(embedding) 계층 가속기(205a, 205b)를 포함한다.
각각의 코어(203a, 203b)는 조밀한 선형 대수 문제점들에 대해 최적화된다. 단일의 매우 긴 명령 워드는 수개의 컴퓨트 코어들을 병렬로 제어한다. 컴퓨트 코어는 도 3 및 도 4에 대해 더 상세히 설명될 것이다.
예시적인 희소 컴퓨테이션 코어(205a, 205b)는 매우 희소한 고차원 데이터를 조밀한 저차원 데이터로 맵핑시켜, 계층들의 나머지가 조밀하게 패킹된 입력 데이터를 프로세싱하게 한다. 예컨대, 희소 컴퓨테이션 코어는 트레이닝되는 뉴럴 네트워크에서 임의의 임베딩 계층들의 컴퓨테이션을 수행할 수 있다.
이러한 희소-조밀 맵핑을 수행하기 위해, 희소 컴퓨테이션 코어는 미리-구축된 룩업 테이블, 즉 임베딩 테이블을 사용한다. 예컨대, 사용자 입력으로서 일련의 질의(query) 워드들이 존재할 경우, 각각의 질의 워드는 해시(hash) 식별자 또는 하나의-핫(one-hot) 인코딩된 벡터로 변환된다. 식별자를 테이블 인덱스로서 사용하여, 임베딩 테이블은, 다음 계층에 대한 입력 활성화 벡터일 수 있는 대응하는 조밀한 벡터를 리턴시킨다. 희소 컴퓨테이션 코어는 또한, 하나의 조밀한 활성화 벡터를 생성하기 위해 탐색 질의 워드들에 걸쳐 감소 연산들을 수행할 수 있다. 임베딩 테이블이 크고, 특수-목적 하드웨어 칩들 중 하나의 특수-목적 하드웨어 칩의 제한된 용량의 고대역폭 메모리에 맞춰지지 않을 수 있으므로, 희소 컴퓨테이션 코어는 효율적이고 희소한 분산형 룩업들을 수행한다. 희소 컴퓨테이션 코어 기능에 관한 더 많은 세부사항들은 발명의 명칭이 MATRIX PROCESSING APPARATUS인 미국 특허 출원 제 15/016,486호에서 발견될 수 있으며, 그 출원은 2016년 2월 5일자로 출원되었고 인용에 의해 포함된다.
도 3은 컴퓨트 코어(300)의 고레벨 예를 도시한다. 컴퓨트 코어는 수개의 컴퓨트 유닛들을 병렬로 제어하는 머신, 즉 VLIW 머신일 수 있다. 각각의 컴퓨트 코어(300)는, 스칼라 메모리(304), 벡터 메모리(308), 스칼라 프로세서(303), 벡터 프로세서(306), 및 확장된 벡터 유닛들(즉, 행렬 곱셈 유닛(MXU)(313), 전치 유닛(XU)(314), 및 감소 및 치환 유닛(RPU)(316))을 포함한다.
예시적인 스칼라 프로세서는 VLIW 명령 페치/실행 루프를 수행하고 컴퓨트 코어를 제어한다. 명령 번들을 페칭 및 디코딩한 이후, 스칼라 프로세서 그 자체는 스칼라 프로세서(303)의 다수의 멀티-비트 레지스터들, 즉 32개의 32비트 레지스터들 및 스칼라 메모리(304)를 사용하여, 번들의 스칼라 슬롯들에서 발견되는 명령들만을 실행한다. 스칼라 명령 세트는, 예컨대 어드레스 계산들에서 사용되는 바와 같은 통상의 산술 연산들, 로드/저장 명령들, 및 분기 명령들을 포함한다. 나머지 명령 슬롯들은 벡터 프로세서(306) 또는 다른 확장된 벡터 유닛들(313, 314, 316)에 대한 명령들을 인코딩한다. 디코딩된 벡터 명령들은 벡터 프로세서(306)로 포워딩된다.
벡터 명령들과 함께, 스칼라 프로세서(303)는 연산들을 수행하기 위해 최대 3개의 스칼라 레지스터들의 값들을 다른 프로세서 및 유닛들에 포워딩할 수 있다. 스칼라 프로세서는 또한, 벡터 프로세서로부터 컴퓨테이션 결과들을 직접 리트리브(retrieve)할 수 있다. 그러나, 일부 구현들에서, 예시적인 칩은 벡터 프로세서로부터 스칼라 프로세서로의 낮은-대역폭 통신 경로를 갖는다.
벡터 명령 디스패처(dispatcher)는 스칼라 프로세서와 벡터 프로세서 사이에 놓인다. 이러한 디스패처는 비-스칼라 VLIW 슬롯들로부터 디코딩된 명령들을 수신하고, 이들 명령들을 벡터 프로세서(306)에 브로드캐스팅한다. 벡터 프로세서(306)는, 단일-명령 다중-데이터(SIMD) 방식으로 동일한 명령을 실행하는 벡터 프로세싱 유닛들의 2차원 어레이, 즉 128x8 어레이로 이루어진다. 벡터 프로세싱 유닛은 도 4에 관해 상세히 설명된다.
예시적인 스칼라 프로세서(303)는, 훨씬 더 크지만 더 느린 고대역폭 메모리(HBM)(310)에 의해 백업되는 작고 빠른 전용 스칼라 메모리(304)에 액세스한다. 유사하게, 예시적인 벡터 프로세서(306)는, HBM(310)에 의해 또한 백업되는 작고 빠른 전용 벡터 메모리(306)에 액세스한다. 스칼라 프로세서(303)와 스칼라 메모리(304) 사이 또는 벡터 프로세서(306)와 벡터 메모리(308) 사이 중 어느 하나에서 워드-입도 액세스가 발생한다. 벡터 프로세서와 벡터 메모리 사이의 로드들 및 저장들의 입도는 128개의 32비트 워드들의 벡터이다. 스칼라 메모리(304)와 HBM(310) 사이 그리고 벡터 메모리(306)와 HBM(310) 사이에서 직접적인 메모리 액세스가 발생한다. 일부 구현들에서, HBM(310)으로부터 프로세서들(303, 306)로의 메모리 전달들은 스칼라 또는 벡터 메모리들을 통해서만 행해질 수 있다. 부가적으로, 스칼라 메모리와 벡터 메모리 사이에는 어떠한 직접적인 메모리 전달들도 존재하지 않을 수 있다.
명령들은 확장된 벡터 유닛 연산들을 특정할 수 있다. 각각의 실행된 벡터 유닛 명령과 함께, 확장된 벡터 유닛들에 하나의 레지스터 값을 입력 피연산자들로서 각각 전송할 수 있는 2차원, 즉 128x8 벡터 유닛들이 존재한다. 각각의 확장된 벡터 유닛은 입력 피연산자들을 취하고, 대응하는 연산들을 수행하며, 결과들을 다시 벡터 프로세서(306)에 리턴시킨다. 확장된 벡터 유닛들은 도 4에 관해 아래에서 설명될 것이다.
도 4는 뉴럴 네트워크들에 대한 트레이닝을 수행하는 칩의 더 상세한 다이어그램을 도시한다. 위에서 예시되고 설명된 바와 같이, 칩은 2개의 컴퓨트 코어들(480a, 480b) 및 2개의 희소 컴퓨테이션 코어들(452a, 452b)을 포함한다.
칩은, 호스트 컴퓨터(450) 또는 다수의 호스트 컴퓨터들에 대한 인터페이스를 포함하는 공유된 영역을 갖는다. 인터페이스는 호스트 컴퓨터에 대한 호스트 인터페이스 또는 호스트 컴퓨터들의 네트워크에 대한 표준 네트워크 인터페이스일 수 있다. 공유된 영역은 또한, 최하부를 따라 고대역폭 메모리(456a 내지 456d)의 스택들, 및 인터페이스들과 메모리를 함께 연결시키는 칩간 인터커넥트(448) 뿐만 아니라 다른 칩들로부터의 데이터를 가질 수 있다. 인터커넥트는 또한, 하드웨어 칩 상의 컴퓨트 리소스들에 인터페이스를 연결시킬 수 있다. 고대역폭 메모리의 다수의 스택들, 즉 고대역폭 메모리 중 2개(456a 및 456b, 456c 및 456d)가 각각의 컴퓨트 코어(480a, 480b)와 연관된다.
칩은 고대역폭 메모리(456c 및 456d)에 데이터를 저장하고, 벡터 메모리(446) 안팎의 데이터를 판독하며, 데이터를 프로세싱한다. 컴퓨트 코어(480b) 그 자체는, 2개의 차원들로 분할되는 온-칩 S-RAM인 벡터 메모리(446)를 포함한다. 벡터 메모리는, 어드레스들이 부동 소수점 수들, 즉 각각 32비트인 128개의 수들을 유지하는 어드레스 공간을 갖는다. 컴퓨트 코어(480b)는 또한, 값들을 컴퓨팅하는 컴퓨테이션 유닛 및 컴퓨테이션 유닛을 제어하는 스칼라 유닛을 포함한다. 컴퓨테이션 유닛은 벡터 프로세서를 포함할 수 있고, 스칼라 유닛은 스칼라 프로세서를 포함할 수 있다. 특수 목적 칩의 일부를 형성할 수 있는 컴퓨트 코어는 행렬 곱셈 유닛 또는 다른 확장된 연산 유닛, 이를테면 행렬, 즉 128x128 행렬의 전치 연산을 수행하는 전치 유닛(422), 및 감소 및 치환 유닛을 더 포함할 수 있다.
벡터 프로세서(306)는, 모두 단일-명령 다중-데이터(SIMD) 방식으로 동일한 명령을 실행하는 벡터 프로세싱 유닛들의 2차원 어레이, 즉 128x8로 이루어진다. 벡터 프로세서는 레인들 및 서브레인들, 즉 128개의 레인들 및 8개의 서브레인들을 갖는다. 레인 내에서, 벡터 유닛들은 로드 및 저장 명령들을 통해 서로 통신한다. 각각의 벡터 유닛은 한번에 하나의 4바이트 값에 액세스할 수 있다. 동일한 레인에 속하지 않는 벡터 유닛들은 직접 통신할 수 없다. 이들 벡터 유닛들은 아래에 설명되는 감소/치환 유닛을 사용해야 한다.
컴퓨테이션 유닛은 부동 소수점 연산들 및 정수 연산들 둘 모두에 대해 사용될 수 있는 벡터 프로세싱 유닛(440)에 벡터 레지스터들, 즉 32개의 레지스터들을 포함한다. 컴퓨테이션 유닛은 컴퓨테이션들을 수행하기 위한 2개의 산술 로직 유닛(ALU)들(406c 및 406d)을 포함한다. 하나의 ALU(406c)는 부동 소수점 덧셈을 수행하고, 다른 ALU(406d)는 부동 소수점 곱셈을 수행한다. ALU들(406c 및 406d) 둘 모두는 다양한 다른 연산들, 이를테면 시프트들, 마스크들, 및 비교들을 수행할 수 있다. 예컨대, 컴퓨트 코어(480b)는 벡터 레지스터(V1)와 제2 벡터 레지스터(V2)를 더하고 결과들을 제3 벡터 레지스터(V3)에 넣기를 원할 수 있다. 덧셈을 컴퓨팅하기 위해, 컴퓨트 코어(480b)는 하나의 클록 사이클에서 다수의 연산들을 수행한다. 이들 레지스터들을 피연산자들로서 사용하여, 벡터 유닛들 각각은 모든 각각의 클록 사이클에서 동시에 2개의 ALU 명령들, 및 하나의 로드 및 하나의 저장 명령을 실행할 수 있다. 로드 또는 저장 명령에 대한 기본 어드레스가 스칼라 프로세서에서 컴퓨팅되고 벡터 프로세서로 포워딩될 수 있다. 각각의 서브레인 내의 벡터 유닛들 각각은 다양한 방법들, 이를테면 스트라이딩(striding) 및 특수한 인덱싱된 어드레스 레지스터를 사용하여 그 자신의 오프셋 어드레스를 컴퓨팅할 수 있다.
컴퓨테이션 유닛은 또한, 연산들 이를테면 제곱근 및 역수를 수행하는 EUP(extended unary pipeline)(416)를 포함한다. 컴퓨트 코어(480b)는 이들 연산들을 수행하기 위해 3개의 클록 사이클들을 취하는 데, 그 이유는 그 연산들이 컴퓨테이션적으로 더 복잡하기 때문이다. EUP 프로세싱이 하나 초과의 클록 사이클을 취하므로, 결과들을 저장하기 위한 선입-선출 데이터 저장소가 존재한다. 연산이 종료될 경우, 결과들은 FIFO에 저장된다. 컴퓨트 코어는 FIFO 밖으로 데이터를 인출하고 그것을 벡터 레지스터에 넣기 위해 나중에 별개의 명령을 사용할 수 있다. 랜덤 넘버 생성기(420)는 컴퓨트 코어(480b)가 사이클 당 다수의 랜덤 넘버들, 즉 사이클 당 128개의 랜덤 넘버들을 생성하게 허용한다.
위에서 설명된 바와 같이, 특수-목적 하드웨어 칩의 일부로서 구현될 수 있는 각각의 프로세서는 3개의 확장된 연산 유닛들: 행렬 곱셈 연산들을 수행하는 행렬 곱셈 유닛(448); 행렬, 즉 128x128 행렬의 전치 연산을 수행하는 전치 유닛(422), 및 (도 4에서 별개의 유닛들(424, 426)로서 예시된) 감소 및 치환 유닛을 갖는다.
행렬 곱셈 유닛은 2개의 행렬들 사이에서 행렬 곱셈들을 수행한다. 행렬 곱셈 유닛(438)은, 컴퓨트 코어가 곱해질 행렬인 수들의 세트로 로딩할 필요가 있으므로 데이터를 취한다. 예시된 바와 같이, 데이터는 벡터 레지스터들(440)로부터 온다. 각각의 벡터 레지스터는 128x8의 수들, 즉 32비트 수들을 포함한다. 그러나, 부동 소수점 변환은, 수들을 더 작은 비트 사이즈로, 즉 32비트로부터 16비트로 변경시키기 위해 데이터가 행렬 곱셈 유닛(448)에 전송될 때 발생할 수 있다. 직렬화기(440)는, 수들이 벡터 레지스터들로부터 판독될 경우, 2차원 어레이, 즉 128x8 행렬이 다음의 8개의 클록 사이클들 각각 동안 행렬 곱셈 유닛(448)에 전송되는 128개의 수들의 세트들로서 판독되는 것을 보장한다. 행렬 곱셈이 자신의 컴퓨테이션들을 완료한 이후, 결과들은 역직렬화되며(442a, 442b), 이는 결과 행렬이 다수의 클록 사이클들 동안 유지된다는 것을 의미한다. 예컨대, 128x8 어레이의 경우, 128개의 수들이 8개의 클록 사이클들 각각 동안 유지되고, 이어서 FIFO로 푸시되어, 128x8의 수들의 2차원 어레이가 하나의 클록 사이클에서 포착되어 벡터 레지스터들(440)에 저장될 수 있다.
일정 기간의 사이클들, 즉 128개의 사이클들에 걸쳐, 가중치들은, 행렬과 곱해질 수들로서 행렬 곱셈 유닛(448)으로 시프트된다. 일단 행렬 및 가중치들이 로딩되었다면, 컴퓨트 코어(480)는 수들의 세트, 즉 128x8을 행렬 곱셈 유닛(448)에 전송할 수 있다. 세트의 각각의 라인은 클록 사이클 당 다수의 결과들, 즉 128개의 결과들을 생성하도록 행렬과 곱해질 수 있다. 컴퓨트 코어가 행렬 곱셈들을 수행하고 있는 동안, 컴퓨트 코어는 또한, 컴퓨트 코어가 곱해질 다음 행렬이 되도록 백그라운드에서 수들의 새로운 세트들을 시프트시켜, 이전의 행렬에 대한 컴퓨테이션 프로세스가 완료되었을 경우 다음 행렬이 이용가능하게 한다. 행렬 곱셈 유닛(448)은 명칭이 LOW MATRIX MULTIPLY UNIT COMPOSED OF MULTI-BIT CELLS인 16113-8251001호 및 명칭이 MATRIX MULTIPLY UNIT WITH NUMERICS OPTIMIZED FOR NEURAL NETWORK APPLICATIONS인 16113-8252001호에서 더 상세히 설명되며, 이들 둘 모두는 인용에 의해 포함된다.
전치 유닛은 행렬을 전치시킨다. 전치 유닛(422)은 수들을 취하고 그들을 전치시켜, 레인에 걸친 수가 다른 차원의 수와 전치되게 한다. 일부 구현들에서, 벡터 프로세서는 128x8 벡터 유닛들을 포함한다. 따라서, 128x128 행렬을 전치시키기 위해, 전체 행렬 전치를 위해 16개의 개별적인 전치 명령들이 필요하다. 일단 전치가 완료되면, 전치된 행렬이 이용가능할 것이다. 그러나, 전치된 행렬을 벡터 레지스터 파일로 이동시키기 위해 명시적인 명령이 필요하다.
감소/치환 유닛(또는 유닛들(424, 426))은 다양한 연산들, 이를테면 치환, 레인 회전, 회전 치환, 레인 감소, 치환된 레인 감소, 및 세그먼트화된 치환된 레인 감소를 지원함으로써 교차-레인 통신의 문제점을 해결한다. 예시된 바와 같이, 이들 컴퓨테이션들은 별개이지만, 컴퓨트 코어는 그 컴퓨테이션들 중 어느 하나 또는 하나의 컴퓨테이션에 연쇄된 다른 컴퓨테이션을 사용할 수 있다. 감소 유닛(424)은 수들의 각각의 라인에서 수들 모두를 더하고, 수들을 치환 유닛(426)에 공급한다. 치환 유닛은 상이한 레인들 사이에서 데이터를 이동시킨다. 전치 유닛, 감소 유닛, 치환 유닛, 및 행렬 곱셈 유닛 각각은 완료하는 데 하나 초과의 클록 사이클이 걸린다. 따라서, 각각의 유닛은 자신과 연관된 FIFO를 가져서, 컴퓨테이션들의 결과들은 FIFO로 푸시될 수 있으며, FIFO 밖으로 데이터를 인출하고 벡터 레지스터로 데이터를 끌어넣기 위해 별개의 명령이 나중에 실행될 수 있다. FIFO들을 사용함으로써, 컴퓨트 코어는 다수의 벡터 레지스터들이 너무 긴 연산들의 지속기간 동안 예비되도록 요구하지 않는다. 예시된 바와 같이, 유닛들 각각은 벡터 레지스터들(440)로부터 데이터를 취한다.
컴퓨트 코어는 컴퓨테이션 유닛을 제어하기 위해 스칼라 유닛을 사용한다. 스칼라 유닛은 2개의 주요 기능들: (1) 루프 카운팅 및 어드레싱을 수행하는 것 및 (2) 직접 메모리 어드레스(DMA) 제어기가 고대역폭 메모리(456c 및 456d)와 벡터 메모리(446) 사이에서 백그라운드로 데이터를 이동시키고 이어서 예시적인 시스템 내의 다른 칩들에 대한 칩간 연결(448)에 데이터를 이동시키도록 DMA 요청들을 생성하는 것을 갖는다. 스칼라 유닛은 명령 메모리(404), 명령 디코드 및 발행(402), 스칼라 레지스터들, 즉 32비트를 포함하는 스칼라 프로세싱 유닛(408), 스칼라 메모리(410), 및 클록 사이클 당 2개의 연산들을 수행하기 위한 2개의 ALU들(406a, 406b)을 포함한다. 스칼라 유닛은 피연산자들 및 즉시 값들을 벡터 연산들에 공급할 수 있다. 각각의 명령은, 벡터 레지스터들(440) 상에서 실행되는 명령들을 포함하는 명령 번들로서, 명령 디코드 및 발행(402)으로부터 전송될 수 있다. 각각의 명령 번들은 VLIW(very long instruction word)이며, 각각의 명령은 다수의 명령 필드들로 분할되는 다수의 비트 폭이다.
칩(400)은 뉴럴 네트워크의 트레이닝의 적어도 일부를 수행하는 데 사용될 수 있다. 특히, 뉴럴 네트워크를 트레이닝할 경우, 시스템은 호스트 인터페이스(450)를 사용하여 호스트 컴퓨터로부터 라벨링된 트레이닝 데이터를 수신한다. 호스트 인터페이스는 또한, 뉴럴 네트워크 컴퓨테이션을 위한 파라미터들을 포함하는 명령들을 수신할 수 있다. 파라미터들은 다음 중 적어도 하나 이상을 포함할 수 있다: 얼마나 많은 계층들이 프로세싱되어야 하는지, 계층들의 각각의 계층에 대한 가중 입력들의 대응하는 세트들, 활성화 입력들의 초기 세트, 즉 뉴럴 네트워크에 대한 입력(뉴럴 네트워크로부터 추론이 컴퓨팅될 것이거나 또는 트레이닝이 행해짐)인 트레이닝 데이터, 각각의 계층의 대응하는 입력 및 출력 사이즈들, 뉴럴 네트워크 컴퓨테이션을 위한 스트라이드 값, 및 프로세싱될 계층의 타입, 예컨대, 콘볼루셔널 계층 또는 완전히 연결된 계층.
가중 입력들의 세트들 및 활성화 입력들의 세트들은 컴퓨트 코어의 행렬 곱셈 유닛에 전송될 수 있다. 가중 입력들 및 활성화 입력들을 행렬 곱셈 유닛에 전송하기 전에, 시스템 내의 다른 컴포넌트들에 의해 입력에 대하여 수행되는 다른 컴퓨테이션들이 존재할 수 있다. 일부 구현들에서, 희소 컴퓨테이션 코어로부터 컴퓨트 코어로 활성화들을 전송하기 위한 2개의 방식들이 존재한다. 먼저, 희소 컴퓨테이션 코어는 고대역폭 메모리를 통해 통신을 전송할 수 있다. 많은 양의 데이터의 경우, 희소 컴퓨테이션 코어는 직접 메모리 어드레스(DMA) 명령을 사용하여 고대역폭 메모리에 활성화들을 저장할 수 있으며, 이는 컴퓨트 코어에서 타겟 동기화 플래그를 업데이트시킨다. 컴퓨트 코어는 동기화 명령을 사용하여 이러한 동기화 플래그를 대기할 수 있다. 일단 동기화 플래그가 세팅되면, 컴퓨트 코어는 고대역폭 메모리로부터 대응하는 벡터 메모리로 활성화들을 복사하기 위해 DMA 명령을 사용한다.
둘째로, 희소 컴퓨테이션 코어는 통신을 직접 컴퓨트 코어 벡터 메모리에 전송할 수 있다. 데이터의 양이 크지 않으면(즉, 그것이 컴퓨트 코어 벡터 메모리에 적합하면), 희소 컴퓨테이션 코어는, DMA 명령을 사용하여 컴퓨트 코어의 벡터 메모리에 활성화들을 직접 저장하면서 컴퓨트 코어에 동기화 플래그를 통지할 수 있다. 컴퓨트 코어는, 활성화들에 의존하는 컴퓨테이션을 수행하기 전에 이러한 동기화 플래그를 대기할 수 있다.
행렬 곱셈 유닛은 가중 입력들 및 활성화 입력들을 프로세싱하고 출력들의 벡터 또는 행렬을 벡터 프로세싱 유닛에 제공할 수 있다. 벡터 프로세싱 유닛은 프로세싱된 출력의 벡터 또는 행렬을 저장할 수 있다. 예컨대, 벡터 프로세싱 유닛은 활성화된 값들을 생성하기 위해 행렬 곱셈 유닛의 출력들에 비-선형 함수를 적용할 수 있다. 일부 구현들에서, 벡터 프로세싱 유닛은 정규화된 값들, 풀링(pool)된 값들, 또는 그 둘 모두를 생성한다. 프로세싱된 출력들의 벡터는, 뉴럴 네트워크 내의 후속 계층에서의 사용을 위해, 행렬 곱셈 유닛에 대한 활성화 입력들로서 사용될 수 있다.
일단 트레이닝 데이터의 배치(batch)에 대한 프로세싱된 출력들의 벡터가 컴퓨팅되면, 출력들은 에러를 결정하기 위해, 라벨링된 트레이닝 데이터에 대한 예상되는 출력과 비교될 수 있다. 이어서, 시스템은 네트워크를 트레이닝시키기 위해 뉴럴 네트워크를 통하여 에러를 전파하도록 역전파를 수행할 수 있다. 손실 함수의 그라디언트는 온-칩(on-chip) 벡터 프로세싱 유닛들의 산술 로직 유닛들을 사용하여 컴퓨팅된다.
예시적인 시스템은 뉴럴 네트워크를 통한 역전파를 수행하기 위해 활성화 그라디언트들을 필요로 한다. 컴퓨트 코어로부터 희소 컴퓨테이션 코어로 활성화 그라디언트들을 전송하기 위해, 예시적인 시스템은 활성화 그라디언트들을 고대역폭 메모리에 저장하기 위해 컴퓨트 코어 DMA 명령을 사용하면서 타겟의 희소 컴퓨테이션 코어에 동기화 플래그를 통지할 수 있다. 희소 컴퓨테이션 코어는, 활성화 그라디언트들에 의존하는 컴퓨테이션을 수행하기 전에 이러한 동기화 플래그를 대기할 수 있다.
행렬 곱셈 유닛은 역전파를 위해 2개의 행렬 곱셈 연산들을 수행한다. 하나의 행렬 곱셈은 네트워크를 통한 역방향 경로를 따른 네트워크 내의 선행 계층으로부터의 역전파된 에러를 가중치들에 적용하여, 가중치들을 조정하고 뉴럴 네트워크에 대한 새로운 가중치들을 결정한다. 제2 행렬 곱셈은 뉴럴 네트워크 내의 이전 계층들에 대한 피드백으로서 오리지널(original) 활성화에 에러를 적용한다. 오리지널 활성화들은 순방향 전달 동안 생성되며, 역방향 전달 동안의 사용을 위해 저장될 수 있다. 컴퓨테이션들을 위해, 부동-소수점 덧셈, 뺄셈, 및 곱셈을 포함하는 벡터 프로세싱 유닛의 범용 명령들이 사용될 수 있다. 범용 명령들은 또한 비교들, 시프트들, 마스크들, 및 논리 연산들을 포함할 수 있다. 행렬 곱셈들이 예외적으로 매우 양호하게 가속될 수 있지만, 벡터 프로세싱 유닛들의 산술 로직 유닛들은 사이클 당 코어 당 128x8x2 연산들의 레이트로 일반적인 컴퓨테이션들을 수행한다.
본 명세서에서 설명된 청구 대상 및 기능 동작들의 실시예들은, 디지털 전자 회로에서, 유형으로 구현된 컴퓨터 소프트웨어 또는 펌웨어에서, 본 명세서에 개시된 구조들 및 그들의 구조적 등가물들을 포함하는 컴퓨터 하드웨어에서, 또는 그들 중 하나 이상의 조합들에서 구현될 수 있다. 본 명세서에 설명된 청구 대상의 실시예들은, 데이터 프로세싱 장치에 의한 실행을 위해, 또는 데이터 프로세싱 장치의 동작을 제어하기 위해 유형의 비-일시적인 저장 매체 상에서 인코딩된 하나 이상의 컴퓨터 프로그램들, 즉 컴퓨터 프로그램 명령들의 하나 이상의 모듈들로서 구현될 수 있다. 컴퓨터 저장 매체는, 머신-판독가능 저장 디바이스, 머신-판독가능 저장 기판, 랜덤 또는 시리얼 액세스 메모리 디바이스, 또는 그들 중 하나 이상의 조합일 수 있다. 대안적으로 또는 부가적으로, 프로그램 명령들은, 데이터 프로세싱 장치에 의한 실행을 위해 적합한 수신기 장치로의 송신을 위한 정보를 인코딩하도록 생성되는 인위적으로-생성된 전파된 신호, 예컨대 머신-생성된 전기, 광학, 또는 전자기 신호 상에서 인코딩될 수 있다.
용어 "데이터 프로세싱 장치"는 데이터 프로세싱 하드웨어를 지칭하며, 프로그래밍가능 프로세서, 컴퓨터, 또는 다수의 프로세서들 또는 컴퓨터들을 예로서 포함하는, 데이터를 프로세싱하기 위한 모든 종류들의 장치, 디바이스들, 및 머신들을 포함한다. 장치는 또한 특수 목적 로직 회로, 예컨대, FPGA(필드 프로그래밍가능 게이트 어레이) 또는 ASIC(주문형 집적 회로)일 수 있거나 또는 이들을 더 포함할 수 있다. 장치는 선택적으로, 하드웨어에 부가하여, 컴퓨터 프로그램들에 대한 실행 환경을 생성하는 코드, 예컨대 프로세서 펌웨어, 프로토콜 스택, 데이터베이스 관리 시스템, 운영 시스템, 또는 이들 중 하나 이상의 조합을 구성하는 코드를 포함할 수 있다.
또한, 프로그램, 소프트웨어, 소프트웨어 애플리케이션, 앱, 모듈, 소프트웨어 모듈, 스크립트, 또는 코드로 지칭 또는 설명될 수 있는 컴퓨터 프로그램은, 컴파일된 또는 해석된 언어들 또는 선언형 또는 절차형 언어들을 포함하는 임의의 형태의 프로그래밍 언어로 기입될 수 있으며; 그것은 독립형 프로그램으로서 또는 모듈, 컴포넌트, 서브루틴, 또는 컴퓨팅 환경에서의 사용에 적합한 다른 유닛으로서의 형태를 포함하여 임의의 형태로 배치될 수 있다. 프로그램은 파일 시스템의 파일에 대응하지만 그러할 필요는 없을 수 있다. 프로그램은, 다른 프로그램들 또는 데이터를 보유하는 파일의 일부분, 예컨대, 마크업 언어 문서에 저장된 하나 이상의 스크립트들, 해당 프로그램에 전용된 단일 파일, 또는 다수의 조정된 파일들, 예컨대, 하나 이상의 모듈들, 서브-프로그램들, 또는 코드의 일부분들을 저장한 파일들에 저장될 수 있다. 컴퓨터 프로그램은, 하나의 컴퓨터 상에서 또는 하나의 사이트에 로케이팅되거나 또는 다수의 사이트들에 걸쳐 분산되어 데이터 통신 네트워크에 의해 인터커넥트되는 다수의 컴퓨터들 상에서 실행되도록 배치될 수 있다.
본 명세서에 설명된 프로세스들 및 로직 흐름들은, 입력 데이터에 대해 동작하고 출력을 생성함으로써 기능들을 수행하도록 하나 이상의 컴퓨터 프로그램들을 실행하는 하나 이상의 프로그래밍가능 컴퓨터들에 의해 수행될 수 있다. 프로세스들 및 로직 흐름들은 또한, 특수 목적 로직 회로, 예컨대 FPGA 또는 ASIC에 의해 또는 특수 목적 로직 회로와 하나 이상의 프로그래밍된 컴퓨터들의 조합에 의해 수행될 수 있다.
컴퓨터 프로그램의 실행에 적합한 컴퓨터들은, 범용 또는 특수 목적 마이크로프로세서들 또는 그 둘 모두, 또는 임의의 다른 종류의 중앙 프로세싱 유닛에 기반할 수 있다. 일반적으로, 중앙 프로세싱 유닛은 판독-전용 메모리 또는 랜덤 액세스 메모리 또는 그 둘 모두로부터 명령들 및 데이터를 수신할 것이다. 컴퓨터의 본질적인 엘리먼트들은 명령들을 수행 또는 실행하기 위한 중앙 프로세싱 유닛, 및 명령들 및 데이터를 저장하기 위한 하나 이상의 메모리 디바이스들이다. 중앙 프로세싱 유닛 및 메모리는 특수 목적 로직 회로에 의해 보완되거나 또는 그에 통합될 수 있다. 일반적으로, 컴퓨터는 또한, 데이터를 저장하기 위한 하나 이상의 대용량 저장 디바이스들, 예컨대 자기, 광자기 디스크들, 또는 광학 디스크들을 포함하거나, 또는 그들로부터 데이터를 수신하거나 그들로 데이터를 전달하도록, 또는 그 둘 모두를 위해 동작가능하게 커플링될 것이다. 그러나, 컴퓨터는 그러한 디바이스들을 가질 필요는 없다. 또한, 컴퓨터는 다른 디바이스, 예컨대 단지 몇몇 예를 들자면 모바일 텔레폰, 개인 휴대 정보 단말(PDA), 모바일 오디오 또는 비디오 플레이어, 게임 콘솔, 글로벌 포지셔닝 시스템(GPS) 수신기, 또는 휴대용 저장 디바이스, 예컨대 USB(universal serial bus) 플래시 드라이브에 임베딩될 수 있다.
컴퓨터 프로그램 명령들 및 데이터를 저장하는 데 적합한 컴퓨터 판독가능 매체들은 반도체 메모리 디바이스들, 예컨대 EPROM, EEPROM, 및 플래시 메모리 디바이스들; 자기 디스크들, 예컨대 내부 하드 디스크들 또는 착탈형 디스크들; 광자기 디스크들; 및 CD-ROM 및 DVD-ROM 디스크들을 예로서 포함하는 비-휘발성 메모리, 매체들 및 메모리 디바이스들의 모든 형태들을 포함한다.
사용자와의 상호작용을 제공하기 위해, 본 명세서에 설명된 청구 대상의 실시예들은, 사용자에게 정보를 디스플레이하기 위한 디스플레이 디바이스, 예컨대, CRT(cathode ray tube) 또는 LCD(liquid crystal display) 모니터, 및 사용자가 입력을 컴퓨터에 제공할 수 있게 하는 키보드 및 포인팅 디바이스, 예컨대, 마우스 또는 트랙볼을 갖는 컴퓨터 상에서 구현될 수 있다. 다른 종류들의 디바이스들이 또한, 사용자와의 상호작용을 제공하기 위해 사용될 수 있으며; 예컨대, 사용자에게 제공된 피드백은 임의의 형태의 감지 피드백, 예컨대 시각적인 피드백, 가청적인 피드백, 또는 촉각적인 피드백일 수 있고; 사용자로부터의 입력은 음향, 스피치, 또는 촉각 입력을 포함하는 임의의 형태로 수신될 수 있다. 부가적으로, 컴퓨터는 사용자에 의해 사용되는 디바이스에 문서들을 전송하고 그 디바이스로부터 문서들을 수신함으로써; 예컨대, 사용자의 디바이스 상의 웹 브라우저로부터 수신된 요청들에 대한 응답으로 그 웹 브라우저에 웹 페이지들을 전송함으로써 사용자와 상호작용할 수 있다. 또한, 컴퓨터는, 텍스트 메시지들 또는 다른 형태들의 메시지를 개인용 디바이스, 예컨대 스마트폰에 전송하고, 메시징 애플리케이션을 구동시키고, 리턴으로 사용자로부터 응답 메시지들을 수신함으로써 사용자와 상호작용할 수 있다.
본 명세서에 설명된 청구 대상의 실시예들은, 예컨대 데이터 서버로서 후단 컴포넌트를 포함하거나, 또는 미들웨어 컴포넌트, 예컨대 애플리케이션 서버를 포함하거나, 또는 전단 컴포넌트, 예컨대 사용자가 본 명세서에 설명된 청구 대상의 구현과 상호작용할 수 있게 하는 그래픽 사용자 인터페이스, 웹 브라우저, 또는 앱을 갖는 클라이언트 컴퓨터를 포함하거나, 또는 하나 이상의 그러한 후단, 미들웨어, 또는 전단 컴포넌트들의 임의의 조합을 포함하는 컴퓨팅 시스템에서 구현될 수 있다. 시스템의 컴포넌트들은, 임의의 형태 또는 매체의 디지털 데이터 통신, 예컨대 통신 네트워크에 의해 인터커넥트될 수 있다. 통신 네트워크들의 예들은 로컬 영역 네트워크(LAN) 및 광역 네트워크(WAN), 예컨대 인터넷을 포함한다.
컴퓨팅 시스템은 클라이언트들 및 서버들을 포함할 수 있다. 클라이언트 및 서버는 일반적으로 서로 원격이며, 통상적으로 통신 네트워크를 통해 상호작용한다. 클라이언트와 서버의 관계는 각각의 컴퓨터들 상에서 구동되고 서로에 대해 클라이언트-서버 관계를 갖는 컴퓨터 프로그램들에 의해 발생한다. 일부 실시예들에서, 서버는, 예컨대 클라이언트로서 작동하는 디바이스와 상호작용하는 사용자에게 데이터를 디스플레이하고 그 사용자로부터 사용자 입력을 수신하려는 목적들을 위해 데이터, 예컨대 HTML 페이지를 사용자 디바이스에 송신한다. 사용자 디바이스에서 생성된 데이터, 예컨대 사용자 상호작용의 결과는 사용자 디바이스로부터 서버에서 수신될 수 있다.
실시예 1은 뉴럴 네트워크들을 트레이닝시키기 위한 특수-목적 하드웨어 칩이며, 특수-목적 하드웨어 칩은, 특수-목적 하드웨어 칩의 컴퓨테이션 연산을 제어하도록 구성된 스칼라 프로세서; 벡터 프로세서 ― 벡터 프로세서는, 모두 단일 명령 다중-데이터 방식으로 동일한 명령을 실행하고 벡터 프로세서의 로드 및 저장 명령들을 통해 서로 통신하는 벡터 프로세싱 유닛들의 2차원 어레이를 갖도록 구성됨 ―; 및 곱셈 결과를 획득하기 위해 적어도 하나의 2차원 행렬을 제2의 1차원 벡터 또는 2차원 행렬과 곱하도록 구성되는, 벡터 프로세서에 커플링된 행렬 곱셈 유닛을 포함한다.
실시예 2는 실시예 1의 특수-목적 하드웨어 칩이며, 빠른 전용 메모리를 벡터 프로세서에 제공하도록 구성된 벡터 메모리를 더 포함한다.
실시예 3은 실시예 1 또는 2의 특수-목적 하드웨어 칩이며, 빠른 전용 메모리를 스칼라 프로세서에 제공하도록 구성된 스칼라 메모리를 더 포함한다.
실시예 4는 실시예 1 내지 실시예 3 중 어느 하나의 실시예의 특수-목적 하드웨어 칩이며, 행렬의 전치 연산을 수행하도록 구성된 전치 유닛을 더 포함한다.
실시예 5는 실시예 1 내지 실시예 4 중 어느 하나의 실시예의 특수-목적 하드웨어 칩이며, 벡터 어레이의 상이한 레인들 사이에서 수들에 대한 감소를 수행하고 수들을 치환시키도록 구성된 감소 및 치환 유닛을 더 포함한다.
실시예 6은 실시예 1 내지 실시예 5 중 어느 하나의 실시예의 특수-목적 하드웨어 칩이며, 특수-목적 하드웨어 칩의 데이터를 저장하도록 구성된 고-대역폭 메모리를 더 포함한다.
실시예 7은 실시예 1 내지 실시예 6 중 어느 하나의 실시예의 특수-목적 하드웨어 칩이며, 희소 컴퓨테이션 코어를 더 포함한다.
실시예 8은 실시예 1 내지 실시예 7 중 어느 하나의 실시예의 특수-목적 하드웨어 칩이며, 인터페이스; 및 인터페이스, 또는 특수-목적 하드웨어 칩 상의 리소스들을 다른 특수-목적 하드웨어 칩들 또는 리소스들에 연결시키는 칩간 인터커넥트를 더 포함한다.
실시예 9는 실시예 1 내지 실시예 8 중 어느 하나의 실시예의 특수-목적 하드웨어 칩이며, 복수의 고대역폭 메모리를 더 포함하고, 여기서, 칩간 인터커넥트는 인터페이스 및 고대역폭 메모리를 다른 특수-목적 하드웨어 칩들에 연결시킨다.
실시예 10은 실시예 1 내지 실시예 9 중 어느 하나의 실시예의 특수-목적 하드웨어 칩이며, 여기서, 인터페이스는 호스트 컴퓨터에 대한 호스트 인터페이스이다.
실시예 11은 실시예 1 내지 실시예 10 중 어느 하나의 실시예의 특수-목적 하드웨어 칩이며, 여기서, 인터페이스는 호스트 컴퓨터들의 네트워크에 대한 표준 네트워크 인터페이스이다.
본 명세서가 많은 특정한 구현 세부사항들을 포함하지만, 이들은 임의의 발명들의 범위 또는 청구될 수 있는 것의 범위에 대한 제한들로서 해석되는 것이 아니라 오히려, 특정 발명들의 특정 실시예들에 특정할 수 있는 특징들의 설명들로서 해석되어야 한다. 별도의 실시예들의 맥락에서 본 명세서에 설명된 특정한 특징들은 또한, 단일 실시예에서 조합하여 구현될 수 있다. 대조적으로, 단일 실시예의 맥락에서 설명된 다양한 특징들은 또한, 다수의 실시예들에서 별개로 또는 임의의 적절한 하위조합으로 구현될 수 있다. 또한, 특징들이 특정한 조합들에서 동작하는 것으로 위에서 설명되고 심지어 초기에는 그와 같이 청구될 수 있지만, 청구된 조합으로부터의 하나 이상의 특징들은 일부 경우들에서, 그 조합으로부터 삭제될 수 있으며, 청구된 조합은 하위조합 또는 하위조합의 변경에 관한 것일 수 있다.
유사하게, 동작들이 특정한 순서로 도면들에 도시되지만, 이것은, 바람직한 결과들을 달성하기 위해, 그러한 동작들이 도시된 특정한 순서 또는 순차적인 순서로 수행되거나, 모든 예시된 동작들이 수행될 것을 요구하는 것으로서 이해되지는 않아야 한다. 특정한 환경들에서, 멀티태스킹 및 병렬 프로세싱이 유리할 수 있다. 또한, 위에서 설명된 실시예들에서의 다양한 시스템 모듈들 및 컴포넌트들의 분리는 모든 실시예들에서 그러한 분리를 요구하는 것으로서 이해되지는 않아야 하며, 설명된 프로그램 컴포넌트들 및 시스템들이 일반적으로, 단일 소프트웨어 제품에 함께 통합되거나 다수의 소프트웨어 제품들로 패키징될 수 있다는 것이 이해되어야 한다.
청구 대상의 특정 실시예들이 설명되었다. 다른 실시예들은 다음의 청구항들의 범위 내에 존재한다. 예컨대, 청구항들에서 인용된 동작들은, 상이한 순서로 수행될 수 있으며, 여전히 바람직한 결과들을 달성할 수 있다. 일 예로서, 첨부한 도면들에 도시된 프로세스들은 바람직한 결과들을 달성하기 위해, 도시된 특정 순서 또는 순차적인 순서를 반드시 요구하지는 않는다. 일부 경우들에서, 멀티태스킹 및 병렬 프로세싱이 유리할 수 있다.

Claims (20)

  1. 특수-목적 하드웨어 칩을 이용하여 뉴럴 네트워크들을 트레이닝시키기 위한 방법으로서,
    상기 특수-목적 하드웨어 칩의 벡터 프로세서에 의하여, 활성화 입력들의 복수의 2차원 행렬들을 나타내는 데이터를 수신하는 단계 - 활성화 입력들의 2차원 행렬들 각각은 특정한 형태를 가지며 뉴럴 네트워크의 각각의 네트워크 계층에 대한 입력 활성화 행렬의 활성화 입력들의 일부를 포함하고, 상기 벡터 프로세서는:
    2차원 구조로 배열된 복수의 벡터 프로세싱 유닛들 - 상기 2차원 구조는 복수의 레인(lane)들 및 상기 복수의 레인들 각각에 대한 복수의 서브레인(sublane)들을 포함하고, 각각의 벡터 프로세싱 유닛은 상기 복수의 서브레인들 각각에 위치함 -; 및
    하나 이상의 벡터 레지스터들 - 각각의 벡터 레지스터는 상기 활성화 입력들의 복수의 2차원 행렬들 중 하나를 저장하도록 구성됨 - 을 포함함 -;
    행렬 곱셈 유닛에 의하여, 상기 복수의 2차원 행렬들 각각에 대한 개별적인 곱셈 결과를 생성하는 단계; 및
    상기 개별적인 곱셈 결과에 기반하여 역전파(backpropagation)를 통해 상기 뉴럴 네트워크의 가중치 값들을 업데이트하는 단계
    를 포함하고,
    상기 개별적인 곱셈 결과를 생성하는 단계는,
    다중 클록 사이클들의 각 클록 사이클에서, 활성화 입력들의 2차원 행렬에서의 활성화 입력들의 각각의 행의 적어도 일부를 상기 특수-목적 하드웨어 칩의 상기 행렬 곱셈 유닛에 로딩하는 단계 - 상기 활성화 입력들의 2차원 행렬은 상기 하나 이상의 벡터 레지스터들 중 대응하는 벡터 레지스터에 저장됨 -;
    상기 다중 클록 사이클들의 마지막 클록 사이클의 종료 이전에, 상기 행렬 곱셈 유닛에 가중치 값들의 2차원 행렬을 로딩하는 단계 - 상기 가중치 값들의 2차원 행렬에서의 가중치 값들은 상기 활성화 입력들의 2차원 행렬에서의 활성화 입력들에 대응함 -; 및
    상기 행렬 곱셈 유닛에 의하여, 상기 개별적인 곱셈 결과를 획득하기 위해 상기 활성화 입력들의 2차원 행렬과 상기 가중치 값들의 2차원 행렬을 곱하는 단계
    를 포함하는,
    뉴럴 네트워크들을 트레이닝시키기 위한 방법.
  2. 제1항에 있어서,
    상기 활성화 입력들의 2차원 행렬에서의 활성화 입력들의 각각의 행의 적어도 일부를 상기 행렬 곱셈 유닛에 로딩하는 단계는,
    상기 활성화 입력들의 각각의 행의 적어도 일부를 제1 부동 소수점 형식에서 상기 제1 부동 소수점 형식보다 작은 비트 사이즈를 갖는 제2 부동 소수점 형식으로 변환하는 단계를 더 포함하는,
    뉴럴 네트워크들을 트레이닝시키기 위한 방법.
  3. 제1항에 있어서,
    상기 하나 이상의 벡터 레지스터들 중 하나의 벡터 레지스터에 상기 개별적인 곱셈 결과를 저장하는 단계를 더 포함하는,
    뉴럴 네트워크들을 트레이닝시키기 위한 방법.
  4. 제1항에 있어서,
    상기 개별적인 곱셈 결과는 2차원 행렬이고, 상기 개별적인 곱셈 결과를 저장하는 단계는,
    다른 세트의 클록 사이클들의 각 클록 사이클에 대하여, 상기 개별적인 곱셈 결과의 값들의 각각의 행을 상기 하나 이상의 벡터 레지스터들 중 하나에서의 선입-선출(first-in-first-out) 큐에 일시적으로 저장하는 단계
    를 포함하는,
    뉴럴 네트워크들을 트레이닝시키기 위한 방법.
  5. 제1항에 있어서,
    상기 벡터 프로세서에 의하여, 상기 특수-목적 하드웨어 칩의 벡터 메모리로부터 상기 활성화 입력들의 복수의 2차원 행렬들을 나타내는 데이터를 수신하는 단계를 더 포함하고, 상기 벡터 메모리는 빠른 전용 메모리를 상기 벡터 프로세서에 제공하도록 구성되는,
    뉴럴 네트워크들을 트레이닝시키기 위한 방법.
  6. 제1항에 있어서,
    상기 특수-목적 하드웨어 칩의 전치 유닛(transpose unit)에 의하여, 상기 활성화 입력들의 2차원 행렬 또는 상기 가중치 값들의 2차원 행렬의 전치 연산을 수행하는 단계를 더 포함하는,
    뉴럴 네트워크들을 트레이닝시키기 위한 방법.
  7. 제1항에 있어서,
    상기 특수-목적 하드웨어 칩의 감소 유닛에 의하여, 상기 개별적인 곱셈 결과의 수들에 대한 감소를 수행하는 단계; 및
    상기 특수-목적 하드웨어 칩의 치환 유닛에 의하여, 상기 복수의 벡터 프로세싱 유닛들 중 상이한 레인들의 벡터 프로세싱 유닛들 사이에서 수들을 치환시키는 단계를 더 포함하는,
    뉴럴 네트워크들을 트레이닝시키기 위한 방법.
  8. 제1항에 있어서,
    상기 특수-목적 하드웨어 칩의 고대역폭 메모리에 상기 개별적인 곱셈 결과를 저장하는 단계를 더 포함하는,
    뉴럴 네트워크들을 트레이닝시키기 위한 방법.
  9. 제1항에 있어서,
    상기 특수-목적 하드웨어 칩의 희소 컴퓨테이션 코어(sparse computation core)에 의해 미리-구축된 룩업 테이블을 사용하여 희소한 고차원(high-dimensional) 데이터를 조밀한 저차원(low-dimensional) 데이터로 맵핑하는 단계를 더 포함하는,
    뉴럴 네트워크들을 트레이닝시키기 위한 방법.
  10. 제1항에 있어서,
    상기 특수-목적 하드웨어 칩의 칩간 인터커넥트(inter-chip interconnect)를 사용하여, 상기 특수-목적 하드웨어 칩의 인터페이스 또는 리소스들을 다른 특수-목적 하드웨어 칩들 또는 리소스들에 연결시키는 단계를 더 포함하는,
    뉴럴 네트워크들을 트레이닝시키기 위한 방법.
  11. 제10항에 있어서,
    상기 칩간 인터커넥트는 상기 인터페이스 및 상기 특수-목적 하드웨어 칩의 고대역폭 메모리를 다른 특수-목적 하드웨어 칩들에 연결시키는,
    뉴럴 네트워크들을 트레이닝시키기 위한 방법.
  12. 제10항에 있어서,
    상기 인터페이스는, 호스트 컴퓨터에 대한 호스트 인터페이스이거나 또는 호스트 컴퓨터들의 네트워크에 대한 표준 네트워크 인터페이스인,
    뉴럴 네트워크들을 트레이닝시키기 위한 방법.
  13. 제1항에 있어서,
    상기 하나 이상의 벡터 레지스터들은 32개의 벡터 레지스터들을 포함하는,
    뉴럴 네트워크들을 트레이닝시키기 위한 방법.
  14. 제1항에 있어서,
    상기 복수의 벡터 프로세싱 유닛들의 각각의 벡터 프로세싱 유닛은, 각각의 클록 사이클에서 2개의 개별적인 산술 로직 유닛(arithmetic logic unit, ALU) 명령들, 개별적인 로드 명령 및 개별적인 저장 명령을 실행하도록 구성되는,
    뉴럴 네트워크들을 트레이닝시키기 위한 방법.
  15. 제14항에 있어서,
    상기 복수의 벡터 프로세싱 유닛들에서의 각각의 벡터 프로세싱 유닛은, 각각의 클록 사이클에서 상기 개별적인 로드 및 저장 명령들을 실행하기 위한 각각의 오프셋 메모리 어드레스들을 계산하도록 구성되는,
    뉴럴 네트워크들을 트레이닝시키기 위한 방법.
  16. 제1항에 있어서,
    상기 복수의 벡터 프로세싱 유닛들 중 동일한 레인에 위치하는 벡터 프로세싱 유닛들은 개별적인 로드 및 저장 명령들을 통해 서로 통신하도록 구성되는,
    뉴럴 네트워크들을 트레이닝시키기 위한 방법.
  17. 하나 이상의 컴퓨터들 및 하나 이상의 저장 디바이스들을 포함하는 시스템으로서, 상기 하나 이상의 저장 디바이스들에는, 상기 하나 이상의 컴퓨터들에 의하여 실행될 경우, 상기 하나 이상의 컴퓨터들로 하여금 특수-목적 하드웨어 칩을 이용하여 뉴럴 네트워크들을 트레이닝시키기 위한 동작들을 수행하게 하는 명령들이 저장되고, 상기 동작들은:
    상기 특수-목적 하드웨어 칩의 벡터 프로세서에 의하여, 활성화 입력들의 복수의 2차원 행렬들을 나타내는 데이터를 수신하는 동작 - 활성화 입력들의 2차원 행렬들 각각은 특정한 형태를 가지며 뉴럴 네트워크의 각각의 네트워크 계층에 대한 입력 활성화 행렬의 활성화 입력들의 일부를 포함하고, 상기 벡터 프로세서는:
    2차원 구조로 배열된 복수의 벡터 프로세싱 유닛들 - 상기 2차원 구조는 복수의 레인들 및 상기 복수의 레인들 각각에 대한 복수의 서브레인들을 포함하고, 각각의 벡터 프로세싱 유닛은 상기 복수의 서브레인들 각각에 위치함 -; 및
    하나 이상의 벡터 레지스터들 - 각각의 벡터 레지스터는 상기 활성화 입력들의 복수의 2차원 행렬들 중 하나를 저장하도록 구성됨 - 을 포함함 -;
    행렬 곱셈 유닛에 의하여, 상기 복수의 2차원 행렬들 각각에 대한 개별적인 곱셈 결과를 생성하는 동작; 및
    상기 개별적인 곱셈 결과에 기반하여 역전파를 통해 상기 뉴럴 네트워크의 가중치 값들을 업데이트하는 동작
    을 포함하고,
    상기 개별적인 곱셈 결과를 생성하는 동작은,
    다중 클록 사이클들의 각 클록 사이클에서, 활성화 입력들의 2차원 행렬에서의 활성화 입력들의 각각의 행의 적어도 일부를 상기 특수-목적 하드웨어 칩의 상기 행렬 곱셈 유닛에 로딩하는 동작 - 상기 활성화 입력들의 2차원 행렬은 상기 하나 이상의 벡터 레지스터들 중 대응하는 벡터 레지스터에 저장됨 -;
    상기 다중 클록 사이클들의 마지막 클록 사이클의 종료 이전에, 상기 행렬 곱셈 유닛에 가중치 값들의 2차원 행렬을 로딩하는 동작 - 상기 가중치 값들의 2차원 행렬에서의 가중치 값들은 상기 활성화 입력들의 2차원 행렬에서의 활성화 입력들에 대응함 -; 및
    상기 행렬 곱셈 유닛에 의하여, 상기 개별적인 곱셈 결과를 획득하기 위해 상기 활성화 입력들의 2차원 행렬과 상기 가중치 값들의 2차원 행렬을 곱하는 동작
    을 포함하는,
    시스템.
  18. 제17항에 있어서,
    상기 활성화 입력들의 2차원 행렬에서의 활성화 입력들의 각각의 행의 적어도 일부를 상기 행렬 곱셈 유닛에 로딩하는 동작은,
    상기 활성화 입력들의 각각의 행의 적어도 일부를 제1 부동 소수점 형식에서 상기 제1 부동 소수점 형식보다 작은 비트 사이즈를 갖는 제2 부동 소수점 형식으로 변환하는 동작을 더 포함하는,
    시스템.
  19. 하나 이상의 컴퓨터들에 의해 실행될 경우, 상기 하나 이상의 컴퓨터들로 하여금 특수-목적 하드웨어 칩을 이용하여 뉴럴 네트워크들을 트레이닝시키기 위한 동작들을 수행하도록 하는 명령들로 인코딩된 하나 이상의 비-일시적 컴퓨터 판독 가능 저장 매체로서, 상기 동작들은:
    상기 특수-목적 하드웨어 칩의 벡터 프로세서에 의하여, 활성화 입력들의 복수의 2차원 행렬들을 나타내는 데이터를 수신하는 동작 - 활성화 입력들의 2차원 행렬들 각각은 특정한 형태를 가지며 뉴럴 네트워크의 각각의 네트워크 계층에 대한 입력 활성화 행렬의 활성화 입력들의 일부를 포함하고, 상기 벡터 프로세서는:
    2차원 구조로 배열된 복수의 벡터 프로세싱 유닛들 - 상기 2차원 구조는 복수의 레인들 및 상기 복수의 레인들 각각에 대한 복수의 서브레인들을 포함하고, 각각의 벡터 프로세싱 유닛은 상기 복수의 서브레인들 각각에 위치함 -; 및
    하나 이상의 벡터 레지스터들 - 각각의 벡터 레지스터는 상기 활성화 입력들의 복수의 2차원 행렬들 중 하나를 저장하도록 구성됨 - 을 포함함 -;
    행렬 곱셈 유닛에 의하여, 상기 복수의 2차원 행렬들 각각에 대한 개별적인 곱셈 결과를 생성하는 동작; 및
    상기 개별적인 곱셈 결과에 기반하여 역전파를 통해 상기 뉴럴 네트워크의 가중치 값들을 업데이트하는 동작
    을 포함하고,
    상기 개별적인 곱셈 결과를 생성하는 동작은,
    다중 클록 사이클들의 각 클록 사이클에서, 활성화 입력들의 2차원 행렬에서의 활성화 입력들의 각각의 행을 상기 특수-목적 하드웨어 칩의 행렬 곱셈 유닛에 로딩하는 동작 - 상기 활성화 입력들의 2차원 행렬은 상기 하나 이상의 벡터 레지스터들 중 대응하는 벡터 레지스터에 저장됨 -;
    상기 다중 클록 사이클들의 마지막 클록 사이클의 종료 이전에, 상기 행렬 곱셈 유닛에 가중치 값들의 2차원 행렬을 로딩하는 동작 - 상기 가중치 값들의 2차원 행렬에서의 가중치 값들은 상기 활성화 입력들의 2차원 행렬에서의 활성화 입력들에 대응함 -; 및
    상기 행렬 곱셈 유닛에 의하여, 상기 개별적인 곱셈 결과를 획득하기 위해 상기 활성화 입력들의 2차원 행렬과 상기 가중치 값들의 2차원 행렬을 곱하는 동작
    을 포함하는,
    하나 이상의 비-일시적 컴퓨터 판독 가능 저장 매체.
  20. 제19항에 있어서,
    활성화 입력들의 2차원 행렬에서의 활성화 입력들의 각각의 행을 상기 특수-목적 하드웨어 칩의 행렬 곱셈 유닛에 로딩하는 동작은,
    상기 활성화 입력들의 각각의 행의 적어도 일부를 제1 부동 소수점 형식에서 상기 제1 부동 소수점 형식보다 작은 비트 사이즈를 갖는 제2 부동 소수점 형식으로 변환하는 동작을 더 포함하는,
    하나 이상의 비-일시적 컴퓨터 판독 가능 저장 매체.
KR1020227045015A 2017-05-17 2018-05-17 특수 목적 뉴럴 네트워크 트레이닝 칩 KR102661910B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020247013765A KR20240056801A (ko) 2017-05-17 2018-05-17 특수 목적 뉴럴 네트워크 트레이닝 칩

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US201762507771P 2017-05-17 2017-05-17
US62/507,771 2017-05-17
PCT/US2018/033215 WO2018213598A1 (en) 2017-05-17 2018-05-17 Special purpose neural network training chip
KR1020217031994A KR102481428B1 (ko) 2017-05-17 2018-05-17 특수 목적 뉴럴 네트워크 트레이닝 칩

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
KR1020217031994A Division KR102481428B1 (ko) 2017-05-17 2018-05-17 특수 목적 뉴럴 네트워크 트레이닝 칩

Related Child Applications (1)

Application Number Title Priority Date Filing Date
KR1020247013765A Division KR20240056801A (ko) 2017-05-17 2018-05-17 특수 목적 뉴럴 네트워크 트레이닝 칩

Publications (2)

Publication Number Publication Date
KR20230003443A true KR20230003443A (ko) 2023-01-05
KR102661910B1 KR102661910B1 (ko) 2024-04-26

Family

ID=62784215

Family Applications (4)

Application Number Title Priority Date Filing Date
KR1020217031994A KR102481428B1 (ko) 2017-05-17 2018-05-17 특수 목적 뉴럴 네트워크 트레이닝 칩
KR1020227045015A KR102661910B1 (ko) 2017-05-17 2018-05-17 특수 목적 뉴럴 네트워크 트레이닝 칩
KR1020197026557A KR102312264B1 (ko) 2017-05-17 2018-05-17 특수 목적 뉴럴 네트워크 트레이닝 칩
KR1020247013765A KR20240056801A (ko) 2017-05-17 2018-05-17 특수 목적 뉴럴 네트워크 트레이닝 칩

Family Applications Before (1)

Application Number Title Priority Date Filing Date
KR1020217031994A KR102481428B1 (ko) 2017-05-17 2018-05-17 특수 목적 뉴럴 네트워크 트레이닝 칩

Family Applications After (2)

Application Number Title Priority Date Filing Date
KR1020197026557A KR102312264B1 (ko) 2017-05-17 2018-05-17 특수 목적 뉴럴 네트워크 트레이닝 칩
KR1020247013765A KR20240056801A (ko) 2017-05-17 2018-05-17 특수 목적 뉴럴 네트워크 트레이닝 칩

Country Status (8)

Country Link
US (2) US11275992B2 (ko)
EP (3) EP4361832A2 (ko)
JP (3) JP6938661B2 (ko)
KR (4) KR102481428B1 (ko)
CN (2) CN110622134B (ko)
DK (1) DK3568756T3 (ko)
TW (3) TWI812254B (ko)
WO (1) WO2018213598A1 (ko)

Families Citing this family (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10853070B1 (en) * 2017-10-23 2020-12-01 Habana Labs Ltd. Processor suspension buffer and instruction queue
US11645358B2 (en) * 2019-01-29 2023-05-09 Hewlett Packard Enterprise Development Lp Generation of executable files corresponding to neural network models
US10997116B2 (en) * 2019-08-06 2021-05-04 Microsoft Technology Licensing, Llc Tensor-based hardware accelerator including a scalar-processing unit
KR102496734B1 (ko) * 2019-10-22 2023-02-06 에스앤즈 주식회사 분산환경 패킷 전송 기반의 스트리밍 데이터 딥러닝 처리 가속화 시스템 및 이를 이용한 멀티 로케이션 멀티 스트리밍 이상상태 탐지 시스템
CN111047036B (zh) * 2019-12-09 2023-11-14 Oppo广东移动通信有限公司 神经网络处理器、芯片和电子设备
US11054998B1 (en) * 2019-12-12 2021-07-06 Facebook, Inc. High bandwidth memory system with distributed request broadcasting masters
US11755683B2 (en) 2019-12-23 2023-09-12 Western Digital Technologies, Inc. Flexible accelerator for sparse tensors (FAST) in machine learning
US11797830B2 (en) 2020-03-25 2023-10-24 Western Digital Technologies, Inc. Flexible accelerator for sparse tensors in convolutional neural networks
US11462003B2 (en) 2020-03-25 2022-10-04 Western Digital Technologies, Inc. Flexible accelerator for sparse tensors in convolutional neural networks
US20210312266A1 (en) * 2020-04-01 2021-10-07 Microsoft Technology Licensing, Llc Deep neural network accelerator with independent datapaths for simultaneous processing of different classes of operations
CN113867788A (zh) * 2020-06-30 2021-12-31 上海寒武纪信息科技有限公司 一种计算装置、芯片、板卡、电子设备和计算方法
CN112148453A (zh) * 2020-09-29 2020-12-29 深圳致星科技有限公司 用于隐私计算的计算芯片及网络计算系统
CN112416433B (zh) * 2020-11-24 2023-01-17 中科寒武纪科技股份有限公司 一种数据处理装置、数据处理方法及相关产品
EP4012623A1 (en) * 2020-12-10 2022-06-15 Toyota Jidosha Kabushiki Kaisha Efficient and stable training of a neural network in compressed form
WO2022133623A1 (en) * 2020-12-24 2022-06-30 Intel Corporation Accelerated scale-out performance of deep learning training workload with embedding tables
CN112860318A (zh) * 2021-01-29 2021-05-28 成都商汤科技有限公司 一种数据传输方法、芯片、设备和存储介质
US11782871B2 (en) 2021-04-27 2023-10-10 Microchip Technology Inc. Method and apparatus for desynchronizing execution in a vector processor
TWI808000B (zh) * 2022-09-20 2023-07-01 創鑫智慧股份有限公司 矩陣裝置及其操作方法
CN115713103B (zh) * 2022-11-24 2023-08-18 辉羲智能科技(上海)有限公司 片上-片间互连的神经网络芯片联合性能预测方法及系统
TWI830669B (zh) * 2023-02-22 2024-01-21 旺宏電子股份有限公司 編碼方法及編碼電路

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2013101210A1 (en) * 2011-12-30 2013-07-04 Intel Corporation Transpose instruction
KR20160046623A (ko) * 2014-10-21 2016-04-29 삼성전자주식회사 재구성 가능 프로세서 및 그 동작 방법
WO2016171928A1 (en) * 2015-04-23 2016-10-27 Google Inc. Energy efficient processor core architecture for image processor
WO2016186801A1 (en) * 2015-05-21 2016-11-24 Google Inc. Neural network processor
US20160378465A1 (en) * 2015-06-23 2016-12-29 Intel Corporation Efficient sparse array handling in a processor

Family Cites Families (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS5841071B2 (ja) 1981-10-13 1983-09-09 東北電子産業株式会社 生体誘導加熱装置
JPH04290155A (ja) * 1991-03-19 1992-10-14 Fujitsu Ltd 並列データ処理方式
CA2040903C (en) 1991-04-22 2003-10-07 John G. Sutherland Neural networks
US5872988A (en) * 1992-06-17 1999-02-16 U.S. Philips Corporation Parallel data processing device having a concatenated data path between elementary processors
US5423051A (en) * 1992-09-24 1995-06-06 International Business Machines Corporation Execution unit with an integrated vector operation capability
WO2002084451A2 (en) 2001-02-06 2002-10-24 Victor Demjanenko Vector processor architecture and methods performed therein
US7305540B1 (en) * 2001-12-31 2007-12-04 Apple Inc. Method and apparatus for data processing
US7219085B2 (en) 2003-12-09 2007-05-15 Microsoft Corporation System and method for accelerating and optimizing the processing of machine learning techniques using a graphics processing unit
US8396582B2 (en) 2008-03-08 2013-03-12 Tokyo Electron Limited Method and apparatus for self-learning and self-improving a semiconductor manufacturing tool
US9785565B2 (en) * 2014-06-30 2017-10-10 Microunity Systems Engineering, Inc. System and methods for expandably wide processor instructions
US9589443B2 (en) 2014-09-02 2017-03-07 At&T Intellectual Property I, L.P. Method and apparatus for providing an emergency notification for an allergic reaction
US9965824B2 (en) 2015-04-23 2018-05-08 Google Llc Architecture for high performance, power efficient, programmable image processing
US10192162B2 (en) 2015-05-21 2019-01-29 Google Llc Vector computation unit in a neural network processor
GB2543554B (en) 2015-10-22 2019-01-23 Advanced Risc Mach Ltd Handling exceptional conditions for vector arithmetic instruction
US9904874B2 (en) * 2015-11-05 2018-02-27 Microsoft Technology Licensing, Llc Hardware-efficient deep convolutional neural networks
US9898441B2 (en) 2016-02-05 2018-02-20 Google Llc Matrix processing apparatus
WO2017146706A1 (en) * 2016-02-25 2017-08-31 Hewlett Packard Enterprise Development Lp Performing complex multiply-accumulate operations
JP6988040B2 (ja) * 2016-12-31 2022-01-05 インテル・コーポレーション ヘテロジニアスコンピューティングのためのシステム、方法及び装置

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2013101210A1 (en) * 2011-12-30 2013-07-04 Intel Corporation Transpose instruction
KR20160046623A (ko) * 2014-10-21 2016-04-29 삼성전자주식회사 재구성 가능 프로세서 및 그 동작 방법
WO2016171928A1 (en) * 2015-04-23 2016-10-27 Google Inc. Energy efficient processor core architecture for image processor
WO2016186801A1 (en) * 2015-05-21 2016-11-24 Google Inc. Neural network processor
US20160378465A1 (en) * 2015-06-23 2016-12-29 Intel Corporation Efficient sparse array handling in a processor

Also Published As

Publication number Publication date
US20180336456A1 (en) 2018-11-22
TW202311939A (zh) 2023-03-16
TW201908965A (zh) 2019-03-01
TWI728247B (zh) 2021-05-21
KR20190111132A (ko) 2019-10-01
JP2023145517A (ja) 2023-10-11
CN110622134A (zh) 2019-12-27
EP4083789A1 (en) 2022-11-02
KR102661910B1 (ko) 2024-04-26
EP3568756B1 (en) 2022-07-06
US20220261622A1 (en) 2022-08-18
US11275992B2 (en) 2022-03-15
DK3568756T3 (da) 2022-09-19
KR20240056801A (ko) 2024-04-30
JP6938661B2 (ja) 2021-09-22
WO2018213598A1 (en) 2018-11-22
JP7314217B2 (ja) 2023-07-25
JP2022003532A (ja) 2022-01-11
CN116644790A (zh) 2023-08-25
TW202132978A (zh) 2021-09-01
TWI769810B (zh) 2022-07-01
EP3568756A1 (en) 2019-11-20
KR102312264B1 (ko) 2021-10-12
EP4361832A2 (en) 2024-05-01
JP2020519981A (ja) 2020-07-02
EP4083789B1 (en) 2024-05-15
CN110622134B (zh) 2023-06-27
KR102481428B1 (ko) 2022-12-23
KR20210123435A (ko) 2021-10-13
TWI812254B (zh) 2023-08-11

Similar Documents

Publication Publication Date Title
KR102481428B1 (ko) 특수 목적 뉴럴 네트워크 트레이닝 칩
US11989258B2 (en) Performing matrix multiplication in hardware
US11907330B2 (en) Low latency matrix multiply unit
TW202414199A (zh) 用於訓練神經網路之方法、系統及非暫時性電腦可讀儲存媒體

Legal Events

Date Code Title Description
A107 Divisional application of patent
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
A107 Divisional application of patent
GRNT Written decision to grant