KR20200002027A - 최적화된 딥 네트워크 처리를 위한 그래프 매칭 - Google Patents

최적화된 딥 네트워크 처리를 위한 그래프 매칭 Download PDF

Info

Publication number
KR20200002027A
KR20200002027A KR1020197034458A KR20197034458A KR20200002027A KR 20200002027 A KR20200002027 A KR 20200002027A KR 1020197034458 A KR1020197034458 A KR 1020197034458A KR 20197034458 A KR20197034458 A KR 20197034458A KR 20200002027 A KR20200002027 A KR 20200002027A
Authority
KR
South Korea
Prior art keywords
pattern
source code
code representation
neural network
layer
Prior art date
Application number
KR1020197034458A
Other languages
English (en)
Other versions
KR102598173B1 (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 KR20200002027A publication Critical patent/KR20200002027A/ko
Application granted granted Critical
Publication of KR102598173B1 publication Critical patent/KR102598173B1/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/082Learning methods modifying the architecture, e.g. adding, deleting or silencing nodes or connections
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/26Power supply means, e.g. regulation thereof
    • G06F1/32Means for saving power
    • G06F1/3203Power management, i.e. event-based initiation of a power-saving mode
    • G06F1/3234Power saving characterised by the action undertaken
    • G06F1/3243Power saving in microcontroller unit
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/44Encoding
    • G06F8/443Optimisation
    • G06F8/4434Reducing the memory space required by the program code
    • G06F8/4436Exlining; Procedural abstraction
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/44Encoding
    • G06F8/443Optimisation
    • G06F8/4441Reducing the execution time required by the program code
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/44Encoding
    • G06F8/447Target code generation
    • 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
    • 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/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
    • G06N5/00Computing arrangements using knowledge-based models
    • G06N5/02Knowledge representation; Symbolic representation
    • G06N5/022Knowledge engineering; Knowledge acquisition
    • YGENERAL 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
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE 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/00Energy 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은 신경 네트워크의 표현에서 검출된 패턴들을 대체할지의 여부를 판정하는 방법 중의 하나의 실시형태를 도시하는 개략적인 흐름도이다.
하기의 설명에서, 본원에서 제시되는 방법 및 메커니즘의 철저한 이해를 제공하기 위해 다수의 특정 세부 사항이 설명된다. 그러나, 본 기술 분야의 통상의 지식을 가진 자라면 이러한 특정 세부 사항들이 없더라도 다양한 실시형태가 실시될 수 있음을 인식해야 한다. 일부 예에서, 널리 공지된 구조, 구성 요소, 신호, 컴퓨터 프로그램 명령, 및 기술은 본원에서 기술되는 접근 방법을 모호하게 만드는 것을 피하기 위해 상세하게 나타내지 않았다. 단순하고 명료한 설명을 위해, 도면에 도시된 요소들은 반드시 축적하여 도시된 것이 아님을 이해할 것이다. 예를 들면, 일부 요소들의 치수는 다른 요소들에 비해 과장될 수 있다.
신경 네트워크의 소스 코드 표현(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. 메모리; 및
    상기 메모리에 커플링된 프로세서
    를 포함하는 시스템으로서,
    신경 네트워크의 소스 코드 표현(source code representation)을 수신하고;
    상기 소스 코드 표현에서 2개 이상의 인접 계층이 제 1 패턴과 일치하는지를 판정하고;
    상기 소스 코드 표현에서 2개 이상의 인접 계층을 단일 결합 계층으로 대체하며;
    상기 단일 결합 계층을 포함하는, 상기 신경 네트워크의 최적화된 표현(optimized representation)을 생성하도록 구성되는,
    시스템.
  2. 제 1 항에 있어서,
    하나 이상의 패턴의 지시를 수신하고;
    각각의 패턴에 대해, 대응하는 결합 계층을 수신하고;
    상기 소스 코드 표현이 하나 이상의 패턴의 임의의 발생을 포함하는지를 판정하며;
    상기 하나 이상의 패턴의 임의의 발생을 대응하는 결합 계층으로 대체하도록 구성되는, 시스템.
  3. 제 2 항에 있어서,
    상기 소스 코드 표현이 방향성 비순환 그래프(DAG)인, 시스템.
  4. 제 3 항에 있어서,
    상기 하나 이상의 패턴의 각각의 패턴이 DAG에서 2개 이상의 인접 노드를 포함하는, 시스템.
  5. 제 1 항에 있어서,
    상기 신경 네트워크에 의해 처리되는 입력 데이터 세트의 크기의 지시를 수신하고;
    상기 소스 코드 표현에서 2개 이상의 인접 계층을 포함하는 제 2 패턴을 검출하고;
    상기 제 2 패턴을 임의로 대체하기 위한 제 2 결합 계층을 식별하고;
    상기 입력 데이터 세트의 크기에 기초하여, 상기 제 2 결합 계층의 메모리 이용률을 계산하고;
    메모리 이용률이 임계값보다 작다는 판정에 응답하여 상기 소스 코드 표현에서 제 2 패턴을 제 2 결합 계층으로 대체하며;
    메모리 이용률이 임계값을 초과하거나 동등하다는 판정에 응답하여 상기 소스 코드 표현에서 제 2 패턴을 유지하도록 추가로 구성되는, 시스템.
  6. 제 1 항에 있어서,
    단일 커널이 상기 단일 결합 계층의 동작을 수행하는데 호출되는, 시스템.
  7. 제 1 항에 있어서,
    상기 최적화된 표현이 신경 네트워크의 실행가능한 버전을 생성하는데 사용되는, 시스템.
  8. 신경 네트워크의 소스 코드 표현을 수신하는 단계;
    상기 소스 코드 표현에서 2개 이상의 인접 계층이 제 1 패턴과 일치하는지를 판정하는 단계;
    상기 소스 코드 표현에서 2개 이상의 인접 계층을 단일 결합 계층으로 대체하는 단계; 및
    상기 단일 결합 계층을 포함하는, 상기 신경 네트워크의 최적화된 표현을 생성하는 단계
    를 포함하는 방법.
  9. 제 8 항에 있어서,
    하나 이상의 패턴의 지시를 수신하는 단계;
    각각의 패턴에 대해, 대응하는 결합 계층을 수신하는 단계;
    상기 소스 코드 표현이 하나 이상의 패턴의 임의의 발생을 포함하는지를 판정하는 단계; 및
    상기 하나 이상의 패턴의 임의의 발생을 대응하는 결합 계층으로 대체하는 단계
    를 추가로 포함하는, 방법.
  10. 제 9 항에 있어서,
    상기 소스 코드 표현이 방향성 비순환 그래프(DAG)인, 방법.
  11. 제 10 항에 있어서,
    상기 하나 이상의 패턴의 각각의 패턴이 DAG에서 2개 이상의 인접 노드를 포함하는, 방법.
  12. 제 8 항에 있어서,
    상기 신경 네트워크에 의해 처리되는 입력 데이터 세트의 크기의 지시를 수신하는 단계;
    상기 소스 코드 표현에서 2개 이상의 인접 계층을 포함하는 제 2 패턴을 검출하는 단계;
    상기 제 2 패턴을 임의로 대체하기 위한 제 2 결합 계층을 식별하는 단계;
    상기 입력 데이터 세트의 크기에 기초하여, 상기 제 2 결합 계층의 메모리 이용률을 계산하는 단계;
    메모리 이용률이 임계값보다 작다는 판정에 응답하여 상기 소스 코드 표현에서 제 2 패턴을 제 2 결합 계층으로 대체하는 단계; 및
    메모리 이용률이 임계값을 초과하거나 동등하다는 판정에 응답하여 상기 소스 코드 표현에서 제 2 패턴을 유지하는 단계
    를 추가로 포함하는, 방법.
  13. 제 8 항에 있어서,
    단일 커널이 상기 단일 결합 계층의 동작을 수행하는데 호출되는, 방법.
  14. 제 8 항에 있어서,
    상기 최적화된 표현이 신경 네트워크의 실행가능한 버전을 생성하는데 사용되는, 방법.
  15. 프로그램 명령을 저장하는 비일시적 컴퓨터 판독가능 저장 매체로서,
    상기 프로그램 명령이,
    신경 네트워크의 소스 코드 표현을 수신하고;
    상기 소스 코드 표현에서 2개 이상의 인접 계층이 제 1 패턴과 일치하는지를 판정하고;
    상기 소스 코드 표현에서 2개 이상의 인접 계층을 단일 결합 계층으로 대체하며;
    상기 단일 결합 계층을 포함하는, 상기 신경 네트워크의 최적화된 표현을 생성하도록 프로세서에 의해 실행가능한,
    프로그램 명령을 저장하는 비일시적 컴퓨터 판독가능 저장 매체.
  16. 제 15 항에 있어서,
    상기 프로그램 명령이,
    하나 이상의 패턴의 지시를 수신하고;
    각각의 패턴에 대해, 대응하는 결합 계층을 수신하고;
    상기 소스 코드 표현이 하나 이상의 패턴의 임의의 발생을 포함하는지를 판정하며;
    상기 하나 이상의 패턴의 임의의 발생을 대응하는 결합 계층으로 대체하도록 프로세서에 의해 추가로 실행되는, 비일시적 컴퓨터 판독가능 저장 매체.
  17. 제 16 항에 있어서,
    상기 소스 코드 표현이 방향성 비순환 그래프(DAG)인, 비일시적 컴퓨터 판독가능 저장 매체.
  18. 제 17 항에 있어서,
    상기 하나 이상의 패턴의 각각의 패턴이 DAG에서 2개 이상의 인접 노드를 포함하는, 비일시적 컴퓨터 판독가능 저장 매체.
  19. 제 15 항에 있어서,
    상기 프로그램 명령이,
    상기 신경 네트워크에 의해 처리되는 입력 데이터 세트의 크기의 지시를 수신하고;
    상기 소스 코드 표현에서 2개 이상의 인접 계층을 포함하는 제 2 패턴을 검출하고;
    상기 제 2 패턴을 임의로 대체하기 위한 제 2 결합 계층을 식별하고;
    상기 입력 데이터 세트의 크기에 기초하여, 상기 제 2 결합 계층의 메모리 이용률을 계산하고;
    메모리 이용률이 임계값보다 작다는 판정에 응답하여 상기 소스 코드 표현에서 제 2 패턴을 제 2 결합 계층으로 대체하며;
    메모리 이용률이 임계값을 초과하거나 동등하다는 판정에 응답하여 상기 소스 코드 표현에서 제 2 패턴을 유지하도록 프로세서에 의해 추가로 실행가능한,
    비일시적 컴퓨터 판독가능 저장 매체.
  20. 제 15 항에 있어서,
    단일 커널이 상기 단일 결합 계층의 동작을 수행하는데 호출되는, 비일시적 컴퓨터 판독가능 저장 매체.
KR1020197034458A 2017-04-27 2018-04-27 최적화된 딥 네트워크 처리를 위한 그래프 매칭 KR102598173B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US15/498,943 2017-04-27
US15/498,943 US20180314945A1 (en) 2017-04-27 2017-04-27 Graph matching for optimized deep network processing
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 true KR20200002027A (ko) 2020-01-07
KR102598173B1 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)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20220122562A (ko) 2021-02-26 2022-09-02 경희대학교 산학협력단 서브 그래프 매칭 방법 및 장치

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP3682379A1 (en) * 2017-09-15 2020-07-22 Google LLC Augmenting neural networks
EP3757896B1 (en) * 2018-08-28 2023-01-11 Cambricon Technologies Corporation Limited Method and device for pre-processing data in a neural network
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 北京百度网讯科技有限公司 一种票据信息的提取方法、装置、电子设备及存储介质
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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2002236906A (ja) * 2001-02-09 2002-08-23 Fuji Electric Co Ltd 積結合型ニューラルネットワークの最適化学習方法
WO2007070838A2 (en) * 2005-12-13 2007-06-21 Crossbeam Systems, Inc. Systems and methods 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

Patent Citations (3)

* Cited by examiner, † Cited by third party
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

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20220122562A (ko) 2021-02-26 2022-09-02 경희대학교 산학협력단 서브 그래프 매칭 방법 및 장치

Also Published As

Publication number Publication date
WO2018200899A1 (en) 2018-11-01
CN110574045A (zh) 2019-12-13
EP3616133A1 (en) 2020-03-04
JP2020518068A (ja) 2020-06-18
US20180314945A1 (en) 2018-11-01
JP7125425B2 (ja) 2022-08-24
CN110574045B (zh) 2024-02-09
KR102598173B1 (ko) 2023-11-06

Similar Documents

Publication Publication Date Title
KR102598173B1 (ko) 최적화된 딥 네트워크 처리를 위한 그래프 매칭
US11544545B2 (en) Structured activation based sparsity in an artificial neural network
US20220129752A1 (en) Memory bandwidth reduction techniques for low power convolutional neural network inference applications
US20180285254A1 (en) System And Method Of Memory Access Of Multi-Dimensional Data
US11551028B2 (en) Structured weight based sparsity in an artificial neural network
US10515135B1 (en) Data format suitable for fast massively parallel general matrix multiplication in a programmable IC
JP7451614B2 (ja) オンチップの計算ネットワーク
US20170060811A1 (en) Matrix operands for linear algebra operations
CN111033529A (zh) 神经网络的架构优化训练
US11983624B2 (en) Auto generation and tuning tool for convolution kernels
Chen et al. A high-throughput neural network accelerator
Da Silva et al. Comparing and combining GPU and FPGA accelerators in an image processing context
KR20210090260A (ko) 손실 희소 로드 simd 인스트럭션 제품군
Lukash et al. Sparse approximate inverse preconditioners for iterative solvers on GPUs
US11461662B1 (en) Compilation time reduction for memory and compute bound neural networks
US20180089025A1 (en) Processor-in-memory-and-storage architecture
Soroushnia et al. High performance pattern matching on heterogeneous platform
US9720851B2 (en) Method and apparatus for managing access to a memory
Soroushnia et al. Heterogeneous parallelization of Aho-Corasick algorithm
US11947487B2 (en) Enabling accelerated processing units to perform dataflow execution
US11809981B1 (en) Performing hardware operator fusion
TWI842584B (zh) 電腦實施方法及電腦可讀儲存媒體
US20210209473A1 (en) Generalized Activations Function for Machine Learning
US20240086257A1 (en) Direct dataflow compute-in-memory accelerator interface and architecture
Villarreal et al. Programming the convey HC-1 with ROCCC 2.0

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