KR20230005309A - 아날로그 인공지능 네트워크 추론을 위한 행별 컨볼루션 신경망 매핑을 위한 효율적 타일 매핑 - Google Patents

아날로그 인공지능 네트워크 추론을 위한 행별 컨볼루션 신경망 매핑을 위한 효율적 타일 매핑 Download PDF

Info

Publication number
KR20230005309A
KR20230005309A KR1020227041560A KR20227041560A KR20230005309A KR 20230005309 A KR20230005309 A KR 20230005309A KR 1020227041560 A KR1020227041560 A KR 1020227041560A KR 20227041560 A KR20227041560 A KR 20227041560A KR 20230005309 A KR20230005309 A KR 20230005309A
Authority
KR
South Korea
Prior art keywords
crosspoint
cnn
array
integrators
input data
Prior art date
Application number
KR1020227041560A
Other languages
English (en)
Inventor
신유 차이
제프리 버
프리티쉬 나라야난
Original Assignee
인터내셔널 비지네스 머신즈 코포레이션
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 인터내셔널 비지네스 머신즈 코포레이션 filed Critical 인터내셔널 비지네스 머신즈 코포레이션
Publication of KR20230005309A publication Critical patent/KR20230005309A/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods
    • G06N3/084Backpropagation, e.g. using gradient descent
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/045Combinations of networks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/0464Convolutional networks [CNN, ConvNet]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/044Recurrent networks, e.g. Hopfield networks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/048Activation functions
    • 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
    • G06N3/065Analogue means

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Health & Medical Sciences (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Biomedical Technology (AREA)
  • Biophysics (AREA)
  • Evolutionary Computation (AREA)
  • General Engineering & Computer Science (AREA)
  • Data Mining & Analysis (AREA)
  • Artificial Intelligence (AREA)
  • General Health & Medical Sciences (AREA)
  • Molecular Biology (AREA)
  • Computing Systems (AREA)
  • Computational Linguistics (AREA)
  • General Physics & Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Software Systems (AREA)
  • Neurology (AREA)
  • Image Analysis (AREA)
  • Feedback Control In General (AREA)
  • Complex Calculations (AREA)

Abstract

컨볼루션 신경망(CNN)을 구현하는 것은 CNN에서 컨볼루션 레이어를 구현하기 위해 크로스포인트 어레이를 구성하는 것을 포함한다. 상기 레이어의 컨볼루션 커널은 상기 어레이의 크로스 포인트 장치에 저장된다. CNN에 대한 계산은 일련의 연산을 미리 결정된 횟수만큼 반복함으로써 수행된다. 상기 연산들은 입력 데이터 벡터의 서브파트에 대응하는 전압 펄스를 크로스포인트 어레이로 전송하는 것을 포함한다. 상기 전압 펄스는 크로스포인트 장치에 저장된 가중치에 기초하여 크로스포인트 장치에서 곱셈 연산을 수행하는 것을 나타내는 전류를 생성한다. 적분기 세트는 각각의 크로스포인트 장치로부터의 출력 전류에 기초하여 전하를 축적한다. 크로스포인트 어레이는 소정 횟수 반복 후 축적된 전하를 출력한다. 축전된 전하는 입력 데이터 벡터와 하나 이상의 컨볼루션 커널의 곱셈-가산 결과를 나타낸다.

Description

아날로그 인공지능 네트워크 추론을 위한 행별 컨볼루션 신경망 매핑을 위한 효율적 타일 매핑
[0001] 본 발명은 일반적으로 컴퓨팅 기술에 관한 것으로, 특히 인공 신경망(artificial neural networks : ANN)에 관한 것이다. 보다 구체적으로, 본 발명의 실시예는 순방향 추론 단계 동안 훈련된 컨볼루션 신경망(convolutional neural network : CNN)으로부터의 출력을 제공하기 위한 아날로그 메모리 기반 하드웨어와 같은 크로스포인트 어레이(crosspoint arrays)의 크로스포인트 장치에 CNN을 매핑하는 것에 관한 것이다.
[0002] 컴퓨터에 의한 문자 인식 및 이미지 인식과 같은 기술적인 문제는 머신 러닝 기술에 의해 잘 처리되는 것으로 알려져 있다. "머신 러닝"은 데이터로부터 학습하는 전자 시스템의 주요 기능을 광범위하게 설명하는 데 사용된다. 신경망(neural network)은 머신 러닝과 인지 과학에서 동물, 특히 뇌의 생물학적 신경망에서 영감을 받은 통계 학습 모델의 한 계열이다. 신경망은 많은 수의 입력에 의존하고 일반적으로 알려지지 않은 시스템과 기능을 추정하거나 근사화하는 데 사용될 수 있다. 신경망은 상호 연결된 "뉴런"의 개념에 기초한 알고리즘 종류를 사용한다. 일반적인 신경망에서 뉴런은 입력에서 작동하는 특정 활성화 기능을 가지고 있다. 신경망은 적절한 연결 가중치("훈련"이라고도 불리는 프로세스)를 결정함으로써 이미지 및 문자와 같은 원하는 패턴을 효율적으로 인식한다. 종종, 이러한 뉴런은 그룹들 사이의 연결을 더 명확하게 하고 계산 과정을 조직하기 위해 "레이어(layers)"로 그룹화된다. 이러한 적절한 연결 가중치를 사용하면 훈련 중에 네트워크에서 전혀 볼 수 없었던 다른 관심 패턴을 올바르게 인식할 수 있으며, 이는 "순방향 추론(Forward-inference)"으로 알려진 프로세스이다.
"머신 러닝"은 데이터로부터 학습하는 전자 시스템의 주요 기능을 광범위하게 설명하는 데 사용된다. 신경망(neural network)은 머신 러닝과 인지 과학에서 동물, 특히 뇌의 생물학적 신경망에서 영감을 받은 통계 학습 모델의 한 계열이다. 신경망은 많은 수의 입력에 의존하고 일반적으로 알려지지 않은 시스템과 기능을 추정하거나 근사화하는 데 사용될 수 있다. 신경망은 상호 연결된 "뉴런"의 개념에 기초한 알고리즘 종류를 사용한다. 일반적인 신경망에서 뉴런은 입력에서 작동하는 특정 활성화 기능을 가지고 있다. 신경망은 적절한 연결 가중치("훈련"이라고도 불리는 프로세스)를 결정함으로써 이미지 및 문자와 같은 원하는 패턴을 효율적으로 인식한다. 종종, 이러한 뉴런은 그룹들 사이의 연결을 더 명확하게 하고 계산 과정을 조직하기 위해 "레이어(layers)"로 그룹화된다. 이러한 적절한 연결 가중치를 사용하면 훈련 중에 네트워크에서 전혀 볼 수 없었던 다른 관심 패턴을 올바르게 인식할 수 있으며, 이는 "순방향 추론(Forward-inference)"으로 알려진 프로세스이다.
[0003] 본 발명의 하나 이상의 실시예에 따르면, 크로스포인트 어레이를 이용하여 컨볼루션 신경망(CNN)을 구현하기 위한 컴퓨터 구현 방법이 설명된다. 상기 방법은 CNN에서 컨볼루션 레이어를 구현하는 크로스포인트 어레이를 구성하는 단계를 포함한다. 상기 구성은 컨볼루션 레이어의 하나 이상의 컨볼루션 커널을 크로스포인트 어레이의 하나 이상의 크로스포인트 장치에 저장함으로써 수행된다. 상기 방법은 사전 결정된 횟수 동안 일련의 연산을 반복하여 크로스포인트 어레이를 통해 CNN에 대한 계산을 수행하는 단계를 더 포함한다. 상기 일련의 연산은 컨볼루션 레이어의 입력 데이터 벡터의 서브파트(subpart)에 대응하는 전압 펄스들을 크로스포인트 어레이로 전송하는 것을 포함한다. 상기 일련의 연산은 또한, 크로스포인트 어레이 내의 하나 이상의 크로스포인트 장치에서 곱셈 연산을 수행하는 것을 나타내는 전류를 출력하는 것을 포함한다. 상기 전류는 크로스포인트 장치에 의해 저장된 가중치 값과 입력 데이터로부터의 전압 펄스에 기초한다. 상기 일련의 연산은 또한, 적분기 세트에 의해, 크로스포인트 장치로부터의 출력 전류에 기초한 전하를 축적하는 것을 포함한다. 상기 방법은 적분기 세트에 의해, 미리 정해진 횟수 동안 반복한 후의 축적된 전하를 출력하는 단계를 더 포함한다. 상기 축적된 전하는 입력 데이터 벡터와 하나 이상의 컨볼루션 커널의 곱셈-가산 결과를 나타낸다.
[0004] 본 발명의 하나 이상의 실시예에서, 적분기 세트에서 축적된 전하를 출력하는 것은, 축적된 전하를 풀링(pooling)하는 것을 포함한다. 본 발명의 하나 이상의 실시예에서, 입력 데이터의 각 벡터의 서브파트는 적분기 세트와 연관된다.
[0005] 본 발명의 하나 이상의 실시예에서, 상기 크로스포인트 어레이는 복수의 크로스포인트 어레이를 포함하며, 입력 데이터의 벡터의 제1 서브파트가 제1 크로스포인트 어레이로 전송되고, 입력 데이터의 벡터의 제2 서브파트가 제2 크로스포인트 어레이로 전송된다. 본 발명의 하나 이상의 실시예에서, 적분기 세트에 의한 전하의 축적은, 제1 크로스포인트 어레이의 적분기 세트에 의해, 제2 크로스포인트 어레이의 적분기 세트에 의해 축적된 전하를 축적하는 것을 포함한다.
[0006] 본 발명의 하나 이상의 실시예에서, 상기 크로스포인트 장치는 CNN의 특정 레이어의 컨볼루션 커널의 하나 이상의 열(columns)을 구현하도록 배열되며, 여기서 입력 데이터의 벡터는 한번에 한 행, 입력 데이터로부터 제시된 CNN의 특정 레이어에 대한 뉴런 여기를 나타낸다. 적분기 세트 중 하나의 적분기에 의해 축적된 전하는 CNN의 특정 레이어에 따른 출력 여기를 나타내며, 출력 여기는 해당 컨볼루션 커널의 모든 행이 통합된 후에만 변환되고 전송된다.
[0007] 본 발명의 하나 이상의 실시예에서, 상기 크로스포인트 장치는 CNN의 특정 어레이의 컨볼루션 커널의 하나 이상의 행(rows)을 구현하도록 배열되며, 여기서 입력 데이터는 한번에 한 행 제시되는 CNN의 해당 어레이에 대한 뉴런 여기를 나타낸다. 적분기 세트 중 하나의 적분기에 의해 축적된 전하는 CNN의 특정 레이어에 따른 출력 여기를 나타내며, 출력 여기는 해당 컨볼루션 커널의 모든 열이 통합된 후에만 변환되고 전송된다.
[0008] 본 발명의 하나 이상의 실시예에 따르면, 훈련된 컨볼루션 신경망(CNN)의 계산을 수행하기 위한 전자 회로가 설명된다. 전자 회로는 크로스포인트 어레이 및 하나 이상의 적분기를 포함하는 출력 회로를 포함한다. 상기 방법은 크로스포인트 어레이를 제공하는 단계와 출력 회로를 제공하는 단계를 더 포함한다. 상기 방법은 또한, 컨볼루션 레이어의 하나 이상의 컨볼루션 커널을 크로스포인트 어레이의 하나 이상의 크로스포인트 장치에 저장함으로써 CNN에서 컨볼루션 레이어에 대응하는 크로스포인트 어레이를 구성하는 단계를 포함한다. 상기 방법은 일련의 연산을 미리 결정된 횟수 동안 반복하는 단계를 더 포함한다. CNN의 훈련은 위에서 설명된 방법을 사용하여 수행된다.
[0009] 본 발명의 하나 이상의 실시예에 따르면, 저항성 메모리 소자의 어레이를 포함하는 전자 회로가 설명된다. 어레이는 (i) 아날로그 입력값의 벡터를 인코딩하는 어레이에 대한 전압 입력의 벡터와, (ii) 어레이 내의 아날로그 저항 가중치의 행렬 사이의 아날로그 벡터-행렬 곱(analog vector-matrix-product)과 동일한 전류 출력의 벡터를 제공한다. 전자 회로는 저항성 메모리 소자의 전용 서브세트로부터 전류를 모으는 축적 와이어 및 회로를 더 포함한다. 전자 회로는 집적 커패시터들을 더 포함하며, 각각의 집적 커패시터는 하나의 적분 단계 동안 복수의 축적 와이어들 중 하나로부터 전류를 모을 수 있도록 전기적으로 스위칭 가능하다. 전자 회로는 여러 적분 단계에 걸쳐 축적된, 집적 커패시터(integration capacitors)의 서브세트로부터의 축적된 전하가 아날로그 지속 시간 또는 이진 숫자를 사용하는 디지털 표현으로 적절하게 변환 및 전송될 수 있도록 하는 데이터 출력 회로를 더 포함한다. 여기서 저항성 메모리 소자는 컨볼루션 신경망의 특정 레이어의 시냅스 가중치 커널(synaptic weight kernels)의 벡터를 구현하도록 배열된다.
[0010] 본 발명의 하나 이상의 실시예에 따르면, 전자 회로를 사용하여 여러 적분 단계에 걸쳐 축적을 수행하는 방법은, 상기 가중치 커널의 다수의 부분 벡터에 걸쳐 곱셈-축적 연산(multiply-accumulate operations)을 구현한다. 축적은 일련의 연산을 미리 정해진 횟수 동안 반복함으로써 크로스포인트 어레이의 저항성 메모리 소자에 의한 계산을 수행하는 것을 포함한다. 상기 일련의 연산은 아날로그 입력값의 각 벡터를 여러 부분 벡터로 분할하는 것을 포함한다. 상기 일련의 연산은 또한 아날로그 메모리에서 복수의 부분 벡터들 각각에 대응하는 부분 출력 여기(partial output excitations)를 축적하는 것을 포함한다. 상기 일련의 연산은 또한 축적된 전하를 축적하는 집적 커패시터로 부분 출력 여기를 라우팅하여 부분 출력 여기를 결합하는 것을 포함한다. 또한, 축적은 출력 여기를 나타내는 집적 커패시터에 축적된 전하를 전송하는 것을 더 포함한다.
[0011] 본 발명의 하나 이상의 실시예에서, 집적 커패시터에 축적된 전하는 축적된 전하를 전송하기 전에 국부적으로 풀링(pooling)된다. 본 발명의 하나 이상의 실시예에서, 저항성 메모리 소자는 비휘발성 메모리 소자이다. 본 발명의 하나 이상의 실시예에서, 저항성 메모리 소자의 서브세트는 어레이의 하나 이상의 열에 대응한다. 본 발명의 하나 이상의 실시예에서, 저항성 메모리 소자의 서브세트는 어레이의 하나 이상의 행에 대응한다.
[0012] 본 발명의 하나 이상의 실시예에서, 크로스포인트 장치는 컨볼루션 신경망의 특정 어레이의 컨볼루션 커널의 하나 이상의 행들을 구현하도록 배열되고, 입력 데이터는 한 번에 하나의 열을 제시하는 컨볼루션 신경망의 해당 어레이에 대한 뉴런 여기를 나타낸다.
[0013] 본 발명의 하나 이상의 실시예에서, 크로스포인트 장치는 컨볼루션 신경망의 특정 레이어의 하나 이상의 컨볼루션 커널의 열을 구현하도록 배열되며, 입력 데이터의 벡터는 한번에 한 행씩 입력 데이터에서 제시된 컨볼루션 신경망의 특정 레이어에 대한 뉴런 여기를 나타낸다.
[0014] 기술적 솔루션은 다음의 설명에서 설명되거나 도면에 도시된 구성요소의 구성 및 배열의 세부사항으로 적용이 제한되지 않는 것으로 이해되어야 한다. 기술적 솔루션은 설명된 것들 외에도 구현이 가능하고 다양한 방식으로 실행되고 수행될 수 있다. 또한, 본 명세서 및 요약에서 사용되는 어구 및 용어는 설명의 목적을 위한 것이며, 제한적인 것으로 간주되어서는 안 된다는 것이 이해되어야 한다. 이와 같이, 당업자는 본 발명의 기초가 되는 개념이 현재 설명된 기술적 솔루션의 여러 목적을 수행하기 위한 다른 구조, 방법 및 시스템의 설계를 위한 기초로서 용이하게 활용될 수 있다는 것을 이해할 것이다.
[0015] 본 문서 전반에 걸쳐 설명된 예시들은 다음의 도면 및 설명을 참조하여 더 잘 이해될 것이다. 도면의 구성요소는 크기가 반드시 비례하는 것은 아니다. 또한, 도면에서 동일한 참조번호는 다른 도면들에서도 대응하는 부분을 지정한다.
[0016] 도 1은 수학적 뉴런(mathematical neuron)의 입력 및 출력 연결의 단순화된 다이어그램이다.
[0017] 도 2는 도 1에 도시된 수학적 뉴런의 단순화된 모델을 도시한다.
[0018] 도 3은 도 2에 도시된 수학적 뉴런 모델을 포함하는 ANN의 단순화된 모델을 도시한다.
[0019] 도 4는 샘플 입력 맵(sample input map)을 해석하는 대표적인 CNN의 단순화된 블록도이다.
[0020] 도 5는 입력 맵 및 컨볼루션 커널을 포함하는 훈련 데이터를 사용하여 훈련되는 CNN의 예시적인 컨볼루션 레이어를 도시한다.
[0021] 도 6은 본 발명의 하나 이상의 실시예에 따라, 크로스포인트 어레이를 이용한 행렬-행렬 곱셈을 수행하는 시스템을 도시한다.
[0022] 도 7은 본 명세서에 따른 순방향 행렬 곱셈(forward matrix multiplication), 역방향 행렬 곱셈(backward matrix multiplication) 및 가중치 업데이트를 수행하는 2차원(2D) 크로스바 시스템(crossbar system)을 도시한다.
[0023] 도 8은 본 발명의 하나 이상의 실시예에 따른 크로스포인트 어레이의 확대도이다.
[0024] 도 9는 크로스바 시스템에서의 전형적인 출력 회로를 도시한다.
[0025] 도 10은 크로스포인트 어레이를 이용하여 순방향 추론 연산을 수행하는 기존의 연산을 도시한다.
[0026] 도 11은 본 발명의 하나 이상의 실시예에 따라, 시간 분할에 기초한 부분 축적(partial accumulation)을 이용한 순방향 추론 연산을 수행하는 것을 도시한다.
[0027] 도 12는 본 발명의 하나 이상의 실시예에 따라, 다수의 크로스포인트 어레이에 걸쳐 부분 축적을 이용하여 순방향 추론 연산을 수행하는 것을 도시한다.
[0028] 도 13은 본 발명의 하나 이상의 실시예에 따라, 공간 분할에 기초한 부분 축적을 이용한 순방향 추론 연산을 수행하는 것을 도시한다.
[0029] 여기에 설명된 기술 솔루션은 기존 기술보다 더 효율적인 방식으로 컨볼루션 신경망을 사용하는 딥 러닝 기술의 구현을 촉진한다. 딥 러닝 기술은 이미지 및 음성 인식과 같은 기계 기반 패턴 인식 문제에 널리 사용된다. 딥 러닝은 본질적으로 대규모 훈련 데이터 세트(빅 데이터 사용으로 향상됨)와 컴퓨팅 성능(무어의 법칙에 따라 증가할 것으로 예상됨)의 가용성을 활용한다.
[0030] 본 발명의 실시예는 크로스포인트 어레이를 사용하는 인공 신경망(ANN)과 같은 아날로그 인공 지능 시스템을 구현할 때 컨볼루션 신경망(CNN)의 아날로그 어레이로의 효율적인 워크로드 매핑(workload mapping)을 용이하게 한다. 기존 기술은 CNN 추론 워크로드에 대한 가중치의 "행별" 매핑을 설명하므로 CNN의 각 어레이를 통한 활성화가 효율적으로 사용되고 간소화되어 스토리지 요구 사항을 제한한다. 그러나 이러한 "행별" 매핑 기술을 사용하는 아날로그 어레이 영역 활용도가 낮고 이러한 기술의 확장성에 영향을 미친다는 점에서 기존 기술에 기술적 과제가 존재한다. 예를 들어, 대규모 CNN(ResNet-50과 같은)을 매핑하려면 CNN을 구현하기 위해 많은 수의 아날로그 어레이가 필요할 수 있으며, 이는 구현을 비효율적이고 다루기 어렵고 교차 금지적(cross prohibitive)으로 만들 수 있다.
[0031] 본 발명의 실시예는 행별 매핑 기술을 위한 CNN 레이어의 콤팩트 매핑을 용이하게 하는 유연한 어레이 간 라우팅 방법을 제공함으로써 ANN, 특히 CNN을 구현하는 동안 이러한 기술적 과제를 해결한다. 본 발명의 하나 이상의 실시예는, 활성화가 간소화되거나 재사용되지 않는 일반적인 매핑 기술을 사용하는 기존의 행별 매핑 기술에 대해 필요한 아날로그 어레이(타일)의 수를 벤치마킹한다. 이에 따라, 본 발명의 실시예는 행별 매핑을 위한 간소화된 활성화의 장점을 보존하면서 광범위한 CNN에 필적하는 어레이 활용을 용이하게 한다.
[0032] 하나 이상의 실시예가 뇌 구조 및 기능 모델링에 특히 중점을 두는 생물학적 신경망의 맥락에서 설명되지만, 여기에 인용된 교시의 구현은 특정 환경 모델링에 제한되지 않는다는 것이 미리 이해된다. 오히려, 본 발명의 실시예는 환경에 대한 다양한 입력들이 벡터로 변환될 수 있는 한, 예를 들어, 날씨 패턴, 인터넷으로부터 수집된 임의의 데이터 등을 포함하여, 어떠한 유형의 환경도 모델링할 수 있다.
[0033] ANN은 종종 시뮬레이션된 "뉴런"으로 작용하고 전자 신호의 형태로 서로 간에 "메시지"를 교환하는 상호 연결된 프로세서 요소의 소위 "뉴로모픽(neuromorphic)" 시스템으로 구현된다. 생물학적 뉴런 간에 메시지를 전달하는 시냅스 신경전달물질 연결(synaptic neurotransmitter connections)의 소위 "가소성(plasticity)"과 유사하게, 시뮬레이션된 뉴런 간에 전자 메시지를 전달하는 ANN의 연결에는 특정 연결의 강도 또는 약점에 해당하는 숫자 가중치가 제공된다. 경험에 따라 가중치를 조정할 수 있으므로 ANN이 입력에 적응하고 학습할 수 있다. 예를 들어, 필기 인식을 위한 ANN은 입력 이미지의 픽셀에 의해 활성화될 수 있는 입력 뉴런 세트에 의해 정의된다. 네트워크 설계자에 의해 결정된 함수에 의해 가중치가 부여되고 변환된 후, 이러한 입력 뉴런의 활성화는 종종 "은닉(hidden)" 뉴런으로 언급되는 다른 하류(downstream) 뉴런으로 전달된다. 이 과정은 출력 뉴런이 활성화될 때까지 반복된다. 활성화된 출력 뉴런은 어떤 문자를 읽었는지 결정한다.
[0034] 크로스포인트 어레이, 크로스와이어 어레이(crosswire arrays) 또는 RPU(resistive processing unit) 어레이로도 알려진 크로스바 어레이(Crossbar arrays)는, ANN 아키텍처, 뉴로모픽 마이크로칩(neuromorphic microchips) 및 초고밀도 비휘발성 메모리를 포함하여, 다양한 전자 회로 및 장치를 형성하는 데 사용되는 고밀도, 저비용 회로 아키텍처이다. 기본적인 크로스포인트 어레이 구성은 전도성 행 와이어 세트(set of conductive row wires), 및 상기 전도성 행 와이어 세트와 교차하도록 형성된 전도성 열 와이어 세트(set of conductive column wires)를 포함한다. 두 와이어 세트 사이의 교차점은 박막 재료로 형성될 수 있는 소위 크로스포인트 장치에 의해 분리된다.
[0035] 크로스포인트 장치는 사실상 뉴런 사이의 ANN의 가중 연결(weighted connections) 역할을 한다. 예를 들어 "이상적인" 전도 상태 스위칭 특성을 갖는 멤리스터(memristors)와 같은 나노스케일 2 단자 장치는 높은 에너지 효율로 시냅스 가소성을 에뮬레이트하기 위해 종종 크로스포인트 장치로 사용된다. 이상적인 멤리스터 재료의 전도 상태(예를 들어, 저항)는 행 및 열 와이어의 개별 와이어들 사이에 인가되는 전압을 제어함으로써 변경될 수 있다. 높은 전도 상태 또는 낮은 전도 상태를 달성하기 위해 교차점에서 멤리스터 재료의 전도 상태를 변경하여 디지털 데이터를 저장할 수 있다. 멤리스터 재료는 재료의 전도 상태를 선택적으로 설정함으로써 둘 이상의 별개의 전도 상태를 유지하도록 프로그래밍될 수도 있다. 멤리스터 재료의 전도 상태는 재료에 전압을 인가하고 목표 크로스포인트 장치를 통과하는 전류를 측정함으로써 판독할 수 있다.
[0036] 전력 소비를 제한하기 위해, ANN 칩 아키텍처의 크로스포인트 장치는 종종 오프라인 학습 기술을 활용하도록 설계되며, 목표 함수의 근사는 일단 초기 훈련 단계가 해결되면 변경되지 않는다. 오프라인 학습을 통해 크로스바 유형 ANN 아키텍처의 크로스포인트 장치를 매우 적은 전력을 소비하도록 단순화할 수 있다.
[0037] 낮은 전력 소비, 높은 계산 처리량 및 낮은 대기 시간으로 이전에 훈련된 ANN 네트워크의 순방향 추론을 구현할 수 있는 간단한 크로스포인트 장치를 제공하면 전반적인 ANN 성능을 향상시키고 더 광범위한 ANN 애플리케이션을 허용할 수 있다.
[0038] 본 발명은 전자 시스템에 관한 것이지만, 참조 및 설명의 용이성을 위하여 설명된 전자 시스템의 다양한 실시예는 예를 들어 뉴런, 가소성, 시냅스와 같은 신경학적 용어를 사용하여 설명된다. 전자 시스템에 대한 논의 또는 설명을 위해, 신경학적 용어 또는 신경학적 단축 표기법의 사용은 참조의 용이성을 위한 것이며, 설명된 신경학적 기능 또는 신경학적 구성요소의 뉴로모픽(neuromorphic), ANN 등가물을 다루기 위한 것으로 이해될 것이다.
[0039] 뉴로모픽(neuromorphic) 또는 시냅트로닉(synaptronic) 시스템으로도 알려진 ANN은 예를 들어, 생물학적 신경 시스템; 인간의 뇌; 및 이미지 인식, 음성 인식 등의 뇌 유사 기능을 포함하는 다른 기능 또는 시스템을 추정하거나 근사할 수 있는 계산 시스템이다. ANN은 신경 생리학, 인지 과학/심리학, 물리학(통계 역학), 제어 이론, 컴퓨터 과학, 인공 지능, 통계/수학, 패턴 인식, 컴퓨터 비전, 병렬 처리 및 하드웨어(예를 들어, 디지털/아날로그/VLSI/광학)를 포함한 다양한 분야의 지식을 통합한다.
[0040] 0과 1을 조작하는 전통적인 디지털 모델을 활용하는 대신, ANN은 추정되거나 근사화되는 코어 시스템(core system) 기능과 실질적으로 동등한 기능을 가진 처리 요소들 사이의 연결을 생성한다. 예를 들어, 전자 뉴로모픽 기계의 중심 구성요소인 컴퓨터 칩은 포유류의 뇌와 유사한 형태, 기능 및 구조를 제공하려고 시도한다. 상기 컴퓨터 칩은 기존의 컴퓨터 칩과 동일한 기본 트랜지스터 구성요소를 사용하지만, 트랜지스터는 뉴런의 동작과 시냅스 연결을 모방하도록 구성되어 있다. 상기 컴퓨터 칩은 생물학적 뉴런 사이의 시냅스 통신과 유사한 전기 스파이크(electrical spikes)를 사용하여 서로 통신하는 백만 개 이상의 시뮬레이션된 "뉴런" 네트워크를 사용하여 정보를 처리한다. 이러한 컴퓨터 칩의 아키텍처는 메모리(즉, 시뮬레이션된 "시냅스")를 읽고 간단한 연산을 수행하는 프로세서(즉, 시뮬레이션된 "뉴런")의 구성을 포함한다. 일반적으로 서로 다른 코어에 위치하는 이러한 프로세서(경로) 간의 통신은 온칩 네트워크 라우터(on-chip network routers)에 의해 수행된다.
[0041] 도 1, 도 2 및 도 3을 참조하여 일반적인 ANN의 작동 방식에 대한 일반적인 설명을 배경으로 제공한다. 전술한 바와 같이, 전형적인 ANN은 인간의 뇌에서 영감을 받은 수학적 모델로, 뉴런이라고 불리는 약 1,000억 개의 상호 연결된 세포를 포함한다. 도 1은 상류 입력(upstream inputs)(112, 114), 하류 출력(downstream outputs)(116) 및 하류 "다른" 뉴런(118)에 연결되는 경로(104, 106, 108, 110)를 갖는 수학적 뉴런(102)의 단순화된 다이어그램이다. 각각의 수학적 뉴런(102)는 경로(104, 106, 108, 110)를 통해 전기적 자극을 주고 받는다. 이러한 전기적 자극의 특성과 생물학적 뉴런(도시되지 않음)에서 처리되는 방식은 주로 전반적인 뇌의 기능을 담당한다. 이 기능을 모방하는 것이 네트워크에 조직된 수학적 뉴런(102)으로 구성된 수학적 ANN의 의도이다. 생물학적 뉴런 사이의 경로 연결이 강할 수도 있고 약할 수도 있듯이 수학적 뉴런 사이의 경로도 그럴 수 있다. 특정 뉴런이 입력 자극을 받으면, 뉴런은 입력을 뉴런의 기능에 따라 처리하고 함수의 결과를 하류 출력 및/또는 하류 "다른" 뉴런으로 보낸다.
[0042] 수학적 뉴런(102)은 도 2에 도시된 식으로 나타낸 수학적 함수 f(x)를 갖는 노드(202)로서 도 2에 모델링되어 있다. 노드(202)는 입력(212, 214)으로부터 전기 신호를 수신하고, 각 입력(212, 214)에 각각의 연결 경로(204, 206)의 강도를 곱하고, 입력의 합을 취하고, 함수 f(x)를 통해 합을 전달하고, 결과(216)을 생성하며, 이는 최종 출력 또는 다른 노드로의 입력 또는 둘 모두가 될 수 있다. 본 명세서에서 별표(*)는 곱셈(예를 들어, 행렬 곱셈)을 나타내는 데 사용된다. 예를 들어, 행렬 곱셈은 출력 맵을 생성하기 위해 입력 데이터와 하나 이상의 컨볼루션 커널 사이의 컨볼루션 연산을 수행하는 데 사용될 수 있다. 약한 입력 신호에는 매우 작은 연결 강도 수치가 곱해지므로, 약한 입력 신호가 함수에 미치는 영향은 매우 낮다. 마찬가지로, 강한 입력 신호에는 더 높은 연결 강도 수치가 곱해지므로, 강한 입력 신호가 함수에 미치는 영향이 더 크다. 함수 f(x)는 설계 선택이며, 다양한 함수를 사용할 수 있다. f(x)에 대한 일반적인 설계 선택은 이전 합(previous sum)의 함수를 사용하여 -1과 +1 사이의 숫자를 출력하는 하이퍼볼릭 탄젠트 함수(hyperbolic tangent function)이다. f(x)의 대안적인 설계 선택은 양의 입력에 대해 출력이 입력과 일치하고 그렇지 않으면 출력이 0인 함수인, 정류 선형 유닛(rectified linear unit : ReLU)이다.
[0043] 도 3은 가중 방향 그래프(weighted directional graph)로 조직화된 단순화된 ANN 모델(300)을 도시하고, 여기서 인공 뉴런은 노드(예를 들어, 302, 308, 316)이고, 가중 방향 에지(weighted directed edges)(예를 들어, m1 내지 m20)는 노드를 연결한다. ANN 모델(300)은 노드(302, 304, 306)가 입력 어레이 노드이고, 노드(308, 310, 312, 314)가 은닉 어레이 노드이며, 노드(316, 318)가 출력 어레이 노드이다. 각 노드는 연결 경로에 의해 인접한 어레이의 모든 노드에 연결되는데, 이는 도 3에 연결 강도 m1 내지 m20을 갖는 방향 화살표로 도시되어 있다. 하나의 입력 어레이, 하나의 은닉 어레이 및 하나의 출력 어레이만 표시되지만, 실제로는 복수의 입력 어레이, 은닉 어레이 및 출력 어레이이 제공될 수 있다.
[0044] 인간 뇌의 기능을 모방하려는 이 시도에서, ANN(300)의 각 입력 어레이 노드(302, 304, 306)은 연결 강도 조정 및 노드 합계가 없는 소스(source)(도시되지 않음)로부터 입력 x1, x2, x3을 직접 수신한다. 따라서, 도 3의 하단에 열거된 방정식에서 알 수 있듯이, y1 = f(x1), y2 = f(x2) 및 y3 = f(x3)이다. 각각의 은닉 어레이 노드(308, 310, 312, 314)는 관련 연결 경로와 연관된 연결 강도에 따라 모든 입력 어레이 노드(302, 304, 306)로부터 입력을 수신한다. 그러므로, 은닉 어레이 노드(308)에서, y4 = f (m1*y1 + m5*y2 + m9*y3), 여기서 *는 곱셈을 나타낸다. 하나 이상의 예에서, 상기 곱셈은 컨볼루션 연산을 수행하기 위해 사용되는 행렬 곱셈일 수 있다. 도 3의 하단에 도시된 함수 y5 내지 y9를 정의하는 방정식에서 보는 바와 같이, 은닉 레이어 노드(310, 312, 314) 및 출력 레이어 노드(316, 318)에 대해서도 유사한 연결 강도 곱셈 및 노드 합산이 수행된다.
[0045] ANN 모델(300)은 데이터 레코드를 한 번에 하나씩 처리하고, 레코드의 초기 임의 분류와 알려진 실제 분류를 비교하여 "학습"한다. "역전파(backpropagation)"(즉, "오류의 역전파")로 알려진 훈련 방법론을 사용하면, 첫 번째 레코드의 초기 분류의 오류가 네트워크에 피드백되고 두 번째로 네트워크의 가중 연결을 수정하는 데 사용되며, 이 피드백 과정은 여러 번 반복된다. ANN의 훈련 단계에서 각 레코드에 대한 올바른 분류가 알려져 있으므로 출력 노드는 올바른 값, 예를 들어 올바른 클래스에 해당하는 노드에 노드 값 "1"(또는 0.9), 다른 노드에 대해 노드 값 "0"(또는 0.1)을 할당할 수 있다. 따라서 출력 노드에 대한 네트워크의 계산된 값을 이러한 "올바른" 값과 비교하고 각 노드에 대한 오차 항(즉, 델타 규칙)을 계산할 수 있다. 그런 다음 이러한 오차 항을 사용하여 은닉 레이어의 가중치를 조정하여 다음 반복에서 출력값이 "정확한" 값에 더 가까워지도록 한다.
[0046] 신경망에는 많은 유형이 있지만, 가장 광범위한 두 가지 범주는 피드포워드(feed-forward) 네트워크와 피드백/순환(feedback/recurrent) 네트워크이다. ANN 모델(300)은 입력, 출력 및 은닉 레이어를 갖는 비순환 피드포워드 네트워크이다. 신호는 한 방향으로만 이동할 수 있다. 입력 데이터는 계산을 수행하는 처리 요소의 레이어로 전달된다. 각 처리 요소는 입력의 가중 합계에 기초하여 계산한다. 다음에 새로 계산된 값1 다음 레이어에 공급되는 새로운 입력값이 된다. 이 프로세스는 모든 레이어를 통과하고 출력을 결정할 때까지 계속된다. 임계값 전달 함수는 출력 레이어에서 뉴런의 출력을 정량화하는 데 사용되기도 한다.
[0047] 피드백/순환 네트워크는 피드백 경로를 포함하며, 이는 신호가 루프(loops)를 사용하여 양방향으로 이동할 수 있음을 의미한다. 노드 간에 가능한 모든 연결이 허용된다. 이러한 유형의 네트워크는 루프가 존재하기 때문에 특정 연산 하에서는 평형 상태(state of equilibrium)에 도달할 때까지 연속적으로 변화하는 비선형 동적 시스템이 될 수 있다. 피드백 네트워크는 종종 연관 기억 및 최적화 문제에 사용되며, 여기서 네트워크는 상호 연결된 요소의 최상의 배열을 찾는다.
[0048] 피드포워드 및 순환 ANN 아키텍처에서 머신 러닝의 속도와 효율성은 ANN 크로스포인트 어레이의 크로스포인트 장치가 전형적인 머신 러닝 알고리듬의 핵심 연산을 얼마나 효과적으로 수행하는지에 따라 달라진다. 머신 러닝의 정확한 정의를 공식화하기는 어렵지만, ANN 컨텍스트(context)의 학습 프로세스는 네트워크가 특정 작업을 효율적으로 수행할 수 있도록 크로스포인트 장치 연결 가중치(crosspoint device connection weights)를 업데이트하는 문제로 볼 수 있다. 크로스포인트 장치는 일반적으로 이용 가능한 훈련 패턴으로부터 필요한 연결 가중치를 학습한다. 네트워크에서 가중치를 반복적으로 업데이트하여 시간이 지남에 따라 성능이 향상된다. ANN은 인간 전문가가 지정한 일련의 규칙을 따르는 대신 주어진 대표적인 예제 모음에서 (입력-출력 관계와 같은) 기본 규칙을 "학습"한다. 따라서 학습 알고리즘은 일반적으로 관련 가중치를 업데이트 및/또는 조정하기 위해 학습 규칙을 사용하는 절차로 정의할 수 있다.
[0049] 세 가지 주요 학습 알고리듬 패러다임은 지도(supervised), 비지도(unsupervised) 및 하이브리드(hybrid)이다. 지도 학습 또는 "선생님"과의 학습에서 네트워크는 모든 입력 패턴에 대한 정답(출력)을 제공받는다. 가중치는 네트워크가 알려진 정답에 가능한 가깝게 답변을 생성할 수 있도록 결정된다. 강화 학습(Reinforcement learning)은 네트워크가 정답 자체가 아닌 네트워크 출력의 정확성에 대한 비판만 제공받는 지도 학습의 변형이다. 대조적으로, 비지도 학습, 또는 선생님이 없는 학습은 훈련 데이터 세트의 각 입력 패턴과 관련된 정답을 요구하지 않는다. 데이터의 기본 구조 또는 데이터의 패턴 간 상관 관계를 탐색하고 이러한 상관 관계에서 패턴을 범주로 구성한다. 하이브리드 학습은 지도 학습과 비지도 학습을 결합한다. 가중치의 일부는 일반적으로 지도 학습을 통해 결정되는 반면, 나머지 부분은 비지도 학습을 통해 얻는다. ANN과 학습 규칙의 추가 세부 사항은 Anil K. Jain, Jianchang Mo 및 K.M. Mohuddin(IEEE, 1996년 3월)에 의한 튜토리얼인 Artificial Neural Networks에 설명되어 있으며, 그것의 전체 설명은 여기에 참조로 통합되어 있다.
[0050] ANN 훈련의 적용 외에도, 이미 훈련된 네트워크의 순방향 추론에는 ANN을 기반으로 구축된 클라우드 기반 서비스의 구현에서 스마트폰, 사물인터넷(IOT) 및 극도로 낮은 전력 작동이 필요한 기타 배터리 제한 애플리케이션(battery-constrained applications)에 이르는 애플리케이션이 포함된다. 일반적으로 훈련은 (많은 훈련 예제에서 학습하기 위해) 높은 처리량을 요구하는 응용 프로그램이지만, 순방향 추론은 (주어진 새로운 훈련 예제를 가능한 한 빨리 분류, 인식 또는 처리할 수 있도록) 빠른 대기 시간(fast latency)을 요구하는 응용 프로그램이다.
[0051] CNN에서 커널은 시야(visual field)에 있는 것과 같은 중첩 영역(overlapping regions)을 컨볼루션하고, 따라서 특징 감지에서 공간적 위치의 중요성을 강조한다. CNN의 컨볼루션 레이어를 계산하는 것은 일반적으로 신경망 훈련 및 추론에서 계산 시간의 90% 이상을 포함한다. CNN을 아날로그 어레이로 매핑하고 최소한의 외부 데이터 이동 또는 계산으로 컨볼루션 레이어의 수학적 작업을 수행하는 동안 사용되는 전력의 효율적인 사용을 보장하는 것은 기술적 과제이다. 기술적 과제에는 추론을 위한 CNN 매핑과 ResNet-50과 같은 대규모 CNN도 구현될 수 있도록 이러한 매핑의 확장성을 유지하는 것이 포함된다. 행별 매핑을 사용하는 기존 솔루션은 어레이 간 라우팅 회로(inter-array routing circuitry)에 특정한 제한을 가정하는 반면, 본 발명의 하나 이상의 실시예는 행별 기술을 위해 크로스포인트 어레이에 대한 CNN 레이어의 콤팩트한 매핑을 가능하게 하는 데이터의 유연한 어레이 간 라우팅을 용이하게 한다.
[0052] 본 발명의 실시예에 의해 구현되는 기술 솔루션은 행별 매핑을 위한 간소화된 활성화의 이점을 유지하면서 광범위한 CNN 네트워크에 대해 매우 유사한 어레이 활용을 제공함으로써 이러한 기술적 문제를 해결한다.
[0053] 도 4는 CNN의 단순화된 블록 다이어그램이다. 도시된 예에서, CNN은 샘플 입력 맵(400)을 해석하기 위해 사용되고 있으며, 이 특별한 예에서는 손으로 쓴 문자 "w"를 입력 맵으로 사용한다. 그러나, 다른 유형의 입력 맵이 가능하고, 또한 여기에 설명된 기술 솔루션이 다른 유형의 특징 탐지와 같은 다른 연산을 수행하는 CNN에 적용될 수 있는 것으로 이해된다. 예시된 예에서 입력 맵(100)은 입력 레이어(410) 또는 "레이어-1"에 대한 값 세트를 만드는 데 사용된다. 예를 들어, 레이어-1은 샘플 입력 맵(400)의 픽셀을 레이어-1의 특정 뉴런에 직접 매핑함으로써 생성될 수 있다. 뉴런에 값을 할당하는 다른 예시적인 방법은 컨볼루션 신경망을 참조하여 아래에서 논의된다. 신경망의 변동과 해결하기 위해 생성되는 문제에 따라, 네트워크의 각 레이어는 서로 다른 수의 뉴런을 가질 수 있으며, 이들은 입력 데이터의 특정 품질과 관련이 있을 수도 있고 아닐 수도 있다.
[0054] 도 4를 참조하면, 앞서 설명한 바와 같이(도 3 참조), 레이어-1(410)의 뉴런들은 다음 레이어인 레이어-2(420)의 뉴런들과 연결된다. 도 4의 뉴런은 도 1을 참조하여 설명된 바와 같다. 결과적으로, 레이어-2(420)의 뉴런은 레이어-1(410)의 각 뉴런으로부터 입력값을 받는다. 그런 다음 입력값을 합하고 이 합을 바이어스(bias)와 비교합니다. 만약 그 값이 특정 뉴런에 대한 바이어스를 초과한다면, 그 뉴런은 다음 레이어의 뉴런에 대한 입력으로 사용될 수 있는 값을 보유한다. 이러한 계산은 적어도 하나의 FC 레이어(450)을 포함하는 CNN의 다양한 레이어(430-450)을 통해 도 4에서 "출력"이라고 하는 최종 레이어(460)에 도달할 때까지 계속된다. 일부 CNN 네트워크에서 이전 레이어의 "잔여" 결과는 이후 레이어의 결과와 결합되어 그 사이의 레이어를 건너뛸 수 있다. 문자 인식에 사용되는 CNN의 예에서, 레이어의 각 값은 특정 문자에 할당된다. 분류 작업을 위해 설계될 때, 네트워크는 하나의 뉴런에서 하나의 큰 양수 값(positive value)만 갖는 출력 레이어로 끝나도록 구성되며, 그런 다음 네트워크가 손으로 필기 문자일 가능성이 가장 높은 것으로 계산한 문자를 보여준다. 다른 시나리오에서 네트워크는 출력 뉴런 값이 확률(가능성), 신뢰도 또는 다른 관심 메트릭(metrics)을 추정하는 데 사용될 수 있도록 설계되었을 수 있다.
[0055] CNN의 각 레이어에 대한 데이터 값은 일반적으로 행렬(또는 일부 예에서 텐서)을 사용하여 표현되며, 계산은 행렬 계산으로 수행된다. 매트릭스의 인덱스(및/또는 크기)는 도 4에 도시된 바와 같이 레이어마다, 네트워크마다 다르다. 다른 구현들은 행렬의 방향을 정하거나 행렬을 컴퓨터 메모리에 다르게 매핑한다. 도 4를 참조하면, 도시된 CNN의 예에서, 신경망의 각 레이어에 대한 행렬 차원으로 도시된 바와 같이, 각 레벨은 뉴런 값의 텐서이다. CNN의 입력에서, 예는 각각 2차원 이미지인 복수의 입력 "평면(planes)"일 수 있다. 예를 들어, 풀 컬러 이미지(full-color image)에서 파생된 빨간색 평면, 녹색 평면 및 파란색 평면이 있을 수 있다. CNN으로 더 깊이 들어가면, 레이어는 많은 "평면"의 형태로 중간 데이터를 가져와서 다음 레이어를 위해 많은 수의 출력 평면을 생성할 수 있다. 레이어에서 입력 텐서의 값은 필터(filter)로 알려진 변환 텐서(transformation tensor)에 있는 연결 강도(connection strengths)로 곱해진다. 이 행렬 곱셈은 연결 강도에 따라 이전 레이어의 각 값을 조정하고 이러한 기여도의 총합을 합산한다. 이 기본 연산을 곱셈-누적 연산(multiply-accumulate operation)이라고 한다. 바이어스 행렬(bias matrix)은 다음 레벨에서 각 뉴런의 임계값을 설명하기 위해 결과적인 곱 행렬(product matrix)에 추가될 수 있다. 또한, 각각의 결과값에 활성화 함수(activation function)가 적용되고, 결과값들은 다음 레이어에 적용될 출력 텐서(output tenso)에 배치된다. 예를 들어, 활성화 함수는 정류 선형 유닛(rectified linear units), 시그모이드(sigmoid) 또는 tanh()일 수 있다. 그러므로, 도 4에 도시된 바와 같이, 각 레이어 사이의 연결, 따라서 전체 네트워크는 일련의 행렬로 표현될 수 있다. CNN 훈련에는 이러한 행렬에 대한 적절한 값을 찾는 것이 포함된다.
[0056] 완전히 연결된 신경망(fully-connected neural networks)은 적절하게 훈련될 때 손글씨 또는 애완동물의 사진 등과 같은 입력 패턴을 인식할 수 있지만 시프트 불변성(shift-invariance)을 나타내지 않는다. 네트워크가 고양이의 수염을 인식하려면 이미지 내의 다양한 2-D 위치에 수염을 갖는 고양이 이미지가 제공되어야 한다. 각각의 서로 다른 이미지 위치는 완전히 연결된 네트워크에서 서로 다른 가중치와 상호 작용하는 뉴런 값으로 이어질 것이다. 대조적으로, CNN에서는 연결 강도가 컨볼루션 커널(convolution kernels)이다. 컨볼루션 연산은 시프트 불변성(shift-invariance)을 도입한다. 따라서 수염을 갖는 고양이가 있는 여러 이미지가 제시되므로 수염의 크기, 색상 및 회전이 이미지들 간에 변경되지 않는 한 이미지 내의 2-D 위치는 더 이상 중요하지 않다. 따라서 훈련 중에 유사한 특징의 모든 예는 2-D 이미지 내의 특징 위치와 무관하게 이 특징을 학습하는 데 도움이 되도록 함께 작동한다. 훈련 후에, 단일 또는 훨씬 작은 필터 세트는 그러한 이미지 특징을 인식하기에 충분하며, 많은 필터 뱅크(CNN 레이어가 무엇인지)가 이미지(고양이로부터 개 또는 심지어 다른 품종의 고양이를 나타내는 섬세함)를 식별하는 데 유용한 많은 다른 특징을 인식할 수 있다.
[0057] 도 5는 입력 맵(510) 및 컨볼루션 커널(520)을 포함하는 훈련 데이터를 사용하여 훈련되는 CNN의 예시적인 컨볼루션 레이어(500)를 도시한다. 단순화를 위해, 도 5에는 바이어스 행렬(525)이 도시되어 있지 않다. 입력 맵(510)(입력 평면(input planes)이라고도 함)은 복수의 입력 패턴, 예를 들어 D 입력 맵을 포함할 수 있다. 각 입력 맵은 N x M 크기의 행렬과 같은, 행렬이다. 따라서, 이 경우 입력 뉴런의 총 개수는 N x M x D이다. 입력 맵은 해당 출력, 맵(530)을 생성하기 위해 도시된 바와 같이, 크기 k x k의 F 컨볼루션 커널(520)과 컨볼루션된다. 각 출력맵은 N' x M' 차원을 가질수 있다. 입력 맵이 n 크기의 정사각형 행렬인 경우 출력 맵은 n-k+1 x n-k+1 크기를 가질 수 있습니다. 각 컨볼루션은 D 입력 맵을 포함하는 3D 컨볼루션이다. CNN은 이러한 레이어를 다수 포함할 수 있으며, 여기서 이전 레이어로부터의 출력 맵(530)은 후속 레이어를 위한 입력 맵(510)으로 사용된다. 역전파 알고리즘을 사용하여 필터의 k x k x D x F 가중치를 학습할 수 있다.
[0058] 예를 들어, 입력 맵(510)은 해당 출력 맵을 생성하기 위해 각 필터 뱅크와 컨볼루션된다. 예를 들어, CNN이 필기를 식별하도록 훈련되는 경우, 입력 맵(510)은 수직선(vertical line)을 나타내는 컨볼루션 커널을 포함하는 필터 뱅크와 결합된다. 결과적인 출력 맵은 입력 맵(510)에 존재하는 수직선을 식별한다. 또한, 다른 필터 뱅크는 위와 오른쪽으로 가는 것과 같은 대각선(diagonal line)을 나타내는 컨볼루션 커널을 포함할 수 있다. 입력 맵(510)과 제2 필터 뱅크의 컨볼루션에 따른 출력 맵은 대각선을 포함하는 훈련 데이터의 샘플을 식별한다. 두 출력 맵은 픽셀 인접성(pixel adjacency)을 유지하면서 문자에 대한 다른 정보를 표시한다. 이는 문자 인식을 더 효율적으로 할 수 있다.
[0059] 도 6은 본 발명의 하나 이상의 실시예에 따른 행렬-행렬 곱셈을 수행하기 위한 제어기(610)를 사용하여 크로스포인트 어레이(700)를 제어하는 시스템(600)을 도시한다. 예를 들어, 제어기(610)는 크로스포인트 어레이(700)에 의해 곱해질 입력 데이터(510)를 전송한다. 하나 이상의 예에서, 제어기(610)는 예를 들어, 컨볼루션 커널 (520)로부터의, 가중치 값을 크로스포인트 어레이(700)에 저장하고 입력 벡터를 전송한다. 하나 이상의 예에서, 제어기(610)와 크로스포인트 어레이(700)는 유선 또는 무선, 또는 이들의 조합으로 결합된다. 제어기(610)는 또한 CNN에서 하나 이상의 레이어에 대한 연산을 시작하기 위해 크로스포인트 어레이(700)로 명령을 전송한다. 제어기(610)는 또한 연산이 수행되었다는 알림을 받은 후 크로스포인트 어레이(700)로부터 출력 데이터(530)를 읽을 수 있다. 제어기(610)는 서버, 데스크탑 컴퓨터, 태블릿 컴퓨터, 전화기 등과 같은 처리 장치 또는 컴퓨팅 시스템일 수 있다. 제어기(610)는 컴퓨터 실행 가능 명령이 저장된 메모리 장치를 포함할 수 있으며, 이 명령은 제어기에 의해 실행될 때 행렬-행렬 계산을 야기한다.
[0060] 이제 본 설명의 개요로 돌아가, 하나 이상의 실시예는 크로스바 와이어들의 각 교차점에 크로스포인트 장치를 갖는 크로스포인트 어레이에 관한 것이며, 이 크로스포인트 어레이는 CNN을 구현하는 데 사용된다. 크로스포인트 장치의 예는 로컬 데이터 저장 기능 및 로컬 데이터 처리 기능을 제공하는 저항성 처리 장치(resistive processing unit : RPU)로 지칭되는 2단자 프로그램 가능 저항성 크로스포인트 구성요소이다. 데이터 처리를 수행할 때, 각 크로스포인트 장치가 나타내는 가중 기여도는 데이터의 저장 위치에서 수행되는 대규모 병렬 곱셈-누적 연산(massively-parallel multiply-accumulate operation)에 기여한다. 따라서 관련 데이터를 프로세서와 별도의 스토리지(storage) 요소의 안팎으로 이동할 필요가 없다. 따라서, 설명된 크로스포인트 장치를 갖는 머신 러닝 CNN 아키텍처를 구현하면 CNN을 훈련시키고, 이후 훈련된 CNN 모델을 사용하여 추론을 수행하는 온라인 머신 러닝 학습 기능을 구현할 수 있다. 설명된 크로스포인트 장치와 결과적인 CNN 아키텍처는 전반적인 CNN 성능을 향상시키고 더 광범위한 실용적인 CNN 애플리케이션을 가능하게 한다.
[0061] 설명된 크로스포인트 장치는 2 단자 저항성 크로스포인트 장치로서 구현될 수 있다. 예를 들어, 설명된 크로스포인트 장치는 저항성 랜덤 액세스 메모리(resistive random access memory : RRAM), 위상 변화 메모리(phase change memory : PCM), 프로그래머블 메탈라이제이션 셀(Programmable Metallization Cell : PMC) 메모리, 비선형 멤리스터 시스템(non-linear memristor systems), 또는 시간이 지남도 충분히 안정적인 아날로그 튜닝 가능한 비휘발성 메모리 상태에 대한 광범위한 범위를 제공하는 임의의 다른 장치로 구현될 수 있다.
[0062] 도 7은 본 명세서에 따른 순방향 추론을 수행하는 2차원(2D) 크로스바 시스템(crossbar system)(700)을 도시한다. 크로스바 시스템(700)은 역전파 알고리즘에 따른 간단한 행렬 곱셈, 역방향 행렬 곱셈, 심지어 현장 가중치 업데이트를 구현하는 데 사용될 수 있다. 크로스바 시스템(700)은 크로스포인트 어레이(705), 입력 회로(710) 및 출력 회로(720)을 포함한다. 입력 회로(710)와 출력 회로(720)는 함께 주변 회로로 지칭될 수 있다. 크로스바 시스템(700)은 하나 이상의 예에서 컴퓨터 칩일 수 있다.
[0063] 도 8은 하나 이상의 실시예에 따른 크로스포인트 어레이(705)의 확대도이다. 크로스포인트 어레이(705)는 전도성 행 와이서 세트(set of conductive row wires)(802, 804, 806) 및이 전도성 행 와이서 세트(802, 804, 806)와 교차하는 전도성 열 와이어 세트(808, 810, 812, 814)로 형성된다. 행 와이어 세트와 열 와이어 세트 사이의 교차점은 크로스포인트 장치에 의해 분리되는데, 이들은 각각 σ11, σ21, σ31, σ41, σ12, σ22, σ32, σ42, σ13, σ23, σ33 및 σ43으로 표시된 자체적인 조절/업데이트 가능한 저항 가중치를 갖는 저항 소자들로서 도 8에 도시되어 있다. 도시의 용이성을 위하여 도 8에서 하나의 크로스포인트 장치(820)에만 참조번호가 표시되어 있다. 순방향 행렬 곱셈에서, 크로스포인트 장치의 전도 상태(즉, 저장된 가중치)는 크로스포인트 장치에 전압을 인가하고 크로스포인트 장치를 통과하는 전류를 측정함으로써 읽을 수 있다.
[0064] 입력 전압(V1, V2, V3)은 각각 행 와이어(802, 804, 806)에 인가된다. 각 칼럼 와이어(808, 810, 812, 814)는 커패시터와 같은 적분기를 사용하여 특정 칼럼 와이어를 따라 각 크로스포인트 장치에 의해 생성된 전류(I1, I2, I3, I4)를 합산한다. 예를 들면, 도 8에 도시한 바와 같이, 열 와이어(814)에 의해 생성된 전류(I4)는, 식 I4 = V1σ41 + V2σ42 + V3σ43에 의해 주어진다. 따라서 어레이(705)는 크로스포인트 장치에 저장된 값에 전압(V1, V2, V3)으로 정의된 행 와이어 입력을 곱하여 순방향 행렬 곱셈을 계산한다.
[0065] 도 7을 참조하면, 입력 회로(710)는 하나 이상의 예에서, 적어도 지원 회로(support circuitry)(712), 공유 회로(shared circuitry)(714) 및 행 회로(row circuitry)(716)를 포함한다. 행 회로는 각 행 와이어(802, 804, 806)과 연관된 하드웨어 구성요소를 포함한다. 입력 회로(710)는 크로스포인트 어레이(705)에 입력 전압을 제공하는 것을 용이하게 한다.
[0066] 도 9는 전형적인 출력 회로(720)를 나타낸다. 출력 회로는 열 아이어(808, 8120, 812, 814)에 대응하는 적분기(908, 910, 912, 914)를 포함한다. 하나 이상의 예에서, 적분기(908, 910, 912, 914)는 커패시터이다. 각 열 와이어를 따른 출력 전류는 적분기에 축적되어 CNN의 다음 레이어로 전달된다. 전술한 바와 같이, 이러한 적분기 배열은 FC 레이어의 계산을 매우 효율적으로 만든다. 그러나 컨볼루션 연산의 경우 이러한 적분기 배열을 사용하면 데이터 전송, 저장, 조직 및 후속 데이터 전송 측면에서 상당한 추가 오버헤드가 발생한다. 이러한 연산은 시간, 전력 및 추가 회로 영역과 같은 추가 자원을 필요로 하므로 전체 시스템을 비효율적으로 만든다.
[0067] 도 10은 크로스포인트 어레이를 이용하여 순방향 추론 연산을 수행하는 기존의 연산들을 도시하고 있다. 도 10에 도시된 바와 같이, 크로스바 시스템(700)의 크로스포인트 어레이(705)의 어레이-행(802, 804, 806)에 대한 입력 열로서 모든 입력 평면(510) 중 하나의 이미지-행(512, 514, 516)이 동시에 제시된다. 각 크로스포인트에서의 크로스포인트 장치(820)는 필터(525)의 가중치 요소를 포함하며, 각각은 옴의 법칙(전압 곱하기 컨덕턴스가 전류와 같음)에 의해 어레이-행 여기(x i )와 저장된 가중치(w ij ) 사이의 곱셈으로 이어진다. 이러한 모든 판독 전류 기여의 집적은 각 어레이-열을 따라 합산되어 어레이-열(808, 810, 812 및 814)의 해당 적분기(908, 910, 912, 914)에 저장된다. 계산은 열 #1(808)의 전류 I 1 이 커패시터 C 1 (908)에 저장되고, I 2 가 커패시터 C 2 에 저장되고, I 3 가 커패시터 C 3 에 저장되는 식으로 표현될 수 있다. 이러한 크로스포인트 어레이(705)를 사용하는 종래의 기술적 솔루션에서는, 캐패시터(908, 910, 912, 914)의 집적 전하를 곱셈-누적의 출력으로 취급하고, 디지털 숫자 또는 펄스 지속 시간으로 변환하여 다음 어레이(705)로 전달된다.
[0068] 이러한 방식으로, 각 시간-단계(즉, 어레이(705)에 의해 수행되는 각 계산)에서, 모든 입력 평면(510)에 걸친 값들이 집적되어, 모든 출력 평면(530)에 대한 출력을 생성한다.
[0069] 또한, 컨볼루션 레이어 i의 모든 출력은 풀링의 일부로서 다른 컨볼루션 레이어의 출력과 결합되어야 한다. 출력이 풀링되는 다른 컨볼루션 레이어는 필터 커널(520)의 구성요소의 개수에 따라 달라진다. 대안적으로 또는 추가적으로, 레이어 i로부터의 모든 출력은 컨볼루션 레이어 i+1에 대한 입력 평면(510)의 다른 지점에 위치되어야 한다. 풀링을 목적으로 출력값을 구성하려면 읽기-쓰기 액세스, 전원 등과 같은 추가 컴퓨팅 자원이 필요할 수도 있다.
[0070] 이에 따라, 기존 시스템에서, 시간-단계-1에서, 시스템(700)은 결과를 커패시터(908, 910, 912, 914)에 집적하지만, 그 결과를 즉시 다음 레이어로 전송하지는 않는다. 이는 시스템(700)이 여러 개의 서로 다른 열에서 집적 캐패시터(908, 910, 912, 914)로 읽기 전류를 조종해야 하기 때문이다. 시스템(700)은 후속 시간-단계에서 다른 열의 결과에 대한 조종을 수행한다. 동일한 방식으로, 시스템(700)은 각각의 k번째 출력 행을 계산하기 위해 k개의 시간-단계를 취한다. 따라서 행별 매핑을 사용하는 기존 기술은 생성하는 데 k 시간-단계를 취하는 각 출력 행을 생성한다.
[0071] 도 10은 기존 기술에 따른 순방향 추론 동안 어레이(705)에 의해 수행되는 연산을 도시하고 있다. 도 10에는 시간-단계 1, 2 및 3이 도시되어 있다. 각 시간-단계에서 입력은 크로스포인트 어레이(705)의 행(row)에 매핑된다. 각 시간-단계에서 각 적분기(908, 910, 912, 914)는 k*p 곱셈-누적 항으로부터 기여도를 수신하며, 여기서 p는 입력 평면(510)의 개수이다. k개의 이러한 시간-단계 후, 적분기의 총 전하는 모든 k*k*p 항을 포함하고 다음 컨볼루션 레이어로 출력될 준비가 된다. 첫 번째 k 또는 마지막 k 시간-단계들을 제외하고, 각 적분 단계 이후에, 출력 회로(720)의 모든 k번째 적분기가 이 상태에 도달하며, 따라서, 컨볼루션 레이어 출력의 하나의 이미지 행(512-A, 514-A, 516-A)의 모든 출력 픽셀을 생성할 준비가 된다. 다른 모든 j번째 적분기는 j의 값에 따라 각각의 적분 단계에서 다른 단계를 갖는다.
[0072] 예를 들어, 도 10에 도시된 바와 같이, 순방향 전파의 시간-단계 1에서, 각 입력 평면(512-A, 514-A, 516-A)의 첫 번째 행들이 컨볼루션 레이어에 입력된다. 크로스포인트 어레이(705)의 크로스포인트 장치(820)는 도시된 바와 같이 필터(520)로 로딩(loading)된다. 특히, 크로스포인트 장치(820)에는 필터 커널(522-A, 522-B)이 로딩되어 제1 입력 평면(516-A)의 제1 행들과 컨볼루션을 수행한다. 마찬가지로, 필터 커널(520)의 제2 뱅크로부터의 필터 커널(524-A, 524-B)는 제2 입력 평면(514-A)의 제1 행과 함께 컨볼루션된다. 각 컨볼루션의 결과는 출력 제어기(1110)에 의해 출력 회로(720)로부터 하나 이상의 적분기(908, 910, 912, 914)로 전달된다.
[0073] 출력 제어기(1110)는 출력 회로(720)의 일부이거나 출력 회로(720)와 결합된 외부 제어기일 수 있다. 출력 제어기(1110)는 곱셈-누적 연산의 출력을 어레이(705)의 각 열에서 출력 회로(720)의 특정 적분기로 조종한다. 하나 이상의 예에서, 출력 제어기(1110)는 각 시간-단계에서 각 열에 대한 적분기의 선택을 제공하는 모드 신호를 수신한다. 대안적으로, 출력 제어기(1110)는 모든 컨볼루션 레이어가 실행될 때까지 각 열에 대한 적분기의 선택을 나타내는 모드 신호 제공받는다. 하나 이상의 예에서, 모드 신호는 각 열에 대해 선택된 적분기를 나타내는 비트 패턴일 수 있다.
[0074] 도 10의 예에서, 열(808, 814)의 출력은 시간-단계 1에서 적분기(908, 912)에 각각 저장된다. 시간-단계 2에서, 입력 평면(510)로부터의 두 번째 행(512-B, 514-B, 516-B)은 크로스포인트 어레이(705)에 대한 입력으로 사용된다. 크로스포인트 장치(820)는 여전히 시간-단계 1(도 10)에서와 같이 커널 필터(520)로 로딩된다. 시간-단계 2에서 출력 제어기(1110)은 열(810, 816)(시간-단계 1과는 다른 열)의 출력에 대해 동일한 적분기(908, 912)를 선택한다. 따라서, 이 경우, 적분기(908, 912)(및 다른 것들)는 다른 시간-단계에서 다른 열로부터 출력을 수신한다.
[0075] 시간-단계 3에서, 첫 번째 두 개의 시간 단계와 유사한 방식으로, 입력 평면(510)의 세 번째 행(512-C, 514-C, 516-C)가 크로스포인트 어레이(705)의 입력으로 사용된다. 시간-단계 3에서 출력 제어기(1110)는 열(812, 818)(시간-단계 1, 2와 다른 열)의 출력에 대해 동일한 적분기(908, 912)를 선택한다. 따라서, 이 경우, 적분기(908, 912)(및 다른 것들)는 다른 시간-단계에서 다른 열로부터 출력을 수신한다. 이러한 방식으로, 일반적으로 k개의 시간-단계 후에, 출력 평면(530)의 전체 행이 계산된다.
[0076] 출력 평면(530)의 제1 출력 행으로부터의 처음 두 엔트리(A 및 B)의 계산만 위에서 설명되었지만, 유사한 방식으로 출력 평면(530)의 다른 부분은 크로스포인트 어레이(705)의 다른 부분들에 의해 병렬로 계산된다는 점에 유의해야 한다. 또한, 크로스포인트 어레이(705)는 도 10에 도시된 바와 같이, 다른 적분기(910, 914, 916, 918)를 사용하여 각 시간-단계에서 다른 출력 행(C, D)에 대해 축적될 수 있다.
[0077] 따라서, 크로스포인트 어레이(705)의 출력을 제어하는 출력 제어기(1110)의 결과로서, 모든 입력은 모든 입력 평면에 대한 완전하고 연속적인 이미지 행의 형태로 이루어진다. 또한, 출력을 사용할 수 있기 전의 첫 번째 k 시간-단계 후, 즉 k+1번째 시간-단계부터 각 시간 단계에서 모든 출력 평면에 대한 완전하고 연속적인 이미지 행이 생성된다. 따라서, 이러한 연산에 의해 생성된 출력 맵(530)은 뉴런 여기의 중간 저장 없이 후속 컨볼루션 레이어로 파이프라인될 수 있다. 합계, 평균 및 최대값과 같은 풀링 연산(pooling operations)은 데이터가 도착할 때마다 점진적으로 수행될 수 있기 때문에 모든 풀링 연산에는 출력 이미지 행에 충분한 임시 스토리지만 필요하다. 이러한 중간 결과는 R-by-R 풀링 작업이 완료될 때까지 각 뉴런 여기 세트가 도착할 때 저장되고 업데이트되며, 이 시점에서 중간 결과의 버퍼는 효과적으로 풀링 레이어의 출력이 된다.
[0078] 전술한 바와 같이, 기존 기술의 기술적 과제는 CNN을 구현하는 데 필요한 크로스포인트 어레이의 수가 이미지와 같은 다수의 입력 데이터 세트에서 또는 구현 중인 네트워크 유형과 함께 증가할 수 있다는 것이다. 본 발명의 실시예는 CNN 깊이를 통해 가중치 사본의 수를 줄임으로써 행별 매핑을 용이하게 한다. 따라서, 본 발명의 실시예는 CNN 가중치 재사용 계수의 변화를 설명하기 위해 로드 밸런싱(load balancing)을 용이하게 한다. 또한, 본 발명의 실시예는 입력 회로(710)로부터, 크로스포인트 어레이(705)를 통해 및 그것으로, 및 출력 회로(720)로의 데이터의 유연한 라우팅을 사용하여 보다 콤팩트한 가중치 매핑으로 행별 매핑을 용이하게 한다.
[0079] 본 발명의 하나 이상의 실시예에서, 여기에 설명된 기술적 솔루션은 입력 데이터가 시간에 따라 분할되는 부분 행 입력(partial row input)과의 행별 컨볼루션을 용이하게 함으로써 기존의 기술적 솔루션과 함께 이러한 기술적 과제를 해결한다. 본 발명의 다른 실시예에서, 입력 데이터가 공간(크로스포인트 어레이)에서 분할되는 부분 행 입력으로 행별 컨볼루션이 용이해진다.
[0080] 도 11은 본 발명의 하나 이상의 실시예에 따라 입력 데이터가 시간에 따라 분할되는 부분 행 입력과의 행별 컨볼루션 매핑을 도시한다. 여기서 다른 입력 행 세그먼트의 부분 합은 별도의 커패시터 세트에 저장된다. 도시된 예에서, 제1 행으로부터의 입력 데이터의 제1 서브세트(1210)는 제1 세트의 커패시터(또는 적분기)(1230)에 매핑되고, 제1 행으로부터의 입력 데이터의 제2 서브세트(1220)는 제2 세트의 커패시터(1240)에 매핑된다. 이러한 매핑의 경우 파티션은 L = D * (입력 이미지 너비 / N + k - 스트라이드(stride)) 공식을 사용하여 결정된다. 여기서, N은 순방향 추론을 위한 계산을 위해 크로스포인트 어레이(705)의 재사용을 용이하게 하기 위해 사용되는 커패시터의 사본의 개수이다. N은 이미지 너비에 기초하여 미리 결정될 수 있다. 예를 들어, N은 이미지 크기가 감소함에 따라 재사용 계수를 동일하게 유지하기 위해 가중치 사본의 수를 줄일 수 있다. 컨볼루션 신경망(CNN)에서 가중치 커널은 입력 이미지에 대해 컨볼루션된다. 즉, 출력을 생성하기 위해 입력 이미지의 다른 부분에서 동일한 가중치를 여러 번 재사용한다. 가중치가 재사용되는 횟수를 재사용 계수라고 한다.
[0081] 또한, 스트라이드는 첫 번째 행의 서브세트 내에 얼마나 많은 중첩이 존재하는지 정의하는 미리 결정된 파라미터이다. 중첩 = (k - 스트라이드), 여기서 k는 커널 차원이다. 도시된 예에서, 두 세트의 커패시터(1230, 1240)는 크로스포인트 어레이(705)에 저장된 가중치를 재사용할 수 있다. 재사용이 작동하기 위해, 입력 데이터는 크로스포인트 장치(820)에 의해 계산될 행별 컨볼루션을 갖도록 매핑된다. 이러한 매핑을 위해 계산된 L은 크로스포인트 어레이(705)에 입력되는 입력 데이터 요소의 개수이며, 각각의 순차적 데이터 요소(sequential data element)는 순차적 입력 평면에서 온다. 예를 들어, D = 3개의 입력 평면과 L = 15, k = 3, 스트라이드 = 1 및 N = 2를 갖는 설명된 예제 시나리오에서 L1 = D1 (1,1), L2 = D2 (1,1), L3 = D3 (1,1)이다. 여기서, 표기법 D1(1,1)은 D1의 첫 번째 행과 첫 번째 열에 있는 요소를 나타낸다. 마찬가지로, L4 = D1(1,2), L5 = D2(1,2), 및 L6 = D3(1,2)이다. 크로스포인트 어레이(705)은 커널(520)로부터의 가중치의 N = 2 사본으로 구성되며, 사본들은 D*스트라이드 행(또는 열)만큼 서로 오프셋(offset)된다.
[0082] 일단 데이터 요소가 본 명세서에 설명된 대로 입력되면, 크로스포인트 장치(820)는 저장된 가중치와 데이터 요소의 곱의 결정된 부분 합에 대해 메모리 내 계산(in-memory computations)을 수행한다. 계산은 아날로그 방식으로 메모리 내에서 수행된다. 결과적인 부분 합은 세트(1230, 1240) 내의 커패시터에 저장된다.
[0083] 가중치 사본의 수가 감소하면, 각 커패시터 세트(2130, 2140)의 커패시터 수가 증가한다. 본 발명의 하나 이상의 실시예에서, 출력 회로(720)에서 커패시터 영역의 효율을 향상시키기 위해, 부분 합은 목적지 커패시터(다음 레이어 크로스포인트 어레이(705)의 입력 측)로 보내진다. 중첩이 중복 계산을 초래하더라도 재사용에 의해 달성된 크로스포인트 어레이(705)의 효율성 향상은 CNN을 구현하는 데 필요한 크로스포인트 어레이(705)의 수를 감소시킨다.
[0084] 도 12는 입력 데이터가 본 발명의 하나 이상의 실시예에 따라 시간적으로 분할되는, 전체 또는 부분 행 입력과의 행별 컨볼루션 매핑을 도시한다. 도시된 매핑 체계는 여러 크로스포인트 어레이(705)에 걸쳐 있는 다수의 재사용된 사본 가중치를 사용하여 훨씬 더 콤팩트한 매핑을 용이하게 한다. 본 발명의 하나 이상의 실시예에서, 출력 이미지 채널의 개수는 F이고, 입력 이미지 채널의 개수는 D이다. 여기서, 각 가중치 그룹은 (입력 이미지 너비*D) 차원에 걸쳐 있는 오프셋이 (D*스트라이드)인 스트라이드를 갖는다. 이러한 (출력 이미지 너비) 가중치 사본의 모든 세트 후에 다음 세트는 (D*스트라이드) 오프셋 없이 구성된다. 오프셋은 각 그룹 내에서 해당 그룹의 가중치 사본을 구분하는 데 사용된다. 이러한 가중치 사본의 그룹은 별도의 크로스포인트 어레이(705A, 705B)에 걸쳐 있을 수 있다. 예를 들어, 도 12에 도시된 예에서, 그룹(1280)은 제1 크로스포인트 어레이(705A)에 저장된 가중치(1282, 1284)의 두 사본과 제2 크로스포인트 어레이(705B)에 저장된 가중치(1286)의 제3 사본을 갖는다.
[0085] 본 발명의 하나 이상의 실시예에서, 본 명세서에 기재된 도면 및 실시예에서의 치수는 변경될 수 있는 것으로 이해된다. 또한, 크로스포인트 어레이(705)의 수는 본 발명의 하나 이상의 실시예에서 본 명세서에 설명된 실시예의 수와 다를 수 있다.
[0086] 도 13은 본 발명의 하나 이상의 실시예에 따라 입력 데이터가 공간에서 분할되는 부분 행 입력과의 또 다른 행별 컨볼루션 매핑을 도시한다. 여기서, 단일 세트의 커패시터(1320)은 크로스포인트 어레이(705)에 저장된 커널 가중치에 기초하여 결과적인 부분 합을 계산하는 데 사용된다. 입력 데이터 요소는 단일 행의 서브세트가 특정 CNN 레이어를 구현하는 별도의 크로스포인트 어레이(705)로 전송되도록 분할된다. 부분 합을 나타내는 커패시터(1320)에 축적된 전하는 CNN의 다음 레이어를 구현하는 시스템(700)의 입력 회로(710)로 보내진다.
[0087] 입력 회로(710)는 부분 합을 결합하고 다음 레이어를 위한 별도의 크로스포인트 어레이(705)에 저장된 가중치에 대해 이러한 입력 데이터를 조직화한다. 예를 들어, 입력 회로(710)는 입력 데이터 요소(1310)에 대응하는 출력을, 입력 데이터 요소(1320)에 대응하는 출력으로서 다음 레이어의 동일한 커널 가중치로 채널링한다.
[0088] (이미지 크기) * (# 입력 채널)이 커널 가중치의 크기(커널 크기 * # 입력 채널)에 비해 클 때, 전술한 바와 같이 입력 회로(710)에 의해 제공되는 유연한 라우팅은 기존 솔루션에 비해 다른 출력 채널에 대한 가중치를 보다 콤팩트하게 매핑하는 것을 용이하게 함을 알 수 있다. 다음 레이어로 입력하는 동안 한 레이어의 출력을 저장하고 재정렬하는 비용은 기존의 행별 매핑 기술보다 낮다. 이에, 본 발명의 하나 이상의 실시예는 기존의 행별 매핑 기술의 확장성을 향상시키기 위해 유연한 신호 라우팅 방식의 구성을 용이하게 한다. 본 발명의 하나 이상의 실시예에서, CNN은 각 네트워크의 특정 동작 세부사항에 따라 미세 조정될 수 있다. 예를 들어, CNN 커널 크기 또는 다수의 CNN 커널을 조정하여 아날로그 크로스포인트 어레이로의 매핑을 더욱 최적화할 수 있다.
[0089] 본 명세서의 도면에 도시된 행렬의 치수는 단지 예시일 뿐이며, 하나 이상의 예시에서, 상이한 치수들이 사용될 수 있다는 것에 주목해야 한다. 또한, 순방향 추론 연산 중에 CNN은 이미 훈련되어 있으며, 본 발명의 실시예는 CNN 훈련에 사용되는 기술에 관계없이 적용 가능하다는 점에 유의해야 한다.
[0090] 이러한 방식으로, 본 발명의 실시예는 훈련된 CNN의 순방향 추론 연산을 위한 행별 매핑을 용이하게 하며, 여기서 매핑은 크로스포인트 어레이 및 지원 회로를 재사용하여 임의의 규모의 CNN 구현을 용이하게 하기 위해 간결한 방식으로 수행될 수 있다.
[0091] 본 발명의 하나 이상의 실시예에서, 설명된 기술적 솔루션은 저항성 메모리 소자의 크로스포인트 어레이를 포함하는 전자 회로에 의해 구현된다. 어레이는 (i) 아날로그 입력값의 벡터를 인코딩하는 어레이에 대한 전압 입력의 벡터와, (ii) 어레이 내의 아날로그 저항 가중치의 행렬 사이의 아날로그 벡터-행렬 곱과 동일한 전류 출력의 벡터를 제공한다. 전자 회로(700)는 지원 회로(712, 722), 입력 회로,(710) 및 출력 회로(720)를 더 포함하며, 이들은 저항성 메모리 소자의 전용 서브세트로부터의 전류를 모으느 누적 와이어 및 회로를 함께 포함한다. 지원 회로(722)는 집적 커패시터를 포함하며, 집적 커패시터의 각각은 단일 적분 단계 동안 누적 와이어 중 하나로부터 전류를 모으기 위해 전기적으로 스위칭 가능하다. 출력 회로(720)은 미리 결정된 수의 적분 단계에 걸쳐 축적된, 집적 커패시터의 하위세트로부터의 축적된 전하를 아날로그 지속 시간 또는 이진 숫자를 사용한 디지털 표현으로 적절하게 변환 및 전송한다. 저항성 메모리 소자는 컨볼루션 신경망의 특정 레이어의 시냅스 가중치 커널의 열(행)을 구현하도록 어레이된다.
[0092] 미리 결정된 수의 적분 단계에 대한 누적은, 컨볼루션 신경망의 상기 레이어에 대한 입력 뉴런 여기가 적분의 반복마다 하나의 행(열)으로 제시되기 때문에, 상기 가중치 커널의 여러 부분 행(열)에 걸쳐, 곱셈 누적 연산을 구현한다. 본 발명의 하나 이상의 실시예에서, 제1 레이어의 입력 뉴런 여기는 항상 한 번에 하나의 전체 행(열)으로 제시되는 반면, 입력 뉴런 여기의 후속 레이어는 여러 통합 주기에 걸쳐 크로스포인트 어레이에서 처리되도록, 다수의 부분 행(열)으로 분할되고 부분적으로 로컬 아날로그 메모리(예를 들어, 커패시터)에 저장될 수 있다.
[0093] 전체 및/또는 부분 출력 여기를 나타내는 적분된 전하는 상기 가중치 커널의 모든 행(열)이 완전히 적분된 후에만 적절하게 변환되고 전송된다. 다수 크로스바 어레이의 부분 합은 유연하게 라우팅되어 집적 커패시터 중 하나에서 결합되고, 이후에 전체 출력 여기로 변환된 다음, 모든 부분 합이 완전히 적분된 후 전송된다. 집적 커패시터의 적분된 전하는 적절하게 변환된 출력 여기를 나타낸다. 또한, 모든 관련 가중치 커널이 완전히 적분된 후에만, 적절하게 풀링된 결과(예를 들어, 상기 출력 여기의 최대, 합계 또는 평균)가 로컬에서 계산된 다음 전송된다.
[0094] 본 발명의 기술 솔루션은 시스템, 방법 및/또는 임의의 가능한 기술적 상세의 통합 수준의 컴퓨터 프로그램 제품일 수 있다. 컴퓨터 프로그램 제품은 프로세서가 본 발명의 실시예를 수행하도록 하기 위한 컴퓨터 판독 가능한 프로그램 명령들을 포함하는 컴퓨터 판독 가능한 저장 매체를 포함할 수 있다.
[0095] 컴퓨터 읽기 가능한 저장 미디어는 명령어 실행 장치에 의해 사용하기 위한 명령어를 보관 및 저장할 수 있는 유형의(tangible) 장치일 수 있다. 컴퓨터 읽기 가능한 저장 미디어는, 예를 들어, 전자 기억 장치, 자기 기억 장치, 광 기억 장치, 전자기 기억 장치, 반도체 기억 장치, 또는 전술한 임의의 적절한 조합일 수 있으나, 이에 한정되는 것은 아니다. 컴퓨터 읽기 가능한 저장 미디어의 구체적인 예는 휴대용 컴퓨터 디스켓, 하드 디스크, 랜덤 액세스 메모리(RAM), 읽기 전용 메모리(ROM), 소거 가능한 프로그램 가능 읽기 전용 메모리(EPROM 또는 플래시 메모리), 정적 랜덤 액세스 메모리(SRAM), 휴대용 콤팩트 디스크 읽기 전용 메모리(CD-ROM), 디지털 다용도 디스크(DVD), 메모리 스틱(memory stick), 플로피 디스크, 펀치 카드 또는 명령어가 기록된 그루브 내의 상승된 구조(raised structures in a groove having instructions recorded thereon)와 같은 기계적으로 인코딩된 장치, 및 전술한 임의의 적절한 조합을 포함한다. 본 명세서에서 사용되는 컴퓨터 읽기 가능한 저장 미디어는, 전파 또는 자유롭게 전파되는 다른 전자기파, 도파관 또는 다른 전송 미디어를 통해 전파되는 전자기파(예를 들어, 광섬유 케이블을 통과하는 광 펄스) 또는 전선을 통해 전송되는 전기 신호와 같은 일시적인 신호 그 자체로 해석되지 않는다.
[0096] 본 명세서에 설명된 컴퓨터 읽기 가능한 프로그램 명령들은 컴퓨터 읽기 가능한 저장 미디어로부터 각각의 컴퓨팅/프로세싱 장치로 다운로드 되거나, 네트워크, 예를 들어, 인터넷, 로컬 영역 네트워크, 광역 네트워크 및/또는 무선 네트워크를 통해 외부 컴퓨터 또는 외부 저장 장치로 다운 로드될 수 있다. 네트워크는 구리 전송 케이블, 광전송 섬유, 무선 전송, 라우터, 방화벽, 스위치, 게이트웨이 컴퓨터 및/또는 에지 서버(edge servers)를 포함할 수 있다. 각 컴퓨팅/프로세싱 장치의 네트워크 어댑터 카드 또는 네트워크 인터페이스는 네트워크로부터 컴퓨터 읽기 가능한 프로그램 명령을 수신하고, 각각의 컴퓨팅/프로세싱 장치 내의 컴퓨터 읽기 가능한 저장 미디어에 저장하기 위하여 컴퓨터 읽기 가능한 프로그램 명령을 전달한다.
[0097] 본 발명의 방법을 수행하기 위한 컴퓨터 읽기 가능한 프로그램 명령어는 어셈블러 명령어, 명령어-조합-아키텍처(instruction-set-architecture : ISA) 명령어, 기계 명령어, 기계 종속 명령어(machine dependent instructions), 마이크로코드, 펌웨어 명령어, 상태 설정 데이터, 집적 회로용 구성 데이터, 또는 Smalltalk, C++ 등과 같은 객체 지향 프로그래밍 언어와 "C" 프로그래밍 언어 또는 유사한 프로그래밍 언어와 같은 절차적 프로그래밍 언어를 포함하여 하나 이상의 프로그래밍 언어의 조합으로 작성된 소스 코드 또는 객체 코드일 수 있다. 컴퓨터 읽기 가능한 프로그램 명령들은 완전히 사용자의 컴퓨터에서, 부분적으로 사용자의 컴퓨터에서, 독립 실행형 소프트웨어 패키지로, 부분적으로 사용자의 컴퓨터와 부분적으로 원격 컴퓨터에서, 또는 완전히 원격 컴퓨터나 서버에서 실행될 수 있다. 후자의 시나리오에서, 원격 컴퓨터는 LAN(local area network) 또는 WAN(wide area network)을 포함한 모든 유형의 네트워크를 통해 사용자의 컴퓨터에 연결될 수 있으며, 외부 컴퓨터(예를 들어, 인터넷 서비스 공급자를 이용한 인터넷)에 연결될 수 있다. 일부 실시예들에서, 예를 들어, 프로그래머블 논리 회로, 필드 프로그래머블 게이트 어레이(FPGA) 또는 프로그래머블 논리 어레이(PLA)을 포함하는 전자 회로는 본 발명의 실시예를 수행하기 위해 전자 회로를 개인화할 목적으로 컴퓨터 읽기 가능한 프로그램 명령들의 상태 정보를 이용함으로써 컴퓨터 읽기 가능한 프로그램 명령들을 실행할 수 있다.
[0098] 본 발명의 실시예들에 따른 방법, 장치(시스템) 및 컴퓨터 프로그램 제품의 흐름도 및/또는 블록도를 참조하여 본 발명의 실시예를 설명한다. 흐름도 및/또는 블록도의 각 블록, 및 흐름도 및/또는 블록도의 블록 조합은 컴퓨터 읽기 가능한 프로그램 명령에 의해 구현될 수 있음을 이해한다.
[0099] 이러한 컴퓨터 읽기 가능한 프로그램 명령들은 컴퓨터의 프로세서, 또는 기계를 생산하는 다른 프로그램 가능한 데이터 처리 장치에 제공될 수 있으며, 컴퓨터의 프로세서 또는 다른 프로그램 가능한 데이터 처리 장치를 통해 실행되는 명령어는 흐름도 및/또는 블록도의 블록 또는 블록들에 지정된 기능/동작을 구현하기 위한 수단을 생성한다. 이러한 컴퓨터 읽기 가능한 프로그램 명령들은 또한 컴퓨터, 프로그램 가능한 데이터 처리 장치 및/또는 다른 장치가 특정한 방식으로 작동하도록 지시할 수 있는 컴퓨터 읽기 가능한 저장 미디어에 저장될 수 있으며, 명령어가 저장된 컴퓨터 읽기 가능 저장 미디어는 흐름도 및/또는 블록도의 블록 또는 블록들에 지정된 기능/동작의 실시예들을 구현하는 명령어를 포함하는 제조 물품을 포함한다.
[0100] 컴퓨터 읽기 가능한 프로그램 명령들은 또한 컴퓨터, 다른 프로그램 가능한 데이터 처리 장치 또는 다른 장치에 로드되어 컴퓨터, 다른 프로그램 가능한 장치 또는 다른 장치 상에서 수행되는 일련의 동작 단계들이 컴퓨터에서 구현된 프로세스들을 생성하도록 할 수 있으며, 이로써 컴퓨터, 다른 프로그램 가능한 장치 또는 다른 장치에서 실행되는 명령어는 흐름도 및/또는 블록도의 블록 또는 블록들에 지정된 기능/동작을 구현한다.
[0101] 도면들에서 흐름도 및 블록도는 본 발명의 다양한 실시예에 따른 시스템, 방법 및 컴퓨터 프로그램 제품의 가능한 구현의 구조, 기능 및 동작을 도시하고 있다. 이와 관련하여, 흐름도 또는 블록도의 각 블록은 모듈, 벡터 또는 명령의 일부를 나타낼 수 있으며, 이는 지정된 논리 함수를 구현하기 위한 하나 이상의 실행 가능한 명령들을 포함한다. 일부 대체 구현에서는 블록에 표시된 기능이 도면에 표시된 순서대로 발생할 수 있다. 예를 들어, 연속적으로 표시된 두 개의 블록은 실제로 한 단계로 수행될 수 있으며, 동시에, 실질적으로 동시에, 부분적으로 또는 전체적으로 시간적으로 중첩되는 방식으로 실행되거나, 때때로 관련된 기능에 따라 역순으로 블록들이 실행될 수 있다. 또한, 블록도 및/또는 흐름도의 각 블록, 및 블록도 및/또는 흐름도의 블록 조합은 특정 기능을 수행하거나 특수 목적 하드웨어와 컴퓨터 명령의 조합을 수행하거나 작동하는 특수 목적 하드웨어 기반 시스템에 의해 구현될 수 있다는 점에 유의해야 한다.
[0102] 제2 작용은 제1 작용으로부터 직접적 또는 간접적으로 결과가 나오는지에 관계없이 제1 작용에 대한 "반응"이라고 할 수 있다. 제2 동작은 제1 동작보다 실질적으로 늦은 시간에 발생할 수 있으며, 여전히 제1 동작에 대한 반응이다. 마찬가지로, 제1 작용과 제2 작용 사이에 개입 작용이 일어나더라도, 그리고 하나 이상의 개입 작용이 직접적으로 제2 작용을 수행하게 하는 경우에도 제2 작용은 제1 작용에 대한 반응이라고 할 수 있다. 예를 들어, 제1 작용이 플래그를 설정하고 제3 작용이 나중에 플래그가 설정될 때마다 제2 작용을 개시하는 경우 제2 작용은 제1 작용에 대한 반응이라고 할 수 있다.
[0103] 그 용도를 명확히 하고 이에 의하여 당업자에게 통지하기 위하여, "<A>, <B>, … 및 <N> 중 적어도 하나" 또는 "<A>, <B>, … <N> 또는 이들의 조합 중 적어도 하나" 또는 "<A>, <B>, … 및/또는 <N>"은 가장 넓은 의미로, 이전 또는 이후의 다른 묵시적 정의를 대체하면서, 달리 명시적으로 주장하지 않는 한, A, B, ... 및 N으로 구성된 그룹에서 선택된 하나 이상의 요소를 의미하는 것으로 해석되어야 한다. 즉, 상기 문구는 A, B, … 또는 N 중 하나 이상의 요소가 단독으로 또는 하나 이상의 다른 요소와 결합된 것을 포함하여 하나 이상의 조합을 의미하며, 여기에는 나열되지 않은 추가 요소가 조합되어 포함될 수도 있다.
[0104] 또한, 본 명세서에 예시된 명령을 실행하는 모듈, 유닛, 컴포넌트, 서버, 컴퓨터, 단말 또는 장치는 저장 매체, 컴퓨터 저장 매체, 또는 예를 들어, 자기 디스크, 광 디스크 또는 테이프와 같은 데이터 저장 장치(이동식 및/또는 비이동식)를 포함하거나 그것에 액세스 할 수 있는 것이 이해될 것이다. 컴퓨터 저장 매체(computer storage media)는 컴퓨터가 판독 가능한 명령, 데이터 구조, 프로그램 모듈 또는 기타 데이터와 같은 정보 저장을 위한 임의의 방법 또는 기술로 구현된 휘발성, 비휘발성, 이동식 및 비이동식 매체를 포함할 수 있다. 이러한 컴퓨터 저장 매체는 장치의 일부이거나 그것에 엑세스하거나 연결할 수 있다. 여기에 설명된 모든 애플리케이션 또는 모듈은 이러한 컴퓨터 판독 가능 매체에 저장되거나 유지될 수 있는 컴퓨터 판독/실행 가능 명령어를 사용하여 구현될 수 있다.
[0105] 본 명세서의 기술적 특징의 다양한 실시예에 대한 설명은 예시의 목적을 위해 제시되었지만, 제시된 실시예로 제한되지 않는다. 설명된 실시예들의 범위를 벗어나지 않고 다수의 변경 및 변형이 당업계의 통상적인 기술자들에게 명백할 것이다. 본 명세서에 사용된 용어는 실시예의 원리, 시장에서 발견되는 기술에 대한 실용적 적용 또는 기술적 개선을 가장 잘 설명하거나, 또는 본 명세서에 개시된 실시예들을 통상의 지식을 가진 다른 사람들이 이해할 수 있도록 하기 위해 선택되었다.
[0106] 본 명세서에 기재된 본 발명의 바람직한 실시예에 의한 전자 회로에 있어서, 상기 전자 회로는, 저항성 메모리 소자의 어레이 - 상기 어레이는 (i) 아날로그 입력값의 벡터를 인코딩하는 상기 어레이에 대한 전압 입력의 벡터와 (ii) 상기 어레이 내의 아날로그 저항 가중치의 매트릭스 사이의 아날로그 벡터-매트릭스-곱과 동일한 전류 출력의 벡터를 제공함 -; 집적 캐패시터 - 각각의 집적 캐패시터는 단일 적분 단계 동안 복수의 축적 와이어 중 하나로부터 전류를 모으기 위해 전기적으로 스위칭 가능함 -; 집적 전하를 축적하는 집적 캐패시터로 부분 출력 여기를 라우팅함으로써 상기 저항성 메모리 소자의 전용 서브세트로부터 전류를 집적하는 축적 와이어 및 회로; 및 복수의 적분 단계에 걸쳐 축적된, 상기 집적 캐패시터의 서브세트로부터의 집적된 전하가 아날로그 지속기간 또는 이진수를 사용하는 디지털 표현으로서 적절하게 변환 및 전송될 수 있도록 하는 데이터 출력 회로를 포함하고, 상기 저항성 메모리 소자는 콘벌루션 신경망의 특정 레이어의 시냅스 가중치 커널의 벡터를 구현하도록 어레이된다. 상기 저항성 메모리 소자는 비휘발성 메모리 소자인 것이 바람직하다. 상기 저항성 메모리 소자의 서브세트는 상기 어레이의 하나 이상의 열에 대응할 수 있다. 상기 저항성 메모리 소자의 서브세트는 상기 어레이의 하나 이상의 행들에 대응할 수 있다. 본 명세서에 기재된 본 발명의 실시예에 따라, 이 단락에서 전술한 회로를 사용하여, 훈련된 CNN(Convolutional Neural Network)의 계산을 수행하는 방법에 있어서, 상기 방법은, 일련의 연산을 미리 정해진 횟수만큼 반복함으로써 상기 크로스포인트 어레이의 저항성 메모리 소자에 의해 계산을 수행하는 단계 - 상기 일련의 연산은, 아날로그 입력값의 각 벡터를 다수의 부분 벡터로 분할하는 단계; 상기 다수의 부분 벡터의 각각에 대응하는 부분 출력 여기를 아날로그 메모리에 축적하는 단계; 및 집적된 전하를 축적하는 집적 캐패시터로 상기 부분 출력 여기를 라우팅함으로써 상기 부분 출력 여기를 결합하는 단계를 포함함 -; 및 복수의 출력 여기를 나타내는 상기 복수의 집적 캐패시터에 적분된 전하를 전송하는 단계를 포함한다. 복수의 집적 커패시터의 적분된 전하는 상기 적분된 전하를 전송하기 전에 국소적으로 풀링된 결과인 것이 바람직하다. 크로스포인트 장치는 컨볼루션 신경망의 특정 레이어의 컨볼루션 커널들의 하나 이상의 행들을 구현하도록 어레이될 수 있으며, 여기서 입력 데이터는 한 번에 하나의 열을 나타내는 컨볼루션 신경망의 상기 레이어에 대한 뉴런 여기를 나타낸다. 크로스포인트 장치는 컨볼루션 신경망의 특정 레이어의 컨볼루션 커널의 하나 이상의 열을 구현하도록 어레이될 수 있으며, 여기서 입력 데이터의 벡터는 한 번에 하나의 행으로 입력 데이터로부터 제공된 컨볼루션 신경망의 특정 레이어에 대한 뉴런 여기를 나타낸다.

Claims (18)

  1. 크로스포인트 어레이(crosspoint array)를 사용하여 컨볼루션 신경망(convolutional neural network : CNN)을 구현하기 위한 컴퓨터 구현 방법에 있어서, 상기 방법은,
    컨볼루션 레이어의 하나 이상의 컨볼루션 커널들(convolution kernels)을 상기 크로스포인트 어레이의 하나 이상의 크로스포인트 장치들에 저장함으로써 상기 크로스포인트 어레이를 구성하는 단계 - 상기 크로스포인트 어레이는 상기 CNN의 컨볼루션 레이어(convolution layer)에 해당함 - ;
    일련의 연산들을, 미리 결정된 횟수 만큼, 반복함으로써 상기 크로스포인트 어레이를 통해 상기 CNN에 대한 계산들을 수행하는 단계를 포함하고, 상기 일련의 연산들은:
    상기 컨볼루션 레이어의 입력 데이터 벡터의 서브파트(a subpart)에 해당하는 전압 펄스들을 상기 크로스포인트 어레이로 전송하는 단계;
    상기 크로스포인트 어레이 내의 상기 하나 이상의 크로스포인트 장치들에서 곱셈 연산들을 수행하는 것을 나타내는 전류들을 출력하는 단계 - 상기 전류들은 상기 크로스포인트 장치들에 의해 저장된 가중치 값들(weight values)과 상기 입력 데이터로부터의 전압 펄스들에 기초함 -; 및
    적분기들 세트(set of integrators)에 의해, 상기 크로스포인트 장치들로부터의 출력 전류에 기초하여 전하를 축적하는 단계를 포함하며; 그리고 상기 방법은
    상기 적분기들 세트에 의해, 미리 정해진 횟수 동안 반복한 후의 상기 축적된 전하를 출력하는 단계를 포함하고, 상기 축적된 전하는 상기 입력 데이터 벡터와 상기 하나 이상의 컨볼루션 커널들의 곱셈-가산(multiply-add) 결과를 나타내는,
    컴퓨터 구현 방법.
  2. 제1항에 있어서,
    상기 적분기들 세트에 축적된 전하를 출력하는 단계는 상기 축적된 전하를 풀링하는 단계(pooling)를 포함하는,
    컴퓨터 구현 방법.
  3. 제1항에 있어서,
    상기 입력 데이터의 각 벡터의 서브파트는 상기 적분기들 세트와 연관되는,
    컴퓨터 구현 방법.
  4. 제1항에 있어서,
    상기 크로스포인트 어레이는 복수의 크로스포인트 어레이들이고, 상기 입력 데이터 벡터의 제1 서브파트는 제1 크로스포인트 어레이로 전송되고, 상기 입력 데이터 벡터의 제2 서브파트는 제2 크로스포인트 어레이로 전송되는,
    컴퓨터 구현 방법.
  5. 제4항에 있어서,
    상기 적분기들 세트에 의해 전하를 축적하는 단계는, 상기 제2 크로스포인트 어레이의 적분기들 세트에 의해 축적된 전하들을, 상기 제1 크로스포인트 어레이의 적분기들 세트에 의해, 축적하는 단계를 포함하는,
    컴퓨터 구현 방법.
  6. 제1항에 있어서,
    상기 크로스포인트 장치들은 상기 CNN의 특정 레이어의 컨볼루션 커널의 하나 이상의 열들(columns)을 구현하도록 배열되고, 상기 입력 데이터의 벡터는 상기 입력 데이터로부터, 한번에 한 행(row), 제시되는 상기 CNN의 특정 레이어에 대한 뉴런 여기들(neuron excitations)을 나타내는,
    컴퓨터 구현 방법.
  7. 제6항에 있어서,
    상기 적분기들 세트로부터의 적분기에 의해 축적된 전하는 상기 CNN의 특정 레이어에 따른 출력 여기를 나타내며, 상기 출력 여기는 상기 컨볼루션 커널의 모든 행들이 적분된 후에만 변환되어 전송되는,
    컴퓨터 구현 방법.
  8. 제1항에 있어서,
    상기 크로스포인트 장치들은 상기 CNN의 특정 레이어의 컨볼루션 커널의 하나 이상의 행들을 구현하도록 배열되고, 상기 입력 데이터는, 한번에 한 열(column), 제시되는 상기 CNN의 레이어에 대한 뉴런 여기들을 나타내는,
    컴퓨터 구현 방법.
  9. 제8항에 있어서,
    상기 적분기들 세트로부터의 적분기에 의해 축적된 전하는 상기 CNN의 특정 레이어에 따른 출력 여기를 나타내며, 상기 출력 여기는 상기 컨볼루션 커널의 모든 열들이 적분된 후에만 변환되어 전송되는,
    컴퓨터 구현 방법.
  10. 훈련된 컨볼루션 신경망(CNN)의 연산들(computations)을 수행하는 전자 회로에 있어서, 상기 전자 회로는,
    크로스포인트 어레이;
    적분기들 세트를 포함하는 출력 회로;
    상기 CNN에서 컨볼루션 레이어에 해당하는 상기 크로스포인트 어레이를, 상기 크로스포인트 어레이의 하나 이상의 크로스포인트 장치들에 상기 컨볼루션 레이어의 하나 이상의 컨볼루션 커널들을 저장함으로써, 구성하는 회로; 및
    일련의 연산들(a set of operations)을, 미리 정해진 횟수만큼, 반복하는 회로를 포함하고,
    상기 일련의 연산들은,
    상기 컨볼루션 레이어의 입력 데이터 벡터의 서브파트에 해당하는 전압 펄스들을 상기 크로스포인트 어레이로 전송하는 단계;
    상기 크로스포인트 어레이 내의 하나 이상의 크로스포인트 장치들에서 곱셈 연산들을 수행하는 것을 나타내는 전류들을 출력하는 단계 - 상기 전류는 상기 크로스포인트 장치들에 의해 저장된 가중치 값들과 상기 입력 데이터로부터의 전압 펄스들에 기초함 -;
    상기 적분기들 세트에 의해, 상기 크로스포인트 장치들로부터의 출력 전류에 기초하여 전하를 축적하는 단계; 및
    상기 적분기들 세트에 의해, 미리 정해진 횟수 동안, 반복한 후의 상기 축적된 전하를 출력하는 단계를 포함하며, 상기 축적된 전하는 상기 입력 데이터의 벡터와 상기 하나 이상의 컨볼루션 커널들의 곱셈-가산 결과를 나타내는,
    전자 회로.
  11. 제10항에 있어서,
    상기 적분기들 세트에 축적된 전하를 출력하는 단계는 상기 축적된 전하를 풀링하는 단계(pooling)를 포함하는,
    전자 회로.
  12. 제10항에 있어서,
    상기 입력 데이터의 각 벡터의 서브파트는 상기 적분기들 세트와 연관되는,
    전자 회로.
  13. 제10항에 있어서,
    상기 크로스포인트 어레이는 복수의 크로스포인트 어레이들이고, 상기 입력 데이터 벡터의 제1 서브파트는 제1 크로스포인트 어레이로 전송되며, 상기 입력 데이터 벡터의 제2 서브파트는 제2 크로스포인트 어레이로 전송되는,
    전자 회로.
  14. 제13항에 있어서,
    상기 적분기들 세트에 의해 전하를 축적하는 단계는, 상기 제2 크로스포인트 어레이의 적분기들 세트에 의해 축적되는 전하를,상기 제1 크로스포인트 어레이의 적분기들 세트에 의해, 축적하는 단계를 포함하는,
    전자 회로.
  15. 제10항에 있어서,
    상기 크로스포인트 장치들은 상기 CNN의 특정 레이어의 컨볼루션 커널의 하나 이상의 열들(columns)을 구현하도록 배열되고, 상기 입력 데이터의 벡터는 상기 입력 데이터로부터, 한번에 한 행(row), 제시되는 상기 CNN의 특정 레이어에 대한 뉴런 여기들(neuron excitations)을 나타내는,
    전자 회로.
  16. 제15항에 있어서,
    상기 적분기들 세트로부터의 적분기에 의해 축적된 전하는 상기 CNN의 특정 레이어에 따른 출력 여기를 나타내며, 상기 출력 여기는 상기 컨볼루션 커널의 모든 행들이 적분된 후에만 변환되어 전송되는,
    전자 회로.
  17. 제10항에 있어서,
    상기 크로스포인트 장치들은 상기 CNN의 특정 레이어의 컨볼루션 커널의 하나 이상의 행들을 구현하도록 배열되고, 상기 입력 데이터는, 한번에 한 열(column), 제시되는 상기 CNN의 레이어에 대한 뉴런 여기들을 나타내는,
    전자 회로.
  18. 제17항에 있어서,
    상기 적분기들 세트로부터의 적분기에 의해 축적된 전하는 상기 CNN의 특정 레이어에 따른 출력 여기를 나타내며, 상기 출력 여기는 상기 컨볼루션 커널의 모든 열들이 적분된 후에만 변환되어 전송되는,
    전자 회로.
KR1020227041560A 2020-05-27 2021-05-13 아날로그 인공지능 네트워크 추론을 위한 행별 컨볼루션 신경망 매핑을 위한 효율적 타일 매핑 KR20230005309A (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US16/884,128 2020-05-27
US16/884,128 US11562240B2 (en) 2020-05-27 2020-05-27 Efficient tile mapping for row-by-row convolutional neural network mapping for analog artificial intelligence network inference
PCT/IB2021/054105 WO2021240286A1 (en) 2020-05-27 2021-05-13 Efficient tile mapping for row-by-row convolutional neural network mapping for analog artificial intelligence network inference

Publications (1)

Publication Number Publication Date
KR20230005309A true KR20230005309A (ko) 2023-01-09

Family

ID=78706397

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020227041560A KR20230005309A (ko) 2020-05-27 2021-05-13 아날로그 인공지능 네트워크 추론을 위한 행별 컨볼루션 신경망 매핑을 위한 효율적 타일 매핑

Country Status (10)

Country Link
US (2) US11562240B2 (ko)
JP (1) JP2023526915A (ko)
KR (1) KR20230005309A (ko)
CN (1) CN115699028A (ko)
AU (1) AU2021281628B2 (ko)
CA (1) CA3178030A1 (ko)
DE (1) DE112021002939T5 (ko)
GB (1) GB2610774A (ko)
IL (1) IL297331A (ko)
WO (1) WO2021240286A1 (ko)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11562240B2 (en) 2020-05-27 2023-01-24 International Business Machines Corporation Efficient tile mapping for row-by-row convolutional neural network mapping for analog artificial intelligence network inference

Family Cites Families (27)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7016529B2 (en) 2002-03-15 2006-03-21 Microsoft Corporation System and method facilitating pattern recognition
FR3025344B1 (fr) 2014-08-28 2017-11-24 Commissariat Energie Atomique Reseau de neurones convolutionnels
US10885429B2 (en) 2015-07-06 2021-01-05 University Of Dayton On-chip training of memristor crossbar neuromorphic processing systems
US10332004B2 (en) 2015-07-13 2019-06-25 Denso Corporation Memristive neuromorphic circuit and method for training the memristive neuromorphic circuit
US11475269B2 (en) 2015-12-15 2022-10-18 Analog Devices, Inc. Convolutional neural network
EP3414702A1 (en) 2016-02-08 2018-12-19 Spero Devices, Inc. Analog co-processor
US10528864B2 (en) 2016-08-11 2020-01-07 Nvidia Corporation Sparse convolutional neural network accelerator
US9646243B1 (en) * 2016-09-12 2017-05-09 International Business Machines Corporation Convolutional neural networks using resistive processing unit array
EP3523751A4 (en) 2016-10-04 2020-05-06 Magic Leap, Inc. EFFICIENT DATA ARRANGEMENTS FOR CONVOLUTIONAL NEURAL NETWORKS
KR101735366B1 (ko) 2016-11-14 2017-05-15 호성숙 꿀 성분이 함유된 가공인삼 제조방법
CN108304922B (zh) * 2017-01-13 2020-12-15 华为技术有限公司 用于神经网络计算的计算设备和计算方法
US11315009B2 (en) * 2017-03-03 2022-04-26 Hewlett Packard Enterprise Development Lp Analog multiplier-accumulators
US10452744B2 (en) 2017-03-27 2019-10-22 Oracle International Corporation Memory management for sparse matrix multiplication
TWI680409B (zh) 2017-07-08 2019-12-21 英屬開曼群島商意騰科技股份有限公司 適用於人工神經網路之矩陣及向量相乘的方法
CN107424647B (zh) 2017-08-03 2020-08-04 电子科技大学 一种基于忆阻器的语音存储与分类系统
US11263522B2 (en) 2017-09-08 2022-03-01 Analog Devices, Inc. Analog switched-capacitor neural network
CN111542826A (zh) 2017-12-29 2020-08-14 斯佩罗设备公司 支持模拟协处理器的数字架构
CN108182471B (zh) 2018-01-24 2022-02-15 上海岳芯电子科技有限公司 一种卷积神经网络推理加速器及方法
US10692570B2 (en) * 2018-07-11 2020-06-23 Sandisk Technologies Llc Neural network matrix multiplication in memory cells
JP2020035502A (ja) 2018-08-28 2020-03-05 キオクシア株式会社 半導体集積回路
US11410025B2 (en) * 2018-09-07 2022-08-09 Tetramem Inc. Implementing a multi-layer neural network using crossbar array
CN109460817B (zh) 2018-09-11 2021-08-03 华中科技大学 一种基于非易失存储器的卷积神经网络片上学习系统
US10825509B2 (en) 2018-09-28 2020-11-03 Intel Corporation Full-rail digital read compute-in-memory circuit
US10642922B2 (en) 2018-09-28 2020-05-05 Intel Corporation Binary, ternary and bit serial compute-in-memory circuits
US20200117986A1 (en) 2018-10-12 2020-04-16 International Business Machines Corporation Efficient processing of convolutional neural network layers using analog-memory-based hardware
CN109524039B (zh) 2018-11-21 2020-10-09 复旦大学 一种忆阻器阻态数目扩展的结构及相关方法
US11562240B2 (en) 2020-05-27 2023-01-24 International Business Machines Corporation Efficient tile mapping for row-by-row convolutional neural network mapping for analog artificial intelligence network inference

Also Published As

Publication number Publication date
AU2021281628B2 (en) 2023-04-27
US20210374514A1 (en) 2021-12-02
US20230100139A1 (en) 2023-03-30
CA3178030A1 (en) 2021-12-02
GB2610774A (en) 2023-03-15
US11562240B2 (en) 2023-01-24
JP2023526915A (ja) 2023-06-26
US11868893B2 (en) 2024-01-09
DE112021002939T5 (de) 2023-03-16
WO2021240286A1 (en) 2021-12-02
CN115699028A (zh) 2023-02-03
GB202218705D0 (en) 2023-01-25
IL297331A (en) 2022-12-01
AU2021281628A1 (en) 2022-11-10

Similar Documents

Publication Publication Date Title
US10740671B2 (en) Convolutional neural networks using resistive processing unit array
US11861489B2 (en) Convolutional neural network on-chip learning system based on non-volatile memory
US10708522B2 (en) Image sensor with analog sample and hold circuit control for analog neural networks
US20200117986A1 (en) Efficient processing of convolutional neural network layers using analog-memory-based hardware
US10373051B2 (en) Resistive processing unit
US10956815B2 (en) Killing asymmetric resistive processing units for neural network training
US9779355B1 (en) Back propagation gates and storage capacitor for neural networks
US11501130B2 (en) Neural network hardware accelerator architectures and operating method thereof
US11087204B2 (en) Resistive processing unit with multiple weight readers
US10818344B1 (en) Artificial neural network functionality using dynamic random-access memory
US20210374546A1 (en) Row-by-row convolutional neural network mapping for analog artificial intelligence network training
CN111433792A (zh) 可编程可重置人工神经网络的基于计数器的电阻处理单元
JP2022554371A (ja) メモリスタに基づくニューラルネットワークの並列加速方法およびプロセッサ、装置
US20200293855A1 (en) Training of artificial neural networks
US11195089B2 (en) Multi-terminal cross-point synaptic device using nanocrystal dot structures
US11868893B2 (en) Efficient tile mapping for row-by-row convolutional neural network mapping for analog artificial intelligence network inference
US11250316B2 (en) Aggregate adjustments in a cross bar neural network
AU2021296187B2 (en) Suppressing undesired programming at half-selected devices in a crosspoint array of 3-terminal resistive memory

Legal Events

Date Code Title Description
A201 Request for examination