KR20190098033A - 연산 장치, 연산 실행 디바이스 및 연산 실행 방법 - Google Patents

연산 장치, 연산 실행 디바이스 및 연산 실행 방법 Download PDF

Info

Publication number
KR20190098033A
KR20190098033A KR1020180157395A KR20180157395A KR20190098033A KR 20190098033 A KR20190098033 A KR 20190098033A KR 1020180157395 A KR1020180157395 A KR 1020180157395A KR 20180157395 A KR20180157395 A KR 20180157395A KR 20190098033 A KR20190098033 A KR 20190098033A
Authority
KR
South Korea
Prior art keywords
module
calculation
computing device
computing
convolution
Prior art date
Application number
KR1020180157395A
Other languages
English (en)
Other versions
KR102326918B1 (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 KR20190098033A publication Critical patent/KR20190098033A/ko
Application granted granted Critical
Publication of KR102326918B1 publication Critical patent/KR102326918B1/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/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
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • G06F17/10Complex mathematical operations
    • 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
    • G06N3/0454
    • 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

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)
  • Data Mining & Analysis (AREA)
  • Mathematical Physics (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Computational Linguistics (AREA)
  • Computing Systems (AREA)
  • Molecular Biology (AREA)
  • General Health & Medical Sciences (AREA)
  • Evolutionary Computation (AREA)
  • Artificial Intelligence (AREA)
  • Neurology (AREA)
  • Algebra (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • Databases & Information Systems (AREA)
  • Image Analysis (AREA)
  • Stored Programmes (AREA)
  • Complex Calculations (AREA)

Abstract

이 개시는 연산 장치, 연산 실행 디바이스 및 연산 실행 방법을 제공한다. 연산 실행 디바이스는: 제어기, 메모리 및 연산 장치를 포함하고; 메모리는 사전 설정된 단일 명령 세트를 저장하도록 구성되고; 단일 명령 세트는 연산 장치가 멀티레이어 계산을 수행할 때 레이어당 계산에 대응하는 단일 명령을 포함하며; 단일 명령 각각은 모듈 선택 파라미터 및 모듈 연산 파라미터를 포함하고; 제어기는, 메모리로부터, 연산 장치에 의해 요구되는 바에 따라 현재 레이어 계산에 대응하는 현재 단일 명령을 판독하고, 현재 단일 명령 내에 포함된 모듈 선택 파라미터 및 모듈 연산 파라미터를 파싱하여, 현재 단일 명령에 대응하는 연산 경로를 결정하도록 구성되고; 연산 장치는 제어기의 제어 하에 현재 단일 명령에 대응하는 연산 경로와 연결되고, 현재 단일 명령에 대응하는 연산 경로를 사용하여 현재 레이어 계산 내에서 연산 장치의 입력 데이터에 대한 연산을 수행하도록 구성된다. 이 개시는 신경망 구현에서 하드웨어 자원의 이용률을 효율적으로 개선할 수 있다.

Description

연산 장치, 연산 실행 디바이스 및 연산 실행 방법{OPERATION APPARATUS, OPERATION EXECUTION DEVICE AND OPERATION EXECUTION METHOD}
본 개시는 인공 지능 기술 분야, 더 구체적으로는, 연산 장치, 연산 실행 디바이스 및 연산 실행 방법에 관한 것이다.
영상 인식, 음성 인식 및 텍스트 인식과 같은 분야에서, 신경망은 그 강력한 컴퓨팅 능력으로 널리 사용되고 있으며, 신경망은 캡쳐 및 얼굴 인식기와 같은 영상 처리 장치에서 영상을 처리하는 데 사용된다.
신경망을 제품에 적용하는 경우, 신경망의 연산은 FPGA(Field Programmable Gate Array) 또는 ASIC(Application Specific Integrated Circuit)과 같은 하드웨어의 도움으로 구현되어야 한다. 신경망은 컨벌루션(convolution), 풀링(pooling) 및 풀 조인(full join)과 같은 복수의 연산 레이어를 수반하므로, 각 연산 레이어는 동일하거나 상이한 컴퓨팅 로직 하에서의 네트워크 구조에 대응하며; 상이한 네트워크 구조를 위해 상이한 하드웨어 구조가 설계되어야 하고, 이러한 신경망의 구현은 하드웨어 자원을 매우 낭비하기 쉽다.
이러한 관점에서, 본 개시의 목적은 신경망을 구현하는 하드웨어 자원이 낭비되기 쉽다는 기술적 문제점에 대한 개선을 이루고, 하드웨어 자원의 이용률을 효율적으로 개선하는 연산 장치, 연산 실행 디바이스 및 연산 실행 방법을 제공하는 것이다.
위의 목적을 달성하기 위하여, 본 개시의 실시예에 의해 채택된 기술적 해결책은 다음과 같다:
제1 양상에서, 본 개시의 실시예는 연산 장치를 제공하며, 연산 장치는 다중화 신경망 아키텍처를 구현하도록 구성되고, 연산 장치는 복수의 기능 연산 모듈을 포함하고, 기능 연산 모듈은, 콘캣(concat) 모듈, 언풀링(unpooling) 모듈, 컨벌루션(convolution) 모듈 및 양자화(quantizing) 모듈 중 적어도 하나를 포함하며; 복수의 기능 연산 모듈은 복수의 연산 경로를 형성하도록 조합하여 연결 가능하고, 연산 경로의 각각은 컴퓨팅 로직을 구현하기 위하여 사용되며; 컴퓨팅 로직은: 컨벌루션 연산, 디컨벌루션 연산, 풀링 연산, 양자화 연산 및 풀 조인(full join) 연산 중 적어도 하나를 포함한다.
또한, 기능 연산 모듈 각각은 하나 이상의 계산 유형에 대응하고; 계산 유형은 콘캣 연산, 언풀링 연산, 컨벌루션 연산, 풀링 연산, 양자화 연산, 비선형 연산 또는 풀 조인 연산을 포함한다.
또한, 모든 연산 경로의 각각은 적어도 콘캣 모듈 및 컨벌루션 모듈을 포함한다.
또한, 제1 연산 경로는 언풀링 모듈을 더 포함하고, 컨벌루션 모듈이 언풀링 모듈 뒤에 연결되어, 디컨벌루션 연산을 구현한다.
또한, 제2 연산 경로에서, 컨벌루션 모듈은 1*1 컨벌루션 커널 크기를 갖는 컨벌루션 레이어를 포함하여 풀 조인 연산을 구현한다.
또한, 제3 연산 경로는 양자화 모듈을 더 포함하고, 양자화 모듈은 제3 연산 경로의 마지막에 배치되어, 양자화 연산을 구현한다.
또한, 제4 연산 경로는 콘캣 모듈 및 컨벌루션 모듈만을 포함하여, 컨벌루션 연산을 구현한다.
또한, 컨벌루션 모듈은 스트라이드를 갖는 컨벌루션 레이어를 포함하고; 컨벌루션 레이어의 스트라이드가 1일 때 컨벌루션 모듈은 컨벌루션 연산을 구현하기 위하여 사용되고, 컨벌루션 레이어의 스트라이드가 1이 아닐 때 컨벌루션 모듈은 컨벌루션 연산 및 풀링 연산을 구현하기 위하여 사용된다.
또한, 양자화 모듈은 부동 소수점 값을 낮은 비트 값으로 양자화하여 파라미터 압축 및 비선형 연산을 구현한다.
또한, 기능 연산 모듈은 디컨벌루션 모듈, 풀링 모듈 또는 풀 조인 모듈을 더 포함한다.
제2 양상에서, 본 개시의 실시예는 제어기, 메모리 및 제1 양상에 따른 연산 장치를 포함하는 연산 실행 디바이스를 더 제공하고, 메모리는 사전 설정된 단일 명령 세트를 저장하도록 구성되고; 단일 명령 세트는 연산 장치가 멀티레이어 계산을 수행할 때 레이어당 계산에 대응하는 단일 명령을 포함하며; 단일 명령 각각은 모듈 선택 파라미터 및 모듈 연산 파라미터를 포함하고; 제어기는, 메모리로부터, 연산 장치에 의해 요구되는 바에 따라 현재 레이어 계산에 대응하는 현재 단일 명령을 판독하고, 현재 단일 명령 내에 포함된 모듈 선택 파라미터 및 모듈 연산 파라미터를 파싱하여, 현재 단일 명령에 대응하는 연산 경로를 결정하도록 구성되고; 제어기는 연산 장치가 현재 단일 명령에 대응하는 연산 경로와 연결되도록 제어 신호를 연산 장치로 전송하도록 더 구성되며; 연산 장치는 제어기의 제어 하에 현재 단일 명령에 대응하는 연산 경로와 연결되고, 현재 단일 명령에 대응하는 연산 경로를 사용하여 현재 레이어 계산 내에서 연산 장치의 입력 데이터에 대한 연산을 수행하고, 현재 레이어 계산의 출력 데이터를 생성하도록 구성되며; 현재 레이어 계산의 입력 데이터는 이전 레이어 계산으로부터 연산 장치에 의해 획득된 출력 데이터이고; 현재 레이어가 제1 레이어일 때, 제1 레이어 계산의 입력 데이터는 처리될 영상이다.
또한, 단일 명령은 파라미터 목록을 가지며, 파라미터 목록은 모듈 선택 파라미터 및 모듈 연산 파라미터를 하나씩 나타낸다.
제3 양상에서, 본 개시의 실시예는 연산 실행 방법을 제공하며, 방법은 제2 양상의 연산 실행 디바이스에 적용되고, 방법은 연산 실행 디바이스의 제어기에 의해 실행되며, 방법은: 연산 장치의 현재 레이어 계산이 시작될 때, 현재 레이어 계산에 대응하는 현재 단일 명령을 판독하는 것; 현재 단일 명령 내의 모듈 선택 파라미터 및 모듈 연산 파라미터를 파싱하고, 현재 레이어 계산에 의해 요구되는 기능 연산 모듈 및 기능 연산 모듈에 대응하는 모듈 연산 파라미터를 결정하는 것; 현재 레이어 계산에 의해 요구되는 기능 연산 모듈 및 기능 연산 모듈에 대응하는 모듈 연산 파라미터에 기반하여 연산 장치 내의 연산 경로를 결정하는 것-연산 경로는 현재 레이어 계산에 의해 요구되는 기능 연산 모듈을 연결함에 의해 구성됨; 연산 장치가 결정된 연산 경로를 사용하여 입력 데이터에 대한 연산을 수행하여 현재 레이어 계산의 출력 데이터를 생성하도록 현재 레이어 계산의 입력 데이터를 연산 장치에 입력하는 것-현재 레이어 계산의 입력 데이터는 이전 레이어 계산으로부터 연산 장치에 의해 획득된 출력 데이터이며; 현재 레이어가 제1 레이어일 때, 제1 레이어 계산의 입력 데이터는 처리될 영상임-을 포함한다.
제4 양상에서, 본 개시의 실시예는 컴퓨터 프로그램을 저장하는 컴퓨터 판독 가능 저장 매체를 제공하며, 프로세서에 의해 컴퓨터 프로그램이 실행될 때 제3 양상의 방법의 단계가 실행된다.
본 개시의 실시예는 다중화 신경망 아키텍처를 구현하는 데 사용될 수 있는 연산 장치를 제공하며, 연산 장치는 콘캣 모듈, 언풀링 모듈, 컨벌루션 모듈 및 양자화 모듈과 같은 복수의 기능 연산 모듈을 포함하고, 복수의 기능 연산 모듈은 복수의 연산 경로를 형성하도록 유연한 조합으로 연결 가능하여, 대응하는 컴퓨팅 로직을 구현한다. 실시예에에서 제공되는 이러한 연산 장치는 각 네트워크 구조에 대해 별도로 대응하는 하드웨어 구조를 구성할 필요가 없으며, 이러한 다중 기능 다중화 연산 장치는 하드웨어 자원을 매우 효율적으로 절약한다.
연산 장치에 기초하여, 본 개시의 실시예는 연산 실행 디바이스 및 방법을 더 제공하며, 제어기는, 연산 장치에 의해 요구되는 바에 따라 현재 레이어 계산에 대응하는 현재 단일 명령을 파싱하여 연산 장치가 현재 단일 명령에 대응하는 연산 경로와 연결되어 현재 레이어 계산을 수행하도록 제어할 수 있다. 이 방식은 동일한 연산 장치가 단일 명령에 기반하여 상이한 네트워크 구조를 형성하도록 컴파일하여, 신경망의 모든 레이어의 논리적 계산을 수행한다. 상이한 네트워크 구조를 위한 대응하는 하드웨어를 별도로 설정할 필요가 없어, 하드웨어 자원을 크게 절약하고 하드웨어 자원의 이용률을 효율적으로 개선한다.
본 개시의 다른 특징 및 이점은 다음의 설명에서 제시될 것이며, 또는 특징 및 이점의 일부는 명세서로부터 유예되거나 이로부터 의심의 여지없이 결정되거나 또는 본 개시의 위 기술을 구현함에 의해 습득될 수 있다.
본 개시의 상술한 목적, 특징 및 이점을 더욱 명확하고 이해하기 쉽게 하기 위하여, 바람직한 실시예가 아래에서 도면과 함께 설명되어, 이하의 상세한 설명을 제공할 것이다.
본 개시의 특정한 구현 또는 종래 기술의 기술적 해결책을 더욱 명확하게 설명하기 위해, 특정한 구현 또는 종래 기술을 설명하기 위해 필요한 도면이 이하에서 간단히 소개되며, 자명하게, 다음의 도면은 본 발명의 구현의 일부이고, 당업자에게는 창조적인 노력을 기울이지 않고 이들 도면을 기초로 다른 도면을 얻는 것이 가능하다.
도 1은 본 개시의 일 실시예에 의해 제공되는 전자 디바이스의 개략적인 구조도이다.
도 2는 본 개시의 일 실시예에 의해 제공되는 연산 장치의 개략적인 구조도이다.
도 3은 본 개시의 일 실시예에 의해 제공되는 양자화 연산의 개략도이다.
도 4는 본 개시의 일 실시예에 의해 제공되는 연산 실행 장치의 개략적인 구조도이다.
도 5는 본 개시의 일 실시예에 따른 컨벌루션 연산의 연산 실행 디바이스의 개략도이다.
도 6은 본 개시의 일 실시예에 따른 연산 실행 디바이스의 디컨벌루션 연산의 개략도이다.
도 7은 본 발명의 일 실시예에 따른 연산 실행 디바이스의 풀 조인 연산의 개략도이다.
도 8은 본 개시의 일 실시예에 따른 연산 실행 디바이스의 양자화 연산의 개략도이다.
도 9는 본 개시의 일 실시예에 따른 연산 실행 방법의 흐름도이다.
본 개시의 목적, 기술적 해결책 및 이점을 더욱 명확하고 분명하게 하기 위하여, 이하에서, 본 개시의 기술적 해결책이 도면과 조합하여 명확하고 포괄적으로 기술될 것이며, 자명하게, 이들 기술되는 실시예는 본 개시의 모든 실시예가 아니라 실시예의 일부이다. 창의적인 노력을 기울이지 않고 본 개시의 실시예에 기초하여 당업자에 의해 획득된 다른 모든 실시예는 본 개시의 보호 범위에 속한다.
종래 기술에서 신경망을 구현하기 위하여 하드웨어가 채택될 때, 상이한 신경망 구조에 대해 별도로 하드웨어가 설정되어야 함을 고려하면, 많은 하드웨어 자원이 요구되고, 계산에 수반되는 네트워크 구조 하의 하드웨어만이 사용되고, 계산에 수반되지 않는 네트워크 구조에 대응하는 하드웨어는 유휴이므로, 낮은 하드웨어 이용률을 가져온다. 이 문제를 개선하기 위하여, 본 개시의 실시예에서 연산 장치, 연산 실행 디바이스 및 연산 실행 방법이 제공되며, 이 기술은 신경망의 하드웨어 구현에 적용될 수 있고, 본 개시의 실시예가 이하에서 상세하게 설명될 것이다.
제1 실시예
먼저, 본 개시의 일 실시예에 따른 연산 장치, 연산 실행 디바이스 및 연산 실행 방법을 구현하는 예시적인 전자 디바이스(100)가 도 1을 참조하여 기술된다.
도 1은 전자 디바이스의 개략적인 구조도를 나타내며, 전자 디바이스(100)는 하나 이상의 프로세서(102), 하나 이상의 저장 디바이스(104), 입력 디바이스(106), 출력 디바이스(108) 및 영상 취득 디바이스(110)를 포함하며, 이들 구성요소는 버스 시스템(112) 및/또는 다른 형태의 연결 메커니즘(미도시)를 통해 서로 연결된다. 도 1에 나타난 전자 디바이스(100)의 구성요소 및 구조는 단지 예시적일 뿐, 제한적이 아니며, 전자 디바이스는 필요에 따라 다른 구성요소 및 구조를 가질 수 있음을 유의한다.
프로세서(102)는 디지털 신호 프로세서(Digital Signal Processor; DSP), 현장 프로그램 가능 게이트 어레이(Field Programmable Gate Array; FPGA), 프로그램 가능 로직 어레이(Programmable Logic Array; PLA) 및 주문형 집적 회로(Application Specific Integrated Circuit; ASIC) 중 적어도 하나를 사용하여 구현될 수 있으며, 프로세서(102)는 중앙 처리 유닛(Central Processing Unit; CPU) 또는 데이터 처리 성능 및/또는 명령 실행 성능을 갖는 다른 형태의 처리 유닛 중 하나 이상의 조합일 수 있으며, 전자 디바이스(100)의 다른 구성요소를 제어하여 원하는 기능을 수행하도록 할 수 있다.
저장 디바이스(104)는 하나 이상의 컴퓨터 프로그램 제품을 포함할 수 있으며, 상기 컴퓨터 프로그램 제품은 휘발성 메모리 및/또는 비휘발성 메모리와 같은 다양한 형태의 컴퓨터 판독 가능 저장 매체를 포함할 수 있다. 휘발성 메모리는, 예를 들어, 임의 접근 메모리(Random Access Memory; RAM) 및/또는 캐시 등을 포함할 수 있다. 비휘발성 메모리는, 예를 들어, 읽기 전용 메모리(Read Only Memory; ROM), 하드 디스크, 플래시 메모리 등을 포함할 수 있다. 하나 이상의 컴퓨터 프로그램 명령이 컴퓨터 판독 가능 저장 매체에 저장될 수 있으며, 프로세서(102)는 프로그램 명령을 실행하여 이하에서 기술되는 본 개시의 실시예에서 (프로세서에 의해 구현되는) 클라이언트 기능 및/또는 다른 원하는 기능을 구현할 수 있다. 다양한 응용 프로그램 및 응용 프로그램에 의해 사용 및/또는 생성되는 다양한 데이터 등과 같은 다양한 데이터가 또한 컴퓨터 판독 가능 저장 매체에 저장될 수 있다.
입력 디바이스(106)는 명령을 입력하기 위하여 사용자가 사용하는 디바이스일 수 있으며, 키보드, 마우스, 마이크, 터치 스크린 등의 하나 이상을 포함할 수 있다.
출력 디바이스(108)는 외부(예를 들어, 사용자)로 다양한 유형의 정보(예를 들어, 영상 또는 음향)을 출력할 수 있으며, 디스플레이, 스피커 등의 하나 이상을 포함할 수 있다.
영상 취득 디바이스(110)는 사용자가 원하는 영상(예를 들어, 사진, 비디오, 등)을 캡처하고 캡처된 영상을 다른 구성요소에 의해 사용하기 위해 저장 디바이스(104)에 저장할 수 있다.
실례로, 본 개시의 일 실시예에 따른 연산 장치, 연산 실행 디바이스 및 연산 실행 방법을 구현하는 예시적인 전자 디바이스는 비디오 카메라, 캡처기, 얼굴 인식 단말기, 컴퓨터 등과 같은 스마트 단말기로 구현될 수 있다.
제2 실시예
이 실시예는 연산 장치를 제공하며, 연산 장치는 다중화 신경망 아키텍처를 구현하는 데 사용될 수 있고, 다중화 신경망은 다중 기능을 가지고 다양한 컴퓨팅 로직을 구현한다. 연산 장치는 복수의 기능 연산 모듈을 포함하며, 기능 연산 모듈은: 콘캣 모듈, 언풀링 모듈, 컨벌루션 모듈 및 양자화 모듈 중 적어도 하나를 포함할 수 있다. 즉, 연산 장치는 콘캣 모듈, 언풀링 모듈, 컨벌루션 모듈 및 양자화 모듈 중 복수의 모듈로 구성될 수 있고, 모듈의 조합 방식 및 모듈 사이의 연결 관계는 다양하며, 특정한 실제적 요구에 따라 유연하게 설정될 수 있다.
복수의 기능 연산 모듈은 복수의 연산 경로를 형성하도록 조합하여 연결될 수 있으며; 연산 경로의 각각은 컴퓨팅 로직을 구현하기 위해 사용되고; 컴퓨팅 로직은 컨벌루션 연산, 디컨벌루션 연산, 풀링 연산, 양자화 연산 및 풀 조인 연산 중 적어도 하나를 포함한다. 실제 적용에서, 동일한 기능 모듈로 구성된 복수의 연산 채널이 상이한 모듈 연산 파라미터 및/또는 상이한 모듈 연결 관계로 인하여 상이한 연산 효과를 실현할 수 있으면, 이 또한 상이한 연산 경로에 속하는 것으로 간주된다.
본 개시의 실시예에 의해 제공되는 위의 연산 장치는 콘캣 모듈, 언풀링 모듈, 컨벌루션 모듈 및 양자화 모듈과 같은 복수의 기능 연산 모듈을 포함하고, 복수의 기능 연산 모듈은 복수의 연산 경로를 형성하도록 유연하게 조합하여 연결될 수 있어, 대응하는 컴퓨팅 로직을 실현할 수 있다. 연산 장치는 각 네트워크 구조에 대해 별도로 대응하는 하드웨어 구조(특히, 로직 회로를 포함하는 연산 하드웨어 구조, 이하에서는 하드웨어로 지칭함)를 구축할 필요가 없으며, 단지 요구에 따라 연산 경로를 직접 선택하면 되고, 이러한 다중 기능 다중화 연산 장치는 하드웨어 자원을 매우 효과적으로 절약한다.
실제 적용에서, 연산 장치는 FPGA 또는 ASIC과 같은 하드웨어에 의해 구현될 수 있으며, 각 기능 모듈은 대응하는 기능 계산을 구현하기 위하여 가산기 및 승산기와 같은 다양한 로직 회로에 의해 구성될 수 있다. 이해를 위하여, 위의 기능 연산 모듈의 기본적 기능이 이하에서 간단히 기술된다.
콘캣 모듈(또한 콘캣 모듈로도 알려짐)은 채널 연결(concating)에 사용될 수 있으며, 구체적으로, 이는 채널 차원에서 입력 특징 맵의 연결을 구현할 수 있다. 신경망의 입력이 다차원 특징 맵일 때, 콘캣 모듈은 메모리 어드레싱과 같은 연산을 통해 (길이, 폭 및 채널의 3차원을 포함하는 텐서 데이터와 같은) 다차원 텐서 데이터를 찾을 수 있으며, 채널 차원에서 텐서 데이터의 콘캣 연산을 수행하고, 원래 특정한 수의 채널을 갖는 특징 맵이 더 많은 채널을 갖는 특징 맵으로 변환될 수 있어, 네트워크의 연산 성능을 개선한다.
언풀링 모듈(또한 언풀링 모듈로도 알려짐)은 원래 특징 맵을 확장하는 데 사용할 수 있다. 언풀링 모듈은 사전 설정된 언풀링 파라미터에 따라 원래 특징 맵의 길이 및 폭을 확장할 수 있다. 예를 들어, 언풀링 파라미터(언풀링 크기)가 2*2일 때, 언풀링 모듈은 원래 특징 맵의 길이 및 폭을 원래 길이 및 폭의 2배로 확장할 수 있어, 영상의 확장 기능을 구현할 수 있고 또한 상이한 크기의 특징이 콘캣 연산을 거치게 되는 것에 기여할 수 있다.
컨벌루션 모듈(또한 컨벌루션 모듈로도 알려짐)은 특징 매핑을 구현하기 위하여 설정된 컨벌루션 코어에 따라 특징 데이터에 대해 컨벌루션 연산을 수행하는 데 사용된다.
양자화 모듈(또한 양자화 모듈로도 지칭됨)은 (T 임계치 파라미터와 같은) 설정된 양자화 파라미터에 따라 특징 데이터를 양자화하는 데 사용되어, 파라미터의 비트 수를 줄이고, 파라미터의 양을 줄이고, 신경망의 정량적 압축을 구현한다.
물론, 특정한 적용에서, 기능 연산 모듈은 디컨벌루션 모듈, 풀링 모듈, 또는 풀 조인 모듈을 더 포함할 수 있다. 이 중에서, 디컨벌루션 모듈(또한 디컨벌루션 모듈로도 알려짐)은 복원 기능을 위하여 컨벌루션 연산 이후에 특징 맵의 확장을 구현하는 데 사용될 수 있다. 풀링 모듈은 주요 특징을 보존하면서 파라미터를 축소하고, 데이터 차원을 축소하는 데 사용될 수 있으며; 이는 또한 병진 왜곡, 회전 불변, 스케일 불변 등과 같은 데이터의 불변성을 달성할 수 있다. 풀 조인 모듈은 다차원 정보를 통합하고 추출된 특징을 분류하는 데 사용될 수 있다.
이 실시예에서, 각 기능 연산 모듈은 하나 이상의 계산 유형에 대응하며; 계산 유형은 콘캣 연산, 언풀링 연산, 컨벌루션 연산, 풀링 연산, 양자화 연산, 비선형 연산 또는 풀 조인 연산을 포함한다. 특정한 구현에서, 콘캣 연산은 콘캣 모듈을 채택함으로써 구현될 수 있고, 언풀링 연산은 언풀링 모듈을 채택함으로써 구현될 수 있으며, 컨벌루션 연산은 컨벌루션 모듈을 채택함으로써 구현될 수 있다. 풀링 연산은 구현에서 풀링 모듈을 채택함으로써 구현될 수 있으며, 구체적으로, 평균/최대 풀링 연산이 컨벌루션 연산 이후에 수행될 수 있고; 이는 다른 구현에서 컨벌루션 모듈을 채택함으로써 구현될 수 있으며, 구체적으로, 스트라이드를 갖는 컨벌루션 모듈이 풀링 모듈 대신 사용될 수 있고, 컨벌루션+풀링 연산이 풀링 모듈 없이 구현될 수 있다. 양자화 연산은 양자화 모듈을 채택함으로써 구현될 수 있고; 비선형 연산은 구현에서 비선형 활성화 기능을 채택함으로써 구현될 수 있으며, 다른 구현에서 양자화 모듈을 채택함으로써 구현될 수 있고, 구체적으로, 양자화 모듈은 비선형 활성화 기능 대신 부동 소수점 값을 다중 비트 비트 값으로 양자화하는 방식을 채택한다. 풀 조인 연산은 구현에서 풀 조인 모듈을 채택함으로써 구현될 수 있고, 다른 구현에서 1*1 컨벌루션 커널 크기를 갖는 컨벌루션 모듈을 채택함으로써 구현될 수 있다.
연산 장치는 복수의 기능 연산 모듈의 조합을 포함할 수 있다. 구현에서, 도 2에 나타난 연산 장치의 개략적 구조도를 참조할 수 있으며, 이는 다중화 신경망 아키텍처를 개략적으로 나타낸다. 도 2에 나타난 바와 같이, 연산 장치는 콘캣 모듈, 언풀링 모듈, 컨벌루션 모듈 및 양자화 모듈을 포함한다. 다중화 신경망 아키텍처의 계산 프로세스에서, 다중화 신경망 아키텍처는 콘캣 모듈, 언풀링 모듈, 컨벌루션 모듈 및 양자화 모듈과 같은 기능적 모듈을 결합하고 모듈 파라미터를 설정함으로써 다중화 네트워크 구조를 구현할 수 있으며, 각 네트워크 구조는 하나의 연산 경로에 대응하고, 상이한 컴퓨팅 로직이 구현될 수 있다. 도 2는 단지 단순한 예시이며, 기능 연산 모듈의 유형, 수 및 연결 관계가 실제 적용에서 유연하게 설정될 수 있다.
다중 레이어 계산이 다중화 신경망 아키텍처에 의해 수행될 때, 상이한 레이어의 계산에 요구되는 기능 연산 모듈이 상이하다는 점, 즉 컴퓨팅을 위해 상이한 연산 경로가 채택될 수 있어, 상이한 컴퓨팅 로직을 구현하는 것으로 이해될 수 있다.
모든 종류의 신경망 모델이 기본적으로 콘캣 연산 및 컨벌루션 연산을 필요로 하는 점을 고려하여, 일 구현에서, 모든 연산 경로 각각은 적어도 콘캣 모듈 및 컨벌루션 모듈을 포함한다. 이를 기반으로, 이 실시예는 연산 경로의 다음 몇몇 예를 제공한다:
제1 예: 제1 연산 경로는 언풀링 모듈을 더 포함하고, 컨벌루션 모듈이 언풀링 모듈 뒤에 연결되어, 디컨벌루션 연산을 구현한다.
제2 예: 제2 연산 경로에서, 컨벌루션 모듈이 1*1 컨벌루션 커널 크기를 갖는 컨벌루션 레이어를 포함하여 풀 조인 연산을 구현한다.
제3 예: 제3 연산 경로는 양자화 모듈을 더 포함하고, 양자화 모듈이 제3 연산 경로의 마지막에 위치하여, 양자화 연산을 구현한다.
제4 예: 제4 연산 경로는 콘캣 모듈 및 컨벌루션 모듈만을 포함하여, 컨벌루션 연산을 구현한다.
위에서는 전형적인 컴퓨팅 로직을 구현하기 위한 약간의 단순한 연산 경로만이 제안되어 있음을 유의한다. 실제 적용에서, 연산 경로의 선택은 수행될 컴퓨팅 로직 및 다중화 신경망 내에 포함되는 기능 연산 모듈의 유형과 연관되며, 연산 경로의 다양한 구현이 있을 수 있으며, 본원에 기술된 것에 한정되지 않는다.
하드웨어 자원의 이용률을 더욱 향상시키기 위해, 이 실시예에서 제공되는 다중화 신경망 아키텍처는 다음과 같은 방식을 더 채택한다:
제1 방식: 다중화 신경망 아키텍처는 풀링 모듈을 설정할 필요가 없다, 즉, 컨벌루션 모듈 이후에 평균/최대 풀링 모듈이 따라올 필요가 없으며, 대신, 스트라이드를 갖는 컨벌루션이 직접 채택되어 컨벌루션 연산 및 풀링 연산을 동시에 달성하며, 구체적으로 이 실시예에서 제공되는 컨벌루션 모듈은 스트라이드를 갖는 컨벌루션 레이어를 포함하고; 컨벌루션 레이어의 스트라이드가 1일 때, 컨벌루션 연산을 구현하기 위하여 컨벌루션 모듈이 사용되고 컨벌루션 레이어의 스트라이드가 1이 아닐 때, 컨벌루션 연산 및 풀링 연산을 동시에 구현하기 위하여 컨벌루션 모듈이 사용된다. 이 방식은 풀링 모듈을 설정할 필요 없이 컨벌루션 모듈이 다중화될 수 있게 하여, 하드웨어 자원을 절약하고 하드웨어 자원의 이용률을 개선한다.
종래 기술의 신경망은 컨벌루션 연산 이후에 풀링 연산을 수행하여야 하며, 계산을 구현하기 위하여 각 연산이 연속적으로 메모리에 접근하여 데이터를 판독하여야 한다. 이 방식에서, 스트라이드를 갖는 컨벌루션 레이어를 채택함으로써, 컨벌루션 연산 및 풀링 연산이 하나의 컨벌루션 프로세스에서 완료되고, 메모리 접근 및 계산량이 훨씬 더 감소될 수 있으면서 컨벌루션 모듈의 하드웨어 자원의 이용률이 개선된다.
제2 방식: 다중화 신경망 아키텍처는 비선형 활성화 기능을 설정할 필요가 없다, 즉, 이는 별도의 비선형 활성화 연산을 필요로 하지 않으며, 직접 양자화 모듈을 채택함으로써 직접 구현될 수 있다. 구체적으로, 이 실시예에서 제공되는 양자화 모듈은 부동 소수점 값을 낮은 비트 값으로 양자화함으로써 파라미터 압축 및 비선형 연산을 구현할 수 있으며, 낮은 비트 값은 상대적으로 낮은 비트이고, 구체적으로 k-비트로 표현될 수 있으며, k 값은 필요에 따라 유연하게 설정될 수 있고, 즉, 이 실시예에서 제공되는 양자화 모듈은 비선형 활성화 기능 대신 k-비트 양자화를 채택할 수 있다. 일반적인 비선형 기능은 시그모이드(Sigmoid) 함수: 1/((1+e^(-x))), relu 함수: f(x)=max(x,0), 등과 같은 것을 포함하며, 비선형 기능의 도입은 네트워크가 더 많은 일반화 능력을 갖도록 하고, relu 함수를 예로 들면, 신경망의 일부 뉴런 출력을 0으로 만들 수 있어, 네트워크 희박화(network sparsity)를 유발하며, 이는 오버피팅(over-fitting)을 어느 정도 완화시키며, 동시에 실제 뉴런 활성화 모델에 더 가깝다. 전통적인 신경망 모델은 마지막에 추가 비선형 활성화 기능을 도입해야 하지만, 이 방식에서는, 양자화 모듈의 양자화 연산이 신경망의 비선형성을 획득하는 데 직접 사용되고, 네트워크 파라미터를 압축하는 동안 대응하는 비선형 능력 및 정확성이 유지될 수 있다.
이해를 쉽게 하기 위하여, 도 3에 나타난 양자화 연산의 개략도를 참조하면, 양자화 연산은 주로 양자화 모듈에 의해 구현된다. 현재 네트워크 구조 하에서 부동 소수점 값을 입력할 때, 먼저 부동 소수점 값의 최대값 및 최소값을 저장하는 것이 필요하며, 각 부동 소수점 값은 k-비트 정수를 채택하여 표현되고, 여기에서 k 값은 필요에 따라 미리 설정될 수 있으며, k-비트는 실제 적용에서 상대적으로 낮은 비트 값을 나타낼 수 있다. 도 3에서, 양자화 연산이 위의 방식으로 수행되어 k-비트로 표현되는 실수 값을 획득하고, 양자화된 최대값 및 양자화된 최소값이 또한 명확하게 표현된다. 일 예는 다음과 같다: k=8이라고 가정하면, 부동 소수점 값의 최대값 및 최소값에 의해 구성되는 값의 범위가 256 세그먼트로 공간적으로 선형 분할되어야 하고, 각 세그먼트에 대해, 고유한 8-비트 정수가 세그먼트 내의 실수 값을 표현하며, 예를 들어, 간격 (-3.0, 6.0), 바이트 0은 -3.0을 나타내고, 바이트 255는 6.0을 나타내는 등이며, 바이트 128은 1.5를 나타내어, k-비트의 낮은 비트 폭 출력 또는 높은 비트 폭 출력을 획득한다.
이 방식의 양자화 모듈을 통해, 신경망이 압축될 수 있을 뿐 아니라, 양자화 연산이 구현될 때 비선형성이 도입될 수 있어, 전통적인 비선형 활성화 기능을 더 잘 대체하며 양자화 모듈의 하드웨어 자원 이용률을 개선한다.
제3 방식: 다중화 신경망 아키텍처는 별도의 디컨벌루션(전치 컨벌루션) 모듈을 요구하지 않으며, 언풀링 모듈과 이를 뒤따르는 컨벌루션 모듈을 채택하여 이를 달성할 수 있다. 종래 기술에서, 컨벌루션 연산은 대부분의 신경망 구조의 일반적인 연산이며, 디컨벌루션 연산 또한 풀 컨벌루션 네트워크와 같은 네트워크 구조에서 필요할 수 있으므로, 디컨벌루션 모듈 또한 별도로 설정되어야 하며, 컨벌루션 모듈은 다중화될 수 없다. 이 방식에서, 디컨벌루션 연산은 언풀링 모듈과 이를 뒤따르는 컨벌루션 모듈에 의해 구현될 수 있다, 즉, 대응하는 언풀링 연산을 채택함으로써 디컨벌루션 연산이 대체되며, 이 방식에서, 컨벌루션 모듈은 다중화될 수 있으며, 이는 더 나은 하드웨어 자원 이용률을 달성할 수 있다.
제4 방식: 다중화 신경망 아키텍처는 별도로 풀 조인 모듈을 설정할 필요가 없으며, 1*1 컨벌루션 커널 크기를 갖는 컨벌루션 모듈이 풀 조인 연산을 달성할 수 있다. 이 방식은 컨벌루션 모듈이 다중화될 수 있게 하며, 이는 또한 하드웨어 자원 이용률을 개선하며, 또한 다중화 신경망 아키텍처를 더 능률적으로 만든다.
위의 4가지 방식을 통해, 다중화 신경망은 하드웨어 자원을 더 잘 절약할 수 있으며, 컨벌루션 모듈 및 양자화 모듈과 같은 기존의 기능 연산 모듈이 다양한 컴퓨팅 연산으로 다중화될 수 있어, 하드웨어 자원 이용률을 효율적으로 개선한다.
제3 실시예:
제2 실시예에서 제공된 연산 장치에 기반하여, 이 실시예는 제어기, 메모리 및 제2 실시예의 연산 장치를 포함하는 연산 실행 디바이스를 제공하며; 메모리는 사전 설정된 단일 명령 세트를 저장하도록 구성되고; 단일 명령 세트는 연산 장치가 다중 레이어 계산을 수행할 때 레이어당 계산에 따른 단일 명령을 포함하며; 단일 명령 각각은 모듈 선택 파라미터 및 모듈 연산 파라미터를 포함한다.
물론, 메모리는 또한 연산 시간에 연산 장치의 각 기능 연산 모듈에 필요한 데이터를 저장하며, 가중치 데이터, 컨벌루션 모듈에 필요한 컨벌루션 커널 파라미터, 및 양자화 모듈에 필요한 임계치 데이터와 같이 각 기능 연산 모듈에 대응하는 파라미터가 저장되고, 자세한 사항은 본원에서 되풀이되지 않는다.
제어기는, 메모리로부터, 연산 장치에 의해 요구되는 바에 따라 현재 레이어 계산에 대응하는 현재 단일 명령을 판독하고, 현재 단일 명령 내에 포함된 모듈 선택 파라미터 및 모듈 연산 파라미터를 파싱하여, 현재 단일 명령에 대응하는 연산 경로를 결정하도록 구성되고; 제어기는 연산 장치가 현재 단일 명령에 대응하는 연산 경로와 연결되도록 연산 장치에 제어 신호를 보내도록 더 구성된다. 구체적으로, 제어기는 명령 디코더를 사용하여 모듈 선택 파라미터 및 모듈 연산 파라미터를 갖는 단일 명령을 파싱하여, 제어 신호를 생성하고, 연산 장치가 단일 명령에 대응하는 연산 경로를 형성하도록 한다.
신경망이 실행 프로세스에서 다중 레이어 계산을 수행해야 한다고 이해될 수 있다. 전통적인 신경망에서, 상이한 레이어 계산을 위하여 상이한 네트워크 구조가 설정되어야 할 수 있으며, 하드웨어 자원이 많이 소비될 수 있다; 이 실시예에 의해 제공되는 연산 장치는 다중 기능 다중화를 지원하고, 그것은 단일 명령에 따라 연산 장치의 연산 경로를 결정하기만 하면 되고, 신경망의 모든 레이어의 계산이 연산 장치에 의해 구현되며, 대응하는 하드웨어 구조가 레이어당 계산을 위해 설정될 필요가 없고, 연산 장치 내의 기존 컴퓨팅 하드웨어가 조합 방식으로 공유되어, 컴퓨팅을 위한 하드웨어 자원을 크게 절약하며 하드웨어 이용률을 개선한다.
연산 장치는 제어기의 제어 하에 현재 단일 명령에 대응하는 연산 경로와 연결되고, 현재 단일 명령에 대응하는 연산 경로를 사용하여 현재 레이어 계산에서 연산 장치의 입력 데이터에 대한 연산을 수행하도록 구성되며; 현재 레이어 계산의 출력 데이터를 생성하고; 여기에서 현재 레이어 계산의 입력 데이터는 이전 레이어 계산으로부터 연산 장치에 의해 획득된 출력 데이터이고; 현재 레이어가 제1 레이어일 때, 제1 레이어 계산의 입력 데이터는 처리될 영상이다. 이 실시예에서 제공되는 연산 장치는 또한 실행 유닛(Execution Unit; EU)으로 지칭될 수 있으며, 입력 데이터가 EU를 통과한 후에, 신경망의 실행 프로세스의 하나의 네트워크 구조 레이어의 계산이 완료되고, 모든 레이어는 동일한 EU를 반복적으로 사용하기만 하면, 신경망의 전체 계산 프로세스가 구현될 수 있고, 대응하는 단일 명령이 레이어당 계산 동안 판독되고, EU는 레이어의 계산을 구현할 수 있는 네트워크 구조로 컴파일되고, 입력 데이터는 네트워크 구조에 의해 형성된 연산 경로를 따라 흘러, 출력 데이터가 획득되며; 출력 데이터는 다음 레이어의 입력 데이터로 사용될 수 있고, EU의 입력 단자로 다시 들어가고, 이러한 왕복 실행은 모든 레이어의 계산을 실현하고 최종 결과를 얻을 수 있다. 이 방식은 상이한 레이어의 계산을 수행하기 위하여 신경망 구현을 위한 하드웨어 디바이스에서 다중 EU가 필요한 점에 기인하는 하드웨어 자원의 손쉬운 낭비의 문제를 더 잘 완화할 수 있다.
본 개시의 실시예에 의해 위와 같이 제공되는 연산 실행 디바이스에서, 제어기는, 연산 장치가 필요로 하는 현재 레이어 계산에 대응하는 현재 단일 명령을 파싱함으로써, 연산 장치가 현재 단일 명령에 대응하는 연산 경로와 연결되어, 현재 레이어 계산을 수행하도록 제어할 수 있다. 이 방식은 동일한 연산 장치가 단일 명령에 기반한 상이한 네트워크 구조를 형성하기 위하여 컴파일하도록 제어한다, 즉, 이는 신경망의 모든 레이어의 로직 계산을 실현할 수 있다. 상이한 네트워크 구조를 위하여 대응하는 하드웨어를 별도로 설정할 필요가 없으므로, 하드웨어 자원을 크게 절약하고 하드웨어 자원의 이용률을 효율적으로 개선한다.
구체적인 구현에서, 단일 명령은 파라미터 목록을 가지며, 파라미터 목록은 모듈 선택 파라미터 및 모듈 연산 파라미터를 하나씩 나타낸다. 연산 장치가 각 레이어의 계산을 실행할 때, 대응하는 단일 명령을 파싱하는 것만이 필요하며, 필요한 기능 연산 모듈 및 모듈 연산 파라미터가 결정될 수 있다.
이해를 쉽게 하기 위하여, 단일 명령이 CONV[LINES=0, KERNELSIZE1=3, KERNELSIZE2=3, STRIDE=2, QUANTIZING=1, QUANTIZINGBIT=k, OUTPUTCHANEL=n, UNPOOLSIZE=2]인 것에 대한 설명이 예로서 제공된다. 제어기가 명령을 판독할 때, 다중화 신경망 아키텍처의 단일 명령에 대응하는 연산 경로가 결정될 수 있다.
구체적으로, 디컨벌루션 연산 또는 컨벌루션 연산이 수행될 지의 여부가 LINES에 의해 결정되어, 대응하는 기능 연산 모듈을 결정한다; 예를 들어, LINES=0이 디컨벌루션 연산에 대응하여, 데이터가 언풀링 모듈로 입력되도록 선택되고, 언풀링 모듈에 의해 언풀링 연산이 수행되어, 추가로 디컨벌루션 연산과 동등하게 되며; KERNELSIZE1 및 KERNELSIZE2는 각각 컨벌루션 커널 파라미터 N*M의 N 값 및 M 값이고, 여기에서 N 값 및 M 값은 동일하거나 상이할 수 있다. 명령이 파싱될 때, N*M이 1*1과 동일한 지에 따라 풀 조인 연산이 수행될 지의 여부가 결정될 수 있다. UNPOOLSIZE=2는 언풀링 모듈에 대응하는 언풀링 파라미터를 나타낸다. UNPOOLSIZE의 값에 따라, 명령에 대응하는 연산 경로에 언풀링 모듈이 선택되는지 여부가 결정될 수 있다.
STRIDE는 컨벌루션 모듈의 스트라이드를 나타낸다. 컨벌루션 연산 이후에 풀링 연산을 수행할 것인지의 여부는 STRIDE 가 1인지에 따라 결정될 수 있어, 컨벌루션 모듈의 실행 모드가 결정될 수 있다. 구체적으로, STRIDE=1일 때, 이는 컨벌루션 모듈이 컨벌루션 연산에만 대응하고, 풀링 연산을 수행하지 않는 것을 나타내며; STRIDE=2, 3, 4...일 때, 이는 컨벌루션 모듈이 컨벌루션 연산 이후에 풀링 연산을 실행해야 함을 나타낸다.
양자화 연산이 수행될 것인지의 여부는 QUANTIZING의 값에 의해 결정될 수 있으며, 예를 들어, QUANTIZING=1은 양자화 연산이 필요한 경우에 대응하고, QUANTIZING=0은 양자화 연산이 수행될 필요가 없는 경우에 대응하며; 양자화 모듈이 양자화 연산을 수행할 때, QUANTIZINGBIT=k의 k 값에 따라, 신경망에 비선형성을 도입하기 위하여 비선형 활성화 기능을 대체하는 데 k-비트 양자화 방식이 사용될 수 있어, 신경망 연산의 신뢰성 및 강건성을 개선한다.
또한, OUTPUTCHANEL=n은 콘캣 모듈의 채널 파라미터를 나타낸다.
이 실시예에서 제공되는 명령은 최소 신경 명령 세트 컴퓨터(Minimal Neural Instruction Set Computer; MNISC)이며, 즉, 단일 명령만이 파라미터 목록을 갖고, LINES 및 QUANTIZING와 같은 파라미터 선택 파라미터는 파라미터 목록에 포함되며, KERNELSIZE1, KERNELSIZE2, STRIDE, QUANTIZINGBIT, OUTPUTCHANEL, UNPOOLSIZE와 같은 모듈 연산 파라미터 또한 그에 포함된다. 그 중에서, STRIDE, KERNELSIZE1 및 KERNELSIZE2와 같은 모듈 연산 파라미터의 값이 또한 (컨벌루션 모듈과 같은) 대응하는 기능 연산 모듈에 의해 실현되는 기능을 직접 결정하며; UNPOOLSIZE와 같은 모듈 연산 파라미터 또한 한편으로 모듈 선택 특징화의 의미를 가진다, 즉, 대응하는 기능 연산 모듈이 선택될 지의 여부가 그 값에 따라 결정될 수 있으며, 다른 한편으로, 이는 또한 기능 연산 모듈의 연산 파라미터를 나타내며; UNPOOLSIZE=2는 한편으로 언풀링 모듈이 선택되었음을 나타내며, 다른 한편으로 이는 언풀링 모듈의 연산 파라미터가 원래 특징 영상의 길이 및 폭을 원래 길이 및 폭의 두 배로 확장할 것임을 나타낸다.
위의 파라미터는 단지 예시적이며, 단일 명령 파라미터는 실제 적용에서 유연하게 정의될 수 있음을 유의한다. 예를 들어, LINES=0은 디컨벌루션 연산이 필요한 것에 대응하도록 정의될 수 있으며, LINES=1이 또한 디컨벌루션 연산이 필요한 것에 대응하도록 정의될 수 있다. 물론, 디컨벌루션 연산이 필요한 것에 대응하도록 다른 값이 또한 정의될 수 있으며, 이는 단지 제어기가 사전 설정된 파라미터에 따라 명령 디코더를 통해 파싱하도록 하여야 하는 것일 뿐, 파라미터 설정에 대해 본원에서 제한하지 않는다.
종래 기술에서 각 컴퓨팅 연산에서 다중 명령이 필요한 것과 비교하여, 이 실시예에 의해 제공되는 MNISC는 파라미터를 갖는 단일 명령의 단순한 형태에만 의존하여, 제어기는 대응하는 컴퓨팅 연산을 수행하기 위하여 단일 명령에 따라 연산 장치의 대응하는 네트워크 구조를 결정할 수 있어, 매우 편리하고 효율적이다. 단일 명령에 의해 전달되는 파라미터가 상이할 때, 연산 장치의 대응하는 연산 경로가 상이하며, 상이한 컴퓨팅 로직 결과가 획득된다. 동일한 연산 장치 (즉, 실행 유닛 EU)이 모든 레이어의 계산을 구현할 수 있으므로, 대응하는 단일 명령이 레이어당 계산 시에 판독될 수 있고, EU 내의 레이어의 계산의 연산 경로가 단일 명령을 통해 결정될 수 있다.
이해를 쉽게 하기 위하여, 이 실시예에서 제공되는 연산 실행 디바이스의 계산 프로세스가 도 4 내지 도 9를 참조하여 예시적으로 기술된다.
먼저, 도 4에 나타난 연산 실행 디바이스의 개략적인 구조도를 참조하면, 연산 장치(다중화 신경망 아키텍처) 및 메모리(가중치 데이터 W data, 임계치 데이터 BT data, 컨벌루션 커널 파라미터 등과 같은 각 기능 연산 모듈에 필요한 데이터를 포함)가 도시되어 있으며, 메모리는 또한 네트워크 구조의 복수의 단일 명령 세트를 저장하고, 특히 이는 메모리의 명령 레지스터에 저장될 수 있다. 단순함을 위해, 제어기는 도 4에 직접 도시되지 않았다. 그러나, 본질적으로, 단일 명령의 파싱, 각 기능 연산 모듈의 선택, 및 데이터 판독은 모두 제어기에 의해 제어된다. 추가로, 도 4는 기능 연산 모듈의 선택에 영향을 미치는 이하의 선택 노드를 나타낸다(선택 결과는 언제나 단일 명령이 갖는 파라미터에 따라 제어기에 의해 결정된다).
선택 1: 디컨벌루션 여부; 이 선택 결과는 입력 데이터 흐름이 언풀링 모듈을 통과하는지 여부에 따른다. 이 실시예에서, 언풀링 연산을 수행하기 위하여 언풀링 모듈이 채택되어, 디컨벌루션 연산의 효과를 달성한다. 특정한 구현에서, 언풀링 모듈과 이에 뒤따르는 컨벌루션 모듈이 채택되어 디컨벌루션 모듈을 대체할 수 있다. 구체적으로, 이는 단일 명령 내의 LINES 값에 기초하여 결정될 수 있다.
선택 2: 풀링 여부; 이 선택 결과는 컨벌루션 모듈이 컨벌루션 연산 이후에 풀링 연산을 수행하는지 및 실행 프로세스 동안 컨벌루션 모듈의 스트라이드가 1보다 큰지의 여부에 따른다. 구체적으로, 이는 단일 명령 내의 STRIDE 값에 기초하여 결정될 수 있다.
선택 3: 풀 조인 여부; 이 선택 결과는 컨벌루션 모듈이 1*1 컨벌루션 커널 크기의 컨벌루션 레이어를 포함하는지 여부에 따른다. 구체적으로, 이는 단일 명령 내의 KERNELSIZE1 값 및 KERNELSIZE2 값에 기초하여 결정될 수 있다.
선택 4: 양자화 여부 및 k 비트 양자화 결정. 이 선택 결과는 컨벌루션 모듈로부터 출력된 데이터가 추가로 양자화 모듈에 의해 양자화되고 비선형성을 도입할 필요가 있는지 여부에 따른다. 구체적으로, 이는 단일 명령 내의 QUANTIZING 값 및 QUANTIZINGBIT 값에 기초하여 결정될 수 있다.
추가로, 도 4는 또한 연산 장치를 통과하는 입력 데이터로부터 획득되는 출력 데이터를 나타내며, 출력 데이터는 메모리에 저장될 수 있다. 다중화 신경망 아키텍처의 모든 레이어의 계산이 연산 장치를 채택할 수 있으므로, 특정 레이어에서 연산 장치에 의해 획득되는 출력 데이터는 다음 레이어 계산의 입력 데이터로서 연산 장치의 시작 단자로 입력될 수 있다.
도 4를 기반으로, 도 5에 나타난 컨벌루션 연산의 연산 실행 개략도를 참조하면, 도 5에 나타난 다중화 신경망 아키텍처에서, 컨벌루션 연산의 연산 경로는 콘캣 모듈 및 컨벌루션 모듈이며, 그 이후에 컨벌루션 결과가 컨벌루션 모듈에 의해 직접 출력될 수 있다. 신경망의 다중 레이어 계산에서, 모든 컨벌루션 레이어가 도 5에 나타난 연산 경로에 의해 구현될 수 있다. 컨벌루션 연산에서, 선택 1의 선택 결과는 데이터가 콘캣 모듈을 통과하고 컨벌루션 모듈에 들어가는 것이며, 언풀링 모듈은 사용되지 않아, 도 1의 언풀링 모듈은 회색 배경으로 채워져 모듈이 선택 가능하지 않음을 명확히 나타내고 있다. 그러나, 컨벌루션 연산에 수반되는 일부 계산 레이어는 또한 컨벌루션 이후에 양자화되어야 하며, 따라서 컨벌루션 모듈에 의해 출력된 데이터가 또한 양자화 모듈로 입력될 수 있고, 따라서 도 5의 양자화 모듈은 빗금친 박스로 나타나 있어, 이 모듈이 필수적인 것은 아니며, 계산 레이어의 요구에 따라 유연하게 선택될 수 있음을 나타낸다. 추가로, 단일 명령의 스트라이드 파라미터, 즉, 컨벌루션 연산 및 풀링 연산을 연속적으로 구현하기 위하여 컨벌루션 모듈이 컨벌루션 연산 이후에 풀링 연산이 이어지는지 여부에 따라, 선택 2의 결과가 또한 결정될 수 있다.
상응하여, 도 6에 나타난 연산 실행 디바이스의 디컨벌루션 연산 개략도를 참조하면, 도 6에 나타난 다중화 신경망 아키텍처에서, 디컨벌루션 연산의 연산 경로는 콘캣 모듈, 언풀링 모듈, 및 컨벌루션 모듈을 포함할 수 있으며, 컨벌루션 결과는 컨벌루션 모듈에 의해 직접 출력될 수 있다. 디컨벌루션 연산에서, 선택 1의 선택 결과가 언풀링 모듈에 의해 데이터가 처리되어야 하는 것이므로, 도 6에서 제공되는 다중화 신경망 아키텍처에서 컨벌루션 연산을 위한 원래 콘캣 모듈 (도 6의 오른쪽의 콘캣 모듈)은 회색 배경으로 채워져 이 모듈이 선택 가능하지 않음을 명확히 나타낸다. 유사하게, 도 6에서, 양자화 모듈은 필수적이지 않으며 계산 레이어의 요구에 따라 유연하게 선택될 수 있다.
도 7에 나타난 연산 실행 디바이스의 풀 조인 연산의 개략도를 참조하면, 도 7에 나타난 다중화 신경망 아키텍처에서, 풀 조인 연산의 연산 경로는 콘캣 모듈 및 컨벌루션 모듈을 포함하고, 풀 조인 연산에서, 선택 3의 결과는 컨벌루션 모듈의 컨벌루션 커널 크기가 kernel size=1*1인 것이므로, 1*1 컨벌루션 커널 크기를 갖는 컨벌루션 모듈이 선택되어 풀 조인 연산을 완료한다.
도 8에 나타난 연산 실행 디바이스의 양자화 연산의 개략도를 참조하면, 도 8에 나타난 다중화 신경망 아키텍처에서, 양자화 연산의 연산 경로는 콘캣 모듈, 컨벌루션 모듈 및 양자화 모듈을 포함하고, 양자화 연산에서, 선택 4의 결과는 양자화 모듈을 포함하고 k 비트로 양자화하는 것이므로, 양자화 파라미터 quantizing bit=k를 갖는 양자화 모듈이 선택되어 양자화 연산을 달성한다.
이 실시예에서 제공되는 도 4 내지 도 8은 단지 단순하고 개략적인 설명임을 유의한다. 실제 적용에서, 연산 장치는 기능 연산 모듈의 유형, 수, 및 연결 관계를 유연하게 설정하여 상이한 연산 경로를 구현하여, 상이한 컴퓨팅 로직을 달성할 수 있다.
요약하면, 이 실시예에서 제공되는 연산 실행 디바이스는 MNISC(파라미터를 갖는 단일 명령)에 따라 연산 실행 디바이스 내의 연산 경로를 결정할 수 있어, 다양한 컴퓨팅 연산을 구현하고, 연산 실행 디바이스를 채택함으로써 신경망의 모든 레이어의 계산이 구현될 수 있으며, 이는 하드웨어 자원을 크게 절약하고 하드웨어 이용률을 개선한다.
제4 실시예:
제3 실시예에서 제공된 연산 실행 디바이스에 기반하여, 이 실시예는 연산 실행 방법을 제공하며, 이 방법은 제3 실시예의 연산 실행 디바이스에 적용되고, 도 9에 나타난 연산 실행 방법의 흐름도를 참조하여, 이 방법은 연산 실행 디바이스의 제어기에 의해 실행되며, 구체적으로 다음의 단계를 포함할 수 있다:
단계 S902, 연산 장치의 현재 레이어 계산이 시작될 때, 현재 레이어 계산에 대응하는 현재 단일 명령 판독;
단계 S904, 현재 단일 명령에서 모듈 선택 파라미터 및 모듈 연산 파라미터 파싱, 및 현재 레이어 계산에 필요한 기능 연산 모듈 및 기능 연산 모듈에 대응하는 모듈 연산 파라미터 결정;
단계 S906, 현재 레이어 계산에 필요한 기능 연산 모듈 및 기능 연산 모듈에 대응하는 모듈 연산 파라미터에 기반하여 연산 장치 내의 연산 경로 결정; 여기에서 연산 경로는 현재 레이어 계산에 필요한 기능 연산 모듈을 연결함으로써 구성됨;
단계 S908, 현재 레이어 계산의 입력 데이터를 연산 장치로 입력하여, 연산 장치가 결정된 연산 경로를 사용하여 입력 데이터에 연산을 수행하여 현재 레이어 계산의 출력 데이터 생성; 여기에서 현재 레이어 계산의 입력 데이터는 이전 레이어 계산으로부터 연산 장치에 의해 획득된 출력 데이터이며; 현재 레이어가 제1 레이어일 때, 제1 레이어 계산의 입력 데이터는 처리될 영상이다. 각 연산 레이어에 대응하는 네트워크 파라미터가 또한 메모리에 저장되는 점을 이해할 것이며, 이는 구체적으로 가중치 데이터 W data, 임계치 데이터 BT data, 및 컨벌루션 코어 파라미터 등과 같이, 연산 시에 각 연산 레이어에 대응하는 기능 연산 모듈에 필요한 파라미터이다. 제어기가 현재 레이어 계산의 입력 데이터를 연산 장치로 입력할 때, 제어기는 또한 메모리로부터 현재 레이어의 네트워크 파라미터를 판독하고, 제어기는 메모리 내에 저장된 단일 명령에 기반하여 연산 장치의 연산 경로를 결정할 수 있으며, 다음 판독된 네트워크 파라미터와 조합하여 입력 데이터에 대해 연산을 수행하여, 출력 데이터를 생성한다.
본 개시의 실시예에 의해 제공되는 위의 연산 실행 방법에서, 제어기는, 연산 장치에 의해 요구되는 바에 따라 현재 레이어 계산에 대응하는 현재 단일 명령을 파싱함으로써, 연산 장치가 현재 단일 명령에 대응하는 연산 경로와 연결되어, 현재 레이어 계산을 수행하도록 제어할 수 있다. 이 방식은 동일한 연산 장치가 단일 명령에 기반하여 상이한 네트워크 구조를 형성하도록 컴파일하도록 제어할 수 있어, 신경망의 모든 레이어의 로직 계산을 구현한다. 상이한 네트워크 구조를 위한 대응하는 하드웨어를 별도로 설정할 필요가 없어, 하드웨어 자원을 크게 절약하고 하드웨어 자원 이용률을 효율적으로 개선한다.
당업자는, 설명의 편의 및 간결성을 위해, 위의 방법의 특정한 작업 프로세스 및 (연산 경로, 단일 명령 등과 같은) 관련 콘텐츠에 관해서, 전술한 실시예의 대응하는 프로세스에 대한 참조가 이루어질 수 있음을 명백히 이해할 수 있으며, 본원에서 세부사항이 되풀이되지 않는다.
또한, 이 실시예는 컴퓨터 프로그램이 저장된 컴퓨터 판독 가능 저장 매체를 추가로 제공하며, 컴퓨터 프로그램이 처리 디바이스에 의해 실행될 때 상술한 실시예에서 앞서 제공된 정보 상호작용 방법의 단계가 실행된다.
본 개시의 실시예에 의해 제공되는 연산 장치, 연산 실행 디바이스 및 연산 실행 방법의 컴퓨터 프로그램 제품은 프로그램 코드를 저장하는 컴퓨터 판독 가능 저장 매체를 포함하며, 프로그램 코드는 위의 방법 실시예에서 기술된 방법을 실행하는 명령을 포함한다. 구체적인 구현에 관해서는, 방법 실시예를 참조할 수 있으며, 본원에서 세부사항이 되풀이되지 않는다.
또한, 본 개시의 실시예의 설명에서, 달리 명시적으로 특정되고 제한되지 않는 한, 용어 “설치”, “연결된”, “연결”은 넓게 이해되어야 하며, 예를 들어, 이는 고정식으로 연결되거나, 또는 제거 가능하게 연결되거나, 또는 통합적으로 연결될 수 있고; 이는 또한 기계적으로 연결되거나, 또는 전기적으로 연결될 수 있으며; 이는 또한 직접 연결되거나, 또는 미들웨어를 통해 간접적으로 연결되거나, 또는 두 구성요소가 내부적으로 통신할 수 있다. 당업자는 본 개시에서 상술한 용어의 구체적인 의미를 실제상황에 따라 이해할 것이다.
위의 기능들은 또한 소프트웨어 기능 모듈의 형태로 구현되어 독립적인 제품으로 판매되고 사용될 때 하나의 컴퓨터 판독 가능 저장 매체에 저장될 수 있다. 이러한 이해에 기초하여, 종래 기술에 기여하는 본 개시의 기술적 해결책의 실질 또는 부분 또는 기술적 해결책 부분은 소프트웨어 제품의 형태로 반영될 수 있으며, 컴퓨터 소프트웨어 제품은 하나의 저장 매체에 저장될 수 있고, (개인용 컴퓨터, 서버, 또는 네트워크 디바이스일 수 있는) 컴퓨터 디바이스가 본 개시의 다양한 실시예에서 기술된 방법을 완전히 또는 부분적으로 수행하도록 하기 위한 여러 명령을 포함할 수 있다. 상술한 저장 매체는 모바일 저장 디바이스, 읽기 전용 메모리(ROM), 자기 디스크 또는 광 디스크와 같은 프로그램 코드를 저장할 수 있는 다양한 매체를 포함한다.
본 개시의 설명에서, 용어 “중심”, “위”, “아래”, “왼쪽”, “오른쪽”, “수직”, “수평”, “내부”, “외부” 등에 의해 지시되는 방향 또는 위치 관계는 도면에 기반한 방향 또는 위치 관계이며, 참조되는 디바이스 또는 구성요소가 특정한 방향을 반드시 가져야 하거나 특정한 방향으로 구성되거나 작동하여야 함을 나타내거나 암시하는 것이 아니라, 단지 본 개시의 설명의 편의와 설명의 단순화를 위한 것을 유의하여야 하며, 이는 본 개시를 제한하는 것으로 간주되지 않는다. 또한, 용어 “제1”, “제2” 및 “제3”은 설명 목적으로만 사용되며 상대적인 중요성을 나타내거나 암시하는 것으로 간주되지 않는다.
마지막으로, 위의 실시예는 본 개시를 제한하는 것이 아니라, 본 개시의 기술적 해결책을 설명하기 위해 채택된 특정한 구현일 뿐이며, 본 개시의 보호 범위가 이에 한정되지 않는다는 점을 유의한다. 본 개시가 위의 실시예를 참조하여 자세히 설명되었지만, 본 개시에 의해 밝혀지는 기술적 범위 내에서, 앞의 실시예에 기록된 기술적 해결책에 대한 다양한 수정이 또한 이루어질 수 있으며, 그에 대한 변경이 쉽게 이루어질 수 있고, 기술적 특징의 일부가 동등물에 의해 대체될 수 있고, 이러한 수정 또는 대체를 갖는 대응하는 기술적 해결책의 본질은 여전히 본 개시의 실시예의 기술적 해결책의 사상 및 범위 내에 있음을 당업자는 이해할 것이다. 이들 수정, 변경 및 치환은 대응하는 기술적 해결책이 본 개시의 실시예의 기술적 해결책의 사상 및 범위로부터 벗어나도록 하지 않으며, 이들은 본 개시의 보호 범위 내에 있어야 한다. 그러므로, 본 개시의 보호 범위는 첨부된 청구범위에 의해 결정되어야 한다.
100: 전자 디바이스
102: 프로세서
104: 저장 디바이스
106: 입력 디바이스
108: 출력 디바이스
110: 영상 취득 디바이스
112: 버스 시스템

Claims (14)

  1. 다중화 신경망 아키텍처를 구현하도록 구성되는 연산 장치에 있어서, 복수의 기능 연산 모듈을 포함하고, 상기 기능 연산 모듈은, 콘캣(concat) 모듈, 언풀링(unpooling) 모듈, 컨벌루션(convolution) 모듈 및 양자화(quantizing) 모듈 중 적어도 하나를 포함하며;
    상기 복수의 기능 연산 모듈은 복수의 연산 경로(operation paths)를 형성하도록 조합하여 연결 가능하고, 상기 연산 경로의 각각은 컴퓨팅 로직을 구현하기 위하여 사용되며; 상기 컴퓨팅 로직은: 컨벌루션 연산, 디컨벌루션 연산, 풀링 연산, 양자화 연산 및 풀 조인(full join) 연산 중 적어도 하나를 포함하는 연산 장치.
  2. 제1항에 있어서, 상기 기능 연산 모듈 각각은 하나 이상의 계산 유형에 대응하고; 상기 계산 유형은 콘캣 연산, 언풀링 연산, 컨벌루션 연산, 풀링 연산, 양자화 연산, 비선형 연산 또는 풀 조인 연산을 포함하는 연산 장치.
  3. 제1항에 있어서, 모든 상기 연산 경로의 각각은 적어도 상기 콘캣 모듈 및 상기 컨벌루션 모듈을 포함하는 연산 장치.
  4. 제3항에 있어서, 제1 연산 경로는 상기 언풀링 모듈을 더 포함하고, 디컨벌루션 연산을 구현하기 위해 상기 컨벌루션 모듈이 상기 언풀링 모듈 뒤에 연결되는 연산 장치.
  5. 제3항에 있어서, 제2 연산 경로에서, 상기 컨벌루션 모듈은 풀 조인 연산을 구현하기 위해 1*1 컨벌루션 커널 크기를 갖는 컨벌루션 레이어를 포함하는 연산 장치.
  6. 제3항에 있어서, 제3 연산 경로는 양자화 모듈을 더 포함하고, 상기 양자화 모듈은 양자화 연산을 구현하기 위해 상기 제3 연산 경로의 마지막에 배치되는 연산 장치.
  7. 제3항에 있어서, 제4 연산 경로는 컨벌루션 연산을 구현하기 위해 상기 콘캣 모듈 및 상기 컨벌루션 모듈만을 포함하는 연산 장치.
  8. 제2항에 있어서, 상기 컨벌루션 모듈은 스트라이드를 갖는 컨벌루션 레이어를 포함하고;
    상기 컨벌루션 레이어의 상기 스트라이드가 1일 때 상기 컨벌루션 모듈은 상기 컨벌루션 연산을 구현하기 위하여 사용되고, 상기 컨벌루션 레이어의 상기 스트라이드가 1이 아닐 때 상기 컨벌루션 모듈은 상기 컨벌루션 연산 및 상기 풀링 연산을 구현하기 위하여 사용되는 연산 장치.
  9. 제2항에 있어서, 상기 양자화 모듈은 부동 소수점 값(floating point value)을 낮은 비트 값으로 양자화하여 파라미터 압축 및 비선형 연산을 구현하는 연산 장치.
  10. 제1항에 있어서, 상기 기능 연산 모듈은 디컨벌루션 모듈, 풀링 모듈 또는 풀 조인 모듈을 더 포함하는 연산 장치.
  11. 제어기, 메모리 및 제1항 내지 제10항 중 어느 한 항에 따른 연산 장치를 포함하는 연산 실행 디바이스에 있어서; 상기 메모리는 사전 설정된 단일 명령 세트를 저장하도록 구성되고; 상기 단일 명령 세트는 상기 연산 장치가 멀티레이어 계산을 수행할 때 레이어당 계산(per-layer computation)에 대응하는 단일 명령을 포함하며; 상기 단일 명령 각각은 모듈 선택 파라미터 및 모듈 연산 파라미터를 포함하고;
    상기 제어기는, 상기 메모리로부터, 상기 연산 장치에 의해 요구되는 바에 따라 현재 레이어 계산에 대응하는 현재 단일 명령을 판독하고, 상기 현재 단일 명령에 대응하는 연산 경로를 결정하기 위해 상기 현재 단일 명령 내에 포함된 상기 모듈 선택 파라미터 및 상기 모듈 연산 파라미터를 파싱하고; 상기 제어기는 상기 연산 장치가 상기 현재 단일 명령에 대응하는 상기 연산 경로와 연결되도록 제어 신호를 상기 연산 장치로 전송하도록 더 구성되며;
    상기 연산 장치는 상기 제어기의 제어 하에 상기 현재 단일 명령에 대응하는 상기 연산 경로와 연결되고, 상기 현재 단일 명령에 대응하는 상기 연산 경로를 사용하여 상기 현재 레이어 계산 내에서 상기 연산 장치의 입력 데이터에 대한 연산을 수행하고, 상기 현재 레이어 계산의 출력 데이터를 생성하도록 구성되며; 상기 현재 레이어 계산의 상기 입력 데이터는 이전 레이어 계산으로부터 상기 연산 장치에 의해 획득된 출력 데이터이고; 상기 현재 레이어가 제1 레이어일 때, 상기 제1 레이어 계산의 입력 데이터는 처리될 영상인 연산 실행 디바이스.
  12. 제11항에 있어서, 상기 단일 명령은 파라미터 목록을 가지며, 상기 파라미터 목록은 상기 모듈 선택 파라미터 및 상기 모듈 연산 파라미터를 하나씩 나타내는 연산 실행 디바이스.
  13. 연산 실행 방법에 있어서, 상기 방법은 제12항의 연산 실행 디바이스에 적용되고, 상기 방법은 상기 연산 실행 디바이스의 제어기에 의해 실행되며, 상기 방법은:
    상기 연산 장치의 현재 레이어 계산이 시작될 때, 현재 레이어 계산에 대응하는 현재 단일 명령을 판독하는 것;
    상기 현재 단일 명령 내의 상기 모듈 선택 파라미터 및 상기 모듈 연산 파라미터를 파싱하고, 상기 현재 레이어 계산에 의해 요구되는 기능 연산 모듈 및 상기 기능 연산 모듈에 대응하는 모듈 연산 파라미터를 결정하는 것;
    상기 현재 레이어 계산에 의해 요구되는 상기 기능 연산 모듈 및 상기 기능 연산 모듈에 대응하는 상기 모듈 연산 파라미터에 기반하여 상기 연산 장치 내의 연산 경로를 결정하는 것-상기 연산 경로는 상기 현재 레이어 계산에 의해 요구되는 상기 기능 연산 모듈을 연결함에 의해 구성됨;
    상기 현재 레이어 계산의 출력 데이터를 생성하기 위해 상기 연산 장치가 결정된 연산 경로를 사용하여 상기 입력 데이터에 대한 연산을 수행하도록 상기 현재 레이어 계산의 입력 데이터를 상기 연산 장치에 입력하는 것-상기 현재 레이어 계산의 입력 데이터는 이전 레이어 계산으로부터 상기 연산 장치에 의해 획득된 출력 데이터이며; 상기 현재 레이어가 제1 레이어일 때, 상기 제1 레이어 계산의 입력 데이터는 처리될 영상임-을 포함하는 연산 실행 방법.
  14. 프로세서에 의해 컴퓨터 프로그램이 실행될 때 제13항의 방법의 단계가 실행되는 상기 컴퓨터 프로그램이 저장되는 컴퓨터 판독 가능 저장 매체.
KR1020180157395A 2018-02-13 2018-12-07 연산 장치, 연산 실행 디바이스 및 연산 실행 방법 KR102326918B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
CN201810151426.5A CN108364061B (zh) 2018-02-13 2018-02-13 运算装置、运算执行设备及运算执行方法
CN201810151426.5 2018-02-13

Publications (2)

Publication Number Publication Date
KR20190098033A true KR20190098033A (ko) 2019-08-21
KR102326918B1 KR102326918B1 (ko) 2021-11-17

Family

ID=63002488

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020180157395A KR102326918B1 (ko) 2018-02-13 2018-12-07 연산 장치, 연산 실행 디바이스 및 연산 실행 방법

Country Status (5)

Country Link
US (1) US20190251424A1 (ko)
EP (1) EP3525138A1 (ko)
JP (1) JP6719537B2 (ko)
KR (1) KR102326918B1 (ko)
CN (1) CN108364061B (ko)

Families Citing this family (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110929837B (zh) * 2018-09-19 2024-05-10 北京搜狗科技发展有限公司 一种联想词预测方法及装置
JP6886747B2 (ja) * 2018-10-10 2021-06-16 LeapMind株式会社 ニューラルネットワーク処理装置、ニューラルネットワーク処理方法、およびニューラルネットワーク処理プログラム
KR20200043169A (ko) * 2018-10-17 2020-04-27 삼성전자주식회사 뉴럴 네트워크의 파라미터를 양자화하는 방법 및 장치
CN111078283B (zh) * 2018-10-19 2021-02-09 中科寒武纪科技股份有限公司 运算方法、装置及相关产品
CN111079925B (zh) * 2018-10-19 2021-04-09 中科寒武纪科技股份有限公司 运算方法、装置及相关产品
CN109472353B (zh) * 2018-11-22 2020-11-03 浪潮集团有限公司 一种卷积神经网络量化电路及量化方法
CN109389212B (zh) * 2018-12-30 2022-03-25 南京大学 一种面向低位宽卷积神经网络的可重构激活量化池化系统
CN109800872B (zh) * 2019-01-28 2022-12-16 电子科技大学 一种基于分段复用和参数量化共享的神经形态处理器
US11175898B2 (en) * 2019-05-31 2021-11-16 Apple Inc. Compiling code for a machine learning model for execution on a specialized processor
CN110543849B (zh) * 2019-08-30 2022-10-04 北京市商汤科技开发有限公司 检测器的配置方法及装置、电子设备和存储介质
CN112765541B (zh) * 2019-11-01 2024-02-23 中科寒武纪科技股份有限公司 数据处理方法、装置、计算机设备和存储介质
KR20210101903A (ko) * 2020-02-11 2021-08-19 삼성전자주식회사 전자 장치 및 그 제어 방법
CN115362551A (zh) * 2020-04-03 2022-11-18 株式会社半导体能源研究所 半导体装置
JP6896306B1 (ja) * 2020-04-13 2021-06-30 LeapMind株式会社 ニューラルネットワーク回路、エッジデバイスおよびニューラルネットワーク演算方法
WO2021210527A1 (ja) * 2020-04-13 2021-10-21 LeapMind株式会社 ニューラルネットワーク回路の制御方法
CN111738423A (zh) * 2020-06-28 2020-10-02 湖南国科微电子股份有限公司 神经网络模型的编译方法、装置、存储介质及电子设备
WO2022004815A1 (ja) * 2020-06-30 2022-01-06 LeapMind株式会社 ニューラルネットワーク生成装置、ニューラルネットワーク生成方法およびニューラルネットワーク生成プログラム
CN111986165B (zh) * 2020-07-31 2024-04-09 北京深睿博联科技有限责任公司 一种乳房图像中的钙化检出方法及装置
JP6931252B1 (ja) * 2020-08-07 2021-09-01 LeapMind株式会社 ニューラルネットワーク回路およびニューラルネットワーク回路の制御方法
US20220222519A1 (en) * 2021-01-13 2022-07-14 Mipsology SAS Optimizing operations in artificial neural network
CN113469333B (zh) * 2021-06-28 2023-11-10 上海寒武纪信息科技有限公司 执行神经网络模型的人工智能处理器、方法及相关产品

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20040040075A (ko) * 2002-11-06 2004-05-12 학교법인 인하학원 재구성능력 및 확장능력을 가진 신경회로망 하드웨어
US20160217129A1 (en) * 2014-11-28 2016-07-28 Huawei Technologies Co., Ltd. Method and Apparatus for Determining Semantic Matching Degree
KR20170133364A (ko) * 2015-05-21 2017-12-05 구글 엘엘씨 신경망 프로세서에서의 배치 프로세싱
WO2018009490A1 (en) * 2016-07-08 2018-01-11 Microsoft Technology Licensing, Llc Conversational relevance modeling using convolutional neural network
US20180032796A1 (en) * 2016-07-29 2018-02-01 NTech lab LLC Face identification using artificial neural network
KR20190068255A (ko) * 2017-12-08 2019-06-18 삼성전자주식회사 고정 소수점 뉴럴 네트워크를 생성하는 방법 및 장치

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS6464075A (en) * 1987-09-03 1989-03-09 Nec Corp Image processor
JP2009070265A (ja) * 2007-09-14 2009-04-02 Ricoh Co Ltd 情報処理装置
JP5772442B2 (ja) * 2011-09-22 2015-09-02 富士ゼロックス株式会社 画像処理装置及び画像処理プログラム
US9721319B2 (en) * 2011-10-14 2017-08-01 Mastercard International Incorporated Tap and wireless payment methods and devices
US9811775B2 (en) * 2012-12-24 2017-11-07 Google Inc. Parallelizing neural networks during training
US10198624B2 (en) * 2016-02-18 2019-02-05 Pinscreen, Inc. Segmentation-guided real-time facial performance capture
CN107341547B (zh) * 2016-04-29 2021-04-20 中科寒武纪科技股份有限公司 一种用于执行卷积神经网络训练的装置和方法
CN106203622B (zh) * 2016-07-14 2018-12-25 杭州华为数字技术有限公司 神经网络运算装置

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20040040075A (ko) * 2002-11-06 2004-05-12 학교법인 인하학원 재구성능력 및 확장능력을 가진 신경회로망 하드웨어
US20160217129A1 (en) * 2014-11-28 2016-07-28 Huawei Technologies Co., Ltd. Method and Apparatus for Determining Semantic Matching Degree
KR20170133364A (ko) * 2015-05-21 2017-12-05 구글 엘엘씨 신경망 프로세서에서의 배치 프로세싱
WO2018009490A1 (en) * 2016-07-08 2018-01-11 Microsoft Technology Licensing, Llc Conversational relevance modeling using convolutional neural network
US20180032796A1 (en) * 2016-07-29 2018-02-01 NTech lab LLC Face identification using artificial neural network
KR20190068255A (ko) * 2017-12-08 2019-06-18 삼성전자주식회사 고정 소수점 뉴럴 네트워크를 생성하는 방법 및 장치

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
Maohua Zhu 외, ‘CNNLab: a Novel Parallel Framework for Neural Networks using GPU and FPGA’, 2016.06.20.* *

Also Published As

Publication number Publication date
US20190251424A1 (en) 2019-08-15
CN108364061B (zh) 2020-05-05
CN108364061A (zh) 2018-08-03
KR102326918B1 (ko) 2021-11-17
EP3525138A1 (en) 2019-08-14
JP2019139747A (ja) 2019-08-22
JP6719537B2 (ja) 2020-07-08

Similar Documents

Publication Publication Date Title
KR102326918B1 (ko) 연산 장치, 연산 실행 디바이스 및 연산 실행 방법
Park et al. Deep learning inference in facebook data centers: Characterization, performance optimizations and hardware implications
CN110520856B (zh) 处理不邻近存储器作为邻近存储器以提高神经网络的性能
Johnston et al. Computationally efficient neural image compression
CN111652368A (zh) 一种数据处理方法及相关产品
KR20210101233A (ko) 미디어 아이템에 임베딩된 뉴럴 네트워크의 설명을 포함하는 렌더링 엔진 모델을 제공하기 위한 방법 및 장치
KR102095097B1 (ko) 생성적 적대 네트워크를 이용한 비디오 시퀀스 생성 시스템 및 그 방법
KR20200013162A (ko) 전자 장치 및 그의 제어 방법
KR102585470B1 (ko) 정보 처리장치, 정보 처리방법, 비일시적인 컴퓨터 판독가능한 기억매체
US10747691B2 (en) Memory device, a dual inline memory module, a storage device, an apparatus for storing, a method for storing, a computer program, a machine readable storage, and a machine readable medium
Niu et al. Reuse kernels or activations? A flexible dataflow for low-latency spectral CNN acceleration
KR20230046310A (ko) 특징 맵 데이터의 시그널링
CN114973049A (zh) 一种统一卷积与自注意力的轻量视频分类方法
KR20210076691A (ko) 프레임워크 간 뉴럴 네트워크의 학습을 검증하는 방법 및 장치
Cheng et al. Optimizing image compression via joint learning with denoising
CN113923472B (zh) 视频内容分析方法、装置、电子设备及存储介质
Choi et al. Squeezing large-scale diffusion models for mobile
CN114841325A (zh) 神经网络模型的数据处理方法、介质及电子设备
So et al. PixelRNN: In-pixel Recurrent Neural Networks for End-to-end-optimized Perception with Neural Sensors
Mao et al. Toward Efficient and Adaptive Design of Video Detection System with Deep Neural Networks
CN113055546A (zh) 处理图像的系统和方法
KR20210011844A (ko) 전자 장치 및 그 제어 방법
TWI829208B (zh) 用於判定用於處理串流輸入資料之硬體架構之設計參數值之方法及系統及電腦可讀儲存媒體
US20220284692A1 (en) Method for extracting features from images and electronic device employing method
Jokel Implementing a TensorFlow-Slim based Android app for image classification

Legal Events

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