KR20220058897A - 컴퓨트-인-메모리 어레이의 컬럼 임계치들을 조정함으로써 xnor 등가 연산들을 수행 - Google Patents
컴퓨트-인-메모리 어레이의 컬럼 임계치들을 조정함으로써 xnor 등가 연산들을 수행 Download PDFInfo
- Publication number
- KR20220058897A KR20220058897A KR1020227006807A KR20227006807A KR20220058897A KR 20220058897 A KR20220058897 A KR 20220058897A KR 1020227006807 A KR1020227006807 A KR 1020227006807A KR 20227006807 A KR20227006807 A KR 20227006807A KR 20220058897 A KR20220058897 A KR 20220058897A
- Authority
- KR
- South Korea
- Prior art keywords
- compute
- memory array
- bias current
- current reference
- activation threshold
- Prior art date
Links
Images
Classifications
-
- G06N3/0635—
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/06—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
- G06N3/063—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
- G06N3/065—Analogue means
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/76—Architectures of general purpose stored program computers
- G06F15/78—Architectures of general purpose stored program computers comprising a single central processing unit
- G06F15/7807—System on chip, i.e. computer system on a single chip; System in package, i.e. computer system on one or more chips in a single package
- G06F15/7821—Tightly coupled to memory, e.g. computational memory, smart memory, processor in memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/3004—Arrangements for executing specific machine instructions to perform operations on memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
- G06N3/044—Recurrent networks, e.g. Hopfield networks
-
- G06N3/0445—
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
- G06N3/045—Combinations of networks
-
- G06N3/0454—
-
- G06N3/0472—
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
- G06N3/048—Activation functions
-
- G06N3/0481—
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/08—Learning methods
- G06N3/084—Backpropagation, e.g. using gradient descent
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
- G06N3/047—Probabilistic or stochastic networks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/08—Learning methods
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Health & Medical Sciences (AREA)
- Life Sciences & Earth Sciences (AREA)
- Biomedical Technology (AREA)
- Biophysics (AREA)
- Computing Systems (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Mathematical Physics (AREA)
- Data Mining & Analysis (AREA)
- Computational Linguistics (AREA)
- Molecular Biology (AREA)
- Evolutionary Computation (AREA)
- General Health & Medical Sciences (AREA)
- Artificial Intelligence (AREA)
- Computer Hardware Design (AREA)
- Neurology (AREA)
- Probability & Statistics with Applications (AREA)
- Microelectronics & Electronic Packaging (AREA)
- Image Analysis (AREA)
- Image Processing (AREA)
Abstract
방법은, 인공 신경망의 컴퓨트-인-메모리 어레이의 컬럼 임계치들을 조정함으로써 XNOR-등가 연산들을 수행한다. 방법은, 가중치 값 및 활성화 값의 함수에 기반하여, 컴퓨트-인-메모리 어레이의 각각의 컬럼에 대해 생성되는 활성화 임계치를 조정하는 단계를 포함한다. 방법은 또한, 컴퓨트-인-메모리 어레이로의 입력 벡터로부터의 입력 값에 기반하여 변환 바이어스 전류 기준을 계산하는 단계를 포함하고, 컴퓨트-인-메모리 어레이는 가중치 값들의 세트로 프로그래밍된다. 조정된 활성화 임계치 및 변환 바이어스 전류 기준은 컴퓨트-인-메모리 어레이의 출력 값들을 결정하기 위한 임계치로서 사용된다.
Description
[0001]
본 특허 출원은, "PERFORMING XNOR EQUIVALENT OPERATIONS BY ADJUSTING COLUMN THRESHOLDS OF A COMPUTE-IN-MEMORY ARRAY"라는 명칭으로 2019년 9월 9일에 출원된 정규 출원 번호 제16/565,308호를 우선권으로 주장하며, 이 출원은 본 출원의 양수인에게 양도되었으며, 이에 의해, 인용에 의해 본원에 명시적으로 포함된다.
[0002]
본 개시내용의 양상들은 일반적으로, 인공 신경망(artificial neural network)의 컴퓨트-인-메모리 어레이(compute-in-memory array)의 컬럼 임계치(column threshold)들을 조정함으로써 XNOR-등가 연산(equivalent operation)들을 수행하는 것에 관한 것이다.
[0003]
BNN(binary neural network)들과 같은 매우 낮은 비트 폭 신경망들은 DNN(deep neural networking)에서 강력하고 새로운 접근법들이다. 이진 신경망들은 데이터 트래픽을 상당히 감소시키고 전력을 절약할 수 있다. 예컨대, 이진 신경망들을 위한 메모리 저장부가 현저하게 감소되는데, 왜냐하면 가중치(weight)들 및 뉴런 활성화(neuron activation)들 둘 모두가 부동 소수점/고정 소수점 정밀도와 비교하여 -1 또는 +1로 이진화되기 때문이다.
[0004]
그러나, 디지털 CMOS(complementary metal-oxide-semiconductor) 프로세싱은 [0,1] 기반(basis)을 사용한다. 이들 이진 신경망들과 연관된 이진 구현들을 수행하기 위해, 이진망의 [-1,+1] 기반이 CMOS [0,1] 기반으로 변환되어야 한다. 이러한 변환은 계산 집약적인 XNOR(exclusive-negative OR) 연산을 이용한다.
[0005]
컴퓨트-인-메모리 시스템들은 BNN(binary neural network)들과 같은 매우 낮은 비트 폭 신경망들을 구현할 수 있다. 컴퓨트-인-메모리 시스템들은 어떠한 프로세싱 능력들을 갖는 메모리를 갖는다. 예컨대, 비트 라인과 워드 라인의 각각의 교차점은 필터 가중치 값을 표현하며, 이는 워드 라인 상의 입력 활성화(input activation)와 곱해져서, 곱(product)을 생성한다. 그런 다음, 각각의 비트 라인을 따른 개별적인 곱들이 합산되어, 출력 텐서(output tensor)의 대응하는 출력 값들을 생성한다. 이러한 구현은 MAC(multiply accumulate) 연산들로 간주될 수 있다. 이들 MAC 연산들은 이진망의 [-1,+1] 기반을 CMOS의 [0,1] 기반으로 변환시킬 수 있다.
[0006]
종래에, 컴퓨트-인-메모리 시스템에 의한 변환은 각각의 비트 셀에서 XNOR 연산을 완료함으로써 달성된다. 그런 다음, 각각의 비트 라인을 따른 결과가 합산되어, 대응하는 출력 값들을 생성한다. 불행하게도, 각각의 비트 셀에 XNOR 함수(function)를 포함시키게 되면, 큰 면적을 소비하고 전력 소비를 증가시킨다.
[0007]
종래의 구현에서, 각각의 비트 셀은, 판독 및 기록의 기본 메모리 함수에 더하여, 입력과 셀 상태 사이의 XNOR의 부가적인 로직 함수를 포함한다. XNOR 능력을 포함하는 결과로서, 메모리(예컨대, SRAM(static random-access memory)) 내의 각각의 셀에 대한 트랜지스터들의 수는 6개 또는 8개에서 12개로 증가하고, 이는 셀 크기 및 전력 소비를 상당히 증가시킨다. 이진 신경망의 [-1,+1] 기반으로부터 CMOS의 [0,1] 기반으로 여전히 변환가능하면서, XNOR 연산을 제거하는 것이 바람직할 것이다.
[0008]
본 개시내용의 일 양상에서, 장치는, 컬럼(column)들 및 로우(row)들을 포함하는 컴퓨트-인-메모리 어레이(compute-in-memory array)를 포함한다. 컴퓨트-인-메모리 어레이는, 가중치 값 및 활성화 값의 함수에 기반하여, 컴퓨트-인-메모리 어레이의 각각의 컬럼에 대해 생성되는 활성화 임계치를 조정하도록 구성된다. 컴퓨트-인-메모리 어레이는 또한, 컴퓨트-인-메모리 어레이로의 입력 벡터로부터의 입력 값에 기반하여 변환 바이어스 전류 기준(conversion bias current reference)을 계산하도록 구성된다. 컴퓨트-인-메모리 어레이는 가중치 값들의 세트로 프로그래밍된다. 조정된 활성화 임계치 및 변환 바이어스 전류 기준은 컴퓨트-인-메모리 어레이의 출력 값들을 결정하기 위한 임계치로서 사용된다.
[0009]
다른 양상은, 로우들 및 컬럼들을 갖는 컴퓨트-인-메모리 어레이의 컬럼 임계치들을 조정함으로써 XNOR-등가 연산들을 수행하기 위한 방법을 개시한다. 방법은, 가중치 값 및 활성화 값의 함수에 기반하여, 컴퓨트-인-메모리 어레이의 각각의 컬럼에 대해 생성되는 활성화 임계치를 조정하는 단계를 포함한다. 방법은 또한, 컴퓨트-인-메모리 어레이로의 입력 벡터로부터의 입력 값에 기반하여 변환 바이어스 전류 기준을 계산하는 단계를 포함한다. 컴퓨트-인-메모리 어레이는 가중치 값들의 세트로 프로그래밍된다. 조정된 활성화 임계치 및 변환 바이어스 전류 기준은 컴퓨트-인-메모리 어레이의 출력 값들을 결정하기 위한 임계치로서 사용된다.
[0010]
다른 양상에서, 비-일시적인 컴퓨터-판독가능 매체는 비-일시적인 프로그램 코드를 기록한다. 비-일시적인 프로그램 코드는, 프로세서(들)에 의해 실행될 때, 프로세서(들)로 하여금, 가중치 값 및 활성화 값의 함수에 기반하여, 로우들 및 컬럼들을 갖는 컴퓨트-인-메모리 어레이의 각각의 컬럼에 대해 생성되는 활성화 임계치를 조정하게 한다. 프로그램 코드는 또한, 프로세서(들)로 하여금, 컴퓨트-인-메모리 어레이로의 입력 벡터로부터의 입력 값에 기반하여 변환 바이어스 전류 기준을 계산하게 한다. 컴퓨트-인-메모리 어레이는 가중치 값들의 세트로 프로그래밍된다. 조정된 활성화 임계치 및 변환 바이어스 전류 기준은 컴퓨트-인-메모리 어레이의 출력 값들을 결정하기 위한 임계치로서 사용된다.
[0011]
다른 양상은, 로우들 및 컬럼들을 갖는 컴퓨트-인-메모리 어레이의 컬럼 임계치들을 조정함으로써 XNOR-등가 연산들을 수행하기 위한 장치를 개시한다. 장치는, 가중치 값 및 활성화 값의 함수에 기반하여, 컴퓨트-인-메모리 어레이의 각각의 컬럼에 대해 생성되는 활성화 임계치를 조정하기 위한 수단을 포함한다. 장치는 또한, 컴퓨트-인-메모리 어레이로의 입력 벡터로부터의 입력 값에 기반하여 변환 바이어스 전류 기준을 계산하기 위한 수단을 포함한다. 컴퓨트-인-메모리 어레이는 가중치 값들의 세트로 프로그래밍된다. 조정된 활성화 임계치 및 변환 바이어스 전류 기준은 컴퓨트-인-메모리 어레이의 출력 값들을 결정하기 위한 임계치로서 사용된다.
[0012]
이것은, 후속하는 상세한 설명이 더 양호하게 이해될 수 있게 하기 위해, 본 개시내용의 특성들 및 기술적 이점들을 다소 광범위하게 약술하였다. 본 개시내용의 부가적인 특성들 및 이점들은 후술될 것이다. 이러한 본 개시내용이 본 개시내용의 동일한 목적들을 수행하기 위해 다른 구조들을 변경 또는 설계하기 위한 기반으로서 용이하게 이용될 수 있다는 것이 당업자들에 의해 인식되어야 한다. 또한, 그러한 등가 구성들이 첨부된 청구항들에 기재된 바와 같은 본 개시내용의 교시를 벗어나지 않는다는 것이 당업자들에 의해 인식되어야 한다. 추가적인 목적들 및 이점들과 함께, 본 개시내용의 구성 및 동작 방법 둘 모두에 대해 본 개시내용의 특징인 것으로 믿어지는 신규한 특성들은, 첨부한 도면들과 관련하여 고려될 경우 다음의 설명으로부터 더 양호하게 이해될 것이다. 그러나, 각각의 도면들은 오직 예시 및 설명의 목적으로 제공되며, 제시된 개시들의 제한들에 대한 정의로 의도되지 않음을 명시적으로 이해해야 한다.
[0013]
본 개시내용의 특성들, 속성, 및 이점들은, 도면들과 함께 취해지는 경우, 아래에 기재된 상세한 설명으로부터 명백해질 수 있으며, 도면에서, 동일한 참조 부호들은 전반에 걸쳐 대응적으로 식별된다.
[0014] 도 1은 본 개시내용의 특정 양상들에 따른, 범용 프로세서를 포함하는 SOC(system-on-a-chip)를 사용하여 신경망을 설계하는 예시적인 구현을 예시한다.
[0015] 도 2a, 도 2b, 및 도 2c는 본 개시내용의 양상들에 따른 신경망을 예시하는 도면들이다.
[0016] 도 2d는 본 개시내용의 양상들에 따른 예시적인 DCN(deep convolutional network)을 예시하는 도면이다.
[0017] 도 3은 본 개시내용의 양상들에 따른 예시적인 DCN(deep convolutional network)을 예시하는 블록도이다.
[0018] 도 4는 본 개시내용의 양상들에 따른, 인공 신경망의 CIM(compute-in-memory) 어레이를 도시하는 아키텍처를 예시한다.
[0019] 도 5는 본 개시내용의 양상들에 따른, 인공 신경망의 컴퓨트-인-메모리 어레이의 컬럼 임계치들을 조정함으로써 XNOR-등가 연산들을 수행하기 위한 아키텍처를 예시한다.
[0020] 도 6은 본 개시내용의 양상들에 따른, 인공 신경망의 컴퓨트-인-메모리 어레이의 컬럼 임계치들을 조정함으로써 XNOR-등가 연산들을 수행하기 위한 방법을 예시한다.
[0014] 도 1은 본 개시내용의 특정 양상들에 따른, 범용 프로세서를 포함하는 SOC(system-on-a-chip)를 사용하여 신경망을 설계하는 예시적인 구현을 예시한다.
[0015] 도 2a, 도 2b, 및 도 2c는 본 개시내용의 양상들에 따른 신경망을 예시하는 도면들이다.
[0016] 도 2d는 본 개시내용의 양상들에 따른 예시적인 DCN(deep convolutional network)을 예시하는 도면이다.
[0017] 도 3은 본 개시내용의 양상들에 따른 예시적인 DCN(deep convolutional network)을 예시하는 블록도이다.
[0018] 도 4는 본 개시내용의 양상들에 따른, 인공 신경망의 CIM(compute-in-memory) 어레이를 도시하는 아키텍처를 예시한다.
[0019] 도 5는 본 개시내용의 양상들에 따른, 인공 신경망의 컴퓨트-인-메모리 어레이의 컬럼 임계치들을 조정함으로써 XNOR-등가 연산들을 수행하기 위한 아키텍처를 예시한다.
[0020] 도 6은 본 개시내용의 양상들에 따른, 인공 신경망의 컴퓨트-인-메모리 어레이의 컬럼 임계치들을 조정함으로써 XNOR-등가 연산들을 수행하기 위한 방법을 예시한다.
[0021]
첨부 도면들과 관련하여 아래에 기술되는 상세한 설명은 다양한 구성들의 설명으로 의도되며, 본원에서 설명되는 개념들이 실시될 수 있는 유일한 구성들을 표현하도록 의도되는 것은 아니다. 상세한 설명은 다양한 개념들의 철저한 이해를 제공할 목적으로 특정 세부사항들을 포함한다. 그러나, 이러한 특정 세부사항들 없이도 이러한 개념들이 실시될 수 있음이 당업자들에게 자명할 것이다. 일부 예들에서, 이러한 개념들을 불명료하게 하는 것을 피하기 위해, 잘 알려진 구조들 및 컴포넌트들은 블록도 형태로 도시된다.
[0022]
이러한 교시들에 기반하여, 당업자는, 본 개시내용의 범위가, 본 개시내용의 임의의 다른 양상과 독립적으로 구현되든 또는 임의의 다른 양상과 결합되어 구현되든, 본 개시내용의 임의의 양상을 커버하도록 의도됨을 인식해야 한다. 예컨대, 기술되는 임의의 수의 양상들을 사용하여 장치가 구현될 수 있거나 방법이 실시될 수 있다. 또한, 본 개시내용의 범위는, 기술된 본 개시내용의 다양한 양상들에 추가로 또는 그 이외의 다른 구조, 기능 또는 구조 및 기능을 사용하여 실시되는 이러한 장치 또는 방법을 커버하도록 의도된다. 개시되는 본 개시내용의 임의의 양상은 청구항의 하나 이상의 엘리먼트들에 의해 구현될 수 있음을 이해해야 한다.
[0023]
"예시적인"이라는 단어는, "예, 예증 또는 예시로서 기능하는" 것을 의미하도록 본원에서 사용된다. 본원에서 "예시적인" 것으로 설명되는 임의의 양상은 반드시 다른 양상들에 비해 선호되거나 유리한 것으로 해석될 필요는 없다.
[0024]
특정한 양상들이 본원에서 설명되지만, 이 양상들의 많은 변경들 및 치환들은 본 개시내용의 범위 내에 속한다. 선호되는 양상들의 일부 이익들 및 이점들이 언급되지만, 본 개시내용의 범위는 특정한 이점들, 사용들 또는 목적들로 제한되도록 의도되지 않는다. 오히려, 본 개시내용의 양상들은, 상이한 기술들, 시스템 구성들, 네트워크들 및 프로토콜들에 광범위하게 적용가능하도록 의도되고, 이들 중 일부는, 선호되는 양상들의 하기 설명 및 도면들에서 예시의 방식으로 예시된다. 상세한 설명 및 도면들은 제한적이기 보다는 본 개시내용의 단지 예시이고, 본 개시내용의 범위는 첨부된 청구항들 및 이들의 균등물들에 의해 정의된다.
[0025]
CIM(compute-in-memory)은, 메모리 어레이에서 MAC(multiply and accumulate) 연산을 수행하는 방법이다. 컴퓨트-인-메모리는, 곱셈 및 합산 연산들을 수행하기 위해 다수의 로우들을 활성화시키고 그리고 아날로그 컬럼 전류를 사용함으로써 메모리 어레이 내의 병렬성(parallelism)을 개선할 수 있다. 예컨대, SRAM 비트 셀들은 이진 신경망들에 대한 XNOR 및 비트-카운팅(bit-counting) 연산들을 가능하게 하도록 맞춤화(customize)될 수 있다.
[0026]
종래에, 컴퓨트-인-메모리 이진 신경망 구현들은, 각각의 비트 셀에서 XNOR 연산들을 완료하고 각각의 비트 셀에 대한 결과를 합산함으로써 달성된다. 각각의 비트 셀에 XNOR 함수를 추가하게 되면, 레이아웃 면적을 증가시키고 전력 소비를 증가시킨다. 예컨대, 메모리(예컨대, SRAM) 내의 각각의 셀 내의 트랜지스터들의 수는 6개 또는 8개에서 12개로 증가한다.
[0027]
본 개시내용의 양상들은, 인공 신경망(예컨대, 이진 신경망)의 컴퓨트-인-메모리 어레이의 컬럼 임계치들을 조정함으로써 XNOR-등가 연산들을 수행하는 것에 관한 것이다. 일 양상에서, 메모리 어레이의 각각의 컬럼에 대한 활성화 임계치는 가중치 값 및 활성화 값의 함수에 기반하여 조정된다. 변환 바이어스 전류 기준은 입력 벡터로부터의 입력 값에 기반하여 계산된다.
[0028]
일 양상에서, 비트 라인 파퓰레이션 카운트(population count)를 변환 바이어스 전류 기준과 조정된 활성화 임계치의 합과 비교하여, 비트 라인의 출력을 결정한다. 비트 라인 파퓰레이션 카운트는, 메모리 어레이의 비트 라인에 대응하는 비트셀들의 각각의 출력의 합이다. 예컨대, 제1 비트 라인과 연관된 각각의 비트셀의 출력의 합(또는 파퓰레이션 카운트)은 비교기에 제1 입력으로서 제공된다. 그런 다음, 파퓰레이션 카운트를 변환 바이어스 전류 기준과 조정된 활성화 임계치의 합과 비교하여, 비트 라인의 출력을 결정한다. 일부 양상들에서, 활성화 임계치는 메모리 어레이의 로우들의 수의 절반 미만이다. 로우들의 수는 입력 벡터의 크기에 대응한다. 일부 양상들에서, 변환 바이어스 전류 기준은 메모리 어레이의 로우들의 수의 절반 미만이다.
[0029]
본 개시내용의 인공 신경망은 이진 신경망, 다중-비트 신경망, 또는 매우 낮은 비트-폭 신경망일 수 있다. 본 개시내용의 양상들은, 이진 포맷으로 인한 메모리 절약으로부터 이익을 얻을 수 있는 큰 네트워크들 또는 매우 낮은 메모리 프로세싱 및 전력을 특정하는 디바이스들(예컨대, 에지 디바이스들)에 적용 가능할 수 있다. 본 개시내용의 양상들은, 이진 신경망들을 구현하는 컴퓨트-인-메모리 시스템들에서 XNOR 연산들을 제거함으로써, 메모리의 크기를 감소시키고 전력 소비를 개선한다. 예컨대, 각각의 비트 셀에서의 XNOR 함수 및 그 대응하는 트랜지스터(들)의 사용을 회피함으로써 메모리의 크기를 감소시키기 위해, 기초 변환(basis transformation)이 구현된다.
[0030]
도 1은 SOC(system-on-a-chip)(100)의 예시적인 구현을 예시하며, 이는 본 개시내용의 특정 양상들에 따라 인공 신경망의 CIM(compute-in-memory) 어레이에 대한 곱셈 및 누산 연산들을 변환하도록 구성된 CPU(central processing unit)(102) 또는 다중-코어 CPU를 포함할 수 있다. 변수들(예컨대, 뉴럴 신호들(neural signals) 및 시냅틱 가중치들(synaptic weights)), 컴퓨테이셔널 디바이스(computational device)(예컨대, 가중치들을 갖는 신경망)와 연관된 시스템 파라미터들, 지연들, 주파수 빈(frequency bin) 정보, 및 작업 정보는, NPU(neural processing unit)(108)와 연관된 메모리 블록, CPU(102)와 연관된 메모리 블록, GPU(graphics processing unit)(104)와 연관된 메모리 블록, DSP(digital signal processor)(106)와 연관된 메모리 블록, 메모리 블록(118)에 저장될 수 있거나, 또는 다수의 블록들에 걸쳐 분포될 수 있다. CPU(102)에서 실행되는 명령들은 CPU(102)와 연관된 프로그램 메모리로부터 로딩될 수 있거나, 또는 메모리 블록(118)으로부터 로딩될 수 있다.
[0031]
SOC(100)는 또한, 특정 기능들에 맞춰진 추가적인 프로세싱 블록들, 이를테면 GPU(104), DSP(106), 연결성 블록(connectivity block)(110)(이는 5G(fifth generation) 연결성, 4G LTE(fourth generation long term evolution) 연결성, Wi-Fi 연결성, USB 연결성, Bluetooth 연결성 등을 포함할 수 있음), 및 멀티미디어 프로세서(112)(이는 예컨대, 제스처(gesture)들을 검출하고 인식할 수 있음)를 포함할 수 있다. 일 구현에서, NPU는 CPU, DSP, 및/또는 GPU에서 구현된다. SOC(100)는 또한, 센서 프로세서(114), ISP(image signal processor)들(116), 및/또는 글로벌 포지셔닝 시스템을 포함할 수 있는 내비게이션 모듈(120)을 포함할 수 있다.
[0032]
SOC(100)는 ARM 명령 세트에 기반할 수 있다. 본 개시내용의 양상에서, 범용 프로세서(102) 내로 로딩되는 명령들은, 가중치 값(예컨대, 가중치 행렬) 및 활성화 값의 함수에 기반하여 어레이의 각각의 컬럼에 대한 활성화 임계치를 조정하기 위한 코드를 포함할 수 있다. 범용 프로세서(102)는, 입력 벡터로부터의 입력 값에 기반하여 변환 바이어스 전류 기준을 계산하기 위한 코드를 더 포함할 수 있다.
[0033]
딥 러닝 아키텍처(deep learning architecture)들은, 각각의 계층에서 연속적으로 더 높은 추상화 레벨들로 입력들을 표현하는 것을 학습함으로써 객체 인식 작업을 수행할 수 있고, 그에 의해, 입력 데이터의 유용한 특징 표현을 축적할 수 있다. 이러한 방식으로, 딥 러닝은 종래의 머신 러닝의 주요 병목 현상을 해결한다. 딥 러닝의 출현 전에, 객체 인식 문제에 대한 머신 러닝 접근법은, 아마도 얕은 분류기(shallow classifier)와 결합하여, 인간 공학적 특징(human engineered feature)들에 크게 의존했을 수 있다. 얕은 분류기는, 예컨대, 특징 벡터(feature vector) 성분들의 가중 합(weighted sum)을 임계치와 비교하여 입력이 어느 클래스에 속하는지를 예측할 수 있는 2-클래스 선형 분류기일 수 있다. 인간 공학적 특징들은 도메인 전문 지식을 가진 엔지니어들에 의해 특정 문제 도메인에 대해 맞춤화된 템플릿(template)들 또는 커널(kernel)들일 수 있다. 대조적으로, 딥 러닝 아키텍처들은, 인간 엔지니어가 설계할 수 있는 것과 유사한 특징들을, 그러나 트레이닝을 통해, 표현하는 것을 학습할 수 있다. 게다가, 심층망은 인간이 고려하지 않았을 수도 있는 새로운 타입들의 특징들을 표현하고 인식하는 것을 학습할 수 있다.
[0034]
딥 러닝 아키텍처는 특징들의 계층구조(hierarchy)를 학습할 수 있다. 예컨대, 시각적 데이터가 제시되는 경우, 제1 계층은 입력 스트림에서 에지들과 같은 비교적 간단한 특징들을 인식하는 것을 학습할 수 있다. 다른 예에서, 청각 데이터가 제시되는 경우, 제1 계층은 특정 주파수들에서 스펙트럼 전력을 인식하는 것을 학습할 수 있다. 제1 계층의 출력을 입력으로서 취하는 제2 계층은, 특징들의 조합들, 이를테면, 시각적 데이터를 위한 간단한 형상들 또는 청각 데이터를 위한 소리들의 조합들을 인식하는 것을 학습할 수 있다. 예컨대, 상위 계층들은 시각적 데이터로 복잡한 형상들을 표현하거나 또는 청각 데이터로 워드들을 표현하는 것을 학습할 수 있다. 더 상위 계층들은 일반적인 시각적 객체들 또는 음성 어구(spoken phrase)들을 인식하는 것을 학습할 수 있다.
[0035]
딥 러닝 아키텍처들은, 자연적인 계층적 구조(hierarchical structure)를 갖는 문제들에 적용될 때 특히 잘 수행될 수 있다. 예컨대, 전동 차량들의 분류는, 휠들, 앞 유리들, 및 다른 특징들을 인식하는 것을 먼저 학습하는 것으로부터 이익을 얻을 수 있다. 이러한 특징들은, 자동차들, 트럭들, 및 비행기들을 인식하기 위해 상이한 방식들로 상위 계층들에서 조합될 수 있다.
[0036]
신경망들은 다양한 연결성 패턴(connectivity pattern)들로 설계될 수 있다. 피드-포워드망(feed-forward network)들에서, 정보는 하위 계층으로부터 상위 계층으로 전달되고, 주어진 계층의 각각의 뉴런은 상위 계층들의 뉴런들과 통신한다. 위에서 설명된 바와 같이, 계층적 표현은 피드-포워드망의 연속적인 계층들에서 구축될 수 있다. 신경망들은 또한, 순환(recurrent) 또는 피드백(하향식(top-down)으로도 불림) 연결들을 가질 수 있다. 순환 연결에서, 주어진 계층의 뉴런으로부터의 출력은 동일한 계층의 다른 뉴런에 통신될 수 있다. 순환 아키텍처는, 시퀀스로 신경망에 전달되는 입력 데이터 청크(chunk)들 중 하나 초과에 걸쳐있는 패턴들을 인식하는 데 도움이 될 수 있다. 주어진 계층의 뉴런으로부터 하위 계층의 뉴런으로의 연결은 피드백(또는 하향식) 연결이라고 불린다. 고-레벨의 개념의 인식이 입력의 특정 저-레벨 특징들을 구별하는 것을 도울 수 있을 때, 많은 피드백 연결들을 갖는 망이 도움이 될 수 있다.
[0037]
신경망의 계층들 사이의 연결들은 완전히 연결될 수 있거나 또는 국부적으로 연결될 수 있다. 도 2a는 완전 연결 신경망(fully connected neural network)(202)의 예를 예시한다. 완전 연결 신경망(202)에서, 제1 계층의 뉴런은 제2 계층의 모든 뉴런에 자신의 출력을 통신할 수 있고, 그에 따라, 제2 계층의 각각의 뉴런은 제1 계층의 모든 뉴런으로부터 입력을 수신할 것이다. 도 2b는 국부 연결 신경망(locally connected neural network)(204)의 예를 예시한다. 국부 연결 신경망(204)에서, 제1 계층의 뉴런은 제2 계층의 제한된 수의 뉴런들에 연결될 수 있다. 더 일반적으로, 국부 연결 신경망(204)의 국부적으로 연결된 계층은, 계층 내의 각각의 뉴런이 동일한 또는 유사한 연결성 패턴을 갖지만, 상이한 값들을 가질 수 있는 연결 강도(connection strength)들(예컨대, 210, 212, 214, 및 216)을 갖도록, 구성될 수 있다. 국부적으로 연결된 연결성 패턴은 상위 계층에서 공간적으로 별개의 수용 필드(receptive field)들을 발생시킬 수 있는데, 왜냐하면 주어진 구역의 상위 계층 뉴런들은, 망에 대한 총 입력의 제한된 부분의 특성들에 대한 트레이닝을 통해 조정(tune)되는 입력들을 수신할 수 있기 때문이다.
[0038]
국부 연결 신경망의 일 예는 컨볼루션 신경망(convolutional neural network)이다. 도 2c는 컨볼루션 신경망(206)의 예를 예시한다. 컨볼루션 신경망(206)은, 제2 계층의 각각의 뉴런에 대한 입력들과 연관된 연결 강도들이 공유되도록(예컨대, 208) 구성될 수 있다. 컨볼루션 신경망들은 입력들의 공간적 위치가 의미가 있는 문제들에 매우 적합할 수 있다.
[0039]
하나의 타입의 컨볼루션 신경망은 DCN(deep convolutional network)이다. 도 2d는, 이미지 캡처링 디바이스(230), 이를테면 자동차-탑재 카메라로부터의 이미지(226) 입력으로부터 시각적 특징들을 인식하도록 설계된 DCN(200)의 상세한 예를 예시한다. 본 예의 DCN(200)은 교통 표지판들 및 교통 표지판 상에 제공되는 숫자를 식별하도록 트레이닝될 수 있다. 물론, DCN(200)은 다른 작업들, 이를테면, 차선 표시를 식별하거나 신호등을 식별하도록 트레이닝될 수 있다.
[0040]
DCN(200)은 지도 학습(supervised learning)으로 트레이닝될 수 있다. 트레이닝 동안, DCN(200)에는 이미지, 이를테면 속도 제한 표지판의 이미지(226)가 제시될 수 있고, 그런 다음, 출력(222)을 생성하기 위해 포워드 패스(forward pass)가 컴퓨팅될 수 있다. DCN(200)은 특징 추출 섹션 및 분류 섹션을 포함할 수 있다. 이미지(226)를 수신하면, 컨볼루션 계층(232)은 컨볼루션 커널(convolutional kernel)들(미도시)을 이미지(226)에 적용하여 제1 세트의 특징 맵(feature map)들(218)을 생성할 수 있다. 예로서, 컨볼루션 계층(232)에 대한 컨볼루션 커널은 28x28 특징 맵들을 생성하는 5x5 커널일 수 있다. 본 예에서, 제1 세트의 특징 맵들(218)에서 4개의 상이한 특징 맵들이 생성되기 때문에, 컨볼루션 계층(232)에서 4개의 상이한 컨볼루션 커널들이 이미지(226)에 적용되었다. 컨볼루션 커널들은 또한 필터들 또는 컨볼루션 필터(convolutional filter)들로 지칭될 수 있다.
[0041]
제1 세트의 특징 맵들(218)은 최대 풀링 계층(max pooling layer)(미도시)에 의해 서브샘플링(subsample)되어, 제2 세트의 특징 맵들(220)을 생성할 수 있다. 최대 풀링 계층은 제1 세트의 특징 맵들(218)의 크기를 감소시킨다. 즉, 제2 세트의 특징 맵들(220)의 크기, 이를테면 14x14는, 제1 세트의 특징 맵들(218)의 크기, 이를테면 28x28보다 더 작다. 감소된 크기는, 메모리 소비를 감소시키면서 후속 계층에 유사한 정보를 제공한다. 제2 세트의 특징 맵들(220)은 하나 이상의 후속 컨볼루션 계층들(미도시)을 통해 추가로 컨볼빙되어, 하나 이상의 후속 세트들의 특징 맵들(미도시)을 생성할 수 있다.
[0042]
도 2d의 예에서, 제2 세트의 특징 맵들(220)은 컨볼빙되어 제1 특징 벡터(feature vector)(224)를 생성한다. 게다가, 제1 특징 벡터(224)는 추가로 컨볼빙되어 제2 특징 벡터(228)를 생성한다. 제2 특징 벡터(228)의 각각의 특징은, 이미지(226)의 가능한 특징에 대응하는 숫자, 이를테면 "표지판(sign)", "60", 및 "100"을 포함할 수 있다. 소프트맥스 함수(softmax function)(미도시)가 제2 특징 벡터(228)의 숫자들을 확률로 변환할 수 있다. 따라서, DCN(200)의 출력(222)은, 이미지(226)가 하나 이상의 특징들을 포함할 확률이다.
[0043]
본 예에서, 출력(222)에서 "표지판" 및 "60"에 대한 확률들은, 출력(222) 중 다른 것들, 이를테면 "30," "40," "50," "70," "80," "90" 및 "100"의 확률들보다 더 높다. 트레이닝 전에, DCN(200)에 의해 생성되는 출력(222)은 부정확할 가능성이 있다. 따라서, 출력(222)과 타겟 출력 간의 에러가 계산될 수 있다. 타겟 출력은 이미지(226)의 실측 자료(ground truth)(예컨대, "표지판" 및 "60")이다. 그런 다음, DCN(200)의 출력(222)이 타겟 출력과 더 밀접하게 정렬되도록, DCN(200)의 가중치들이 조정될 수 있다.
[0044]
가중치들을 조정하기 위해, 학습 알고리즘은 가중치들에 대한 그래디언트 벡터(gradient vector)를 컴퓨팅할 수 있다. 그래디언트는, 가중치가 조정된 경우 에러가 증가 또는 감소하게 될 양을 표시할 수 있다. 최상위(top) 계층에서, 그레디언트는, 끝에서 두 번째 계층에서의 활성화된 뉴런과 출력 계층에서의 뉴런을 연결하는 가중치의 값에 직접적으로 대응할 수 있다. 하위 계층들에서, 그래디언트는 가중치들의 값 및 상위 계층들의 컴퓨팅된 에러 그래디언트들에 의존할 수 있다. 그런 다음, 에러를 감소시키기 위해 가중치들이 조정될 수 있다. 가중치들을 조정하는 이러한 방식은, 신경망을 통한 "백워드 패스(backward pass)"를 수반하기 때문에 "역 전파(back propagation)"로 지칭될 수 있다.
[0045]
실제로, 가중치들의 에러 그래디언트는, 계산된 그래디언트가 실제(true) 에러 그래디언트에 근사하도록 적은 수의 예들에 걸쳐 계산될 수 있다. 이러한 근사화 방법은 확률론적 그래디언트 하강(stochastic gradient descent)으로 지칭될 수 있다. 확률론적 그래디언트 하강은, 전체 시스템의 달성 가능한 에러 레이트가 감소를 중단할 때까지 또는 에러 레이트가 타겟 레벨에 도달할 때까지 반복될 수 있다. 학습 후에, DCN에는 새로운 이미지들(예컨대, 이미지(226)의 속도 제한 표지판)이 제시될 수 있으며, 그리고 망을 통한 포워드 패스는 DCN의 추론 또는 예측으로 고려될 수 있는 출력(222)을 산출할 수 있다.
[0046]
DBN(deep belief network)들은 다수의 은닉 노드(hidden node)들의 계층들을 포함하는 확률적 모델(probabilistic model)들이다. DBN들은 트레이닝 데이터 세트들의 계층적 표현을 추출하는 데 사용될 수 있다. DBN은, RBM(Restricted Boltzmann Machine)들의 계층들을 적층함으로써 획득될 수 있다. RBM은, 입력들의 세트에 걸친 확률 분포를 학습할 수 있는 인공 신경망의 타입이다. RBM들은 각각의 입력이 분류되어야 하는 클래스에 대한 정보가 없을 때 확률 분포를 학습할 수 있기 때문에, RBM들은 비지도 학습(unsupervised learning)에서 종종 사용된다. 하이브리드 비지도 및 지도 패러다임(hybrid unsupervised and supervised paradigm)을 사용하여, DBN의 최하부 RBM들은 비지도 방식으로 트레이닝될 수 있고, 특징 추출기(feature extractor)들의 역할을 할 수 있으며, 그리고 최상부 RBM은 (타겟 클래스 및 이전 계층으로부터의 입력들의 공동 분포에 대해) 지도 방식으로 트레이닝될 수 있고, 분류기의 역할을 할 수 있다.
[0047]
DCN(deep convolutional network)들은, 부가적인 풀링 및 정규화(normalization) 계층들로 구성된 컨볼루션망들의 네트워크들이다. DCN들은 많은 작업들에 대해 최첨단 기술 성능을 달성하였다. DCN들은 지도 학습을 사용하여 트레이닝될 수 있으며, 여기서, 입력 및 출력 타겟들 둘 모두는 많은 예시들에 대해 알려져 있고, 그래디언트 하강 방법들을 사용하여 망의 가중치들을 수정하는 데 사용된다.
[0048]
DCN들은 피드-포워드망들일 수 있다. 또한, 위에서 설명된 바와 같이, DCN의 제1 계층의 뉴런으로부터 다음 상위 계층의 뉴런들의 그룹으로의 연결들은 제1 계층의 뉴런들에 걸쳐 공유된다. DCN들의 피드-포워드 및 공유 연결들은 신속한 프로세싱을 위해 활용될 수 있다. DCN의 계산 부담은, 예컨대, 순환 또는 피드백 연결들을 포함하는 유사한 크기의 신경망의 계산 부담보다 훨씬 더 적을 수 있다.
[0049]
컨볼루션망의 각각의 계층의 프로세싱은 공간적으로 불변인 템플릿 또는 기초 투영(basis projection)으로 고려될 수 있다. 입력이 먼저 다수의 채널들, 이를테면 컬러 이미지의 적색 채널, 녹색 채널 및 청색 채널로 분해되는 경우, 그 입력에 대해 트레이닝된 컨볼루션망은, 이미지의 축들을 따라 2개의 공간 차원들을 갖고 컬러 정보를 캡처하는 제3 차원을 갖는, 3차원으로 고려될 수 있다. 컨볼루션 연결의 출력들은 후속 계층에서 특징 맵을 형성하는 것으로 고려될 수 있으며, 특징 맵(예컨대, 220)의 각각의 엘리먼트는 이전 계층(예컨대, 특징 맵들(218))의 뉴런들의 범위로부터 그리고 다수의 채널들 각각으로부터 입력을 수신한다. 특징 맵 내의 값들은, 비-선형성(non-linearity)으로, 이를테면 정류(rectification), max(0, x)로 추가로 프로세싱될 수 있다. 인접한 뉴런들로부터의 값들은 추가로 풀링될 수 있으며, 이는 다운 샘플링(down sampling)에 대응하고, 그리고 부가적인 국부적 불변성 및 차원성(dimensionality) 감소를 제공할 수 있다. 화이트닝(whitening)에 대응하는 정규화는 또한, 특징 맵에서 뉴런들 사이의 측방향 억제(lateral inhibition)를 통해 적용될 수 있다.
[0050]
딥 러닝 아키텍처들의 성능은, 더 많은 라벨링된 데이터 포인트들이 이용 가능하게 될 때 또는 계산력이 증가함에 따라 증가될 수 있다. 현대의 심층 신경망들은, 단지 15년 전에 전형적인 연구자에게 이용 가능했던 것보다 수천 배 더 큰 컴퓨팅 자원들로 일상적으로 트레이닝된다. 새로운 아키텍처들 및 트레이닝 패러다임들은 딥 러닝의 성능을 더욱 향상시킬 수 있다. 정류된 선형 유닛들은 그래디언트 소실(vanishing gradient)들로 알려진 트레이닝 문제를 감소시킬 수 있다. 새로운 트레이닝 기법들은 오버-피팅(over-fitting)을 감소시킬 수 있고, 그에 따라 더 큰 모델들이 더 나은 일반화를 달성할 수 있게 한다. 캡슐화(encapsulation) 기법들은 주어진 수용 필드에서 데이터를 추상화(abstract)할 수 있고, 전체 성능을 더욱 향상시킬 수 있다.
[0051]
도 3은 심층 컨볼루션망(350)을 예시하는 블록도이다. 심층 컨볼루션망(350)은 연결성 및 가중치 공유에 기반하여 다수의 상이한 타입들의 계층들을 포함할 수 있다. 도 3에 도시된 바와 같이, 심층 컨볼루션망(350)은 컨볼루션 블록들(354A, 354B)을 포함한다. 컨볼루션 블록들(354A, 354B) 각각은 컨볼루션 계층(CONV)(356), 정규화 계층(LNorm)(358), 및 최대 풀링 층(MAX POOL)(360)으로 구성될 수 있다.
[0052]
컨볼루션 계층들(356)은, 특징 맵을 생성하기 위해 입력 데이터에 적용될 수 있는 하나 이상의 컨볼루션 필터들을 포함할 수 있다. 컨볼루션 블록들 중 단지 2개(354A, 354B)만이 도시되어 있지만, 본 개시내용은 그렇게 제한되지 않으며, 대신에, 설계 선호도에 따라 임의의 수의 컨볼루션 블록들(354A, 354B)이 심층 컨볼루션망(350)에 포함될 수 있다. 정규화 계층(358)은 컨볼루션 필터들의 출력을 정규화할 수 있다. 예컨대, 정규화 계층(358)은 화이트닝 또는 측방향 억제를 제공할 수 있다. 최대 풀링 계층(360)은, 국부적 불변성 및 차원성 감소를 위해 공간에 걸친 다운 샘플링 어그리게이션(down sampling aggregation)을 제공할 수 있다.
[0053]
예컨대, 심층 컨볼루션망의 병렬 필터 뱅크(filter bank)들이 SOC(100)의 CPU(102) 또는 GPU(104) 상에 로딩되어, 높은 성능 및 낮은 전력 소비를 달성할 수 있다. 대안적인 실시예들에서, 병렬 필터 뱅크들은 SOC(100)의 ISP(116) 또는 DSP(106) 상에 로딩될 수 있다. 또한, 심층 컨볼루션망(350)은 SOC(100) 상에 존재할 수 있는 다른 프로세싱 블록들, 이를테면, 각각, 센서들 및 내비게이션에 전용되는 센서 프로세서(114) 및 내비게이션 모듈(120)에 액세스할 수 있다.
[0054]
심층 컨볼루션망(350)은 또한, 하나 이상의 완전 연결 계층들(fully connected layers)(362)(FC1 및 FC2)을 포함할 수 있다. 심층 컨볼루션망(350)은 LR(logistic regression) 계층(364)을 더 포함할 수 있다. 심층 컨볼루션망(350)의 각각의 계층(356, 358, 360, 362, 364) 사이에는 업데이트될 가중치들(미도시)이 있다. 컨볼루션 블록들 중 첫 번째 컨볼루션 블록(354A)에 공급되는 입력 데이터(352)(예컨대, 이미지들, 오디오, 비디오, 센서 데이터 및/또는 다른 입력 데이터)로부터 계층적 특징 표현들을 학습하기 위해, 계층들(예컨대, 356, 358, 360, 362, 364) 각각의 출력은 심층 컨볼루션망(350) 내의 계층들(예컨대, 356, 358, 360, 362, 364) 중 후속 계층의 입력의 역할을 할 수 있다. 심층 컨볼루션망(350)의 출력은 입력 데이터(352)에 대한 분류 스코어(366)이다. 분류 스코어(366)는 확률들의 세트일 수 있으며, 각각의 확률은 입력 데이터가 특징들의 세트로부터의 특징을 포함할 확률이다.
[0055]
인공 신경망들(예컨대, 이진 신경망들)의 메모리 저장은, 가중치들 및 뉴런 활성화들이 -1 또는 +1([-1,+1] 공간(space))로 이진화될 때 상당히 감소될 수 있다. 그러나, 디지털 CMOS(complementary metal-oxide-semiconductor) 로직은 [0,1] 공간에서 작동한다. 따라서, 이진 구현들 동안 [-1,+1] 기반(basis)을 사용하는 이진 신경망들과 [0,1] 기반을 사용하는 디지털 CMOS 디바이스들 간에 변환이 일어난다.
[0056]
메모리 셀은 XNOR(exclusive-negative OR) 함수를 지원하도록 구성될 수 있다. 예컨대, 표 1 내지 표 3(예컨대, 진리표들)은, 이진화된 [-1,+1] 공간에서의 이진 곱셈에 대한 [0,1] 공간에서의 이진 신경망의 맵핑들을 예시한다. 진리표들 1-3에는 2-입력 로직 함수가 예시된다.
[0058]
표 2는 XNOR 구현의 예를 예시한다. 메모리 셀은, 이진 출력을 생성하기 위해, 제1 입력 값(예컨대, 이진 뉴런 활성화) 및 제2 입력 값(예컨대, 이진 시냅틱 가중치)에 대해 XNOR 함수를 수행하도록 구성될 수 있다. 예컨대, XNOR 함수는, 모든 입력 값들이 참이거나 모든 입력 값들이 거짓인 경우에만, 참이다. 입력들 중 일부는 참이고 다른 것들은 거짓인 경우, XNOR 함수의 출력은 거짓이다. 따라서, 표 2에 도시된 바와 같이, 입력들(예컨대, 제1 및 제2 입력들) 둘 모두가 거짓(예컨대, 제1 입력이 0이고 제2 입력이 0임)인 경우, 출력은 참(예컨대, 1)이다. 제1 입력이 거짓(0)이고 제2 입력이 참(1)인 경우, 출력은 거짓(0)이다. 제1 입력이 참(1)이고 제2 입력이 거짓(0)인 경우, 출력은 거짓(0)이다. 제1 입력이 참(1)이고 제2 입력이 참(1)인 경우, 출력은 참(1)이다. 따라서, 2개의 입력들을 갖는 XNOR 함수에 대한 진리표는 "1,0,0,1"의 이진 출력을 갖는다.
[0059]
따라서, 이진화된 [-1,+1] 공간에서의 이진 곱셈은 [0,1] 공간에서의 XNOR의 이진 출력에 맵핑된다. 예컨대, 이진화된 [-1,+1] 공간의 4비트 출력에서의 "1들(1s)"은 XNOR 함수의 이진 출력에서의 "1들"에 맵핑되고, 이진화된 [-1,+1] 공간의 4비트 출력에서의 "-1들(-1s)"은 XNOR 함수의 이진 출력에서의 "0들(0s)"에 맵핑된다.
[0060]
대조적으로, 이진화된 [-1,+1] 공간에서의 이진 곱셈은, 표 3에 도시된 이진화된 [0,1] 공간에서의 이진 곱셈에 맵핑되지 않는다. 예컨대, 표 3은 "0,0,0,1"의 4-비트 출력을 생성하기 위한, 이진화된 [0,1] 공간에서의 곱셈을 예시하며, 이러한 "0,0,0,1"의 4-비트 출력은 이진화된 [-1,+1] 공간에서의 "1,-1,-1,1"의 4-비트 출력과 맵핑되지 않는다. 예컨대, "0,0,0,1"의 4-비트 출력은 단지 하나의 참 비트(예컨대, 마지막 비트)만을 포함하는 한편, "1,-1,-1,1"의 4-비트 출력은 2개의 참 비트들(예컨대, 첫 번째 비트 및 마지막 비트)을 포함한다.
[0061]
종래에, 컴퓨트-인-메모리 시스템들로 구현되는 이진 신경망들은, 출력 값들을 생성하기 위해, 각각의 비트 셀에서 XNOR을 컴퓨팅하고 각각의 비트 라인을 따라 결과들을 합산함으로써 실현된다. 그러나, 각각의 비트 셀에 XNOR 함수를 추가하는 것은 비용이 많이 든다. 예컨대, 메모리(예컨대, SRAM) 내의 각각의 셀에 대한 트랜지스터들의 수는 6개 또는 8개에서 12개로 증가되고, 이는 셀 크기 및 전력 소비를 상당히 증가시킨다.
[0062]
본 개시내용의 양상들은, 이진 신경망 컴퓨트-인-메모리 어레이에서 XNOR을 제거함으로써, 메모리의 크기를 감소시키고 전력 소비를 개선하는 것에 관한 것이다. 일 양상에서, 컴퓨트-인-메모리 어레이의 각각의 컬럼에 대한 활성화 임계치는, 각각의 비트 셀에서의 XNOR 함수 및 그 대응하는 트랜지스터(들)의 사용을 회피하도록 조정된다. 예컨대, 더 작은 메모리 비트 셀들을 갖는 더 작은 메모리(예컨대, 8 트랜지스터 SRAM)가 컴퓨트-인-메모리 이진 신경망들을 위해 사용될 수 있다.
[0063]
도 4는 본 개시내용의 양상들에 따른, 인공 신경망의 CIM(compute-in-memory) 어레이를 위한 예시적인 아키텍처(400)를 예시한다. 컴퓨트-인-메모리는, 메모리 어레이에서 곱셈 및 누산 연산들을 수행하는 방식이다. 메모리 어레이는 워드 라인들(404(또는 WL1), 405(또는 WL2) … 406(또는 WLM)) 및 비트 라인들(401(또는 BL1), 402(또는 BL2) … 403(또는 BLN))을 포함한다. 가중치들(예컨대, 이진 시냅틱 가중치 값들)은 메모리 어레이의 비트셀들에 저장된다. 입력 활성화들(예컨대, 입력 벡터일 수 있는 입력 값)은 워드 라인들 상에 있다. 곱셈은 각 비트셀에서 발생하며, 곱셈의 결과들은 비트 라인들을 통해 출력된다. 예컨대, 곱셈은, 각각의 비트셀에서 가중치들과 입력 활성화들을 곱하는 것을 포함한다. 비트 라인들 또는 컬럼들(예컨대, 401)과 연관된 전압/전류 합산 디바이스(summing device)와 같은 합산 디바이스(미도시)는 비트 라인들의 출력(예컨대, 전하, 전류 또는 전압)을 합산하고 그 결과(예컨대, 출력)를 ADC(analog-to-digital converter)에 전달한다. 예컨대, 각 비트 라인의 합은, 각 비트 라인의 비트셀들의 개개의 출력들로부터 계산된다.
[0064]
본 개시내용의 일 양상에서, 면적 효율을 개선하기 위해, 각각의 비트 셀에서가 아니라, (비트 라인들에 대응하는) 각각의 컬럼에서 활성화 임계치 조정이 이루어진다.
[0065]
종래에, 가중치들 및 뉴런 활성화들이 -1 또는 +1([-1,+1] 공간)로 이진화되는 이진 신경망 구현으로 시작하여, 곱셈 및 누산 연산들은 XNOR 결과 및 XNOR 결과들의 파퓰레이션 카운트를 갖는 (비트 셀에서의) XNOR 연산이 된다. 예컨대, 비트 라인의 파퓰레이션 카운트는, 비트 라인의 각각의 비트 셀의 양의(예컨대, "1") 결과들의 합을 포함한다. ADC는 활성화 임계치를 사용함으로써 비교기처럼 기능한다. 예컨대, 파퓰레이션 카운트는 ADC에 의해 활성화 임계치 또는 기준들과 비교된다. 파퓰레이션 카운트가 활성화 임계치보다 큰 경우, 비트 라인의 출력은 "1"이다. 그렇지 않고, 파퓰레이션 카운트가 활성화 임계치 이하인 경우, 비트 라인의 출력은 "0"이다. 그러나, 메모리의 크기를 감소시키기 위해서는, 각각의 비트 셀에서 XNOR 함수 및 그 대응하는 트랜지스터(들)를 제거하는 것이 바람직하다. 활성화 임계치를 조정하기 위한 특정 기법들은 다음과 같다:
[0066]
신경망(예컨대, 이진 신경망)의 컨볼루션 계층은 어레이(예컨대, 컴퓨트-인-메모리 어레이)로 조직된 셀들(예컨대, 비트 셀들)을 포함할 수 있다. 셀들은 게이트형 디바이스(gated device)들을 포함하며, 이러한 게이트형 디바이스들에 존재하는 전하 레벨은 어레이의 저장된 가중치를 표현한다. 어레이 M개의 로우들(예컨대, 입력 벡터의 크기) 및 N개의 컬럼들을 갖는 트레이닝된 XNOR 이진 신경망은, 이진 값 [-1,+1]의 가중치인 MxN 이진 시냅틱 가중치들(), 및 N개의 활성화 임계치들()을 포함한다. 어레이에 대한 입력들은 워드 라인들에 대응할 수 있고, 출력은 비트 라인들에 대응할 수 있다. 예컨대, 이진 값 [-1,+1]의 입력인 입력 활성화들()은 이다. 대응하는 가중치들()과 입력들의 곱들의 합은 가중 합 로 알려져 있다.
[0067]
예컨대, 가중 합이 활성화 임계치()보다 더 클 때, 출력은 1과 같다. 그렇지 않으면, 출력은 0과 같다. XNOR 이진 신경망은, 메모리의 크기를 감소시키기 위해, 각각의 비트 셀에서 XNOR 함수 및 그 대응하는 트랜지스터(들)를 제거하면서, [0,1] 공간에서 비-XNOR 이진 신경망에 맵핑될 수 있다. 일 양상에서, XNOR 이진 신경망은, 다음과 같이, 각각의 컬럼의 활성화 임계치()의 조정과 함께, 비-XNOR 이진 신경망에 맵핑될 수 있다:
[0068]
종래에, 컴퓨트-인-메모리 이진 신경망 구현들은, 각각의 비트 셀에서 XNOR 연산들을 완료하고 각각의 비트 라인에 대한 결과를 합산함으로써 달성된다. 그러나, 각각의 비트 셀에 XNOR 함수를 추가하게 되면, 레이아웃 면적을 증가시키고 전력 소비를 증가시킨다. 예컨대, 메모리(예컨대, SRAM) 내의 각각의 셀 내의 트랜지스터들의 수는 6개 또는 8개에서 12개로 증가한다. 따라서, 본 개시내용의 양상들은, 활성화 임계치 조정들을 사용하여, 인공 신경망(예컨대, 이진 신경망)의 컴퓨트-인-메모리 어레이에 대한 곱셈 및 누산 연산들을 [-1,+1] 공간에서 [0,1] 공간으로 변환하는 것에 관한 것이다.
[0069]
이진 신경망은, [-1,+1] 공간(여기서, )으로부터 [0,1] 공간으로 변환되고, [0,1] 공간에서의 비트 라인들의 출력은, 다음과 같이, 다른 임계치(이것의 도출은 하기에서 논의됨)와 비교된다:
여기서, 는 [0,1] 공간에서의 조정 가능한 활성화(또는 조정된 활성화 임계치)에 대응하고, 는 [0,1] 공간에서의 변환 바이어스(예컨대, 변환 바이어스 전류 기준)를 표현한다.
[0070]
본원에서 설명되는 바와 같이 활성화 임계치를 조정하게 되면, XNOR 기능성이 구현된 것과 동일한 결과를 얻으면서, 각각의 비트 셀에서 XNOR 기능성을 구현하는 것을 회피/포기하는 것을 가능하게 한다. 활성화 임계치를 조정하게 되면, 더 단순하고 더 작은 메모리 비트 셀(예컨대, 8T(eight transistor) SRAM)의 사용을 가능하게 한다.
[0071]
다음의 수학식들(3 및 4)은 [-1,+1] 공간의 네트워크를 [0,1] 공간으로 맵핑하기 위한 변수들을 포함한다.
[0072]
수학식 3 및 4의 값들을 수학식 1에 대입하면, [-1,+1] 공간과 [0,1] 공간 간의 변환(conversion) 또는 변환(transformation)을 통해, 조정된 활성화 임계치를 결정할 수 있다. 다음은 조정된 활성화 임계치의 도출이다:
확장 수학식 5:
[0073]
수학식 9에서의 [0,1] 공간에서의 비트 라인 당 파퓰레이션 카운트()를 [-1,+1] 공간에서의 비트 라인 당 파퓰레이션 카운트()에 맵핑하게 되면, [-1,+1] 공간에서의 N개의 활성화 임계치들()은 [0,1] 공간에서의 변환 바이어스()뿐만 아니라 조정 가능한 활성화들()에 맵핑된다. 예컨대, XNOR 함수 및 그 대응하는 트랜지스터(들)를 제거하면서 [0,1] 공간에서 비-XNOR 이진 신경망을 달성하기 위해, [0,1] 공간에서의 변환 바이어스()뿐만 아니라 조정 가능한 활성화들()이 사용된다.
[0074]
수학식 9를 참조하면, 함수()는 조정 가능한 활성화들()을 결정하는 데 사용된다. 예컨대, 엘리먼트()는 조정 가능한 활성화들()의 활성화 값들에 대응한다. 조정 가능한 활성화들()은 활성화 입력()에 의존하지 않는다. 조정 가능한 활성화들()은 또한, 활성화 임계치들()을 조정하기 위해 변경될 수 있는 미리 결정된 파라미터들(예컨대, 이진 시냅틱 가중치들())로 구성된다.
[0075]
함수()는 변환 바이어스()를 결정하는 데 사용된다. 변환 바이어스()는 입력 활성화들에만 의존한다. 이는, 새로운 입력들이 수신됨에 따라 변환 바이어스가 지속적으로 변경됨을 의미한다.
[0078]
일부 양상들에서, 함수()는, 이진 값의 가중치()를 1과 같게 설정함으로써 기준 컬럼(reference column)(예컨대, 기준으로 사용되는, N개의 비트 라인들의 일부가 아닌 비트 라인)으로부터 생성되는 변환 바이어스()를 생성하는 데 사용될 수 있다. 수학식 9에서 1과 같은 의 값을 대입하게 되면, 결과적인 수학식은 다음과 같다:
[0079]
파퓰레이션 카운트는 과 같으며, 이는 활성화 전류(activation current)를 오프셋시키는 데 사용될 수 있다. 따라서, 전체 메모리 어레이에 대한 참조 바이어스 값 또는 변환 바이어스를 결정하기 위해 단일 컬럼만이 지정된다.
[0080]
도 5는 본 개시내용의 양상들에 따른, 인공 신경망의 컴퓨트-인-메모리 어레이의 컬럼 임계치들을 조정함으로써 XNOR-등가 연산들을 수행하기 위한 예시적인 아키텍처(500)를 예시한다. 이러한 아키텍처는, 기준 컬럼(502), 비교기(504), 비트 라인들(506)(메모리 어레이의 컬럼들에 대응함), 및 워드 라인들(508)(메모리 어레이의 로우들에 대응함)을 포함하는 메모리 어레이를 포함한다. 입력 활성화들은 워드 라인들을 통해 수신된다. 일 예에서, 입력 활성화들()의 이진 값들은 10101011이다.
[0081]
곱셈(예컨대, )은 각 비트셀에서 발생하며, 각 비트셀로부터의 곱셈의 결과들은 비트 라인들(506)을 통해 출력된다. 비트 라인들(506) 각각과 연관된 합산 디바이스(510)는 메모리 어레이의 비트셀들의 각각의 출력을 합산하고, 그 결과를 비교기(504)에 전달한다. 비교기(504)는 도 4에 도시된 ADC(analog-to-digital converter)의 일부일 수 있다. 일 양상에서, 제1 비트 라인과 연관된 각각의 비트셀의 출력은 제2 비트 라인과 연관된 각각의 비트셀의 출력과 별도로 합산된다.
[0082]
면적 효율을 개선하기 위해, 각각의 비트 셀에서가 아니라, (비트 라인들에 대응하는) 각각의 컬럼에서 활성화 임계치 조정이 일어난다. 예컨대, 제1 비트 라인과 연관된 각각의 비트셀의 출력의 합(또는 파퓰레이션 카운트)은 비교기(504)에 제1 입력으로서 제공된다. 비교기의 제2 입력은, 조정 가능한 활성화()와 변환 바이어스()(예컨대, 변환 바이어스 전류 기준)의 합을 포함한다. 예컨대, 변환 바이어스()는 비트 라인들(506) 각각에 대한 기준(예컨대, 기준 컬럼(502))으로 프로그래밍될 수 있다. 파퓰레이션 카운트가, 조정 가능한 활성화()와 변환 바이어스()의 합보다 더 클 때, 제1 비트 라인의 출력에 대응하는 비교기(504)의 출력은 "1"이다. 그렇지 않고, 파퓰레이션 카운트가, 조정 가능한 활성화()와 변환 바이어스()의 합 이하인 경우, 제1 비트 라인의 출력에 대응하는 비교기의 출력은 "0"이다. 따라서, 각각의 비트 라인 파퓰레이션 카운트는, 조정 가능한 활성화()와 변환 바이어스()의 합과 비교된다.
[0083]
도 6은 본 개시내용의 양상들에 따른, 인공 신경망의 컴퓨트-인-메모리 어레이의 컬럼 임계치들을 조정함으로써 XNOR-등가 연산들을 수행하기 위한 방법(600)을 예시한다. 도 6에 도시된 바와 같이, 블록(602)에서, 가중치 값 및 활성화 값의 함수에 기반하여, 컴퓨트-인-메모리 어레이의 각각의 컬럼에 대해 생성되는 활성화 임계치가 조정될 수 있다. 블록(604)에서, 컴퓨트-인-메모리 어레이로의 입력 벡터로부터의 입력 값에 기반하여 변환 바이어스 전류 기준이 계산되며, 컴퓨트-인-메모리 어레이는 가중치 값들의 세트로 프로그래밍된다. 조정된 활성화 임계치 및 변환 바이어스 전류 기준 각각은 컴퓨트-인-메모리 어레이의 출력 값들을 결정하기 위한 임계치로서 사용된다. 컴퓨트-인-메모리 어레이는 컬럼들 및 로우들 둘 모두를 갖는다.
[0084]
본 개시내용의 추가의 양상에 따르면, 인공 신경망의 컴퓨트-인-메모리 어레이의 컬럼 임계치들을 조정함으로써 XNOR-등가 연산들을 수행하기 위한 장치가 설명된다. 장치는, 가중치 값 및 활성화 값의 함수에 기반하여, 어레이의 각각의 컬럼에 대한 활성화 임계치를 조정하기 위한 수단을 포함한다. 이러한 조정하기 위한 수단은, 심층 컨볼루션망(200), 심층 컨볼루션망(350), 컨볼루션 계층(232), SoC(100), CPU(102), 아키텍처(500), 아키텍처(400), 및/또는 컨볼루션 블록(354A)을 포함한다. 장치는, 입력 벡터로부터의 입력 값에 기반하여 변환 바이어스 전류 기준을 계산하기 위한 수단을 더 포함한다. 이러한 계산하기 위한 수단은, 심층 컨볼루션망(200), 심층 컨볼루션망(350), 컨볼루션 계층(232), SoC(100), CPU(102), 아키텍처(500), 아키텍처(400), 및/또는 컨볼루션 블록(354A)을 포함한다.
[0085]
장치는, 비트 라인의 출력을 결정하기 위해, 비트 라인 파퓰레이션 카운트를 변환 바이어스 전류 기준과 조정된 활성화 임계치의 합과 비교하기 위한 수단을 더 포함한다. 이러한 비교하기 위한 수단은 도 5의 비교기(504) 및/또는 도 4의 ADC(analog-to-digital converter)를 포함한다. 다른 양상에서, 전술된 수단은, 전술된 수단에 의해 인용된 기능들을 수행하도록 구성된 임의의 모듈 또는 임의의 장치일 수 있다.
[0086]
앞서 설명된 방법들의 다양한 동작들은 대응하는 기능들을 수행할 수 있는 임의의 적절한 수단에 의해 수행될 수 있다. 이 수단은, 회로, ASIC(application specific integrated circuit) 또는 프로세서를 포함하는(그러나, 이에 제한되지는 않는) 다양한 하드웨어 및/또는 소프트웨어 컴포넌트(들) 및/또는 모듈(들)을 포함할 수 있다. 일반적으로, 도면들에 도시된 동작들이 존재하는 경우, 이 동작들은 유사한 넘버링을 갖는 상응하는 대응 수단-및-기능(means-plus-function) 컴포넌트들을 가질 수 있다.
[0087]
본원에서 사용되는 바와 같이, 용어 "결정"은 광범위한 동작들을 포함한다. 예컨대, "결정"은 계산, 컴퓨팅, 프로세싱, 유도, 검사, 검색(예컨대, 표, 데이터베이스 또는 다른 데이터 구조에서의 검색), 확인 등을 포함할 수 있다. 또한, "결정"은 수신(예컨대, 정보 수신), 액세스(예컨대, 메모리 내의 데이터에 액세스) 등을 포함할 수 있다. 게다가, "결정"은 해결, 선택, 선정, 설정 등을 포함할 수 있다.
[0088]
본원에서 사용되는 바와 같이, 아이템들의 리스트 "중 적어도 하나"로 지칭되는 구문은 단일 멤버들을 포함하여 그 아이템들의 임의의 조합을 지칭한다. 예로서, "a, b, 또는 c 중 적어도 하나"는 a, b, c, a-b, a-c, b-c, 및 a-b-c를 커버하도록 의도된다.
[0089]
본 개시내용과 관련하여 설명되는 다양한 예시적인 논리 블록들, 모듈들, 및 회로들은, 범용 프로세서, DSP(digital signal processor), ASIC(application specific integrated circuit), FPGA(field programmable gate array signal) 또는 다른 PLD(programmable logic device), 이산 게이트 또는 트랜지스터 로직, 이산 하드웨어 컴포넌트들 또는 본원에서 설명된 기능들을 수행하도록 설계된 이들의 임의의 조합으로 구현 또는 수행될 수 있다. 범용 프로세서는 마이크로프로세서일 수 있지만, 대안으로 프로세서는 임의의 상업적으로 이용가능한 프로세서, 제어기, 마이크로제어기 또는 상태 머신일 수 있다. 프로세서는 또한 컴퓨팅 디바이스들의 조합, 예컨대 DSP 및 마이크로프로세서의 조합, 복수의 마이크로프로세서들, DSP 코어와 결합된 하나 이상의 마이크로프로세서들, 또는 임의의 다른 이러한 구성으로서 구현될 수 있다.
[0090]
본 개시내용과 관련하여 설명되는 알고리즘 또는 방법의 단계들은 직접적으로 하드웨어로, 프로세서에 의해 실행되는 소프트웨어 모듈로, 또는 이 둘의 조합으로 구현될 수 있다. 소프트웨어 모듈은 당업계에 공지된 임의의 형태의 저장 매체에 상주할 수 있다. 사용될 수 있는 저장 매체의 일부 예들은 RAM(random access memory), ROM(read only memory), 플래시 메모리, EPROM(erasable programmable read-only memory), EEPROM(electrically erasable programmable read-only memory), 레지스터들, 하드디스크, 착탈식 디스크, CD-ROM 등을 포함한다. 소프트웨어 모듈은 단일 명령 또는 다수의 명령들을 포함할 수 있고, 다수의 저장 매체에 걸쳐 상이한 프로그램들 사이에서 몇몇 상이한 코드 세그먼트들에 걸쳐 분산될 수 있다. 저장 매체는, 프로세서가 저장 매체로부터 정보를 판독하고 저장 매체에 정보를 기록할 수 있도록 프로세서에 커플링될 수 있다. 대안적으로, 저장 매체는 프로세서에 통합될 수 있다.
[0091]
본원에서 개시된 방법들은 설명된 방법을 달성하기 위한 하나 이상의 단계들 또는 동작들을 포함한다. 방법 단계들 및/또는 동작들은 청구항들의 범위를 벗어나지 않고 서로 교환될 수 있다. 즉, 단계들 또는 동작들의 특정한 순서가 규정되지 않으면, 특정 단계들 및/또는 동작들의 순서 및/또는 사용은 청구항들의 범위를 벗어나지 않고 변형될 수 있다.
[0092]
설명된 기능들은 하드웨어, 소프트웨어, 펌웨어, 또는 이들의 임의의 결합으로 구현될 수 있다. 하드웨어로 구현되는 경우, 예시적인 하드웨어 구성은 디바이스 내의 프로세싱 시스템을 포함할 수 있다. 프로세싱 시스템은 버스 아키텍처를 통해 구현될 수 있다. 버스는 프로세싱 시스템의 특정 애플리케이션 및 전체적인 설계 제약들에 따라, 임의의 개수의 상호접속 버스들 및 브리지들을 포함할 수 있다. 버스는 프로세서, 머신-판독가능 매체, 및 버스 인터페이스를 포함하는 다양한 회로들을 함께 링크시킬 수 있다. 버스 인터페이스는 버스를 통해 프로세싱 시스템에, 특히 네트워크 어댑터를 접속시키기 위해 사용될 수 있다. 네트워크 어댑터는 신호 프로세싱 기능들을 구현하기 위해 사용될 수 있다. 특정 양상들의 경우, 사용자 인터페이스(예컨대, 키패드, 디스플레이, 마우스, 조이스틱 등)가 또한 버스에 연결될 수 있다. 버스는 또한 타이밍 소스들, 주변장치들, 전압 레귤레이터들, 전력 관리 회로들 등과 같은 다양한 다른 회로들을 링크시킬 수 있고, 이들은 당해 기술분야에 공지되어 있어, 더 이상 설명되지 않을 것이다.
[0093]
프로세서는, 머신-판독가능 매체에 저장된 소프트웨어의 실행을 비롯하여, 버스의 관리 및 일반적 프로세싱을 담당할 수 있다. 프로세서는 하나 이상의 범용 및/또는 특수 목적 프로세서들을 사용하여 구현될 수 있다. 예들은 마이크로프로세서들, 마이크로제어기들, DSP 프로세서들, 및 소프트웨어를 실행할 수 있는 다른 회로를 포함한다. 소프트웨어는, 소프트웨어, 펌웨어, 미들웨어, 마이크로코드, 하드웨어 기술 언어로서 또는 이와 달리 언급되든지 간에, 명령들, 데이터 또는 이들의 임의의 결합을 의미하도록 넓게 해석될 것이다. 머신-판독가능 매체는, 예컨대, RAM(random access memory), 플래시 메모리, ROM(read only memory), PROM(programmable read-only memory), EPROM(erasable programmable read-only memory), EEPROM(electrically erasable programmable read-only memory), 레지스터들, 자기 디스크들, 광학 디스크들, 하드 드라이브들, 또는 임의의 다른 적절한 저장 매체, 또는 이들의 임의의 결합을 포함할 수 있다. 머신-판독가능 매체는 컴퓨터-프로그램 제품에서 구체화될 수 있다. 컴퓨터-프로그램 제품은 패키징 재료들을 포함할 수 있다.
[0094]
하드웨어 구현에서, 머신-판독가능 매체는 프로세서와 별개인 프로세싱 시스템의 부품일 수 있다. 그러나, 당업자가 용이하게 이해할 바와 같이, 머신-판독가능 매체, 또는 그것의 임의의 부분은 프로세싱 시스템의 외부에 있을 수 있다. 예컨대, 머신-판독가능 매체는 송신 라인, 데이터에 의해 변조된 반송파, 및/또는 디바이스와는 별개인 컴퓨터 제품을 포함할 수 있고, 이들 모두는 버스 인터페이스를 통해 프로세서에 의해 액세스될 수 있다. 대안적으로 또는 부가적으로, 머신-판독가능 매체, 또는 그것의 임의의 부분은, 캐시 및/또는 범용 레지스터 파일에서 흔히 있듯이, 프로세서에 통합될 수 있다. 논의된 다양한 컴포넌트들이 로컬 컴포넌트와 같은 특정 위치를 갖는 것으로 설명될 수 있지만, 이들은 또한, 특정 컴포넌트들이 분산 컴퓨팅 시스템의 일부로 구성되는 것과 같이 다양한 방식들로 구성될 수 있다.
[0095]
프로세싱 시스템은, 프로세서 기능성을 제공하는 하나 이상의 마이크로프로세서들 그리고 머신-판독가능 매체의 적어도 일부를 제공하는 외부 메모리를 가지며 이들 모두가 외부 버스 아키텍처를 통해 다른 지원 회로와 함께 링크되는, 범용 프로세싱 시스템으로서 구성될 수 있다. 대안적으로, 프로세싱 시스템은, 본원에서 설명되는 신경 시스템들의 모델들 및 뉴런 모델들을 구현하기 위한 하나 이상의 뉴로모픽 프로세서(neuromorphic processor)들을 포함할 수 있다. 다른 대안으로서, 프로세싱 시스템은, 프로세서, 버스 인터페이스, 사용자 인터페이스, 지원 회로, 및 단일 칩으로 통합되는 머신-판독가능 매체의 적어도 일부분을 가지는 ASIC(application specific integrated circuit)를 사용하여 구현되거나, 또는 하나 이상의 FPGA(field programmable gate array)들, PLD(programmable logic device)들, 제어기들, 상태 머신들, 게이트 로직(gated logic), 이산 하드웨어 컴포넌트들, 또는 임의의 다른 적절한 회로, 또는 본 개시내용 전반에 걸쳐 설명되는 다양한 기능을 수행할 수 있는 회로들의 임의의 결합을 사용하여 구현될 수 있다. 당업자는 전체 시스템에 부과된 전체 설계 제약들 및 특정 애플리케이션에 따라 프로세싱 시스템에 대해 설명된 기능성을 최상으로 구현하는 방법을 인지할 것이다.
[0096]
머신-판독가능 매체는 다수의 소프트웨어 모듈들을 포함할 수 있다. 소프트웨어 모듈들은, 프로세서에 의해 실행되는 경우, 프로세싱 시스템으로 하여금 다양한 기능들을 수행하게 하는 명령들을 포함한다. 소프트웨어 모듈들은 전송 모듈 및 수신 모듈을 포함할 수 있다. 각각의 소프트웨어 모듈은 단일 저장 디바이스에 상주할 수 있거나, 다수의 저장 디바이스들에 걸쳐 분배될 수 있다. 예컨대, 소프트웨어 모듈은 트리거링 이벤트가 발생하는 경우 하드 드라이브로부터 RAM으로 로딩될 수 있다. 소프트웨어 모듈의 실행 동안, 프로세서는 액세스 속도를 증가시키기 위해 캐시 내로 명령들의 일부를 로딩할 수 있다. 하나 이상의 캐시 라인들은 이후 프로세서에 의한 실행을 위해 범용 레지스터 파일로 로딩될 수 있다. 하기에서 소프트웨어 모듈의 기능성을 참조하는 경우, 이러한 기능성이 해당 소프트웨어 모듈로부터의 명령들을 실행할 때 프로세서에 의해 구현될 수 있다는 점이 이해될 것이다. 게다가, 본 개시내용의 양상들은 프로세서, 컴퓨터, 머신, 또는 이러한 양상들을 구현하는 다른 시스템의 기능에 대한 개선을 가져온다는 것을 이해해야 한다.
[0097]
소프트웨어로 구현되는 경우, 상기 기능들은 컴퓨터 판독가능 매체 상에 하나 이상의 명령 또는 코드로서 저장되거나 이를 통해 송신될 수 있다. 컴퓨터 판독가능 매체들은 컴퓨터 저장 매체들, 및 일 장소에서 다른 장소로 컴퓨터 프로그램의 이전을 용이하게 하는 임의의 매체들을 포함하는 통신 매체 둘 모두를 포함한다. 저장 매체는 컴퓨터에 의해 액세스 가능한 임의의 이용가능한 매체일 수 있다. 제한이 아닌 예로써, 이러한 컴퓨터-판독가능 매체는 RAM, ROM, EEPROM, CD-ROM, 또는 다른 광학 디스크 저장소, 자기 디스크 저장소 또는 다른 자기 저장 디바이스들, 또는 명령들 또는 데이터 구조들의 형태로 요구되는 프로그램 코드를 전달하거나 저장하기 위해 사용될 수 있으며 컴퓨터에 의해 액세스될 수 있는 임의의 다른 매체를 포함할 수 있다. 또한, 임의의 접속이 컴퓨터-판독가능 매체로 적절히 지칭된다. 예컨대, 소프트웨어가 동축 케이블, 광섬유 케이블, 연선, DSL(digital subscriber line), 또는 적외선(IR), 라디오 및 마이크로파와 같은 무선 기술들을 사용하여 웹사이트, 서버 또는 다른 원격 소스로부터 전송된다면, 동축 케이블, 광섬유 케이블, 연선, DSL, 또는 적외선, 라디오 및 마이크로파와 같은 무선 기술들이 매체의 정의에 포함된다. 본원에서 사용되는 바와 같이, 디스크(disk 및 disc)는 CD(compact disc), 레이저 디스크(laser disc), 광 디스크(optical disc), DVD(digital versatile disc), 플로피 디스크(floppy disk) 및 블루레이 디스크(Blu-ray® disc)를 포함하며, 여기서 디스크(disk)들은 보통 데이터를 자기적으로 재생하는 한편, 디스크(disc)들은 데이터를 레이저들에 의해 광학적으로 재생한다. 따라서, 일부 양상들에서, 컴퓨터-판독가능 매체는 비-일시적인 컴퓨터-판독가능 매체(예컨대, 유형의(tangible) 매체)를 포함할 수 있다. 추가로, 다른 양상들에 대해, 컴퓨터-판독가능 매체는 일시적인 컴퓨터-판독가능 매체(예컨대, 신호)를 포함할 수 있다. 상기의 것들의 결합들이 또한 컴퓨터 판독가능 매체의 범위 내에 포함되어야 한다.
[0098]
따라서, 특정 양상들은 본원에서 제시된 동작들을 수행하기 위한 컴퓨터 프로그램 제품을 포함할 수 있다. 예컨대, 이러한 컴퓨터 프로그램 제품은 명령들이 저장된(그리고/또는 인코딩된) 컴퓨터-판독가능 매체를 포함할 수 있고, 명령들은, 본원에서 설명되는 동작들을 수행하도록 하나 이상의 프로세서들에 의해 실행가능하다. 특정 양상들에 대해, 컴퓨터 프로그램 제품은 패키징 재료를 포함할 수 있다.
[0099]
또한, 여기서 설명된 방법들 및 기법들을 수행하기 위한 모듈들 및/또는 다른 적절한 수단이 적용가능한 경우 사용자 단말 및/또는 기지국에 의해 다운로드되고 그리고/또는 이와 다르게 획득될 수 있다는 점이 이해되어야 한다. 예컨대, 이러한 디바이스는 여기서 설명된 방법들을 수행하기 위한 수단의 전달을 용이하게 하기 위해 서버에 커플링될 수 있다. 대안적으로, 여기서 설명된 다양한 방법들은, 저장 수단(예컨대, RAM, ROM, CD(compact disc) 또는 플로피 디스크와 같은 물리적 저장 매체 등)을 통해 제공될 수 있고, 따라서, 사용자 단말 및/또는 기지국은 디바이스에 저장 수단을 커플링시키거나 제공할 시에 다양한 방법들을 획득할 수 있다. 또한, 여기에 설명된 방법들 및 기법들을 디바이스에 제공하기 위한 임의의 다른 적절한 기법이 활용될 수 있다.
[00100]
청구항들이 위에서 예시된 정확한 구성 및 컴포넌트들에 제한되지 않는다는 점이 이해될 것이다. 다양한 수정들, 변화들 및 변경들은 청구항들의 범위로부터 벗어나지 않고 전술된 방법들 및 장치의 어레인지먼트(arrangement), 동작 및 상세항목들 내에서 이루어질 수 있다.
Claims (20)
- 로우(row)들 및 컬럼(column)들을 포함하는 컴퓨트-인-메모리 어레이(compute-in-memory array)를 포함하고,
상기 컴퓨트-인-메모리 어레이는:
가중치 값 및 활성화 값의 함수에 기반하여, 상기 컴퓨트-인-메모리 어레이의 각각의 컬럼에 대해 생성되는 활성화 임계치(activation threshold)를 조정하고; 그리고
상기 컴퓨트-인-메모리 어레이로의 입력 벡터로부터의 입력 값에 기반하여 변환 바이어스 전류 기준(conversion bias current reference)을 계산하도록 구성되고,
상기 컴퓨트-인-메모리 어레이는 가중치 값들의 세트로 프로그래밍되며, 상기 조정된 활성화 임계치 및 상기 변환 바이어스 전류 기준은 상기 컴퓨트-인-메모리 어레이의 출력 값들을 결정하기 위한 임계치로서 사용되는,
장치. - 제1 항에 있어서,
비트 라인의 출력을 결정하기 위해, 비트 라인 파퓰레이션 카운트(population count)를 상기 변환 바이어스 전류 기준과 상기 조정된 활성화 임계치의 합과 비교하도록 구성된 비교기를 더 포함하는,
장치. - 제1 항에 있어서,
상기 컴퓨트-인-메모리 어레이를 포함하는 인공 신경망은 이진 신경망(binary neural network)을 포함하는,
장치. - 제1 항에 있어서,
상기 활성화 임계치는 상기 컴퓨트-인-메모리 어레이의 로우들의 수의 절반 미만이고, 상기 로우들의 수는 상기 입력 벡터의 크기에 대응하는,
장치. - 제1 항에 있어서,
상기 변환 바이어스 전류 기준은 상기 컴퓨트-인-메모리 어레이의 로우들의 수의 절반 미만이고, 상기 로우들의 수는 상기 입력 벡터의 크기에 대응하는,
장치. - 가중치 값 및 활성화 값의 함수에 기반하여, 로우들 및 컬럼들을 갖는 컴퓨트-인-메모리 어레이의 각각의 컬럼에 대해 생성되는 활성화 임계치를 조정하는 단계; 및
상기 컴퓨트-인-메모리 어레이로의 입력 벡터로부터의 입력 값에 기반하여 변환 바이어스 전류 기준을 계산하는 단계를 포함하고,
상기 컴퓨트-인-메모리 어레이는 가중치 값들의 세트로 프로그래밍되며, 상기 조정된 활성화 임계치 및 상기 변환 바이어스 전류 기준은 상기 컴퓨트-인-메모리 어레이의 출력 값들을 결정하기 위한 임계치로서 사용되는,
방법. - 제6 항에 있어서,
비트 라인의 출력을 결정하기 위해, 비트 라인 파퓰레이션 카운트를 상기 변환 바이어스 전류 기준과 상기 조정된 활성화 임계치의 합과 비교하는 단계를 더 포함하는,
방법. - 제6 항에 있어서,
상기 컴퓨트-인-메모리 어레이를 포함하는 인공 신경망은 이진 신경망을 포함하는,
방법. - 제6 항에 있어서,
상기 활성화 임계치는 상기 컴퓨트-인-메모리 어레이의 로우들의 수의 절반 미만이고, 상기 로우들의 수는 상기 입력 벡터의 크기에 대응하는,
방법. - 제6 항에 있어서,
상기 변환 바이어스 전류 기준은 상기 컴퓨트-인-메모리 어레이의 로우들의 수의 절반 미만이고, 상기 로우들의 수는 상기 입력 벡터의 크기에 대응하는,
방법. - 비-일시적인 프로그램 코드가 기록되어 있는 비-일시적인 컴퓨터-판독가능 저장 매체로서,
상기 프로그램 코드는:
가중치 값 및 활성화 값의 함수에 기반하여, 로우들 및 컬럼들을 갖는 컴퓨트-인-메모리 어레이의 각각의 컬럼에 대해 생성되는 활성화 임계치를 조정하기 위한 프로그램 코드; 및
상기 컴퓨트-인-메모리 어레이로의 입력 벡터로부터의 입력 값에 기반하여 변환 바이어스 전류 기준을 계산하기 위한 프로그램 코드를 포함하고,
상기 컴퓨트-인-메모리 어레이는 가중치 값들의 세트로 프로그래밍되며, 상기 조정된 활성화 임계치 및 상기 변환 바이어스 전류 기준은 상기 컴퓨트-인-메모리 어레이의 출력 값들을 결정하기 위한 임계치로서 사용되는,
비-일시적인 컴퓨터-판독가능 저장 매체. - 제11 항에 있어서,
비트 라인의 출력을 결정하기 위해, 비트 라인 파퓰레이션 카운트를 상기 변환 바이어스 전류 기준과 상기 조정된 활성화 임계치의 합과 비교하기 위한 프로그램 코드를 더 포함하는,
비-일시적인 컴퓨터-판독가능 저장 매체. - 제11 항에 있어서,
상기 조정 및 상기 계산을 받는 인공 신경망은 이진 신경망을 포함하는,
비-일시적인 컴퓨터-판독가능 저장 매체. - 제11 항에 있어서,
상기 활성화 임계치는 상기 컴퓨트-인-메모리 어레이의 로우들의 수의 절반 미만이고, 상기 로우들의 수는 상기 입력 벡터의 크기에 대응하는,
비-일시적인 컴퓨터-판독가능 저장 매체. - 제11 항에 있어서,
상기 변환 바이어스 전류 기준은 상기 컴퓨트-인-메모리 어레이의 로우들의 수의 절반 미만이고, 상기 로우들의 수는 상기 입력 벡터의 크기에 대응하는,
비-일시적인 컴퓨터-판독가능 저장 매체. - 가중치 값 및 활성화 값의 함수에 기반하여, 로우들 및 컬럼들을 갖는 컴퓨트-인-메모리 어레이의 각각의 컬럼에 대해 생성되는 활성화 임계치를 조정하기 위한 수단; 및
상기 컴퓨트-인-메모리 어레이로의 입력 벡터로부터의 입력 값에 기반하여 변환 바이어스 전류 기준을 계산하기 위한 수단을 포함하고,
상기 컴퓨트-인-메모리 어레이는 가중치 값들의 세트로 프로그래밍되며, 상기 조정된 활성화 임계치 및 상기 변환 바이어스 전류 기준은 상기 컴퓨트-인-메모리 어레이의 출력 값들을 결정하기 위한 임계치로서 사용되는,
장치. - 제16 항에 있어서,
비트 라인의 출력을 결정하기 위해, 비트 라인 파퓰레이션 카운트를 상기 변환 바이어스 전류 기준과 상기 조정된 활성화 임계치의 합과 비교하기 위한 수단을 더 포함하는,
장치. - 제16 항에 있어서,
상기 컴퓨트-인-메모리 어레이를 포함하는 인공 신경망은 이진 신경망을 포함하는,
장치. - 제16 항에 있어서,
상기 활성화 임계치는 상기 컴퓨트-인-메모리 어레이의 로우들의 수의 절반 미만이고, 상기 로우들의 수는 상기 입력 벡터의 크기에 대응하는,
장치. - 제16 항에 있어서,
상기 변환 바이어스 전류 기준은 상기 컴퓨트-인-메모리 어레이의 로우들의 수의 절반 미만이고, 상기 로우들의 수는 상기 입력 벡터의 크기에 대응하는,
장치.
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US16/565,308 US11562212B2 (en) | 2019-09-09 | 2019-09-09 | Performing XNOR equivalent operations by adjusting column thresholds of a compute-in-memory array |
US16/565,308 | 2019-09-09 | ||
PCT/US2020/049754 WO2021050440A1 (en) | 2019-09-09 | 2020-09-08 | Performing xnor equivalent operations by adjusting column thresholds of a compute-in-memory array |
Publications (1)
Publication Number | Publication Date |
---|---|
KR20220058897A true KR20220058897A (ko) | 2022-05-10 |
Family
ID=72614002
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020227006807A KR20220058897A (ko) | 2019-09-09 | 2020-09-08 | 컴퓨트-인-메모리 어레이의 컬럼 임계치들을 조정함으로써 xnor 등가 연산들을 수행 |
Country Status (7)
Country | Link |
---|---|
US (1) | US11562212B2 (ko) |
EP (1) | EP4028956A1 (ko) |
JP (1) | JP7539971B2 (ko) |
KR (1) | KR20220058897A (ko) |
CN (1) | CN114207628A (ko) |
BR (1) | BR112022003542A2 (ko) |
WO (1) | WO2021050440A1 (ko) |
Families Citing this family (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11562212B2 (en) * | 2019-09-09 | 2023-01-24 | Qualcomm Incorporated | Performing XNOR equivalent operations by adjusting column thresholds of a compute-in-memory array |
US11295430B2 (en) * | 2020-05-20 | 2022-04-05 | Bank Of America Corporation | Image analysis architecture employing logical operations |
US11688457B2 (en) * | 2020-12-26 | 2023-06-27 | International Business Machines Corporation | Using ferroelectric field-effect transistors (FeFETs) as capacitive processing units for in-memory computing |
TWI775402B (zh) * | 2021-04-22 | 2022-08-21 | 臺灣發展軟體科技股份有限公司 | 資料處理電路及故障減輕方法 |
US12086461B2 (en) | 2021-06-14 | 2024-09-10 | SanDisk Technologies, Inc. | Systems and methods of compensating degradation in analog compute-in-memory (ACIM) modules |
US11782642B2 (en) * | 2021-06-14 | 2023-10-10 | Western Digital Technologies, Inc. | Systems and methods of determining degradation in analog compute-in-memory (ACIM) modules |
US20230053294A1 (en) * | 2021-08-13 | 2023-02-16 | Taiwan Semiconductor Manufacturing Co., Ltd. | Bitwise product-sum accumulations with skip logic |
US11373719B1 (en) * | 2021-08-30 | 2022-06-28 | Texas Instruments Incorporated | Contact layer traces to program programmable ROM |
CN117271145B (zh) * | 2023-11-22 | 2024-02-27 | 电子科技大学 | 一种基于混合计算架构的多任务智能处理器 |
Family Cites Families (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH0652132A (ja) * | 1992-07-28 | 1994-02-25 | Mitsubishi Electric Corp | 並列演算半導体集積回路装置およびそれを用いたシステム |
US10949736B2 (en) * | 2016-11-03 | 2021-03-16 | Intel Corporation | Flexible neural network accelerator and methods therefor |
US10699778B2 (en) | 2017-04-28 | 2020-06-30 | Arizona Board Of Regents On Behalf Of Arizona State University | Static random access memory (SRAM) cell and related SRAM array for deep neural network and machine learning applications |
JP7169094B2 (ja) | 2017-06-01 | 2022-11-10 | 株式会社東芝 | 画像処理システム及び医用情報処理システム |
US11354562B2 (en) | 2018-01-03 | 2022-06-07 | Silicon Storage Technology, Inc. | Programmable neuron for analog non-volatile memory in deep learning artificial neural network |
US10650806B2 (en) * | 2018-04-23 | 2020-05-12 | Cerence Operating Company | System and method for discriminative training of regression deep neural networks |
US11562212B2 (en) * | 2019-09-09 | 2023-01-24 | Qualcomm Incorporated | Performing XNOR equivalent operations by adjusting column thresholds of a compute-in-memory array |
US11544547B2 (en) * | 2020-06-22 | 2023-01-03 | Western Digital Technologies, Inc. | Accelerating binary neural networks within latch structure of non-volatile memory devices |
-
2019
- 2019-09-09 US US16/565,308 patent/US11562212B2/en active Active
-
2020
- 2020-09-08 EP EP20776002.6A patent/EP4028956A1/en active Pending
- 2020-09-08 WO PCT/US2020/049754 patent/WO2021050440A1/en unknown
- 2020-09-08 JP JP2022514184A patent/JP7539971B2/ja active Active
- 2020-09-08 BR BR112022003542A patent/BR112022003542A2/pt unknown
- 2020-09-08 CN CN202080055739.6A patent/CN114207628A/zh active Pending
- 2020-09-08 KR KR1020227006807A patent/KR20220058897A/ko unknown
Also Published As
Publication number | Publication date |
---|---|
CN114207628A (zh) | 2022-03-18 |
EP4028956A1 (en) | 2022-07-20 |
JP2022547460A (ja) | 2022-11-14 |
WO2021050440A1 (en) | 2021-03-18 |
JP7539971B2 (ja) | 2024-08-26 |
US11562212B2 (en) | 2023-01-24 |
TW202125339A (zh) | 2021-07-01 |
BR112022003542A2 (pt) | 2022-05-24 |
US20210073619A1 (en) | 2021-03-11 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20210089922A1 (en) | Joint pruning and quantization scheme for deep neural networks | |
KR20220058897A (ko) | 컴퓨트-인-메모리 어레이의 컬럼 임계치들을 조정함으로써 xnor 등가 연산들을 수행 | |
US10373050B2 (en) | Fixed point neural network based on floating point neural network quantization | |
US20160328645A1 (en) | Reduced computational complexity for fixed point neural network | |
US11562205B2 (en) | Parallel processing of a convolutional layer of a neural network with compute-in-memory array | |
US20210158166A1 (en) | Semi-structured learned threshold pruning for deep neural networks | |
KR20180048930A (ko) | 분류를 위한 강제된 희소성 | |
US20230153577A1 (en) | Trust-region aware neural network architecture search for knowledge distillation | |
US11449758B2 (en) | Quantization and inferencing for low-bitwidth neural networks | |
WO2021158830A1 (en) | Rounding mechanisms for post-training quantization | |
EP4222655A1 (en) | Dynamic quantization for energy efficient deep learning | |
WO2022104283A1 (en) | Skip convolutions for efficient video processing | |
US11704571B2 (en) | Learned threshold pruning for deep neural networks | |
WO2023249821A1 (en) | Adapters for quantization | |
US20230108248A1 (en) | Model compression via quantized sparse principal component analysis | |
WO2023059723A1 (en) | Model compression via quantized sparse principal component analysis | |
US20220284260A1 (en) | Variable quantization for neural networks | |
TWI853083B (zh) | 用於經由調整記憶體內計算陣列的列閾值來執行 xnor 等效運算的裝置、方法與電腦可讀取媒體 | |
WO2022193052A1 (en) | Kernel-guided architecture search and knowledge distillation | |
WO2024130688A1 (en) | Image set anomaly detection with transformer encoder | |
KR20230136605A (ko) | 심층 뉴럴 네트워크들을 위한 반-구조화된 학습된 임계치프루닝 | |
WO2024102530A1 (en) | Test-time adaptation via self-distilled regularization |