KR102598173B1 - 최적화된 딥 네트워크 처리를 위한 그래프 매칭 - Google Patents
최적화된 딥 네트워크 처리를 위한 그래프 매칭 Download PDFInfo
- Publication number
- KR102598173B1 KR102598173B1 KR1020197034458A KR20197034458A KR102598173B1 KR 102598173 B1 KR102598173 B1 KR 102598173B1 KR 1020197034458 A KR1020197034458 A KR 1020197034458A KR 20197034458 A KR20197034458 A KR 20197034458A KR 102598173 B1 KR102598173 B1 KR 102598173B1
- Authority
- KR
- South Korea
- Prior art keywords
- source code
- pattern
- code representation
- neural network
- layer
- Prior art date
Links
- 238000012545 processing Methods 0.000 title description 27
- 238000013528 artificial neural network Methods 0.000 claims abstract description 89
- 238000000034 method Methods 0.000 claims abstract description 26
- 230000015654 memory Effects 0.000 claims description 40
- 230000004044 response Effects 0.000 claims description 10
- 238000005457 optimization Methods 0.000 claims description 8
- 230000008878 coupling Effects 0.000 claims 3
- 238000010168 coupling process Methods 0.000 claims 3
- 238000005859 coupling reaction Methods 0.000 claims 3
- 238000010801 machine learning Methods 0.000 abstract 1
- 239000010410 layer Substances 0.000 description 67
- 238000010586 diagram Methods 0.000 description 11
- 230000004913 activation Effects 0.000 description 8
- 210000002569 neuron Anatomy 0.000 description 6
- 239000000835 fiber Substances 0.000 description 3
- 230000007246 mechanism Effects 0.000 description 3
- 230000002093 peripheral effect Effects 0.000 description 3
- 238000011176 pooling Methods 0.000 description 3
- 230000006872 improvement Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 241000699670 Mus sp. Species 0.000 description 1
- 238000004458 analytical method Methods 0.000 description 1
- 238000013459 approach Methods 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 230000006399 behavior Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000004590 computer program Methods 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 239000004744 fabric Substances 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 238000010606 normalization Methods 0.000 description 1
- 238000003909 pattern recognition Methods 0.000 description 1
- 239000002356 single layer Substances 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/06—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
- G06N3/063—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F1/00—Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
- G06F1/26—Power supply means, e.g. regulation thereof
- G06F1/32—Means for saving power
- G06F1/3203—Power management, i.e. event-based initiation of a power-saving mode
- G06F1/3234—Power saving characterised by the action undertaken
- G06F1/3243—Power saving in microcontroller unit
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/44—Encoding
- G06F8/443—Optimisation
- G06F8/4434—Reducing the memory space required by the program code
- G06F8/4436—Exlining; Procedural abstraction
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/44—Encoding
- G06F8/443—Optimisation
- G06F8/4441—Reducing the execution time required by the program code
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/44—Encoding
- G06F8/447—Target code generation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
- G06N3/045—Combinations of networks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/08—Learning methods
- G06N3/082—Learning methods modifying the architecture, e.g. adding, deleting or silencing nodes or connections
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N5/00—Computing arrangements using knowledge-based models
- G06N5/02—Knowledge representation; Symbolic representation
- G06N5/022—Knowledge engineering; Knowledge acquisition
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Evolutionary Computation (AREA)
- Life Sciences & Earth Sciences (AREA)
- Data Mining & Analysis (AREA)
- Mathematical Physics (AREA)
- Computational Linguistics (AREA)
- Artificial Intelligence (AREA)
- Health & Medical Sciences (AREA)
- Computing Systems (AREA)
- Biomedical Technology (AREA)
- Biophysics (AREA)
- General Health & Medical Sciences (AREA)
- Molecular Biology (AREA)
- Neurology (AREA)
- Image Analysis (AREA)
Abstract
기계 학습을 통한 향상된 해상도의 비디오 및 보안을 위한 시스템, 장치 및 방법이 개시된다. 시스템은 신경 네트워크의 소스 코드 표현을 수신하도록 구성된다. 하나의 실시형태에서, 소스 코드 표현은 방향성 비순환 그래프(directed acyclic graph)(DAG)이다. 시스템은 소스 코드 표현이 하나 이상의 패턴 중의 어느 것을 포함하는지를 판정하며, 각각의 패턴은 2개 이상의 인접 계층을 포함한다. 시스템은 또한 각각의 패턴에 대해 검출된 패턴을 대체할 결합 계층을 식별한다. 하나 이상의 패턴의 임의의 발생이 소스 코드 표현에서 검출되는 경우, 시스템은 각각의 패턴을 대응하는 결합 계층으로 대체한다. 또한, 시스템은 신경 네트워크의 최적화된 표현을 생성하며, 여기서 최적화된 표현은 임의의 검출된 패턴에 대한 대체를 포함한다. 최적화된 표현은 신경 네트워크의 실행가능한 버전을 생성하는데 이용될 수 있다.
Description
신경 네트워크는 점점 더 많은 수와 유형의 애플리케이션에 사용되고 있다. 예를 들면, 신경 네트워크는 패턴 인식 및 분류 영역에서 사용되어 왔다. 신경 네트워크는 각각 수용야(receptive field)를 갖고 입력 공간을 집합적으로 타일링하는 뉴런의 집합을 포함할 수 있다. 다중 계층형 신경 네트워크(multi-layered neural network)에서, 제 1 계층의 뉴런(또는 컴퓨테이션 유닛)의 출력은 제 2 계층의 뉴런에 대한 입력이 되고, 제 2 계층의 뉴런의 출력은 제 3 계층의 뉴런에 대한 입력이 되며, 이러한 방식으로 계속 진행된다. 신경 네트워크는 이러한 특징들의 계층 구조(hierarchy)를 인식하도록 트레이닝시킬 수 있다. 따라서, 신경 네트워크는 객체 인식 및 다른 애플리케이션에서 점점 더 많이 사용되고 있다.
신경 네트워크에서, 컴퓨테이션은 하나 이상의 컴퓨테이션 체인(computational chain)으로 구성될 수 있는 처리 노드(processing node)의 집단 상에 분산될 수 있다. 이러한 다중 계층형 아키텍처는 한 번에 하나의 계층씩 트레이닝시킬 수 있으며, 역전파(back propagation)를 사용하여 미세 조정될 수 있다. 신경 네트워크는 병렬 처리 아키텍처(parallel processing architecture)를 포함하는 다양한 유형의 컴퓨팅 장치 상에서 구현될 수 있다. 병렬 처리 아키텍처를 통하여 신경 네트워크를 보다 효율적으로 구현할 수 있다. 그러나, 최근 프로세싱 하드웨어의 개선에도 불구하고, 신경 네트워크 구현에는 여전히 긴 처리 시간, 고전력 소비, 및 기타 다른 비효율성으로 시달리고 있다.
본원에서 기술되는 방법 및 메커니즘의 장점들은 첨부 도면과 함께 하기의 설명을 참조함으로써 더 잘 이해될 수 있을 것이다:
도 1은 신경 네트워크를 구현하기 위한 컴퓨팅 시스템의 하나의 실시형태의 블록도이다.
도 2는 방향성 비순환 그래프(directed acyclic graph)(DAG)의 일부를 최적화하는 하나의 실시형태의 블록도이다.
도 3은 신경 네트워크 방향성 비순환 그래프(DAG)를 최적화하기 위한 시스템의 하나의 실시형태의 블록도이다.
도 4는 결합 동작의 하나의 실시형태의 다이어그램이다.
도 5는 신경 네트워크의 계층들을 결합하기 위한 방법 중의 하나의 실시형태를 도시하는 개략적인 흐름도이다.
도 6은 신경 네트워크를 최적화하기 위한 방법 중의 다른 실시형태를 도시하는 개략적인 흐름도이다.
도 7은 신경 네트워크의 표현에서 검출된 패턴들을 대체할지의 여부를 판정하는 방법 중의 하나의 실시형태를 도시하는 개략적인 흐름도이다.
도 1은 신경 네트워크를 구현하기 위한 컴퓨팅 시스템의 하나의 실시형태의 블록도이다.
도 2는 방향성 비순환 그래프(directed acyclic graph)(DAG)의 일부를 최적화하는 하나의 실시형태의 블록도이다.
도 3은 신경 네트워크 방향성 비순환 그래프(DAG)를 최적화하기 위한 시스템의 하나의 실시형태의 블록도이다.
도 4는 결합 동작의 하나의 실시형태의 다이어그램이다.
도 5는 신경 네트워크의 계층들을 결합하기 위한 방법 중의 하나의 실시형태를 도시하는 개략적인 흐름도이다.
도 6은 신경 네트워크를 최적화하기 위한 방법 중의 다른 실시형태를 도시하는 개략적인 흐름도이다.
도 7은 신경 네트워크의 표현에서 검출된 패턴들을 대체할지의 여부를 판정하는 방법 중의 하나의 실시형태를 도시하는 개략적인 흐름도이다.
하기의 설명에서, 본원에서 제시되는 방법 및 메커니즘의 철저한 이해를 제공하기 위해 다수의 특정 세부 사항이 설명된다. 그러나, 본 기술 분야의 통상의 지식을 가진 자라면 이러한 특정 세부 사항들이 없더라도 다양한 실시형태가 실시될 수 있음을 인식해야 한다. 일부 예에서, 널리 공지된 구조, 구성 요소, 신호, 컴퓨터 프로그램 명령, 및 기술은 본원에서 기술되는 접근 방법을 모호하게 만드는 것을 피하기 위해 상세하게 나타내지 않았다. 단순하고 명료한 설명을 위해, 도면에 도시된 요소들은 반드시 축적하여 도시된 것이 아님을 이해할 것이다. 예를 들면, 일부 요소들의 치수는 다른 요소들에 비해 과장될 수 있다.
신경 네트워크의 소스 코드 표현(source code representation)을 최적화하기 위한 시스템, 장치 및 방법이 본원에서 개시된다. 하나의 실시형태에서, 시스템은 메모리에 커플링되는 적어도 하나의 프로세서를 포함한다. 하나의 실시형태에서, 시스템은 신경 네트워크의 소스 코드 표현을 수신하도록 구성된다. 하나의 실시형태에서, 소스 코드 표현은 방향성 비순환 그래프(DAG)이다. 시스템이 소스 코드 표현에서 2개 이상의 인접 계층이 제 1 패턴과 일치한다고 판정하는 경우, 시스템은 소스 코드 표현에서 2개 이상의 인접 계층을 단일 결합 계층으로 대체한다. 또한, 시스템은 신경 네트워크의 최적화된 표현을 생성하며, 여기서 최적화된 표현은 단일 결합 계층을 포함한다. 최적화된 표현은 신경 네트워크의 실행가능한 버전을 생성하는데 사용될 수 있다. 신경 네트워크의 실행가능한 버전이 타겟 시스템(target machine)에서 구현되면, 단일 결합 계층이 단일 커널 호출로 호출될 수 있다.
하나의 실시형태에서, 시스템은 소스 코드 표현에서 탐색하기 위한 하나 이상의 패턴의 지시(indication)를 수신한다. 각각의 패턴은 2개 이상의 인접 계층의 식별을 포함한다. 또한, 각각의 패턴에 대해, 시스템은 검출된 패턴을 대체할 대응하는 결합 계층을 수신한다. 이어서, 시스템은 소스 코드 표현이 하나 이상의 패턴의 임의의 발생을 포함하는 경우를 판정한다. 이어서, 시스템은 하나 이상의 패턴의 임의의 발생을 대응하는 결합 계층으로 대체한다.
다른 실시형태에서, 시스템은 신경 네트워크에 의해 처리되는 입력 데이터 세트의 크기의 지시를 수신한다. 시스템이 신경 네트워크의 소스 코드 표현에서 제 2 패턴을 검출할 경우, 시스템은 제 2 패턴을 선택적으로 대체하기 위해 사용할 제 2 결합 계층을 식별한다. 이어서, 시스템은 입력 데이터 세트의 크기에 기초하여 제 2 결합 계층의 메모리 이용률을 계산한다. 이어서, 시스템은 메모리 이용률이 프로그램가능 임계값보다 작은지를 판정한다. 시스템은 메모리 이용률이 임계값보다 작다는 판정에 응답하여 소스 코드 표현에서 제 2 패턴을 제 2 결합 계층으로 대체한다. 대안적으로, 시스템은 메모리 이용률이 임계값을 초과하거나 동등하다는 판정에 응답하여 소스 코드 표현에서 제 2 패턴을 유지한다.
이제 도 1을 참조하면, 신경 네트워크를 구현하기 위한 컴퓨팅 시스템(100)의 하나의 실시형태의 블록도가 도시되어 있다. 하나의 실시형태에서, 컴퓨팅 시스템(100)은 메모리(150)에 커플링된 시스템 온 칩(system on chip)(SoC)(105)을 포함한다. SoC(105)는 또한 집적회로(IC)로 지칭될 수도 있다. 하나의 실시형태에서, SoC(105)는 중앙 처리 장치(CPU)(165)의 처리 유닛(175A-N), 입력/출력(I/O) 인터페이스(155), 캐시(160A-B), 파이버 채널 스위치(fabric)(120), 그래픽 처리 장치(GPU)(130), 로컬 메모리(110), 및 메모리 컨트롤러(들)(140)을 포함한다. SoC(105)는 또한 도면을 모호하게 하는 것을 피하기 위하여 도 1에 도시되지 않은 다른 구성 요소들을 포함할 수도 있다. 처리 유닛(175A-N)는 임의의 개수 및 유형의 처리 유닛을 대표한다. 하나의 실시형태에서, 처리 유닛(175A-N)은 CPU 코어이다. 다른 실시형태에서, 하나 이상의 처리 유닛(175A-N)은 다른 유형의 처리 유닛(예를 들면, 주문형 반도체(ASIC), 논리회로형 반도체(Field Programmable Gate Array)(FPGA), 디지털 신호 처리 프로세서(Digital Signal Processor)(DSP))이다. CPU(165)의 처리 유닛(175A-N)은 캐시(160A-B) 및 파이버 채널 스위치(120)에 커플링된다.
하나의 실시형태에서, 처리 유닛(175A-N)은 특정 명령어 집합 아키텍처(ISA)의 명령을 실행하도록 구성된다. 각각의 처리 유닛(175A-N)은 하나 이상의 실행 유닛, 캐시 메모리, 스케줄러, 분기 예측 회로 등을 포함한다. 하나의 실시형태에서, 처리 유닛(175A-N)은 운영 체제와 같은 시스템(100)의 주요 제어 소프트웨어를 실행하도록 구성된다. 일반적으로, 사용시에 처리 유닛(175A-N)에 의해 실행되는 소프트웨어는 시스템(100)의 목적하는 기능을 실현하도록 시스템(100)의 다른 구성 요소들을 제어할 수 있다. 처리 유닛(175A-N)은 또한 응용 프로그램과 같은 다른 소프트웨어를 실행할 수도 있다.
GPU(130)는 그래픽 또는 범용 프로세싱에 사용되는 임의의 개수 및 유형의 컴퓨트 유닛(compute unit)을 대표하는 적어도 컴퓨트 유닛(145A-N)을 포함한다. 각각의 컴퓨트 유닛(145A-N)은 임의의 개수의 실행 유닛을 포함하고, 컴퓨트 유닛 당 실행 유닛의 개수는 실시형태마다 변한다. GPU(130)는 로컬 메모리(110) 및 파이버 채널 스위치(120)에 커플링된다. 하나의 실시형태에서, 로컬 메모리(110)는 고대역폭 메모리(high-bandwidth memory)(HBM)를 사용하여 구현된다.
하나의 실시형태에서, GPU(130)는 복수의 컴퓨트 유닛(145A-N) 상에서 신경 네트워크를 구현하도록 구성되며, 여기서 신경 네트워크의 상이한 컴퓨테이션은 복수의 컴퓨트 유닛(145A-N)의 다른 컴퓨트 유닛으로 전달된다. 하나의 실시형태에서, 신경 네트워크는 GPU(130) 상에서 구현되기 전에 최적화된다. 최적화는 신경 네트워크의 다중 계층을 GPU(130) 상에서 단일 라이브러리 호출로 호출될 수 있는 단일 결합 계층으로 함께 결합하는 단계를 포함한다. 하나의 실시형태에서, 옵티마이저(도시되지 않음)는 신경 네트워크의 방향성 비순환 그래프(DAG) 표현에서 패턴을 탐색하고 보다 효율적인 동작으로 패턴을 대체하도록 구성된다. 본원에서 사용되는 "패턴(pattern)"이란 용어는 데이터 구조 또는 소스 코드 표현(예를 들면, DAG) 내에서 2개 이상의 연속 계층의 미리 정의된 시퀀스로서 정의된다. "계층(layer)"이란 용어는 신경 네트워크의 이전 단계에 의해 생성(또는 제공)되는 데이터에 대해 수행되는 동작 또는 동작의 세트로 정의된다. 신경 네트워크의 제 1 계층은 입력 데이터 세트(예를 들면, 이미지) 상에서 동작한다.
옵티마이저는 신경 네트워크의 소스 코드 표현에서 하나 이상의 미리 정의된 패턴을 탐색하도록 구성된다. 옵티마이저가 신경 네트워크의 소스 코드 표현에서 미리 정의된 패턴을 검출하는 경우, 옵티마이저는 미리 정의된 패턴을 단일 라이브러리 호출로 대체할 수 있다. 예를 들면, 제 1 패턴은 콘볼루션 계층에 이어 활성화 계층으로 정의될 수 있다. 옵티마이저가 소스 코드 표현에서 제 1 패턴을 검출하는 경우, 옵티마이저는 제 1 패턴을 콘볼루션 계층 및 활성화 계층의 결합된 동작을 수행하는 단일 라이브러리 호출로 대체할 수 있다. 많은 경우에, 단일 라이브러리 호출은 콘볼루션 계층에 대한 제 1 라이브러리 호출 및 활성화 계층에 대한 제 2 라이브러리 호출을 구현하는 것보다 더 효율적으로 수행될 수 있다. 다른 패턴들도 또한 단일 라이브러리 호출에 의해 함께 결합되고 수행될 수 있는 인접한 신경 네트워크 계층에 대해 정의될 수 있다. 예를 들면, 제 2 패턴은 콘볼루션 계층에 이어 풀링 계층(pooling layer)으로 정의될 수 있고, 제 3 패턴은 콘볼루션 계층에 이어 콘볼루션 계층으로 정의될 수 있으며, 이하 같은 방식으로 정의될 수 있다. 전체 소스 코드 표현을 분석하고 검출된 패턴을 해당 라이브러리 호출로 대체한 후, 옵티마이저는 신경 네트워크의 실행가능한 버전을 생성하는데 사용되는 신경 네트워크의 최적화된 소스 코드 표현을 출력한다. 이어서, 신경 네트워크의 실행가능한 버전이 시스템(100)의 GPU(130) 상에서 구현된다.
I/O 인터페이스(155)는 파이버 채널 스위치(120)에 커플링되며, I/O 인터페이스(155)는 임의의 개수 및 유형의 인터페이스(예를 들면, PCI(Peripheral Component Interconnect) 버스, 확장 PCI(PCI-Extended)(PCI-X), PCIE(PCI Express) 버스, 기가비트 이더넷(GBE) 버스, 범용 직렬 버스(USB))를 대표한다. 다양한 유형의 주변 장치가 I/O 인터페이스(155)에 커플링될 수 있다. 이러한 주변 장치는 디스플레이, 키보드, 마우스, 프린터, 스캐너, 조이스틱 또는 다른 유형의 게임 컨트롤러, 미디어 기록 장치, 외부 저장 장치, 네트워크 인터페이스 카드 등을 포함하지만, 이에 국한되는 것은 아니다.
SoC(105)는 하나 이상의 메모리 모듈을 포함하는 메모리(150)에 커플링된다. 각각의 메모리 모듈은 그 위에 장착되는 하나 이상의 메모리 장치를 포함한다. 일부 실시형태에서, 메모리(150)는 SoC(105)가 또한 장착되는 마더 보드 또는 다른 캐리어 상에 장착되는 하나 이상의 메모리 장치를 포함한다. 하나의 실시형태에서, 메모리(150)는 동작시에 SoC(105)와 함께 사용하기 위한 랜덤 액세스 메모리(RAM)를 구현하는데 사용된다. 구현되는 RAM은 정적 RAM(SRAM), 동적 RAM(DRAM), 저항성 RAM(ReRAM), 상변화 RAM(Phase Change RAM)(PCRAM), 또는 다른 휘발성 또는 비휘발성 RAM일 수 있다. 메모리(150)를 구현하는데 사용되는 DRAM의 유형은 2배속(double data rate)(DDR) DRAM, DDR2 DRAM, DDR3 DRAM 등을 포함하지만, 이에 국한되는 것은 아니다. 도 1에 명백하게 도시되지는 않았지만, SoC(105)는 또한 처리 유닛(175A-N) 및/또는 컴퓨트 유닛(145A-N)의 내부에 있는 하나 이상의 캐시 메모리를 포함할 수도 있다. 일부 실시형태에서, SoC(105)는 처리 유닛(175A-N)에 의해 사용되는 캐시(160A-B)를 포함한다. 하나의 실시형태에서, 캐시(160A-B)는 캐시 컨트롤러를 포함하는 캐시 서브시스템의 일부이다.
문자 "N"은, 본원에서 다양한 구조들 옆에 표시될 경우, 일반적으로는 그 구조에 대한 임의의 개수의 요소(예를 들면, 하나의 처리 유닛을 포함하여, CPU(165)내의 임의의 개수의 처리 유닛(175A-N))를 나타내는 것을 의미한다는 사실에 주목해야 한다. 또한, 문자 "N"을 사용하는 도 1내의 다른 대상물(예를 들면, 컴퓨트 유닛(145A-N))은 동일한 개수의 상이한 요소가 제공되는 것을 나타내려는 것이 아니다(예를 들면, CPU(165)내의 처리 유닛(175A-N)의 개수는 GPU(130)의 컴퓨트 유닛(145A-N)의 개수와 상이할 수 있다).
다양한 실시형태에서, 컴퓨팅 시스템(100)은 컴퓨터, 랩탑, 모바일 장치, 서버, 또는 임의의 다양한 다른 유형의 컴퓨팅 시스템 또는 장치일 수 있다. 컴퓨팅 시스템(100) 및/또는 SoC(105)의 구성 요소의 개수는 실시형태마다 다를 수 있다는 것을 주목해야 한다. 도 1에 도시된 개수보다 각각의 구성 요소/하위 구성 요소가 더 많거나 더 적을 수 있다. 또한, 컴퓨팅 시스템(100) 및/또는 SoC(105)는 도 1에 도시되지 않은 다른 구성 요소를 포함할 수 있음에 주목해야 한다. 또한, 다른 실시형태에서, 컴퓨팅 시스템(100) 및 SoC(105)는 도 1에 도시된 것과 다른 방식으로 구성될 수도 있다.
이제 도 2를 참조하면, 방향성 비순환 그래프(DAG)(205)의 일부를 최적화하는 하나의 실시형태의 블록도가 도시되어 있다. DAG(205)는 신경 네트워크의 구조를 대표한다. 전체 DAG(205)의 단지 일부만이 도 2에 도시되어 있다. 옵티마이저(예를 들면, 도 3의 옵티마이저(315))는 DAG(205)를 수신하고 DAG(205)의 분석을 수행하여 DAG(205)가 결합될 수 있는 인접 계층의 하나 이상의 패턴(예를 들면, 패턴(230))을 포함하는지를 판정하도록 구성된다.
계층들(210, 215, 220 및 225)은 임의의 유형의 계층들을 대표한다. 예를 들면, DAG(205)에 포함될 수 있는 계층은 콘볼루션 계층, 풀링 계층, 활성화 계층, 서브 샘플링 계층, 정규화 계층, 및/또는 다른 계층을 포함하지만, 이에 국한되는 것은 아니다. 타겟 컴퓨팅 시스템(target computing system)(예를 들면, 도 1의 시스템(100))에 의해 실행될 경우, 각각의 계층(210-225)은 별도의 커널을 호출함으로써 구현될 것이다. 따라서, 타겟 컴퓨팅 시스템은 DAG(205)의 4개의 계층(210-225)을 호출하기 위해 4개의 커널 호출을 구현할 것이다.
이러한 논의를 위해, 계층(215) 대 계층(220) 대 계층(225)의 연결이 옵티마이저에 의해 탐색되는 소정 패턴(230)과 일치한다고 가정한다. 따라서, 옵티마이저는 검출된 패턴(230)의 계층들을 단일 계층(245)으로 대체할 것이다. 계층(245)은 단일 커널에서 계층(215, 220, 및 225)의 동작을 결합할 것이다. 따라서, 옵티마이저로부터의 출력이 최적화된 DAG(240)이다. 도 2에 도시되어 있는 최적화된 DAG(240)의 일부분은 2개의 커널 호출로 컴퓨팅 시스템 상에서 구현될 수 있는 2개의 별개의 계층을 포함한다. 이는 4개의 커널 호출로 구현될 수 있는 DAG(205)에 비해 개선된 것이다.
이제 도 3을 참조하면, 신경 네트워크 방향성 비순환 그래프(DAG)(310)를 최적화하기 위한 시스템(300)의 하나의 실시형태의 블록도가 도시되어 있다. 하나의 실시형태에서, 신경 네트워크의 구조는 DAG(310)로서 표현된다. 신경 네트워크 DAG의 일부의 예가 도 2에 도시되어 있다. 신경 네트워크 DAG 내에서, 노드는 신경 네트워크의 계층을 나타내며, 에지는 계층들 사이의 데이터의 전송을 나타낸다.
신경 네트워크 DAG(310)는 옵티마이저(315)에 대한 입력으로서 제공된다. 또한, 옵티마이저(315)에 제공되는 다른 입력은 입력 데이터 크기(320), 타겟 시스템 파라미터(325), 최적화 기준(330), 패턴(335) 및 결합 계층(340)을 포함한다. 다른 실시형태에서, 옵티마이저(315)는 이들 입력의 서브 세트를 수신하고/하거나 다른 입력을 수신할 수 있다. 입력 데이터 크기(320)는 신경 네트워크 DAG(310)가 표현인 신경 네트워크에 의해 처리될 입력 데이터 세트의 크기의 지시를 포함한다. 일부 실시형태에서, 입력 데이터 세트의 크기는 알려지지 않을 수 있으며, 이러한 실시형태에서 입력 데이터 크기(320)는 생략될 수 있다. 타겟 시스템 파라미터(325)는 신경 네트워크를 구현할 타겟 시스템의 사양(예를 들면, 메모리 용량, 컴퓨트 유닛의 개수)을 포함한다. 일부의 경우에, 타겟 시스템은 알려지지 않을 수 있으며, 이들 실시형태에서 타겟 시스템 파라미터(325)는 생략될 수 있다.
최적화 기준(330)은 신경 네트워크를 구현할 때 충족되기를 원하는 하나 이상의 기준 또는 목표(예를 들면, 성능 목표, 전력 목표)를 포함한다. 패턴(335)은, 신경 네트워크 DAG(310) 내에서 발견될 경우, 단일 결합 계층으로 대체될 수 있는 계층의 하나 이상의 패턴을 포함한다. 옵티마이저(315)에 제공되는 각각의 패턴(335)에 대해, 검출된 패턴(335)을 대체하는데 사용될 수 있는 결합 계층(340)이 제공된다. 옵티마이저(315)는 이러한 입력을 이용하여 신경 네트워크 DAG(310)를 분석 및 수정하여 최적화된 신경 네트워크 DAG(345)를 생성한다. 하나의 실시형태에서, 신경 네트워크 DAG(310)에서 발견되는 임의의 패턴은 옵티마이저(315)가 최적화된 신경 네트워크 DAG(345)를 생성할 때 대응하는 결합 계층(340)으로 대체될 수 있다. 실시형태에 따라, 옵티마이저(315)는 하드웨어 및/또는 소프트웨어의 임의의 적절한 조합을 이용하여 구현될 수 있다. 하나의 실시형태에서, 옵티마이저(315)는 그래프 구조를 분석하는 기능을 포함하는 컴파일러 또는 컴파일러 유사 툴과 같은 툴(tool)이다. 다른 실시형태에서, 옵티마이저(315)는 최적화된 신경 네트워크 DAG(345)를 별도의 컴파일러로 전달한다.
하나의 실시형태에서, 옵티마이저(315)는 신경 네트워크 DAG(310) 상에서 그래프 커버링 기술을 수행하여 최적화된 신경 네트워크 DAG(345)의 다수의 상이한 버전을 생성할 수 있다. 옵티마이저(315)는 최적화된 신경 네트워크 DAG(345)의 어느 버전이 최저가를 갖는지를 판정하기 위해 각각의 상이한 버전의 비용 추정치를 생성하도록 구성된다. 비용 추정치는 옵티마이저(315)에 제공되는 상이한 최적화 기준(330)에 기초하여 생성될 수 있다. 따라서, 옵티마이저(315)는 최적화된 신경 네트워크 DAG(345)로서 생성되는 최종 솔루션에 대해 최저가를 가진 버전을 이용할 수 있다.
이제 도 4를 참조하면, 결합 동작의 하나의 실시형태의 다이어그램이 도시되어 있다. 동작(400)은 도 4의 좌측에 도시되어 있으며, 동작(400)은 콘볼루션 동작(405) 및 활성화 동작(410)을 포함한다. 각각의 동작을 시작할 때 데이터가 GPU에 복사되며, 각각의 동작이 끝날 때 결과가 호스트로 다시 복사된다. 콘볼루션 동작(405) 및 활성화 동작(410)은 보다 효율적인 구현을 생성하기 위해 결합될 수 있는 동작의 예이다.
동작(420)은 도 4의 우측에 도시되어 있으며, 동작(420)은 콘볼루션 및 활성화 동작들을 결합하는 단일 커널을 포함한다. 따라서, 동작(420)은 동작(400)에 비해 2개의 더 적은 데이터 복사 및 1개의 더 적은 GPU 커널 호출로 수행될 수 있다. 하나의 실시형태에서, 옵티마이저(예를 들면, 도 3의 옵티마이저(315))는 동작(400)을 동작(420)으로 전환하도록 구성된다. 옵티마이저는 단일 커널 호출로 결합될 수 있는 동작(예를 들면, 콘볼루션 동작에 이어 활성화 동작)을 탐색하도록 구성된다. 다른 실시형태에서, 다른 동작들이 함께 결합될 수 있다. 예를 들면, 콘볼루션 동작에 이어 풀링 동작이 단일 커널로 결합될 수 있다. 또한, 일부의 경우, 둘 이상의 콘볼루션 동작이 단일 커널로 결합될 수 있다.
이제 도 5를 참조하면, 신경 네트워크의 계층들을 결합하기 위한 방법(500)의 하나의 실시형태가 도시되어 있다. 논의의 목적으로, 이러한 실시형태에 있어서의 단계들 및 도 6 및 도 7의 단계들이 순차적인 순서로 도시되어 있다. 그러나, 기술된 방법들의 다양한 실시형태에서, 기술된 요소들 중의 하나 이상이 동시에 도시된 것과 다른 순서로 수행되거나, 또는 완전히 생략된다는 점에 주목해야 한다. 경우에 따라서는, 다른 추가적인 요소들도 또한 수행된다. 본원에서 기술되는 다양한 시스템 또는 장치들 중의 임의의 것이 방법(500)을 구현하도록 구성된다.
컴퓨팅 시스템은 신경 네트워크의 소스 코드 표현을 수신한다(블록 505). 하나의 실시형태에서, 소스 코드 표현은 방향성 비순환 그래프(DAG)이다. 다음으로, 시스템은 소스 코드 표현에서 2개 이상의 인접 계층이 제 1 패턴과 일치한다고 판정한다(블록 510). 소스 코드 표현이 DAG인 경우, 2개 이상의 인접 계층은 DAG에서 2개 이상의 인접 노드에 대응한다. 이어서, 시스템은 소스 코드 표현에서 2개 이상의 인접 계층을 단일 결합 계층으로 대체한다(블록 515). 다음으로, 시스템은 신경 네트워크의 최적화된 표현을 생성하며, 여기서 최적화된 표현은 단일 결합 계층을 포함한다(블록 520). 이어서, 최적화된 표현은 신경 네트워크의 실행가능한 버전을 생성하는데 이용된다(블록 525). 이어서, 신경 네트워크의 실행가능한 버전이 병렬 프로세서(예를 들면, GPU) 상에서 구현된다(블록 530). 블록(530) 후에, 방법(500)이 종료된다.
이제 도 6을 참조하면, 신경 네트워크를 최적화하기 위한 방법(600)의 하나의 실시형태가 도시되어 있다. 옵티마이저는 하나 이상의 패턴의 지시를 수신한다(블록 605). 하나의 실시형태에서, 옵티마이저는 다양한 유형의 컴퓨팅 시스템 중의 임의의 시스템 상에서 실행가능한 프로그램 명령을 포함한다. 컴퓨팅 시스템의 유형은 실시형태마다 상이할 수 있다. 옵티마이저는, 각각의 패턴에 대하여, 패턴을 대신하여 사용될 대응하는 결합 계층을 수신한다(블록 610). 다음으로, 옵티마이저는 신경 네트워크의 소스 코드 표현이 하나 이상의 패턴의 임의의 발생을 포함하는지를 판정한다(블록 615). 이어서, 옵티마이저는 하나 이상의 패턴의 임의의 발생을 대응하는 결합 계층으로 대체한다(블록 620). 블록(620) 후에, 방법(600)이 종료된다.
이제 도 7을 참조하면, 신경 네트워크의 표현과 같은, 그래프에서 검출된 패턴을 대체할지를 판정하기 위한 방법(700)의 하나의 실시형태가 도시되어 있다. 컴퓨팅 시스템 상에서 실행되는 옵티마이저는 신경 네트워크의 표현을 수신하거나 달리는 액세스한다(블록 705). 하나의 실시형태에서, 표현은 DAG이다. 또한, 옵티마이저는 신경 네트워크에 의해 처리되는 입력 데이터 세트의 크기의 지시를 수신하거나 달리는 판정하고(블록 710), 신경 네트워크를 구현하는데 사용될 타겟 장치의 사양을 수신하거나 달리는 판정한다(블록 715). 다양한 실시형태에서, 이러한 사양은 타겟 장치의 다양한 컴퓨트 유닛들에 이용가능한 메모리의 양을 포함하거나 달리는 지시일 수 있다. 다음으로, 옵티마이저는 타겟 장치의 사양에 기초하여 메모리 이용률 임계값을 계산한다(블록 720).
이어서, 옵티마이저는 신경 네트워크의 표현에서 패턴을 탐색한다(블록 725). 옵티마이저가 표현의 일부에서 소정 패턴을 검출하는 경우(조건부 블록 730, "예(yes)" 부분), 옵티마이저는 입력 데이터 세트의 크기에 기초하여 소정 패턴을 대체할 수 있는 결합 커널의 메모리 이용률을 계산한다(블록 735). 하나의 실시형태에서, 메모리 이용률은 제 2 결합 계층의 모든 동작에 의해 사용되는 메모리의 합으로서 계산된다. 옵티마이저가 표현의 일부에서 소정 패턴을 검출하지 못한 경우(조건부 블록 730, "아니오(no)" 부분), 옵티마이저는 블록(725)으로 되돌아가서 패턴에 대한 표현의 다른 부분을 탐색한다.
옵티마이저가 계산된 메모리 이용률이 프로그램가능 임계값보다 작은 것으로 판정하는 경우(조건부 블록 (740), "예" 부분), 옵티마이저는 표현에서 소정 패턴을 결합 커널로 대체한다(블록 745). 하나의 실시형태에서, 블록(720)에서 계산된 메모리 이용률 임계값은 조건부 블록(740)에서 프로그램가능 임계값으로서 이용된다. 옵티마이저가 계산된 메모리 이용률이 프로그램가능 임계값보다 크거나 같다고 판정하는 경우(조건부 블록(740), "아니오" 부분), 옵티마이저는 표현에서 제 1 패턴을 유지한다(블록 750). 블록(745 및 750) 후에, 방법(700)은 표현의 다른 부분에서 패턴을 계속 탐색하기 위해 블록(725)으로 복귀한다. 전체 표현이 이미 탐색된 경우, 방법(700)은 종료된다.
다양한 실시형태에서, 소프트웨어 애플리케이션의 프로그램 명령은 전술된 방법 및/또는 메커니즘을 구현하는데 사용된다. 프로그램 명령은 C 언어와 같은 고급 프로그래밍 언어로 하드웨어의 거동을 기술한다. 대안적으로, 베릴로그(Verilog)와 같은 하드웨어 설계 언어(hardware design language)(HDL)가 사용된다. 프로그램 명령은 비일시적 컴퓨터 판독가능 저장 매체 상에 저장된다. 다양한 유형의 저장 매체를 이용할 수 있다. 저장 매체는 프로그램 실행을 위해 프로그램 명령 및 수반되는 데이터를 컴퓨팅 시스템에 제공하기 위해 사용시에 컴퓨팅 시스템에 의해 액세스 가능하다. 컴퓨팅 시스템은 적어도 하나 이상의 메모리 및 프로그램 명령을 실행하도록 구성된 하나 이상의 프로세서를 포함한다.
상술한 실시형태들은 비제한적인 구현예에 불과하다는 것이 강조되어야 한다. 상기 개시가 완전히 이해되면 많은 변경 및 수정이 당업자에게 명백해질 것이다. 하기의 특허청구범위는 이러한 모든 변경 및 수정을 포함하는 것으로 해석되어야 한다.
Claims (20)
- 메모리; 및
상기 메모리에 커플링된 제 1 프로세서
를 포함하는 시스템으로서,
상기 제 1 프로세서는:
상기 제 1 프로세서와 상이한 제 2 프로세서의 사양을 수신하고, 상기 사양은 상기 제 2 프로세서에 의해 제공된 이용가능한 컴퓨팅 리소스들을 나타내는 파라미터를 포함하며;
신경 네트워크의 소스 코드 표현(source code representation)을 수신하고; 그리고
상기 신경 네트워크의 소스 코드 표현을 수정하여 상기 신경 네트워크의 최적화된 표현(optimized representation)을 포함하는 상기 신경 네트워크의 소스 코드 표현의 수정된 버전을 생성하도록 구성되고,
상기 신경 네트워크의 소스 코드 표현을 수정하기 위해, 상기 제 1 프로세서는:
상기 소스 코드 표현에서 2개 이상의 인접 계층이 제 1 패턴과 일치하는지를 판정하고;
상기 소스 코드 표현에서 2개 이상의 인접 계층이 상기 제 1 패턴과 일치하는지에 대한 판정 및 상기 제 2 프로세서의 사양의 하나 이상의 파라미터가 기준을 충족하는지에 대한 판정에 응답하여, 상기 소스 코드 표현에서 2개 이상의 인접 계층을 단일 결합 계층으로 대체하도록 구성되는,
시스템. - 제 1 항에 있어서,
하나 이상의 패턴의 지시를 수신하고;
각각의 패턴에 대해, 대응하는 결합 계층을 수신하고;
상기 소스 코드 표현이 하나 이상의 패턴의 임의의 발생을 포함하는지를 판정하며;
상기 하나 이상의 패턴의 임의의 발생을 대응하는 결합 계층으로 대체하도록 구성되는, 시스템. - 제 2 항에 있어서,
상기 소스 코드 표현이 방향성 비순환 그래프(DAG)인, 시스템. - 제 3 항에 있어서,
상기 하나 이상의 패턴의 각각의 패턴이 DAG에서 2개 이상의 인접 노드를 포함하는, 시스템. - 제 1 항에 있어서,
상기 신경 네트워크에 의해 처리되는 입력 데이터 세트의 크기의 지시를 수신하고;
상기 소스 코드 표현에서 2개 이상의 인접 계층을 포함하는 제 2 패턴을 검출하고;
상기 제 2 패턴을 임의로 대체하기 위한 제 2 결합 계층을 식별하고;
상기 입력 데이터 세트의 크기에 기초하여, 상기 제 2 결합 계층의 메모리 이용률을 계산하고;
메모리 이용률이 임계값보다 작다는 판정에 응답하여 상기 소스 코드 표현에서 제 2 패턴을 제 2 결합 계층으로 대체하며;
메모리 이용률이 임계값을 초과하거나 동등하다는 판정에 응답하여 상기 소스 코드 표현에서 제 2 패턴을 유지하도록 추가로 구성되는, 시스템. - 제 1 항에 있어서,
단일 커널이 상기 단일 결합 계층의 동작을 수행하는데 호출되는, 시스템. - 제 1 항에 있어서,
상기 제 1 프로세서는:
성능 목표 및 전력 목표 중 적어도 하나를 포함하는 최적화 기준을 수신하도록; 그리고
상기 최적화 기준에 기초하여 상기 신경 네트워크의 최적화된 표현을 생성하도록 더 구성되는, 시스템. - 제 1 프로세서에 의해, 상기 제 1 프로세서와 상이한 제 2 프로세서의 사양을 수신하는 단계 - 상기 사양은 상기 제 2 프로세서에 의해 제공된 이용가능한 컴퓨팅 리소스들을 나타내는 파라미터를 포함함 - 와;
상기 제 1 프로세서에 의해, 신경 네트워크의 소스 코드 표현을 수신하는 단계와; 그리고
상기 제 1 프로세서에 의해, 상기 신경 네트워크의 소스 코드 표현을 수정하여 상기 신경 네트워크의 최적화된 표현을 포함하는 상기 신경 네트워크의 소스 코드 표현의 수정된 버전을 생성하는 단계를 포함하고;
상기 신경 네트워크의 소스 코드 표현을 수정하는 것은:
상기 소스 코드 표현에서 2개 이상의 인접 계층이 제 1 패턴과 일치하는지를 판정하는 것; 및
상기 소스 코드 표현에서 2개 이상의 인접 계층이 상기 제 1 패턴과 일치하는지에 대한 판정 및 상기 제 2 프로세서의 사양의 하나 이상의 파라미터가 기준을 충족하는지에 대한 판정에 응답하여, 상기 소스 코드 표현에서 2개 이상의 인접 계층을 단일 결합 계층으로 대체하는 것을 포함하는,
방법. - 제 8 항에 있어서,
하나 이상의 패턴의 지시를 수신하는 단계;
각각의 패턴에 대해, 대응하는 결합 계층을 수신하는 단계;
상기 소스 코드 표현이 하나 이상의 패턴의 임의의 발생을 포함하는지를 판정하는 단계; 및
상기 하나 이상의 패턴의 임의의 발생을 대응하는 결합 계층으로 대체하는 단계
를 추가로 포함하는, 방법. - 제 9 항에 있어서,
상기 소스 코드 표현이 방향성 비순환 그래프(DAG)인, 방법. - 제 10 항에 있어서,
상기 하나 이상의 패턴의 각각의 패턴이 DAG에서 2개 이상의 인접 노드를 포함하는, 방법. - 제 8 항에 있어서,
상기 신경 네트워크에 의해 처리되는 입력 데이터 세트의 크기의 지시를 수신하는 단계;
상기 소스 코드 표현에서 2개 이상의 인접 계층을 포함하는 제 2 패턴을 검출하는 단계;
상기 제 2 패턴을 임의로 대체하기 위한 제 2 결합 계층을 식별하는 단계;
상기 입력 데이터 세트의 크기에 기초하여, 상기 제 2 결합 계층의 메모리 이용률을 계산하는 단계;
메모리 이용률이 임계값보다 작다는 판정에 응답하여 상기 소스 코드 표현에서 제 2 패턴을 제 2 결합 계층으로 대체하는 단계; 및
메모리 이용률이 임계값을 초과하거나 동등하다는 판정에 응답하여 상기 소스 코드 표현에서 제 2 패턴을 유지하는 단계
를 추가로 포함하는, 방법. - 제 8 항에 있어서,
단일 커널이 상기 단일 결합 계층의 동작을 수행하는데 호출되는, 방법. - 제 8 항에 있어서,
성능 목표 및 전력 목표 중 적어도 하나를 포함하는 최적화 기준을 수신하는 단계와; 그리고
상기 최적화 기준에 기초하여 상기 신경 네트워크의 최적화된 표현을 생성하는 단계를 더 포함하는, 방법. - 회로를 포함하는 시스템으로서, 상기 회로는,
신경 네트워크의 소스 코드 표현을 수신하고;
상기 신경 네트워크에 의해 처리되는 입력 데이터 세트의 크기의 지시를 수신하고;
상기 소스 코드 표현에서 2개 이상의 인접 계층을 포함하는 패턴을 검출하고;
상기 패턴을 임의로 대체하기 위한 결합 계층을 식별하고;
상기 입력 데이터 세트의 크기에 기초하여, 상기 결합 계층의 메모리 이용률을 계산하고;
메모리 이용률이 임계값보다 작다는 판정에 응답하여 상기 소스 코드 표현에서 상기 패턴을 상기 결합 계층으로 대체하며; 그리고
상기 결합 계층을 포함하는, 상기 신경 네트워크의 최적화된 표현을 생성하도록 구성되는,
시스템. - 제 15 항에 있어서,
상기 시스템의 회로는:
하나 이상의 패턴의 지시를 수신하고;
각각의 패턴에 대해, 대응하는 결합 계층을 수신하고;
상기 소스 코드 표현이 하나 이상의 패턴의 임의의 발생을 포함하는지를 판정하며;
상기 하나 이상의 패턴의 임의의 발생을 대응하는 결합 계층으로 대체하도록 구성되는, 시스템. - 제 16 항에 있어서,
상기 소스 코드 표현이 방향성 비순환 그래프(DAG)인, 시스템. - 제 17 항에 있어서,
상기 하나 이상의 패턴의 각각의 패턴이 DAG에서 2개 이상의 인접 노드를 포함하는, 시스템. - 제 15 항에 있어서,
상기 시스템의 회로는:
메모리 이용률이 임계값을 초과하거나 동등하다는 판정에 응답하여 상기 소스 코드 표현에서 상기 패턴을 유지하도록 구성되는, 시스템. - 제 15 항에 있어서,
단일 커널이 상기 결합 계층의 동작을 수행하는데 호출되는, 시스템.
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US15/498,943 US20180314945A1 (en) | 2017-04-27 | 2017-04-27 | Graph matching for optimized deep network processing |
US15/498,943 | 2017-04-27 | ||
PCT/US2018/029699 WO2018200899A1 (en) | 2017-04-27 | 2018-04-27 | Graph matching for optimized deep network processing |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20200002027A KR20200002027A (ko) | 2020-01-07 |
KR102598173B1 true KR102598173B1 (ko) | 2023-11-06 |
Family
ID=62148543
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020197034458A KR102598173B1 (ko) | 2017-04-27 | 2018-04-27 | 최적화된 딥 네트워크 처리를 위한 그래프 매칭 |
Country Status (6)
Country | Link |
---|---|
US (1) | US20180314945A1 (ko) |
EP (1) | EP3616133A1 (ko) |
JP (1) | JP7125425B2 (ko) |
KR (1) | KR102598173B1 (ko) |
CN (1) | CN110574045B (ko) |
WO (1) | WO2018200899A1 (ko) |
Families Citing this family (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP3682379A1 (en) | 2017-09-15 | 2020-07-22 | Google LLC | Augmenting neural networks |
US11966583B2 (en) * | 2018-08-28 | 2024-04-23 | Cambricon Technologies Corporation Limited | Data pre-processing method and device, and related computer device and storage medium |
US11194688B1 (en) * | 2019-05-08 | 2021-12-07 | Amazon Technologies, Inc. | Application architecture optimization and visualization |
US11610134B2 (en) | 2019-07-08 | 2023-03-21 | Vianai Systems, Inc. | Techniques for defining and executing program code specifying neural network architectures |
US11720417B2 (en) * | 2020-08-06 | 2023-08-08 | Micron Technology, Inc. | Distributed inferencing using deep learning accelerators with integrated random access memory |
US11216752B1 (en) | 2020-12-01 | 2022-01-04 | OctoML, Inc. | Optimizing machine learning models |
CN112784829B (zh) * | 2021-01-21 | 2024-05-21 | 北京百度网讯科技有限公司 | 一种票据信息的提取方法、装置、电子设备及存储介质 |
KR20220122562A (ko) | 2021-02-26 | 2022-09-02 | 경희대학교 산학협력단 | 서브 그래프 매칭 방법 및 장치 |
US11797280B1 (en) * | 2021-06-30 | 2023-10-24 | Amazon Technologies, Inc. | Balanced partitioning of neural network based on execution latencies |
CN114691330A (zh) * | 2022-03-28 | 2022-07-01 | 北京百度网讯科技有限公司 | 数据处理方法、装置、电子设备以及存储介质 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20100088490A1 (en) * | 2008-10-02 | 2010-04-08 | Nec Laboratories America, Inc. | Methods and systems for managing computations on a hybrid computing platform including a parallel accelerator |
US20160342888A1 (en) * | 2015-05-20 | 2016-11-24 | Nec Laboratories America, Inc. | Memory efficiency for convolutional neural networks operating on graphics processing units |
US20160358070A1 (en) * | 2015-06-04 | 2016-12-08 | Samsung Electronics Co., Ltd. | Automatic tuning of artificial neural networks |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2002236906A (ja) | 2001-02-09 | 2002-08-23 | Fuji Electric Co Ltd | 積結合型ニューラルネットワークの最適化学習方法 |
EP1960867A4 (en) * | 2005-12-13 | 2010-10-13 | Crossbeam Systems Inc | SYSTEMS AND METHOD FOR PROCESSING DATA FLOWS |
US9377954B2 (en) * | 2014-05-09 | 2016-06-28 | Advanced Micro Devices, Inc. | System and method for memory allocation in a multiclass memory system |
US10223635B2 (en) * | 2015-01-22 | 2019-03-05 | Qualcomm Incorporated | Model compression and fine-tuning |
US10102478B2 (en) * | 2015-06-26 | 2018-10-16 | Conduent Business Services, Inc. | Distributed and privacy-preserving prediction method |
US10157045B2 (en) * | 2016-11-17 | 2018-12-18 | The Mathworks, Inc. | Systems and methods for automatically generating code for deep learning systems |
-
2017
- 2017-04-27 US US15/498,943 patent/US20180314945A1/en not_active Abandoned
-
2018
- 2018-04-27 EP EP18724099.9A patent/EP3616133A1/en not_active Ceased
- 2018-04-27 CN CN201880027542.4A patent/CN110574045B/zh active Active
- 2018-04-27 WO PCT/US2018/029699 patent/WO2018200899A1/en unknown
- 2018-04-27 KR KR1020197034458A patent/KR102598173B1/ko active IP Right Grant
- 2018-04-27 JP JP2019558376A patent/JP7125425B2/ja active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20100088490A1 (en) * | 2008-10-02 | 2010-04-08 | Nec Laboratories America, Inc. | Methods and systems for managing computations on a hybrid computing platform including a parallel accelerator |
US20160342888A1 (en) * | 2015-05-20 | 2016-11-24 | Nec Laboratories America, Inc. | Memory efficiency for convolutional neural networks operating on graphics processing units |
US20160358070A1 (en) * | 2015-06-04 | 2016-12-08 | Samsung Electronics Co., Ltd. | Automatic tuning of artificial neural networks |
Also Published As
Publication number | Publication date |
---|---|
US20180314945A1 (en) | 2018-11-01 |
JP2020518068A (ja) | 2020-06-18 |
KR20200002027A (ko) | 2020-01-07 |
CN110574045B (zh) | 2024-02-09 |
JP7125425B2 (ja) | 2022-08-24 |
WO2018200899A1 (en) | 2018-11-01 |
EP3616133A1 (en) | 2020-03-04 |
CN110574045A (zh) | 2019-12-13 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR102598173B1 (ko) | 최적화된 딥 네트워크 처리를 위한 그래프 매칭 | |
Ankit et al. | PUMA: A programmable ultra-efficient memristor-based accelerator for machine learning inference | |
Chen et al. | DianNao family: energy-efficient hardware accelerators for machine learning | |
CN111033529A (zh) | 神经网络的架构优化训练 | |
Mohsin et al. | An FPGA-based hardware accelerator for K-nearest neighbor classification for machine learning on mobile devices | |
Chen et al. | A high-throughput neural network accelerator | |
US11150899B2 (en) | Selecting a precision level for executing a workload in an electronic device | |
Gutiérrez et al. | GPU-SME-kNN: Scalable and memory efficient kNN and lazy learning using GPUs | |
CN111723918A (zh) | 用于卷积内核的自动生成和调谐工具 | |
Gómez-Luna et al. | Evaluating machine learningworkloads on memory-centric computing systems | |
KR102668340B1 (ko) | 설정가능한 하드웨어 런타임 최적화 | |
US12079734B1 (en) | Compilation time reduction for memory and compute bound neural networks | |
US20200159529A1 (en) | Family of lossy sparse load simd instructions | |
Hajinazar et al. | SIMDRAM: An end-to-end framework for bit-serial SIMD computing in DRAM | |
Mao et al. | Energy-efficient machine learning accelerator for binary neural networks | |
Halstead et al. | Compiling irregular applications for reconfigurable systems | |
Silva et al. | Cuda-based parallelization of power iteration clustering for large datasets | |
Eid et al. | Hardware implementation of YOLOv4-tiny for object detection | |
Clemons et al. | EVA: An efficient vision architecture for mobile systems | |
Soroushnia et al. | High performance pattern matching on heterogeneous platform | |
Challapalle et al. | X-VS: Crossbar-based processing-in-memory architecture for video summarization | |
Rogers | Effects of an lstm composite prefetcher | |
Mohsin | An FPGA-based hardware accelerator for k-nearest neighbor classification for machine learning | |
Gao et al. | Reconfigurable hardware generation for tensor flow models of cnn algorithms on a heterogeneous acceleration platform | |
Li et al. | A deep learning image recognition framework accelerator based parallel computing |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
E902 | Notification of reason for refusal | ||
E90F | Notification of reason for final refusal | ||
E701 | Decision to grant or registration of patent right | ||
GRNT | Written decision to grant |