KR20180102058A - 인공 신경망 역방향 트레이닝 실행용 장치와 방법 - Google Patents

인공 신경망 역방향 트레이닝 실행용 장치와 방법 Download PDF

Info

Publication number
KR20180102058A
KR20180102058A KR1020187015433A KR20187015433A KR20180102058A KR 20180102058 A KR20180102058 A KR 20180102058A KR 1020187015433 A KR1020187015433 A KR 1020187015433A KR 20187015433 A KR20187015433 A KR 20187015433A KR 20180102058 A KR20180102058 A KR 20180102058A
Authority
KR
South Korea
Prior art keywords
module
weight
slope
vector
unit
Prior art date
Application number
KR1020187015433A
Other languages
English (en)
Other versions
KR102175044B1 (ko
Inventor
샤오리 리우
치 궈
윈지 천
티엔스 천
Original Assignee
캠브리콘 테크놀로지스 코퍼레이션 리미티드
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 캠브리콘 테크놀로지스 코퍼레이션 리미티드 filed Critical 캠브리콘 테크놀로지스 코퍼레이션 리미티드
Publication of KR20180102058A publication Critical patent/KR20180102058A/ko
Application granted granted Critical
Publication of KR102175044B1 publication Critical patent/KR102175044B1/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/04Architecture, e.g. interconnection topology
    • G06N3/045Combinations of networks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • G06F15/163Interprocessor communication
    • G06F15/173Interprocessor communication using an interconnection network, e.g. matrix, shuffle, pyramid, star, snowflake
    • G06F15/17306Intercommunication techniques
    • G06F15/17318Parallel communications techniques, e.g. gather, scatter, reduce, roadcast, multicast, all to all
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/22Microcontrol or microprogram arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30145Instruction analysis, e.g. decoding, instruction word fields
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3838Dependency mechanisms, e.g. register scoreboarding
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/20Handling requests for interconnection or transfer for access to input/output bus
    • G06F13/28Handling requests for interconnection or transfer for access to input/output bus using burst mode transfer, e.g. direct memory access DMA, cycle steal
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N5/00Computing arrangements using knowledge-based models
    • G06N5/01Dynamic search techniques; Heuristics; Dynamic trees; Branch-and-bound

Landscapes

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

Abstract

본 발명은 일종의 인공 신경망 역방향 트레이닝 실행용 장치를 제공한다. 상기 장치는 명령 캐시 유닛(1), 컨트롤러 유닛(2), 직접 메모리 엑세스 유닛(3), H 트리 모듈(4), 1차 연산 모듈(5), 및 복수 개의 2차 연산 유닛(6)을 포함한다. 본 발명의 상기 장치를 사용하면 다층 이농 신경망 역방향 트레이닝을 실현할 수 있다. 각 층에 있어서, 먼저 입력 기울기 벡터량에 대하여 가중 합산을 진행하여 본 층의 출력 기울기 벡터를 계산한다. 상기 출력 기울기 벡터에 다음 층의 정방향 연산 시 활성 함수의 미분값을 곱하여 다음 층의 입력 기울기 벡터를 얻을 수 있다. 입력 기울기 벡터와 정방향 연산 시의 입력 뉴런을 대위곱셈하여 본 층 가중치의 기울기를 얻은 후, 수득한 본 층 가중치의 기울기에 의거하여 본 층의 가중치를 갱신할 수 있다.

Description

인공 신경망 역방향 트레이닝 실행용 장치와 방법
본 발명은 인공 신경망 분야에 관한 것으로서, 더욱 상세하게는 인공 신경망 역방향 트레이닝 실행용 장치와 방법에 관한 것이다.
다층 인공 신경망은 패턴 인식, 이미지 처리, 함수 근사, 최적화 계산 등 분야에서 광범위하게 응용되며, 다층 인공망은 최근 몇 년 동안 비교적 높은 식별 정확도와 비교적 우수한 병렬 가능성으로 인해 학술계와 산업계에서 갈수록 많은 주목을 받고 있다.
다층 인공 신경망 역방향 트레이닝(reversal training)을 지원하는 종래의 방법은 범용 프로세서를 사용하는 것이다. 상기 방법은 범용 레지스터 파일과 범용 기능 부품을 통하여 범용 명령을 실행하여 상기 알고리즘을 지원한다. 상기 방법의 단점 중 하나는 단일 범용 프로세서의 연산 성능이 비교적 낮아 통상적인 다층 인공 신경망 연상의 성능 수요를 충족시킬 수 없다는 것이다. 복수 개의 범용 프로세서를 병렬 실행할 경우, 범용 프로세서 간 상호 통신도 성능 병목 현상을 만든다. 또한 범용 프로세서는 다층 인공 신경망 역방향 연산을 긴 열 연산 및 메모리 엑세스 명령 시퀀스로 디코딩하기 때문에 프로세스 전단 디코딩에 비교적 큰 전력이 소모된다.
다층 인공 신경망 역방향 트레이닝을 지원하는 또 다른 종래의 방법은 그래픽 처리 유닛(GPU)을 사용하는 것이다. 상기 방법은 범용 레지스터 파일과 범용 스트림 프로세서를 통하여 범용 SIMD 명령을 실행함으로써 상기 알고리즘을 지원한다. GPU는 그래픽 이미지 연산 및 과학 계산을 전문적으로 실행하는 설비이기 때문에, 다층 인공 신경망 연산을 전문적으로 지원할 수 없어 여전히 대량의 전단 디코딩 작업이 있어야 다층 인공 신경망 연산을 실행할 수 있으므로 대량의 추가적 비용이 든다. 또한 GPU는 비교적 작은 온칩(on-chip) 캐시만 있기 때문에 다층 인공 신경망의 모델 데이터(가중치)를 반복적으로 칩 외부에서 운반해야 하므로 오프칩(off-chip) 대역폭이 주요 성능의 병목 현상을 일으키며, 동시에 엄청난 전력이 소모된다.
본 발명은 한편으로 인공 신경망 역방향 트레이닝 실행용 장치에 관한 것으로서, 명령 캐시 유닛, 컨트롤러 유닛, 직접 메모리 엑세스 유닛, H 트리 모듈, 1차 연산 모듈, 및 복수 개의 2차 연산 유닛을 포함한다. 여기에서, 상기 명령 캐시 유닛은 명령을 캐싱(caching)하는 데 사용된다. 상기 컨트롤러 유닛은 명령 캐시 유닛에서 명령을 판독하고, 상기 명령은 H 트리 모듈, 1차 연산 모듈, 및 2차 연산 모듈 행위를 제어하는 마이크로 명령으로 디코딩하는 데 사용된다. 직접 메모리 엑세스 유닛은 메모리에서 1차 연산 모듈과 각 2차 연산 모듈에 상응하는 데이터 캐시 유닛 중 데이터를 작성하거나 상기 데이터 캐시 유닛에서 메모리로 데이터를 판독하는 데 사용된다. H 트리 모듈은 각층 신경망 역방향 트레이닝 계산 시작의 단계에서 1차 연산 모듈이 H 트리 모듈을 통해 모든 2차 연산 모듈로 본 층의 입력 기울기 벡터를 전송하는 데에 사용되고, 2차 연산 모듈의 계산 과정이 종료된 후 H 트리 모듈은 단계적으로 각 2차 연산 모듈의 출력 기울기 벡터 부분합을 2개씩 서로 더하여 본 층의 출력 기울기 벡터를 얻는 데 사용된다. 1차 연산 모듈은 각 층의 계산 과정에 있어서 본 층의 출력 기울기 벡터를 이용하여 후속 계산을 완료하는 데 사용된다. 각 2차 연산 모듈은 동일한 입력 기울기 벡터와 각각의 가중치 데이터를 이용하여 상응하는 출력 기울기 벡터 부분합을 병렬 연산하는 데 사용된다.
본 발명은 다른 한편으로 상기 장치를 사용하여 단층 인공 신경망 역방향 트레이닝을 실행하는 방법을 제공한다.
본 발명은 또 다른 한편으로 상기 장치를 사용하여 다층 인공 신경망 역방향 트레이닝을 실행하는 방법을 제공한다.
이하에서는, 본 발명의 도면을 통해 발명 및 본 발명의 장점을 더욱 상세하게 설명한다.
도 1은 본 발명 실시예에 따른 인공 신경망 역방향 트레이닝 실행용 장치의 전체 구조에 대한 블록 다이어그램이고;
도 2는 본 발명 실시예에 따른 인공 신경망 역방향 트레이닝 실행용 장치 중 H 트리 모듈의 구조이고;
도 3은 본 발명 실시예에 따른 인공 신경망 역방향 트레이닝 실행용 장치 중 1차 연산 모듈 구조의 블록 다이어그램이고;
도 4는 본 발명 실시예에 따른 인공 신경망 역방향 트레이닝 실행용 장치 중 2차 연산 모듈 구조의 블록 다이어그램이고;
도 5는 본 발명 실시예에 따른 신경망 역방향 트레이닝 과정의 블록 다이어그램이고; 및
도 6은 본 발명 실시예에 따른 단층 인공 신경망 연산의 흐름도이다.
상기 도면에서 동일한 장치, 부품, 유닛 등은 동일한 부호로 표시하였다.
이하에서는, 본 발명의 예시적인 실시형태들을 도면을 통해 보다 상세히 설명한다. 본 발명의 기타 측면, 장점 및 특징은 본 발명이 속한 기술분야의 당업자가 쉽게 이해할 수 있다.
본 발명에 있어서, 전문용어 “포함”과 “함유” 및 그 파생어의 뜻은 포괄하며 제한적이지 않다는 것이고, 전문용어 “또는”은 “및/또는”의 뜻으로서 포함성을 가진다.
본 발명의 설명에 있어서, 이하의 내용은 본 발명 원리의 각종 실시예를 설명하기 위한 것에 불과하므로 어떠한 방식으로든 본 발명의 보호범위를 제한하지 않는다. 이하의 첨부 도면을 참조하여 특허청구범위 및 그와 동등한 물건으로 한정되는 본 발명의 예시적 실시예를 전면적으로 이해하도록 한다. 이하의 설명에는 이해를 돕기 위하여 다양한 구체적인 세부사항을 포함하나, 이러한 세부사항은 예시적인 것에 불과하다. 따라서 본 발명이 속한 기술분야의 당업자는 본 발명의 범위와 정신에서 위배되지 않는 상황에서 본 발명에서 설명한 실시예에 대하여 변경과 수식을 진행할 수 있다는 것을 이해하여야 한다. 그 외, 명확함과 간결함을 위하여 공지된 기능과 구조에 대한 설명은 생략하였다. 또한 첨부 도면에서 일관되게 동일한 참고 숫자는 유사한 기능과 조작에 사용하였다.
본 발명 실시예에 따른 다층 인공 신경망의 역방향 트레이닝은 2층 이상인 복수 개의 뉴런을 포함한다. 각 층에 있어서, 먼저 입력 기울기 벡터량에 대하여 가중 합산을 진행하여 본 층의 출력 기울기 벡터를 계산한다. 상기 출력 기울기 벡터에 다음 층의 정방향 연산 시 활성 함수의 미분값을 곱하여 다음 층의 입력 기울기 벡터를 얻을 수 있다. 입력 기울기 벡터와 정방향 연산 시의 입력 뉴런을 대위곱셈하여 본 층 가중치의 기울기를 얻은 후, 수득한 본 층 가중치의 기울기에 의거하여 본 층의 가중치를 갱신할 수 있다.
도 1은 본 발명 실시예에 따른 인공 신경망 역방향 트레이닝 실행용 장치의 전체 구조에 대한 블록 다이어그램을 도시한 것이다. 도 1에서 도시하는 바와 같이, 상기 장치는 명령 캐시 유닛(1), 컨트롤러 유닛(2), 직접 메모리 엑세스 유닛(3), H 트리 모듈(4), 1차 연산 모듈(5), 및 복수 개의 2차 연산 유닛(6)을 포함한다. 명령 캐시 유닛(1), 컨트롤러 유닛(2), 직접 메모리 엑세스 유닛(3), H 트리 모듈(4), 1차 연산 모듈(5), 및 2차 연산 유닛(6)은 모두 하드웨어 회로(예를 들어 전용 집적회로 ASIC)를 통하여 구현할 수 있다.
명령 캐시 유닛(1)은 직접 메모리 엑세스 유닛(3)을 통하여 명령을 판독하여 입력하고, 판독하여 입력한 명령을 캐싱하는 데 사용된다.
컨트롤러 유닛(2)은 명령 캐시 유닛(1)에서 명령을 판독하고, 명령을 기타 모듈 행위를 제어하는 마이크로 명령으로 디코딩하고, 상기 기타 모듈에는 예를 들어 직접 메모리 엑세스 유닛(3), 1차 연산 모듈(5), 및 2차 연산 유닛(6) 등이 있다.
직접 메모리 엑세스 유닛(3)은 외부 주소 공간을 메모리 엑세스하고 장치 내부의 각 캐시 유닛에 직접 데이터를 판독하여 기록함으로써 데이터의 로딩과 저장을 완료할 수 있다.
도 2는 H 트리 모듈(4)의 구조를 도시한 것이다. H 트리 모듈(4)은 1차 연산 모듈(5)과 복수 개의 2차 연산 모듈(6) 사이의 데이터 통로를 구성하고, H 트리형의 구조를 가진다. H 트리는 복수 개의 노드로 구성된 2진 트리 통로이고, 각 노드는 업스트림의 데이터를 마찬가지로 다운스트림의 2개 노드로 발급하고, 다운스트림의 2개 노드에서 반환하는 데이터를 병합하여 업스트림의 노드에 반환한다. 예를 들어 신경망 역방향 연산 과정에 있어서, 다운스트림의 2개 노드에서 반환하는 벡터는 현재 노드에서 하나의 벡터를 더하여 업스트림 노드에 반환할 수 있다. 각 층의 인공 신경망 계산 시작 단계에서 1차 연산 모듈(5) 내의 입력 기울기는 H 트리 모듈(4)을 통하여 각 2차 연산 모듈(6)에 발송한다. 2차 연산 모듈(6)의 계산 과정이 완료된 후, 각 2차 연산 모듈(6)이 출력하는 출력 기울기 벡터 부분합은 H 트리 모듈(4)에서 단계적으로 2개씩 더하여, 모든 출력 기울기 벡터 부분합에 대한 합산에서 최종적인 출력 기울기 벡터로 삼는다.
도 3은 본 발명 실시예에 따른 인공 신경망 역방향 트레이닝 실행용 장치 중 1차 연산 모듈(5) 구조의 블록 다이어그램이다. 도 3에서 도시하는 바와 같이, 1차 연산 모듈(5)은 연산 유닛(51), 데이터 종속성 판단 유닛(52) 및 뉴런 캐시 유닛(53)을 포함한다.
뉴런 캐시 유닛(53)은 1차 연산 모듈(5)이 계산 과정에서 사용한 입력 데이터와 출력 데이터를 캐싱하는 데 사용된다. 연산 유닛(51)은 1차 연산 모듈의 각종 연산 기능을 완료한다. 데이터 종속성 판단 유닛(52)은 연산 유닛(51)이 뉴런 캐시 유닛(53)을 판독하여 기록하는 포트이며, 동시에 뉴런 캐시 유닛(53) 중 데이터의 판독 기록에 일치성 충돌이 존재하지 않도록 보장할 수 있다. 상세하게는, 데이터 종속성 판단 유닛(52)은 아직 실행하지 않은 마이크로 명령과 현재 실행 과정에 있는 마이크로 명령의 데이터 간에 종속성이 존재하는지 여부를 판단한다. 만약 존재하지 않으면 상기 마이크로 명령을 즉각 송출하는 것을 허용하고, 그렇지 않은 경우에는 상기 마이크로 명령이 종속된 모든 마이크로 명령이 전부 실행될 때까지 기다린 후 상기 마이크로 명령이 송출되는 것을 허용한다. 예를 들어 모든 데이터 종속성 판단 유닛(52)으로 발송되는 마이크로 명령은 모두 데이터 종속성 판단 유닛(52) 내부의 명령 큐(instruction queue)에 저장되고, 상기 큐에서 판독 명령 판독 데이터의 범위가 만약 큐 위치에 앞쪽에 가까운 기록 명령 기록 데이터의 범위와 충돌이 일어나는 경우, 상기 명령은 반드시 종속되는 기록 명령이 실행된 후에만 실행될 수 있어야 한다. 또한, 데이터 종속성 판단 유닛(52)도 뉴런 캐시 유닛(53)에서 입력 기울기 벡터를 판독하고 H 트리 모듈(4)을 통하여 2차 연산 모듈(6)로 발송하고, 2차 연산 모듈(6)의 출력 데이터를 H 트리 모듈(4)을 통하여 직접 연산 유닛(51)에 발송하는 것에 대해 책임을 진다. 컨트롤러 유닛(2)이 출력하는 명령은 연산 유닛(51)과 종속성 판단 유닛(52)에 발송하여 그 행위를 제어한다.
도 4는 본 발명 실시예에 따른 인공 신경망 역방향 트레이닝 실행용 장치 중 2차 연산 모듈(6) 구조의 블록 다이어그램이다. 도 4에서 도시하는 바와 같이, 각 2차 연산 모듈(6)은 연산 유닛(61), 데이터 종속성 판단 유닛(62), 뉴런 캐시 유닛(63), 가중치 캐시 유닛(64), 및 가중치 기울기 캐시 유닛(65)을 포함한다.
연산 유닛(61)은 컨트롤러 유닛(2)에서 발송하는 마이크로 명령을 수신하고 산술 논리 연산을 진행한다.
데이터 종속성 판단 유닛(62)은 계산 과정 중 캐시 유닛의 판독 기록 조작을 책임진다. 데이터 종속성 판단 유닛(62)은 캐시 유닛의 판독 기록에 일치성 충돌이 존재하지 않는다는 것을 보장한다. 상세하게는, 데이터 종속성 판단 유닛(62)은 아직 실행하지 않은 마이크로 명령과 현재 실행 과정에 있는 마이크로 명령의 데이터 간에 종속성이 존재하는지 여부를 판단한다. 만약 존재하지 않으면 상기 마이크로 명령을 즉각 송출하는 것을 허용하고, 그렇지 않은 경우에는 상기 마이크로 명령이 종속된 모든 마이크로 명령이 전부 실행될 때까지 기다린 후 상기 마이크로 명령이 송출되는 것을 허용한다. 예를 들어 모든 데이터 종속성 판단 유닛(52)으로 발송되는 마이크로 명령은 모두 데이터 종속성 판단 유닛(52) 내부의 명령 큐 내에 저장되고, 상기 큐에서 판독 명령 판독 데이터의 범위가 만약 큐 위치에 앞쪽에 가까운 기록 명령 기록 데이터의 범위와 충돌이 일어나는 경우, 상기 명령은 반드시 종속되는 기록 명령이 실행된 후에만 실행될 수 있어야 한다.
뉴런 캐시 유닛(63)은 입력 기울기 벡터 데이터 및 상기 2차 연산 모듈(6)에서 계산하여 얻은 출력 기울기 벡터 부분합을 캐싱한다.
가중치 캐시 유닛(64)은 상기 2차 연산 모듈(6)이 계산 과정에서 필요한 가중치 벡터를 캐싱한다. 각 2차 연산 모듈은 모두 가중치 행렬 중 상기 2차 연산 모듈(6)에 대응하는 열만 저장할 수 있다.
가중치 기울기 캐시 유닛(65)은 상응하는 2차 연산 모듈이 가중치 갱신 과정에서 필요한 가중치 기울기 데이터를 캐싱한다. 각 2차 연산 모듈(6)이 저장하는 가중치 기울기 데이터는 그 저장하는 가중치 벡터와 서로 대응한다.
2차 연산 모듈(6)은 각 층 인공 신경망 역방향 트레이닝의 출력 기울기 벡터 계산 과정 중 병렬 가능한 전반 부분 및 가중치의 갱신을 구현한다. 인공 신경망의 완전 연결층(MLP)을 예로 들면, 과정은 out_gradient = w*in_gradient이고, 여기에서 가중치 행렬 x과 입력 기울기 벡터 in_gradient의 곱셈은 상관없는 병렬 연산 서브태스크로 나눌 수 있으며, out_gradient와 in_gradient는 열 벡터이고, 각 2차 연산 모듈(6)은 in_gradient 중 상응하는 부분 스칼라(scalar) 원소와 가중치 행렬 w에 대응하는 열의 곱만 계산하고, 수득한 각 출력 벡터는 모두 최종 결과의 하나의 누적 대기 부분합이고, 이러한 부분합은 H 트리에서 단계적으로 2개씩 서로 더하여 최후의 결과를 얻는다. 상기 계산 과정은 부분합을 병렬 연산하는 과정과 후면의 누적하는 과정으로 바뀐다. 각 2차 연산 모듈(6)은 출력 기울기 벡터의 부분합을 계산하고, 모든 부분합은 H 트리 모듈(4)에서 합산 연산을 완료하여 최후의 출력 기울기 벡터를 얻는다. 각 2차 연산 모듈(6)은 동시에 입력 기울기 벡터와 정방향 연산 시 각 층의 출력값을 서로 곱하여 가중치의 기울기를 계산함으로써 본 2차 연산 모듈(6) 저장의 가중치를 갱신한다. 정방향 연산과 역방향 연산은 신경망 알고리즘의 두 가지 주요 과정이며, 신경망은 망 중의 가중치를 트레이닝(갱신)하면, 먼저 입력 벡터가 현재 가중치에서 구성하는 망 중의 정방향 출력을 계산해야 하는데 이것이 정방향 과정이다. 그 후 출력값과 입력 벡터 자체의 표준값 사이의 편차값에 의거하여 역방향으로 한층씩 각층의 가중치를 트레이닝(갱신)한다. 정방향 연산 과정 중 각 층의 출력 벡터 및 활성 함수의 미분값을 저장할 수 있으며, 이러한 데이터는 역방향 트레이닝 과정에 필요한 것이다. 따라서 역방향 트레이닝을 개시할 때 이러한 데이터는 이미 존재가 보장된다. 정방향 연산 중 각층의 출력값은 역방향 연산을 시작할 때 이미 있는 데이터이며, 직접 메모리 엑세스 유닛을 통하여 1차 연산 모듈 내에 캐싱하고 H 트리 모듈을 통하여 2차 연산 모듈로 발송할 수 있다. 1차 연산 모듈(5)은 출력 기울기 벡터를 기반으로 후속 계산을 진행하는데, 예를 들어 출력 기울기 벡터에 정방향 연산 시 활성 함수의 미분값을 곱하여 다음 층의 입력 기울기값을 얻는다. 정방향 연산 시 활성 함수의 미분값은 역방향 연산 시작 시 이미 있는 데이터이며 직접 메모리 엑세스 유닛을 통하여 1차 연산 모듈 내에 캐싱할 수 있다.
본 발명 실시예에 의거하여 전술한 장치에서 인공 신경망 역방향 연산을 실행하는 명령 집합을 더 제공한다. 명령 집합 내에는 CONFIG 명령, COMPUTE 명령, IO 명령, NOP 명령, JUMP 명령, 및 MOVE 명령이 포함된다.
여기에서, CONFIG 명령은 각층 인공 신경망 계산 시작 전에 현재 층 계산에 필요한 각종 상수를 배치한다.
COMPUTE 명령은 각층 인공 신경망의 산술 논리 연산을 완료한다.
IO 명령은 외부 주소 공간에서 계산에 필요한 입력 데이터를 판독하여 입력하고, 및 계산 완료 후 데이터를 외부 공간에 저장한다.
NOP 명령은 현재 내부 모든 마이크로 명령 캐시 큐(queue) 내에 담긴 마이크로 명령을 정리하여 NOP 명령 전의 모든 명령이 전부 완료되도록 보장한다. NOP 명령 자체에는 어떠한 조작도 포함되지 않는다.
JUMP 명령은 컨트롤러가 명령 캐시 유닛에서 판독한 다음 명령 주소로 건너뛰는 것을 책임져 제어 흐름의 점프를 구현하는 데 사용된다.
MOVE 명령은 장치 내부 주소 공간의 특정 주소 데이터를 장치 내부 주소 공간의 다른 주소로 옮기는 것을 책임지며, 상기 과정은 연산 유닛에 독립적이고 실행 과정 중 연산 유닛의 자원을 점용하지 않는다.
도 5는 본 발명 실시예에 따른 신경망 역방향 트레이닝 과정의 블록 다이어그램을 도시한 것이다. 출력 기울기 벡터의 계산 과정은 out_gradient = w*in_gradient이고, 여기에서 가중치 행렬 x과 입력 기울기 벡터 in_gradient의 행렬 벡터 곱셈은 상관없는 병렬 연산 서브태스크로 나눌 수 있으며, 각 2차 연산 모듈(6)은 출력 기울기 벡터의 부분합을 계산하고, 모든 부분합은 H 트리 모듈(4)에서 합산 연산을 완료하여 최후의 출력 기울기 벡터를 얻는다. 도 5에 있어서, 이전 층의 출력 기울기 벡터 input gradient에 대응하는 활성 함수 미분값을 곱하여 본 층의 입력 데이터를 얻고, 다시 가중치 행렬을 곱하여 출력 기울기 벡터를 얻는다. 가중치 갱신 기울기를 계산하는 과정은 dw = x * in_gradient이고, 여기에서 각 2차 연산 모듈(6)은 본 모듈 대응 부분의 가중치 갱신 기울기를 계산한다. 2차 연산 모듈(6)은 입력 기울기와 정방향 연산 시의 입력 뉴런을 서로 곱하여 가중치 갱신 기울기 dw를 계산한 후, w, dw와 이전 가중치 갱신 시 사용한 가중치를 이용하여 가중치 dw’를 갱신하며, 명령 설정의 학습률에 의거하여 가중치 w를 갱신한다.
도 5에서 도시하는 바와 같이, input gradient(도 5 중의 [input gradient0, …, input gradient3])는 제n+1층의 출력 기울기 벡터이고, 상기 벡터는 먼저 정방향 연산 과정 중 제n층의 미분값(도 5 중의 [f’(out0), …, f’(out3)])과 곱하여 제n층의 입력 기울기 벡터를 얻고, 상기 과정은 1차 연산 모듈(5)에서 완료되고, H 트리 모듈(4)에서 2차 연산 모듈(6)로 송출하고, 2차 연산 모듈(6)의 뉴런 캐시 유닛(63) 내에 일시 저장된다. 그 후 입력 기울기 벡터와 가중치 행렬을 곱하여 제n층의 출력 기울기 벡터를 얻는다. 이 과정에서 제i번째의 2차 연산 모듈은 입력 기울기 벡터 중 제i번째 스칼라와 가중치 행렬 중 열 벡터[w_i0,…,w_iN]의 곱을 계산하고, 수득한 출력 벡터는 H 트리 모듈(4)에서 단계적으로 2개씩 서로 더하여 최후의 출력 기울기 벡터 out gradient(도 5 중의 [out gradient0,…, out gradien3])를 얻는다.
또한, 2차 연산 모듈(6)은 본 모듈 중 저장된 가중치를 더 갱신해야 하며, 가중치 갱신 기울기 계산 과정은 dw_ij = x_j * in_gradient_i이고, 여기에서 x_j는 정방향 연산 시 제n층의 입력(즉 제n-1층의 출력) 벡터의 제j번째 원소이고, in_gradient_i는 역방향 연산 제n층의 입력 기울기 벡터(즉 도 5 중 inpiut gradient와 미분 f’의 곱)의 제i번째 원소이다. 정방향 연산 시 제n층의 입력은 역방향 트레이닝 시작 시 존재하는 데이터이고, H 트리 모듈(4)을 통하여 2차 연산 모듈(6)로 전송하며 뉴런 캐시 유닛(63) 내에 일시 저장된다. 즉, 2차 연산 모듈(6)에 있어서 출력 기울기 벡터 부분합의 계산을 완료한 후 입력 기울기 벡터 제i번째 스칼라와 정방향 연산 제n층의 입력 벡터를 곱하여, 가중치가 갱신된 기울기 벡터 dw를 얻고 이를 기반으로 가중치를 갱신한다.
도 6은 본 발명 실시예에 따른 단층 인공 신경망 역방향 트레이닝 흐름도를 도시한 것이다. 상기 흐름도는 본 발명의 장치와 명령 집합을 이용하여 도 5에서 도시하는 단층 신경망 역방향 트레이닝을 구현하는 과정을 도시한다.
단계 S1: 명령 캐시 유닛(1)의 첫 주소에 하나의 IO 명령을 사전 저장한다.
단계 S2: 연산을 시작하며, 컨트롤러 유닛(2)이 명령 캐시 유닛(1)의 첫 주소에서 상기 IO 명령을 판독하고, 디코딩한 마이크로 명령에 의거하여 직접 메모리 엑세스 유닛(3)은 외부 주소 공간에서 상기 단층 인공 신경망 역방향 트레이닝과 관련된 모든 명령을 판독하며, 이를 명령 캐시 유닛(1) 내에 캐싱한다.
단계 S3: 컨트롤러 유닛(2)이 이어서 명령 캐시 유닛에서 다음 IO 명령을 판독하여 입력하고, 디코딩한 마이크로 명령에 의거하여 직접 메모리 엑세스 유닛(3)은 외부 주소 공간에서 1차 연산 모듈(5)이 필요하는 모든 데이터를 1차 연산 모듈(5)의 뉴런 캐시 유닛(53)까지 판독하며, 상기 데이터에는 이전 정방향 연산 시의 입력 뉴런과 활성 함수 미분값 및 출력 기울기 벡터가 포함된다.
단계 S4: 컨트롤러 유닛(2)은 이어서 명령 캐시 유닛에서 다음 IO 명령을 판독하여 입력하고, 디코딩한 마이크로 명령에 의거하여 직접 메모리 엑세스 유닛(3)은 외부 주소 공간에서 2차 연산 모듈(6)이 필요하는 모든 가중치 데이터와 가중치 기울기 데이터를 판독하고, 각각 상응하는 2차 연산 모듈(6)의 가중치 캐시 유닛(64)과 가중치 기울기 캐시 유닛(65)에 저장한다.
단계 S5: 컨트롤러 유닛(2)은 이어서 명령 캐시 유닛에서 다음 CONFIG 명령을 판독하여 입력하고, 연산 유닛은 디코딩한 마이크로 명령 내의 파라미터에 의거하여 연산 유닛 내부 레지스터의 값을 배치하며, 여기에는 상기 층 신경망 계산에 필요한 각종 상수, 본 층 계산의 정밀도 설정, 가중치 갱신 시의 학습률 등이 포함된다.
단계 S6: 컨트롤러 유닛(2)은 이어서 명령 캐시 유닛에서 다음 COMPUTE 명령을 판독하여 입력하고, 디코딩한 마이크로 명령에 의거하여 1차 연산 모듈(5)은 H 트리 모듈(4)을 통하여 입력 기울기 벡터와 정방향 연산 시의 입력 뉴런을 각 2차 연산 모듈(6)로 전송하고, 상기 입력 기울기 벡터와 정방향 연산 시의 입력 뉴런은 2차 연산 모듈(6)의 뉴런 캐시 유닛(63)에 저장한다.
단계 S7: COMPUTE 명령이 디코딩한 마이크로 명령에 의거하여, 2차 연산 모듈(6)의 연산 유닛(61)은 가중치 캐시 유닛(64)에서 가중치 벡터(즉, 상기 2차 연산 모듈에서 저장하는 가중치 행렬의 부분열)를 판독하여 가중치 벡터와 입력 기울기 벡터의 벡터 곱 스칼라 연산을 완료하고, 출력 벡터 부분합은 H 트리를 통하여 반환한다. 또한, 2차 연산 모듈(6)은 입력 기울기 벡터와 입력 뉴런을 곱하여 가중치 기울기를 얻고 가중치 기울기 캐시 유닛(65)에 저장한다.
단계 S8: H 트리 모듈(4)에 있어서, 각 2차 연산 모듈(6)이 반환하는 출력 기울기 부분합을 단계적으로 2개씩 더하여 완전한 출력 기울기 벡터를 수득한다.
단계 S9: 1차 연산 모듈(5)이 H 트리 모듈(4)의 반환 값을 획득하고, COMPUTE 명령이 디코딩한 마이크로 명령에 의거하여 뉴런 캐시 유닛(53)에서 정방향 연산 시의 활성 함수 미분값을 판독하고, 미분값에 반환한 출력 벡터를 곱하여 다음 층 역방향 트레이닝의 입력 기울기 벡터를 획득하고, 이를 뉴런 캐시 유닛(53)에 기록한다.
단계 S10: 컨트롤러 유닛(2)은 이어서 명령 캐시 유닛에서 다음 COMPUTE 명령을 판독하여 입력하고, 디코딩한 마이크로 명령에 의거하여 2차 연산 모듈(6)이 가중치 캐시 유닛(64)에서 가중치w를 판독하고, 가중치 기울기 캐시 유닛에서 이번의 가중치 기울기 dw와 다음번 가중치 갱신에 사용하는 가중치 기울기 dw’를 판독하고 가중치 w를 갱신한다.
단계 S11: 컨트롤러 유닛은 이어서 명령 캐시 유닛에서 다음 IO 명령을 판독하여 입력하고, 디코딩한 마이크로 명령에 의거하여 직접 메모리 엑세스 유닛(3)이 뉴런 캐시 유닛(53) 중의 출력 기울기 벡터를 외부 주소 공간 지정 주소에 저장하며 연산을 종료한다.
다층 인공 신경망은 그 구현 과정이 단층 신경망과 유사하며, 이전 층 인공 신경망 실행을 완료한 후 다음 층의 연산 명령은 1차 연산 모듈 중 계산된 출력 기울기 벡터를 다음 층 트레이닝의 입력 기울기 벡터로 삼아 상기와 같은 계산 과정을 진행하고, 명령 중의 가중치 주소와 가중치 기울기 주소도 본 층에서 대응하는 주소로 변경될 수 있다.
인공 신경망 역방향 트레이닝 실행용 장치와 명령 집합을 채택하여 CPU와 GPU 연산 성능 부족과 전단 디코딩 비용이 큰 문제를 해결하였다. 또한 다층 인공 신경망 역방향 트레이닝에 대한 지원을 효과적으로 향상시킨다.
다층 인공 신경망 역방향 트레이닝 전용 온칩 캐시를 채택하여 입력 뉴런과 가중치 데이터의 재사용성을 충분히 발굴하며, 반복적으로 메모리가 이러한 데이터를 판독하는 것을 방지하고 메모리 엑세스 대역폭을 낮추며 메모리 대역폭이 다층 인공 신경망 역방향 트레이닝 성능 병목이 되는 현상을 방지한다.
앞서 도면에서 기재한 진행과정 또는 방법에는 하드웨어(예를 들어 회로, 전용 논리 등), 펌웨어, 소프트웨어(예를 들어 구체화된 비일시적 컴퓨터 판독 가능 매체)를 포함할 수 있으며, 또는 양자 조합의 처리 논리(processing logic)로 실행할 수 있다. 비록 상기 내용이 특정 순서 조작에 따라 진행과정 또는 방법을 설명하기는 하나, 상기에서 설명한 특정 조작은 다른 순서로 실행할 수 있다. 그 외 병렬하여 비(非)순서적으로 일부 조작을 실행할 수 있다.
상기 발명의 설명에서는 특정한 예시적 실시예를 참조하여 본 발명의 각 실시예를 설명하였다. 각 실시예에 대하여 진행할 수 있는 각종 수식은 상기 첨부한 특허청구범위에 있어서 본 발명의 더욱 광범위한 정신과 범위에 위배되지 않는다. 이에 상응하여, 발명의 설명과 첨부 도면은 설명을 위한 것이므로 본 발명을 제한하지 않는다.

Claims (10)

  1. 명령 캐시 유닛, 컨트롤러 유닛, 직접 메모리 엑세스 유닛, H 트리 모듈, 1차 연산 모듈, 및 복수 개의 2차 연산 유닛을 포함하되;
    상기 명령 캐시 유닛은 명령을 캐싱(caching)하는 데 사용되고;
    상기 컨트롤러 유닛은 명령 캐시 유닛에서 명령을 판독하고, 상기 명령은 H 트리 모듈, 1차 연산 모듈, 및 2차 연산 모듈 행위를 제어하는 마이크로 명령으로 디코딩하는 데 사용되며;
    상기 직접 메모리 엑세스 유닛은 메모리에서 1차 연산 모듈과 각 2차 연산 모듈에 상응하는 데이터 캐시 유닛 중 데이터를 작성하거나 상기 데이터 캐시 유닛에서 메모리로 데이터를 판독하는 데 사용되고;
    상기 H 트리 모듈은 각층 신경망 역방향 트레이닝 계산 시작의 단계에서 1차 연산 모듈이 H 트리 모듈을 통해 모든 2차 연산 모듈로 본 층의 입력 기울기 벡터를 전송하는 데에 사용되고, 2차 연산 모듈의 계산 과정이 종료된 후 H 트리 모듈은 단계적으로 각 2차 연산 모듈의 출력 기울기 벡터 부분합을 2개씩 서로 더하여 본 층의 출력 기울기 벡터를 얻는 데 사용되며;
    상기 1차 연산 모듈은 각 층의 계산 과정에 있어서 본 층의 출력 기울기 벡터를 이용하여 후속 계산을 완료하는 데 사용되고;
    상기 각 2차 연산 모듈은 동일한 입력 기울기 벡터와 각각의 가중치 데이터를 이용하여 상응하는 출력 기울기 벡터 부분합을 병렬 연산하는 데 사용되는 것을 특징으로 하는 인공 신경망 역방향 트레이닝 실행용 장치.
  2. 제1항에 있어서,
    복수 개의 2차 연산 모듈은 동일한 입력 기울기 벡터를 이용하여 각자 가중치의 기울기를 병렬 계산하고, 계산하여 얻은 각 가중치의 기울기를 사용하여 각자의 가중치를 갱신하는 것을 특징으로 하는 인공 신경망 역방향 트레이닝 실행용 장치.
  3. 제1항에 있어서,
    1차 연산 모듈은 각 층의 출력 기울기 벡터와 다음 층의 활성 함수 미분값을 대위곱셈하여 다음 층의 입력 기울기 벡터로 삼는 것을 특징으로 하는 인공 신경망 역방향 트레이닝 실행용 장치.
  4. 제1항에 있어서,
    2차 연산 모듈은 입력 뉴런 데이터를 캐싱하는 입력 뉴런 캐시 유닛을 포함하는 것을 특징으로 하는 인공 신경망 역방향 트레이닝 실행용 장치.
  5. 제1항에 있어서,
    H 트리 모듈은 1차 연산 모듈과 상기 복수 개의 2차 연산 모듈 사이의 데이터 통로를 구성하고, H 트리형의 구조를 가지며, H 트리는 복수 개의 노드로 구성된 2진 트리 통로이고, 각 노드는 업스트림의 데이터를 마찬가지로 다운스트림의 2개 노드로 발급하고, 다운스트림의 2개 노드에서 반환하는 데이터를 더하여 업스트림의 노드에 반환하는 것을 특징으로 하는 인공 신경망 역방향 트레이닝 실행용 장치.
  6. 제1항에 있어서,
    1차 연산 모듈은 연산 유닛, 데이터 종속성 판단 유닛 및 뉴런 캐시 유닛을 포함하고,
    상기 뉴런 캐시 유닛은 1차 연산 모듈이 계산 과정에서 사용한 입력 데이터와 출력 데이터를 캐싱하는 데 사용되고;
    상기 연산 유닛은 1차 연산 모듈의 각종 연산 기능을 완료하며;
    상기 데이터 종속성 판단 유닛은 연산 유닛이 뉴런 캐시 유닛을 판독하여 기록하는 포트이며, 뉴런 캐시 유닛 중 데이터의 판독 기록에 일치성 충돌이 존재하지 않도록 보장하고, 뉴런 캐시 유닛에서 입력 기울기 벡터를 판독하여 H 트리 모듈을 통하여 2차 연산 모듈에 발송하는 것을 책임지고; 및
    H 트리 모듈에서 유래하는 출력 기울기 벡터는 연산 유닛에 발송되는 것을 특징으로 하는 인공 신경망 역방향 트레이닝 실행용 장치.
  7. 제1항에 있어서,
    각 2차 연산 모듈은 연산 유닛, 데이터 종속성 판단 유닛, 뉴런 캐시 유닛, 가중치 캐시 유닛, 및 가중치 기울기 캐시 유닛을 포함하고;
    연산 유닛은 컨트롤러 유닛에서 발송하는 마이크로 명령을 수신하고 산술 논리 연산을 진행하고;
    데이터 종속성 판단 유닛은 계산 과정 중에서 뉴런 캐시 유닛, 가중치 캐시 유닛 및 가중치 기울기 캐시 유닛의 판독 기록 조작을 책임지며, 뉴런 캐시 유닛, 가중치 캐시 유닛과 가중치 기울기 캐시 유닛의 판독 기록에 일치성 충돌이 존재하지 않도록 보장하고;
    뉴런 캐시 유닛은 입력 기울기 벡터 데이터 및 상기 2차 연산 모듈에서 계산하여 얻은 출력 기울기 벡터 부분합을 캐싱하고;
    가중치 캐시 유닛은 상기 2차 연산 모듈이 계산 과정에서 필요한 가중치 벡터를 캐싱하고, 각 2차 연산 모듈에 있어서 상기 가중치 벡터는 가중치 행렬 중 상기 2차 연산 모듈에 대응하는 열이고; 및
    가중치 기울기 캐시 유닛은 상응하는 2차 연산 모듈이 가중치 갱신 과정에서 필요한 가중치 기울기 데이터를 캐싱하고, 각 2차 연산 모듈이 저장하는 가중치 기울기 데이터는 그 저장하는 가중치 벡터와 서로 대응하는 것을 특징으로 하는 인공 신경망 역방향 트레이닝 실행용 장치.
  8. 제6항 또는 제7항에 있어서,
    아직 실행하지 않은 마이크로 명령과 현재 실행 과정에 있는 마이크로 명령의 데이터 간에 종속성이 존재하는지 여부를 판단하고, 만약 존재하지 않으면 상기 마이크로 명령을 즉각 송출하는 것을 허용하고, 그렇지 않은 경우에는 상기 마이크로 명령이 종속된 모든 마이크로 명령이 전부 실행될 때까지 기다린 후 상기 마이크로 명령이 송출되는 것을 허용하는 방식을 통하여 판독 기록에 일치성 충돌이 존재하지 않도록 보장하는 것을 특징으로 하는 인공 신경망 역방향 트레이닝 실행용 장치.
  9. 제1항 내지 제7항 중 어느 한 항의 장치를 사용하여 단층 인공 신경망 역방향 트레이닝을 실행하는 방법에 있어서,
    직접 메모리 엑세스 유닛은 외부 주소 공간에서 상기 단층 인공 신경망 역방향 트레이닝과 관련된 모든 명령을 판독하며, 이를 명령 캐시 유닛 내에 캐싱하는 단계;
    직접 메모리 엑세스 유닛은 외부 주소 공간에서 1차 연산 모듈이 필요하는 모든 데이터를 1차 연산 모듈의 뉴런 캐시 유닛까지 판독하며, 상기 데이터에는 입력 기울기 벡터, 및 이전 정방향 연산 시의 활성 함수 미분값과 입력 뉴런이 포함되는 단계;
    직접 메모리 엑세스 유닛은 외부 주소 공간에서 2차 연산 모듈에 필요하는 모든 가중치 데이터와 가중치 기울기 데이터를 판독하고, 각각 상응하는 2차 연산 모듈의 가중치 캐시 유닛과 가중치 기울기 캐시 유닛에 저장하는 단계;
    1차 연산 모듈과 2차 연산 모듈에서 각자 중의 연산 유닛은 디코딩한 마이크로 명령 내의 파라미터에 의거하여 상기 연산 유닛 내부 레지스터의 값을 배치하며, 상기 파라미터에는 상기 층 신경망 계산에 필요한 각종 상수, 본 층 계산의 정밀도 설정, 가중치 갱신 시의 학습률 등이 포함되는 단계;
    1차 연산 모듈이 H 트리 모듈을 통하여 입력 기울기 벡터와 정방향 연산 시의 입력 뉴런을 각 2차 연산 모듈로 전송하고, 상기 입력 기울기 벡터와 정방향 연산 시의 입력 뉴런은 2차 연산 모듈의 뉴런 캐시 유닛에 저장하는 단계;
    2차 연산 모듈의 연산 유닛이 가중치 캐시 유닛에서 가중치 벡터를 판독하여 가중치 벡터와 입력 기울기 벡터의 벡터 곱 스칼라 연산을 완료하고, 출력 벡터 부분합은 H 트리 모듈을 통하여 반환하고, 또한 2차 연산 모듈은 입력 기울기 벡터와 입력 뉴런을 곱하여 가중치 기울기를 얻고 가중치 기울기 캐시 유닛에 저장하고, 여기에서 가중치 벡터는 상기 2차 연산 모듈에서 저장하는 가중치 행렬의 부분열인 단계;
    H 트리 모듈에 있어서, 각 2차 연산 모듈이 반환하는 출력 기울기 부분합이 단계적으로 2개씩 더해져 완전한 출력 기울기 벡터를 얻는 단계;
    1차 연산 모듈은 H 트리 모듈의 반환 값을 획득하고, 뉴런 캐시 유닛에서 정방향 연산 시의 활성 함수 미분값을 판독하고, 미분값에 반환한 출력 기울기 벡터를 곱하여 다음 층 역방향 트레이닝의 입력 기울기 벡터를 획득하고, 이를 뉴런 캐시 유닛에 기록하는 단계;
    2차 연산 모듈이 가중치 캐시 유닛에서 가중치 w를 판독하고, 가중치 기울기 캐시 유닛에서 이번의 가중치 기울기 dw와 이전 가중치 갱신에 사용한 가중치 기울기 dw’를 판독하고, 가중치 w를 갱신하는 단계; 및
    직접 메모리 엑세스 유닛은 뉴런 캐시 유닛 중의 출력 기울기 벡터를 외부 주소 공간 지정 주소에 저장하는 단계를 포함하는 것을 특징으로 하는 단층 인공 신경망 역방향 트레이닝을 실행하는 방법.
  10. 다층 인공 신경망 역방향 트레이닝 실행용 방법에 있어서,
    각 한 층에 대하여 청구항 9의 방법을 실행하는 단계를 포함하고,
    이전 층 인공 신경망 실행 완료 후, 1차 연산 모듈 중의 계산한 다음 층 트레이닝의 입력 기울기 벡터를 사용하고, 상기 다음 층에 대하여 청구항 9의 방법을 다시 실행하는 것을 특징으로 하는 다층 인공 신경망 역방향 트레이닝 실행용 방법.
KR1020187015433A 2016-01-20 2016-04-01 인공 신경망 역방향 트레이닝 실행용 장치와 방법 KR102175044B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
CN201610039032.1A CN106991478B (zh) 2016-01-20 2016-01-20 用于执行人工神经网络反向训练的装置和方法
CN201610039032.1 2016-01-20
PCT/CN2016/078279 WO2017124641A1 (zh) 2016-01-20 2016-04-01 用于执行人工神经网络反向训练的装置和方法

Publications (2)

Publication Number Publication Date
KR20180102058A true KR20180102058A (ko) 2018-09-14
KR102175044B1 KR102175044B1 (ko) 2020-11-05

Family

ID=59361370

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020187015433A KR102175044B1 (ko) 2016-01-20 2016-04-01 인공 신경망 역방향 트레이닝 실행용 장치와 방법

Country Status (5)

Country Link
US (2) US10713567B2 (ko)
EP (2) EP3940606A1 (ko)
KR (1) KR102175044B1 (ko)
CN (3) CN106991478B (ko)
WO (1) WO2017124641A1 (ko)

Families Citing this family (43)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106991478B (zh) * 2016-01-20 2020-05-08 中科寒武纪科技股份有限公司 用于执行人工神经网络反向训练的装置和方法
CN109376861B (zh) * 2016-04-29 2020-04-24 中科寒武纪科技股份有限公司 一种用于执行全连接层神经网络训练的装置和方法
CN107578014B (zh) 2017-09-06 2020-11-03 上海寒武纪信息科技有限公司 信息处理装置及方法
EP3660739A1 (en) 2017-07-05 2020-06-03 Shanghai Cambricon Information Technology Co., Ltd Data processing apparatus and method
US20200110635A1 (en) 2017-07-05 2020-04-09 Shanghai Cambricon Information Technology Co., Ltd. Data processing apparatus and method
CN109583577B (zh) 2017-09-29 2021-04-23 上海寒武纪信息科技有限公司 运算装置及方法
CN110245751B (zh) 2017-08-31 2020-10-09 中科寒武纪科技股份有限公司 一种gemm运算方法及装置
US11437032B2 (en) 2017-09-29 2022-09-06 Shanghai Cambricon Information Technology Co., Ltd Image processing apparatus and method
CN107748914A (zh) * 2017-10-19 2018-03-02 珠海格力电器股份有限公司 人工神经网络运算电路
CN107833176A (zh) * 2017-10-30 2018-03-23 上海寒武纪信息科技有限公司 一种信息处理方法及相关产品
CN109961138B (zh) * 2017-12-14 2020-04-14 中科寒武纪科技股份有限公司 神经网络训练方法及相关产品
WO2019114842A1 (zh) 2017-12-14 2019-06-20 北京中科寒武纪科技有限公司 一种集成电路芯片装置
CN109978148B (zh) * 2017-12-28 2020-06-23 中科寒武纪科技股份有限公司 集成电路芯片装置及相关产品
CN109993276B (zh) * 2017-12-29 2021-10-26 中科寒武纪科技股份有限公司 用于执行人工神经网络反向训练的装置和方法
US11373088B2 (en) * 2017-12-30 2022-06-28 Intel Corporation Machine learning accelerator mechanism
CN110163334B (zh) * 2018-02-11 2020-10-09 上海寒武纪信息科技有限公司 集成电路芯片装置及相关产品
US11630666B2 (en) 2018-02-13 2023-04-18 Shanghai Cambricon Information Technology Co., Ltd Computing device and method
US11397579B2 (en) 2018-02-13 2022-07-26 Shanghai Cambricon Information Technology Co., Ltd Computing device and method
EP3651072B1 (en) * 2018-02-13 2021-10-27 Shanghai Cambricon Information Technology Co., Ltd Computation device and method
CN116991225A (zh) 2018-02-14 2023-11-03 上海寒武纪信息科技有限公司 处理器的控制装置、方法及设备
CN110197268B (zh) * 2018-02-27 2020-08-04 上海寒武纪信息科技有限公司 集成电路芯片装置及相关产品
EP3624020A4 (en) 2018-05-18 2021-05-05 Shanghai Cambricon Information Technology Co., Ltd CALCULATION PROCEDURES AND RELATED PRODUCTS
JP7053891B2 (ja) 2018-06-27 2022-04-12 シャンハイ カンブリコン インフォメーション テクノロジー カンパニー リミテッド オンチップコードのブレークポイントによるデバッグ方法、オンチッププロセッサ及びブレークポイントによるチップデバッグシステム
KR102519467B1 (ko) * 2018-08-28 2023-04-06 캠브리콘 테크놀로지스 코퍼레이션 리미티드 데이터 전처리 방법, 장치, 컴퓨터 설비 및 저장 매체
US20210098001A1 (en) 2018-09-13 2021-04-01 Shanghai Cambricon Information Technology Co., Ltd. Information processing method and terminal device
US11703939B2 (en) 2018-09-28 2023-07-18 Shanghai Cambricon Information Technology Co., Ltd Signal processing device and related products
CN111045726B (zh) * 2018-10-12 2022-04-15 上海寒武纪信息科技有限公司 支持编码、解码的深度学习处理装置及方法
CN111368986B (zh) * 2018-12-25 2023-03-10 上海寒武纪信息科技有限公司 一种神经网络计算装置和方法
CN111367567B (zh) * 2018-12-25 2023-03-07 上海寒武纪信息科技有限公司 一种神经网络计算装置和方法
CN111368967B (zh) * 2018-12-25 2023-04-07 上海寒武纪信息科技有限公司 一种神经网络计算装置和方法
CN111383637A (zh) 2018-12-28 2020-07-07 上海寒武纪信息科技有限公司 信号处理装置、信号处理方法及相关产品
CN109919313B (zh) * 2019-01-31 2021-06-08 华为技术有限公司 一种梯度传输的方法及分布式训练系统
CN111832738B (zh) 2019-04-18 2024-01-09 中科寒武纪科技股份有限公司 一种数据处理方法及相关产品
US20200334522A1 (en) 2019-04-18 2020-10-22 Cambricon Technologies Corporation Limited Data processing method and related products
US11256624B2 (en) 2019-05-28 2022-02-22 Micron Technology, Inc. Intelligent content migration with borrowed memory
US11100007B2 (en) 2019-05-28 2021-08-24 Micron Technology, Inc. Memory management unit (MMU) for accessing borrowed memory
US11438414B2 (en) 2019-05-28 2022-09-06 Micron Technology, Inc. Inter operating system memory services over communication network connections
US11334387B2 (en) 2019-05-28 2022-05-17 Micron Technology, Inc. Throttle memory as a service based on connectivity bandwidth
US11061819B2 (en) 2019-05-28 2021-07-13 Micron Technology, Inc. Distributed computing based on memory as a service
US11169930B2 (en) 2019-05-28 2021-11-09 Micron Technology, Inc. Fine grain data migration to or from borrowed memory
US11676028B2 (en) 2019-06-12 2023-06-13 Shanghai Cambricon Information Technology Co., Ltd Neural network quantization parameter determination method and related products
CN112085183B (zh) 2019-06-12 2024-04-02 上海寒武纪信息科技有限公司 一种神经网络运算方法及装置以及相关产品
US11526761B2 (en) * 2019-08-24 2022-12-13 Microsoft Technology Licensing, Llc Neural network training with decreased memory consumption and processor utilization

Family Cites Families (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4912654A (en) * 1988-12-14 1990-03-27 Government Systems Corporation Gte Neural networks learning method
US5517596A (en) * 1991-05-17 1996-05-14 International Business Machines Corporation Learning machine synapse processor system apparatus
US5226092A (en) * 1991-06-28 1993-07-06 Digital Equipment Corporation Method and apparatus for learning in a neural network
CN1168328C (zh) * 2002-02-07 2004-09-22 大唐移动通信设备有限公司 一种适用于软件无线电技术实现的迭代运算结构及方法
US7747070B2 (en) * 2005-08-31 2010-06-29 Microsoft Corporation Training convolutional neural networks on graphics processing units
CN101833691A (zh) * 2010-03-30 2010-09-15 西安理工大学 一种基于fpga的最小二乘支持向量机串行结构实现方法
CN101930561A (zh) * 2010-05-21 2010-12-29 电子科技大学 一种基于N-Gram分词模型的反向神经网络垃圾邮件过滤装置
CN102004446A (zh) * 2010-11-25 2011-04-06 福建师范大学 具有多层结构的bp神经元自适应方法
CN103996069B (zh) * 2013-02-20 2018-04-03 百度在线网络技术(北京)有限公司 一种基于多gpu的bpnn训练方法和装置
CN105095833B (zh) * 2014-05-08 2019-03-15 中国科学院声学研究所 用于人脸识别的网络构建方法、识别方法及系统
CN104036451B (zh) * 2014-06-20 2018-12-11 深圳市腾讯计算机系统有限公司 基于多图形处理器的模型并行处理方法及装置
CN104463324A (zh) * 2014-11-21 2015-03-25 长沙马沙电子科技有限公司 一种基于大规模高性能集群的卷积神经网络并行处理方法
CN104899641B (zh) * 2015-05-25 2018-07-13 杭州朗和科技有限公司 深度神经网络学习方法、处理器和深度神经网络学习系统
CN104899561A (zh) * 2015-05-27 2015-09-09 华南理工大学 一种并行化的人体行为识别方法
CN105095966B (zh) * 2015-07-16 2018-08-21 北京灵汐科技有限公司 人工神经网络和脉冲神经网络的混合计算系统
CN105095962B (zh) * 2015-07-27 2017-07-28 中国汽车工程研究院股份有限公司 一种基于bp人工神经网络的材料动态力学性能预测方法
CN106991478B (zh) * 2016-01-20 2020-05-08 中科寒武纪科技股份有限公司 用于执行人工神经网络反向训练的装置和方法
CN109242094B (zh) * 2016-01-20 2020-05-08 中科寒武纪科技股份有限公司 用于执行人工神经网络正向运算的装置和方法
CN106991477B (zh) * 2016-01-20 2020-08-14 中科寒武纪科技股份有限公司 一种人工神经网络压缩编码装置和方法
CN106126481B (zh) * 2016-06-29 2019-04-12 华为技术有限公司 一种计算系统和电子设备

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
Chen, Tianshi, et al. A high-throughput neural network accelerator. IEEE Micro 35.3. 2015.* *
Domingos, Pedro O., Fernando M. Silva, and Horácio C. Neto. An efficient and scalable architecture for neural networks with backpropagation learning. IEEE. 2005.* *

Also Published As

Publication number Publication date
CN106991478B (zh) 2020-05-08
US10713568B2 (en) 2020-07-14
WO2017124641A1 (zh) 2017-07-27
EP3407268A1 (en) 2018-11-28
KR102175044B1 (ko) 2020-11-05
CN110135581A (zh) 2019-08-16
US20180322392A1 (en) 2018-11-08
EP3940606A1 (en) 2022-01-19
US10713567B2 (en) 2020-07-14
CN106991478A (zh) 2017-07-28
EP3407268A4 (en) 2019-08-28
CN110135581B (zh) 2020-11-06
US20190294971A1 (en) 2019-09-26
CN111353588B (zh) 2024-03-05
CN111353588A (zh) 2020-06-30

Similar Documents

Publication Publication Date Title
KR20180102058A (ko) 인공 신경망 역방향 트레이닝 실행용 장치와 방법
KR102203746B1 (ko) 인공 신경망 정방향 연산 실행용 장치와 방법
CN109284825B (zh) 用于执行lstm运算的装置和方法
US10592241B2 (en) Apparatus and methods for matrix multiplication
KR102470264B1 (ko) 완전연결층 신경망 역방향 트레이닝 실행용 장치와 방법
US11574195B2 (en) Operation method
KR102486030B1 (ko) 완전연결층 신경망 정방향 연산 실행용 장치와 방법
CN111860812B (zh) 一种用于执行卷积神经网络训练的装置和方法
KR20190003610A (ko) 콘볼루션 신경망 정방향 연산 실행용 장치와 방법
EP3451239A1 (en) Apparatus and method for executing recurrent neural network and lstm computations
JP2021506032A (ja) オンチップの計算ネットワーク
KR20240025827A (ko) Imc(in memory computing) 프로세서 및 imc 프로세서의 동작 방법

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E90F Notification of reason for final refusal
E701 Decision to grant or registration of patent right