KR20240050389A - 그룹 컨볼루션 구현을 위한 신경망 아키텍처 - Google Patents

그룹 컨볼루션 구현을 위한 신경망 아키텍처 Download PDF

Info

Publication number
KR20240050389A
KR20240050389A KR1020247009232A KR20247009232A KR20240050389A KR 20240050389 A KR20240050389 A KR 20240050389A KR 1020247009232 A KR1020247009232 A KR 1020247009232A KR 20247009232 A KR20247009232 A KR 20247009232A KR 20240050389 A KR20240050389 A KR 20240050389A
Authority
KR
South Korea
Prior art keywords
feature map
input
convolution
generating
group
Prior art date
Application number
KR1020247009232A
Other languages
English (en)
Inventor
버킨 아킨
수욕 굽타
카오 가오
핑 저우
가브리엘 민처 벤더
한샤오 리우
Original Assignee
구글 엘엘씨
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 구글 엘엘씨 filed Critical 구글 엘엘씨
Publication of KR20240050389A publication Critical patent/KR20240050389A/ko

Links

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
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/0464Convolutional networks [CNN, ConvNet]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/045Combinations of networks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods

Landscapes

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

Abstract

컨볼루션 신경망(CNN)을 사용하여 입력 이미지를 프로세싱하기 위한 컴퓨터 판독가능 매체를 포함하는 방법, 시스템 및 장치가 설명된다. CNN은 계층 블록들의 시퀀스를 포함한다. 시퀀스 내 계층 블록들의 제1 서브세트 각각은 동작들을 수행하도록 구성되며, 동작들은: i) 계층 블록에 대한 입력 특징 맵을 수신하는 동작, ii) 그룹 컨볼루션을 사용하여 입력 특징 맵으로부터 확장된 특징 맵을 생성하는 동작, 및 iii) 확장된 특징 맵으로부터 축소된 특징 맵을 생성하는 동작을 포함한다. 입력 특징 맵은 c1개 채널들을 갖는 h × w 특징 맵이다. 확장된 특징 맵은 c2개 채널들을 갖는 h × w 특징 맵인 반면, 축소된 특징 맵은 c1개 채널들을 갖는 h x w 특징 맵이다. c2는 c1보다 크다. 축소된 특징 맵으로부터 계층 블록에 대한 출력 특징 맵이 생성된다.

Description

그룹 컨볼루션 구현을 위한 신경망 아키텍처
본 명세서는 일반적으로 컨볼루션 신경망(convolutional neural network)에 대한 그룹 컨볼루션을 수행하기 위해 집적 하드웨어 회로를 사용하는 것에 관한 것이다.
신경망은 수신된 입력에 대한 출력, 예를 들어 분류를 생성하기 위해 하나 이상의 노드 계층을 사용하는 기계 학습 모델이다. 일부 신경망은 출력 계층 외에 하나 이상의 은닉 계층을 포함한다. 일부 신경망은 이미지 프로세싱을 위해 구성된 컨볼루션 신경망이거나 음성 및 언어 프로세싱을 위해 구성된 순환 신경망(RNN)일 수 있다. 다양한 유형의 신경망 아키텍처를 사용하여 분류 또는 패턴 인식, 데이터 모델링과 관련된 예측 및 정보 클러스터링과 관련된 다양한 작업을 수행할 수 있다.
신경망 계층은 대응하는 파라미터 또는 가중치 세트를 가질 수 있다. 가중치는 신경망 추론을 계산하기 위한 계층의 대응하는 출력을 생성하기 위해 신경망 계층을 통해 입력(예: 입력 배치(batch))을 프로세싱하는 데 사용된다. 입력 배치와 커널 세트는 입력과 가중치의 다차원 배열인 텐서로 표현될 수 있다. 하드웨어 가속기는 신경망을 구현하기 위한 특수 목적의 집적 회로이다. 회로는 회로의 제어 로직을 사용하여 트래버스(traverse) 또는 액세스될 수 있는 텐서 요소에 대응하는 위치를 갖는 메모리를 포함한다.
본 명세서에서는 하드웨어 신경망 가속기에서 그룹 컨볼루션을 효율적으로 구현하는 기술을 설명한다. 그룹 컨볼루션은 그룹 컨볼루션을 나타내는 각 입력 그룹이 대응하는 출력 그룹과 연관되는 입력 매트릭스의 채널 차원(channel dimension)을 따라 그룹핑(grouping)함으로써 입력 특징 맵을 컨볼루션한다. 특히, 이러한 기술을 기반으로 태블릿이나 스마트폰과 같은 예시적인 컴퓨팅 디바이스에 구현된 기계 학습 모델의 컨볼루션 신경망(CNN)을 사용하여 입력 이미지를 프로세싱할 때 그룹 컨볼루션을 활용하여 특정 하드웨어 및 계산 효율성을 실현할 수 있다.
예를 들어, CNN을 사용하여 프로세싱하기 위한 입력 이미지가 획득된다. CNN은 계층 블록들의 시퀀스를 포함하며, 시퀀스 내 계층 블록들의 제1 서브세트 각각은 동작들을 수행하도록 구성되며, 동작들은: i) 계층 블록에 대한 입력 특징 맵(input feature map)을 수신하는 동작, ii) 그룹 컨볼루션을 사용하여 입력 특징 맵으로부터 확장된 특징 맵(expanded feature map)을 생성하는 동작, 및 iii) 확장된 특징 맵으로부터 축소된 특징 맵(reduced feature map)을 생성하는 동작을 포함한다. 계층 블록에 대한 입력 특징 맵은 c1개 채널들을 갖는 h × w 특징 맵이다. 확장된 특징 맵은 c2개 채널들을 갖는 h × w 특징 맵인 반면, 축소된 특징 맵은 c1개 채널들을 갖는 h x w 특징 맵이다. c2는 c1보다 크다. 축소된 특징 맵으로부터 계층 블록에 대한 출력 특징 맵(output feature map)이 생성된다.
본 명세서에 설명된 주제의 한 측면은 하나 이상의 컴퓨터에 의해 수행되는 방법으로 구현될 수 있다. 방법은 입력 이미지를 획득하는 단계 및 컨볼루션 신경망을 사용하여 입력 이미지를 프로세싱하는 단계를 포함한다. 컨볼루션 신경망은 계층 블록들의 시퀀스를 포함한다. 시퀀스 내 계층 블록들의 제1 서브세트 각각은 동작들을 수행하도록 구성되며, 동작들은: 계층 블록에 대한 입력 특징 맵을 수신하는 동작, 여기서 계층 블록에 대한 입력 특징 맵은 c1개 채널들을 갖는 h × w 특징 맵이고, 그룹 컨볼루션을 사용하여 입력 특징 맵으로부터 확장된 특징 맵을 생성하는 동작, 여기서 확장된 특징 맵은 c2개 채널들을 갖는 h × w 특징 맵이고, c2는 c1보다 크며, 확장된 특징 맵으로부터 축소된 특징 맵을 생성하는 동작, 여기서 축소된 특징 맵은 c1개 채널들을 갖는 h x w 특징 맵이며; 및 축소된 특징 맵으로부터 계층 블록에 대한 출력 특징 맵을 생성하는 동작을 포함한다.
이러한 구현예와 다른 구현예는 각각 선택적으로 다음 특징 중 하나 이상을 포함할 수 있다, 예를 들어 일부 구현예에서, 확장된 특징 맵을 생성하는 동작은: 입력 특징 맵에 1×1 컨볼루션을 적용함으로써 입력 특징 맵으로부터 초기 확장된 특징 맵을 생성하는 동작, 여기서 초기 확장된 특징 맵은 c2개 채널들을 갖는 h x w 특징 맵이고, 및 초기 확장된 특징 맵에 그룹 컨볼루션을 적용함으로써 초기 확장된 특징 맵으로부터 확장된 특징 맵을 생성하는 동작을 포함한다.
일부 구현예에서, 1×1 컨볼루션은 입력 필터들보다 더 많은 수의 출력 필터들을 갖는다. 그룹 컨볼루션은 입력 필터들과 출력 필터들의 총 개수가 동일할 수 있다. 계층 블록들의 시퀀스는: 비-그룹(non-group) 컨볼루션 계층 블록과 인터리빙되는(interleaved) 그룹 컨볼루션 계층 블록을 포함할 수 있으며, 여기서 그룹 컨볼루션 계층 블록은 그룹 컨볼루션을 구현하는 데 사용된다. 일부 구현예에서, 그룹 컨볼루션은 계층 블록들의 시퀀스에 포함된 융합-그룹화된(fused-grouped) 역 병목(IBN) 계층을 사용하여 구현된 융합-그룹 컨볼루션이다.
확장된 특징 맵을 생성하는 동작은: 입력 특징 맵에 그룹 컨볼루션을 적용함으로써 입력 특징 맵으로부터 확장된 특징 맵을 생성하는 동작을 포함할 수 있다. 일부 구현예에서, 확장된 특징 맵을 생성하는 동작은: 입력 특징 맵에 1×1 컨볼루션을 적용함으로써 입력 특징 맵으로부터 초기 확장된 특징 맵을 생성하는 동작, 여기서 초기 확장된 특징 맵은 c3개 채널을 갖는 h × w 특징 맵이고, c3은 c2보다 크며, 및 초기 확장된 특징 맵에 그룹 컨볼루션을 적용함으로써 초기 확장된 특징 맵으로부터 확장된 특징 맵을 생성하는 동작을 포함한다.
이러한 측면 및 다른 측면의 다른 구현예는 방법의 동작들을 수행하도록 구성되고 컴퓨터 저장 디바이스에 인코딩된 대응하는 시스템, 장치 및 컴퓨터 프로그램을 포함한다. 하나 이상의 컴퓨터로 구성된 시스템은 동작 시 시스템으로 하여금 동작들을 수행하게 하는 시스템에 설치된 소프트웨어, 펌웨어, 하드웨어 또는 이들의 조합에 의해 구성될 수 있다. 하나 이상의 컴퓨터 프로그램은 데이터 프로세싱 장치에 의해 실행될 때 장치로 하여금 동작들을 수행하게 하는 명령어들을 가짐으로써 구성될 수 있다.
본 명세서에 설명된 주제는 다음 이점 중 하나 이상을 실현하기 위해 특정 실시예에서 구현될 수 있다. 이 문서에 설명된 그룹 컨볼루션 기술은 그룹 컨볼루션 기반 신경 블록들의 다양한 조합을 갖는 새로운 컨볼루션 아키텍처를 제공한다. 그룹 컨볼루션의 기존 사용과 비교하여, 그룹 컨볼루션 신경 블록은 다른 블록 유형과 인터리빙되어 예시적인 ML 하드웨어 가속기의 하드웨어 리소스의 활용도 메트릭 및 계산 효율성에 대한 보다 세밀한 제어를 제공할 수 있다.
아키텍처의 그룹 컨볼루션 신경 블록은 역 병목(inverted-bottleneck) 스타일 신경 블록의 변형이며 모바일 컴퓨팅 디바이스 또는 에지 컴퓨팅 플랫폼과 같은 다양한 디바이스의 특수 목적 프로세서를 사용하여 구현된다. 이 아키텍처는 입력 이미지에 대응하는 입력 특징 맵의 채널 차원을 따라 그룹 컨볼루션을 구현하기 위해, 기준(baseline) 역 병목("IBN") 계층의 융합 또는 그룹화된 변형을 포함한 다양한 그룹 컨볼루션 구성을 통합한다. 그룹 컨볼루션 기술은 비-그룹 컨볼루션 계층 블록과 인터리빙되는 그룹 컨볼루션 계층 블록을 갖춘 신경 아키텍처를 제공할 수 있다.
비-그룹 컨볼루션 및 그룹 컨볼루션 기반 신경 블록의 인터리빙(interleaving)은 컨볼루션 신경망에 대한 계산을 포함하는 컴퓨터 비전(vision) 작업을 수행할 때와 같이, 입력 이미지를 보다 효율적으로 프로세싱하기 위한 향상된 신경 아키텍처를 제공한다. 예를 들어, K × K 깊이별(depthwise) 컨볼루션(즉, 비-그룹 컨볼루션)과 관련하여 K × K 그룹 컨볼루션을 구현하는 신경 블록은 계산의 보다 효율적인 하드웨어 매핑을 달성할 수 있다. 매핑은 컨볼루션 신경망을 구현하는 특수 목적 프로세서의 산술 회로의 특정 하드웨어 레이아웃에 따라 다르다. 이를 통해 집적 회로의 하드웨어 활용도, 프로세싱 지연 시간 또는 피연산자(예: 입력 및 가중치) 용량에 최적화된 방식으로 그룹 컨볼루션 계층에 대한 계산을 배열할 수 있다.
아키텍처는 입력 텐서의 채널 차원을 따라 입력의 서로 다른 그룹핑에 그룹 컨볼루션을 적용하기 위해 다양한 유형의 그룹 컨볼루션 기반 신경 블록들을 사용할 수 있다. 예를 들어, 시스템은 입력과 출력 채널 측면에서 1:1 관계가 아닌 블록 개념을 활용하여 그룹 내 입력 채널을 따라 입력의 서로 다른 그룹핑을 사용하여 컨볼루션을 수행함으로써 그룹 컨볼루션을 실행한다. 이는 입력 채널을 따라 더 많은 정보를 사용할 수 있도록 하는 알고리즘상의 이점을 제공하여 컴퓨터 비전 네트워크의 하나 이상의 계층에서 표현 용량(representation capacity)을 향상시킬 수 있다.
그룹 컨볼루션 기술은 다양한 컴퓨터 비전 작업을 위한 다양한 유형의 신경 아키텍처를 실현하기 위해 그룹 컨볼루션 신경망 블록의 다양한 구성에 대한 자동(또는 수동) 평가를 포함할 수 있다. 이러한 기술을 실행하는 예시적인 시스템은 지연 시간, 파라미터 크기, 계산 연산 수 및 모델 정확도와 같은 제약 조건에 대해 모델 성능을 최적화하는 신경 아키텍처를 결정할 수 있다. 모델 성능은 또한 모델을 실행하는 데 사용되는 기계 학습 가속기의 특정 하드웨어 집적 회로 레이아웃에 맞게 최적화될 수 있다.
본 명세서에 기술된 주제의 하나 이상의 구현예에 대한 세부사항은 첨부 도면 및 아래 설명에 기재되어 있다. 주제의 다른 잠재적인 특징, 측면 및 이점은 설명, 도면 및 청구범위로부터 명백해질 것이다.
도 1은 이미지에 대해 그룹 컨볼루션을 수행하기 위한 예시적인 컴퓨팅 시스템의 블록도이다.
도 2는 그룹 컨볼루션에 사용되는 예시적인 그룹핑을 도시하는 블록도이다.
도 3은 다양한 컨볼루션 연산에 관한 기계 학습 모델의 예시적인 속성을 도시한다.
도 4는 컨볼루션 신경망의 서로 다른 계층 블록에 대응하는 동작을 도시하는 블록도이다.
도 5는 도 1의 예시적인 컴퓨팅 시스템에서 사용될 수 있는 컨볼루션 신경망 모델에 대한 예시적인 아키텍처이다.
도 6은 완전(full) 컨볼루션 및 그룹 컨볼루션에 대한 계산을 위한 예시적인 루프 네스트(loop nest)를 도시한다.
도 7은 그룹 컨볼루션을 사용하여 이미지를 프로세싱하는 데 사용되는 예시적인 방법의 흐름도이다.
다양한 도면에서 유사한 참조 번호 및 명칭은 유사한 요소를 나타낸다.
도 1은 입력 이미지에 대해 그룹 컨볼루션을 수행하기 위한 예시적인 컴퓨팅 시스템(100)의 블록도이다. 시스템(100)은 일반적으로 이미지(104)를 프로세싱하도록, 즉 이미지의 픽셀의 강도(intensity) 값을 프로세싱하도록 구성된 예시적인 컨볼루션 신경망(102)을 포함한다. 컨볼루션 신경망(102)은 다수의 컨볼루션 신경망 계층(108)에 기초한 예시적인 신경망 아키텍처를 포함한다. 도 1의 예에서, 컨볼루션 신경망(102)은 다수의 컨볼루션 신경망 계층(108)을 포함한다. 예를 들어, 컨볼루션 신경망(102)은 N개(또는 세트)의 계층을 포함하며, 여기서 N은 1보다 큰 정수이다.
다양한 유형의 CNN 아키텍처(106)가 다양한 기계 학습 작업을 수행하는 데 사용될 수 있다. 예를 들어, 기계 학습 작업은 컴퓨터 비전 작업("이미지 프로세싱 작업"이라고도 함)일 수 있다. 즉, 신경망은 입력 이미지를 수신하고 입력 이미지를 프로세싱하여 입력 이미지에 대한 네트워크 출력을 생성하도록, 즉 일종의 이미지 프로세싱 작업을 수행하도록 구성될 수 있다. 본 명세서에서 입력 이미지를 프로세싱한다는 것은 신경망을 사용하여 이미지의 픽셀의 강도 값을 프로세싱한다는것을 의미한다. 예를 들어, 작업은 이미지 분류일 수 있고 주어진 이미지에 대해 신경망에 의해 생성된 출력은 객체 카테고리 세트 각각에 대한 점수일 수 있으며, 각각의 점수는 이미지가 해당 카테고리에 속하는 객체의 이미지를 포함할 가능성을 추정하여 나타낸다.
또 다른 예로서, 작업은 이미지 임베딩 생성일 수 있고 신경망에 의해 생성된 출력은 입력 이미지의 수치 임베딩일 수 있다. 또 다른 예로서, 작업은 객체 검출일 수 있으며 신경망에 의해 생성된 출력은 입력 이미지의 위치, 예를 들어 특정 유형의 객체가 묘사되는 이미지 내의 경계 상자 또는 기타 기하학적 영역을 식별할 수 있다. 또 다른 예로서, 작업은 이미지 분할일 수 있으며 신경망에 의해 생성된 출력은 입력 이미지의 각 픽셀에 대해 해당 픽셀이 여러 카테고리 중 어느 카테고리에 속하는지 정의할 수 있다. 그러나 보다 일반적으로 작업은 이미지 이외의 입력을 프로세싱하는 작업을 포함하여 다양한 작업 중 하나일 수 있다.
일부 이미지 프로세싱 작업은 객체 검출, 데이터 분류, 패턴 인식 또는 이미지 인식뿐만 아니라 데이터 모델링 및 정보 클러스터링을 포함하는 계산 예측과 관련될 수 있다. 예를 들어 작업에는 객체 검출이 포함될 수 있으며, 여기서 CNN은 특정 객체를 검출하기 위해 이미지를 프로세싱하고 객체 검출 시 객체를 식별하는 출력을 생성한다. 또 다른 작업에는 데이터/이미지 분류가 포함될 수 있으며, 여기서 CNN은 이미지를 프로세싱하여 이미지에 대한 분류를 결정하고 이미지의 컨텐츠에 기초하여 이미지에 대한 특정 분류 출력을 생성한다. 또 다른 작업에는 패턴 인식이 포함될 수 있으며, 여기서 CNN은 이미지를 프로세싱하여 이미지의 특정 패턴을 식별하거나 인식하고 이미지의 컨텐츠에 기초하여 인식된 패턴을 나타내는 출력을 생성한다. 또 다른 작업에는 일반적인 이미지 인식이 포함될 수 있으며, 여기서 CNN은 이미지를 프로세싱하여 이미지의 다양한 요소를 식별하거나 인식하고 이미지의 컨텐츠에 기초하여 인식된 요소를 나타내는 출력을 생성한다.
일부 구현예에서, 컨볼루션 신경망(102)은 예시적인 모바일 디바이스(110)에서 구현되거나 그에 의해 액세스 가능하다. 모바일 디바이스(110)는 스마트폰, 태블릿, 전자 노트북, 노트북, 게임 콘솔 또는 관련 휴대용 컴퓨팅 디바이스일 수 있다. 일부 다른 구현예에서, 컨볼루션 신경망(102)은 서버 뱅크, 서버 그룹 또는 다중 프로세서 시스템과 같은 예시적인 클라우드 기반 시스템에 통합되거나 이에 의해 액세스 가능하다.
컨볼루션 신경망(102)은 하나 이상의 기계 학습 하드웨어 가속기(112)를 사용하여 구현될 수 있다. 각각의 하드웨어 가속기(112)는 하나 이상의 특수 목적 하드웨어 집적 회로(114)에 대응한다. 일반적으로, 회로(114)는 신경망 계산을 수행하는 하드웨어 회로(예를 들어, 특수 목적 하드웨어 회로)이다. 예를 들어, 회로(114) 중 일부(또는 전부)는 애플리케이션 특정 집적 회로(ASIC), 필드 프로그래밍가능 게이트 어레이(FPGA), 단일 코어 신경망 프로세서 또는 멀티 코어 신경망 프로세서와 같은 특수 목적 하드웨어 회로일 수 있다. 회로(114)는 또한 특수 목적의 그래픽 프로세싱 유닛(GPU)일 수도 있다.
하드웨어 회로(114)는 신경망 작업 부하에 대한 계산을 가속화하도록 동작 가능하다. 일부 구현예에서, 하드웨어 회로(114)는 하드웨어, 소프트웨어, 또는 둘 다로 구현될 수 있는 제어 로직을 포함한다. 제어 로직은 계산에 사용되는 데이터 획득 및 라우팅을 포함하여 신경망 계산에 대한 명령을 내리는 데 사용된다. 회로(114)는 신경망의 각 계층에 대한 입력, 입력 활성화, 출력, 출력 활성화 및 파라미터를 저장하기 위한 메모리를 포함할 수 있다. 일부 구현예에서, 회로(114)는 전용 메모리, 공유 메모리, 또는 둘 다를 포함한다. 예를 들어, 회로(114)는 입력, 입력 활성화, 출력 또는 출력 활성화를 저장하기 위한 입력/활성화 메모리, 및 신경망 계층 각각에 대한 각각의 파라미터 세트를 저장하기 위한 파라미터 메모리를 포함할 수 있다.
회로(114)는 하드웨어 매트릭스 유닛, 계산 타일의 배열, 또는 이들의 조합과 같은 계산 유닛을 포함할 수 있다. 계산 유닛은 신경망의 계층을 통해 입력을 프로세싱하기 위한 신경망 계산을 수행하는 데 사용된다. 일부 구현예에서, 매트릭스 유닛 또는 개별 계산 타일 각각은 곱셈 및 누적 연산(accumulation operation)을 수행하는 곱셈 누적 셀과 같은 하나 이상의 계산 셀 어레이를 포함한다. 예를 들어, 각 셀은 입력과 가중치 값을 곱하여 곱(product)을 생성하고, 여러 클록 사이클에 걸쳐 곱의 누적(예: 덧셈 연산)을 수행할 수 있다.
회로(114)는 입력 매트릭스의 채널 차원의 주어진 깊이에 대해 입력 매트릭스의 대응하는 부분에 대해 서로 다른 가중치 필터를 컨볼루션하기 위해 완전, 깊이별 및 그룹 컨볼루션을 구현한다. 예를 들어, 모바일 디바이스(110)는 컨볼루션 신경망(102)과 모델의 CNN 계층(108)을 사용하여, 수신된 입력(104)에 대한 이미지 프로세싱 출력(120), 예를 들어 인식 또는 검출 출력을 생성한다. 예를 들어, 입력(104)은 랩탑(122)의 이미지일 수 있고 모바일 디바이스(110)는 컨볼루션 신경망(102)을 사용하여 이미지를 프로세싱하고 이미지가 랩탑의 묘사를 포함한다는 것을 검출하거나 인식한다.
도 2는 입력 데이터세트(202) 및 입력 데이터세트로부터의 입력을 사용하여 그룹 컨볼루션을 수행하기 위한 예시적인 그룹핑(203)의 표현을 포함하는 블록도이다. 일부 구현예에서, 입력 데이터세트(202)는 입력의 다차원 매트릭스 구조이거나 그로부터 파생된다. 예를 들어, 매트릭스 구조는 Zin 채널을 포함하는 입력 텐서일 수 있으며, 각 채널은 X x Y의 공간 차원(spatial dimension)을 갖는다. 매트릭스 구조(또는 텐서)는 입력 세트, 활성화 입력 세트 또는 가중치 입력 세트를 나타낼 수 있다. 경우에 따라 본 명세서에서는 활성화 입력 세트에 대한 매트릭스 구조를 입력 특징 맵이라고 하고, 가중치 입력 세트에 대한 매트릭스 구조를 커널 매트릭스 구조라고 한다.
도 2의 예에서, 입력 데이터세트(202)는 3개의 차원, 즉 2개의 (X,Y) 공간 차원과 1개의 (Z) 채널 차원을 갖는 매트릭스 구조(또는 텐서)이다. 공간 차원과 관련하여, 일부 구현예에서 이러한 차원은 활성화 입력 세트의 공간 또는 포지션에 대응한다. 예를 들어, 컨볼루션 신경망(102)이 2차원을 갖는 이미지(104)를 프로세싱하는 경우, 매트릭스 구조는 이미지의 공간 좌표, 즉 X, Y 좌표에 대응하는 2개의 공간 차원을 가질 수 있다. 채널 차원과 관련하여, 이 차원은 입력(예: 활성화 입력)의 특징(feature)에 대응한다. 채널 차원은 Z, Zin 또는 채널 차원을 참조하여 설명되며, 여기서 "채널"은 이미지의 색상 채널에 대응할 수 있다.
시스템(100)은 예를 들어, 입력 데이터 세트(202)의 채널 차원의 깊이 레벨을 참조하여 그룹 컨볼루션의 분할(partitioning)을 결정하도록 구성된다. 각각의 입력 채널은 대응하는 깊이 레벨을 가질 수 있다. 예를 들어, 도 2의 매트릭스 구조는 Zin 차원을 따라 확장되는 깊이 레벨을 갖는다. 예시로서, 예시적인 매트릭스 구조(202)가 컨볼루션 신경망 계층에 활성화 입력 세트로서 전송된 3 x 3 x 3 이미지를 나타내는 경우, 이미지(3 x 3)의 X 및 Y 차원은 공간 차원일 수 있고, Z 차원(3)은 R, G, B 값에 대응하는 채널 차원일 수 있다.
위에서 언급된 바와 같이, 시스템(100)은 예시적인 입력 특징 맵의 채널 차원을 따라 그룹 컨볼루션의 분할을 결정할 수 있다. 예를 들어, 시스템(100)은 채널 차원을 따라 입력 그룹(210-1)에 대한 제1 분할 및 채널 차원을 따라 입력 그룹(210-2)에 대한 제2 분할을 결정할 수 있다. 일부 구현예에서, 시스템(100)은 채널 차원을 따라 n개의 그룹핑(210-n)을 결정하며, 여기서 n은 1보다 크거나 같은 정수이다. 입력 특징 맵(202)이 활성화 입력 세트로서 전송된 3 x 3 x 3 이미지를 나타내는 예에서, 그룹 컨볼루션을 위한 입력 그룹(210-1)을 정의하기 위한 제1 분할은 예를 들어 빨간색 값과 같은 9개의 '1' 활성화 입력의 특징에 대응할 수 있고, 그룹 컨볼루션을 위한 입력 그룹(210-2)을 정의하기 위한 제2 분할은 예를 들어 녹색 값과 같은 9개의 '2' 활성화 입력의 특징에 대응할 수 있으며, 그룹 컨볼루션을 위한 입력 그룹(210-3)을 정의하기 위한 제3 분할은 예를 들어 파란색 값과 같은 9개의 '3' 활성화 입력의 특징에 대응할 수 있다.
위에서 논의된 바와 같이, 그룹 컨볼루션은 입력 매트릭스의 채널 차원을 따라 그룹핑함으로써 입력 특징 맵을 컨볼루션하며, 여기서 그룹 컨볼루션을 나타내는 각 입력 그룹(210-n)은 대응하는 출력 그룹(220-n)과 연관된다. 컨볼루션 신경망(102)은 하나 이상의 컨볼루션 신경망 계층(108)을 사용하여 수신된 입력(202)에 대한 출력(206), 예를 들어 분류를 생성한다. 예를 들어, 각 컨볼루션 신경망 계층은 연관된 커널 세트(204)를 갖는다. 커널(204)은 그룹 컨볼루션의 구성에 따라 분할될 수 있으므로, 각각의 입력 그룹(210-n)은 대응하는 커널/가중치 매트릭스와 컨볼루션되어 컨볼루션된 출력(220-n)을 생성한다. 도 2의 예에서, 입력 그룹(210-1)은 대응하는 커널 매트릭스(212)와 컨볼루션되어 컨볼루션된 출력(220-1)을 생성하는 반면, 입력 그룹(210-2)은 대응하는 커널 매트릭스(214)와 컨볼루션되어 컨볼루션된 출력(220-2)을 생성한다.
시스템(100)은 제어 파라미터 g에 대한 값을 동적으로 결정하도록 구성되며, 여기서 g는 1보다 큰 정수이다. 시스템(100)은 또한 Zin/g를 계산함으로써 그룹 크기를 결정하도록 구성되며, 여기서 Zin은 입력 텐서의 채널 차원을 따른 입력 채널의 수이고 g는 제어 파라미터에 의해 정의된 그룹의 수이다. 제어 파라미터 g는 그룹 컨볼루션(예: 분할)의 수를 정의하는 데 사용된다. 일부 예에서, g의 값은 시스템(100)에서 동적으로 결정되거나 주어진 동작에 대해 시스템(100)에서 미리 정의될 수 있다. 예를 들어, 그룹 컨볼루션의 수를 정의하는 제어 파라미터 g는 시스템(100)의 컴파일러에 의해 미리 정의(및/또는 내장)되거나 런타임에 동적으로 결정될 수 있다.
일부 구현예에서, 시스템(100)은 요청된 특정 유형의 기계 학습 작업에 기초하여 그룹 컨볼루션(예: 분할)의 수를 정의하고 해당 작업에 따라 제어 파라미터 g의 값을 설정한다. 일부 다른 구현예에서, 시스템(100)은: i) 프로세싱될 기계 학습 작업의 유형; ii) 컨볼루션 신경망의 신경 구조; iii) 계산 환경; iv) 성능 목표; 또는 v) 이들의 조합에 기초하여 그룹 컨볼루션(예: 분할)의 수를 정의한다. 예시적인 계산 환경에는 클라우드 기반 컴퓨팅 환경 또는 모바일 디바이스 컴퓨팅 환경이 포함될 수 있다. 성능 목표에는 속도, 지연 시간, 하드웨어 활용도, 모델 정확도, 파라미터 크기 또는 이들의 조합이 포함될 수 있다.
그룹 컨볼루션은 컨볼루션의 일반화된 형태로 설명될 수 있다. 일부 구현예에서, 시스템(100)은 제어 파라미터에 특정 값을 할당함으로써 제어 파라미터 g를 초기화한다. 제어 파라미터 g의 초기화되거나 할당된 값은 그룹 컨볼루션의 분할을 제어하는 데 사용될 수 있다. 예를 들어, 시스템(100)이 전체 채널 차원에 대한 데이터를 사용하는 컨볼루션 연산(예: 완전 컨볼루션)이 필요하다고 결정하면, 시스템(100)은 제어 파라미터의 값을 g = 1로 설정하고 매트릭스 구조(202)의 관련 데이터를 사용하여 완전 컨볼루션을 트리거 및/또는 실행한다.
관련하여, 시스템(100)은 더 큰 신경망 계산의 주어진 단계에 필요한 깊이별 분리가능(separable) 컨볼루션의 그룹핑을 결정할 수 있다. 예를 들어, 시스템(100)이 채널 차원의 일부에 대한 데이터를 사용하는 두 개 이상의 깊이별 분리가능 컨볼루션이 필요하다고 결정하면, 시스템(100)은 제어 파라미터를 원하는 값(예를 들어, g = 4)으로 설정하고 매트릭스 구조(202) 내의 데이터의 관련 부분을 사용하여 2개 이상(예를 들어, 4개)의 깊이별 분리가능 컨볼루션을 트리거 및/또는 실행한다. 일부 구현예에서, 둘 이상의 그룹 컨볼루션에 대한 계산은 순차적으로, 동시에 또는 이들의 조합으로 수행된다. 예를 들어, 2개 이상의 깊이별 분리가능 컨볼루션 각각에 대한 각각의 계산 세트 중 일부(또는 전부)는 순차적으로 또는 병렬로 수행될 수 있다.
위에서 언급된 바와 같이, 이 문서에 설명된 그룹화된 컨볼루션 기술은 적어도 예시적인 ML 가속기의 하드웨어 리소스의 활용도 메트릭 및 계산 효율성에 대해 보다 세밀한 제어를 제공한다. 일부 구현예에서, 이러한 그룹 컨볼루션 기술은 예시적인 기계 학습 모델의 특정 속성 또는 성능 메트릭에 영향을 주고 제어하는 데 사용되는 다양한 블록 또는 제어 노브(knob)를 제공한다. 예를 들어, 1과 채널 수(z) 사이에 있는 제어 파라미터 g 값을 선택하면 완전 컨볼루션과 깊이별 분리가능 컨볼루션의 두 가지 예시적인 제약 조건 사이의 연속체(continuum)가 제공된다. 이에 대해서는 아래에서 자세히 설명한다.
도 3은 기계 학습 모델의 예시적인 속성을 도시한다. 일반적으로, 속성은 위에서 설명한 컨볼루션 신경망(102)을 사용하여 수행되는 다양한 컨볼루션 연산에 대응한다. 예를 들어, 속성(302)은 완전 컨볼루션을 위한 연산을 수행하는 데 사용되는 파라미터 수량과 곱셈 누적 셀(multiply accumulate cell)(MAC)들을 보여주고, 속성(304)은 깊이별 컨볼루션을 위한 연산을 수행하는 데 사용되는 파라미터 수량과 곱셈 누적 셀들을 보여주며, 속성(306)은 그룹 컨볼루션을 위한 연산을 수행하는 데 사용되는 파라미터 수량과 곱셈 누적 셀들을 보여준다.
제어 파라미터 g 및 그룹 컨볼루션의 구성은 주어진 작업에 사용되는 파라미터(예를 들어, 트레이닝가능한 파라미터)의 수 뿐만 아니라 작업에 대한 연산을 수행하는 데 사용되는 곱셈 누적 셀들의 수량을 제어하기 위해 결정 및/또는 조정될 수 있다. 기계 학습 모델의 이러한 예시적인 속성(302, 304, 306) 각각은 모델의 다양한 성능 메트릭에 대응하는 영향을 미칠 수 있다. 예를 들어 트레이닝가능한 파라미터의 수량 및/또는 곱셈 누적 셀(또는 연산)의 수량의 증가 또는 감소는 기계 학습 모델의 정확도, 속도 및/또는 지연 시간에 대응하는 영향을 미친다. 또 다른 예에서, 완전 컨볼루션에 비해 깊이별 컨볼루션을 사용하는 것은 가볍고 저비용(즉, 리소스 집약도가 낮음) 옵션이 될 수 있지만, ML 가속기의 집적 회로에서 깊이별 컨볼루션을 실행하면 회로의 하드웨어 리소스 활용도가 떨어지는 경우가 많다.
예를 들어, 깊이별(또는 깊이별 분리가능) 컨볼루션을 수행할 때, 수십 또는 수백 개의 하드웨어 곱셈 누적 셀을 포함하는 회로(114)의 표준 하드웨어 어레이는 최소 또는 낮은 지연 시간을 경험하면서 주어진 계산 사이클 동안 해당 하드웨어 셀의 3% 활용도를 경험할 수 있다. 따라서 깊이별 컨볼루션을 사용하면 속도가 빨라질 수 있지만 하드웨어 활용도가 낮아 비효율적이기도 하다. 반대로, 완전 컨볼루션을 수행할 때 회로(114)의 하드웨어 어레이는 실질적으로 더 높은 활용도(예: 73%)를 경험할 수 있으므로, 어레이의 곱셈 누적 셀의 대부분이 주어진 계산 사이클에 사용된다. 깊이별 컨볼루션과 비교할 때, 완전 컨볼루션을 수행할 때 이렇게 높은 활용도는 종종 계산 지연 시간이 훨씬 더 길어지는 대가로 발생한다.
전술한 바와 같이, 이 문서에 설명된 그룹 컨볼루션 기술은 예시적인 ML 하드웨어 가속기의 하드웨어 리소스의 활용도 메트릭 및 계산 효율성에 대해 보다 세분화된 제어를 제공한다. 1과 채널 수(z) 사이에 있는 제어 파라미터 g 값의 선택은 완전 컨볼루션(308)과 깊이별 분리가능 컨볼루션(310)의 두 가지 예시적인 제약 조건 사이의 연속체를 제공한다. 시스템(100)은 도 2의 예에 도시된 바와 같이 채널 차원의 깊이 레벨을 참조하여 그룹 컨볼루션의 분할을 결정할 수 있다. 제어 파라미터 g는 그룹 컨볼루션(예: 분할)의 수를 정의하는 데 사용된다.
도 3의 예시적인 그래프(312)는 완전 컨볼루션(308)과 깊이별 컨볼루션(310) 사이의 연속체를 따라 2와 채널 수(z) 사이에 있는 g에 대한 서로 다른 값(324)을 선택하기 위한 예시적인 파라미터 수량(320)과 MAC 수량(322)을 보여준다. 이 예에서 zin 차원은 256이다. 그래프(312)는 그룹 컨볼루션 값(g)의 대응하는 증가에 비해 트레이닝가능한 파라미터의 수량과 곱셈 누적 셀(또는 연산)의 수량이 감소하는 예를 보여준다.
위에서 논의된 바와 같이, 회로(114)는 그룹 컨볼루션 계층과 같은, 계층의 출력을 계산하기 위해 회로의 제어 로직을 사용하여 트래버스 또는 액세스될 수 있는 텐서의 요소에 대응하는 위치를 갖는 메모리를 포함할 수 있다. 메모리로부터 페치된(fetched) 요소(예: 입력 또는 활성화)는 계층의 여러 출력을 계산하는 데 유용해야 한다. 가중치(예: 파라미터)의 수는 그룹핑 크기에 따라 확장될 수도 있다. 일부 구현예에서는 메모리에서 파라미터를 전송하면 병목 현상(bottleneck)이 발생하여 계산 지연 시간이 늘어날 수 있다. 선호하는 신경망 아키텍처를 결정할 때 검색 데이터 또는 시뮬레이션의 예시적인 세트는 파라미터 전송 시간과 관련된 병목 현상을 나타낼 수 있다. 그런 다음 공개된 그룹 컨볼루션 개념과 그룹 컨볼루션 기반 신경 블록을 사용하여 파라미터 수를 줄이고 기계 학습 작업에 대한 계산 시간을 개선하거나 가속화하는 아키텍처가 정의될 수 있다.
도 4는 프로세스 블록(410), 프로세스 블록(420) 및 프로세스 블록(430)의 예를 도시하는 블록도이다. 각각의 프로세스 블록(410, 420, 430)은 하나 이상의 계층 블록을 포함한다. 일반적으로, 각각의 프로세스 블록(410, 420, 430)은 컨볼루션 신경망의 서로 다른 계층 블록으로 표현될 수 있다. 도 4의 예에서, 프로세스 블록(410, 420, 430) 각각은 주어진 컨볼루션 연산에 대해 수행되는 동작들의 서브세트일 수 있다. 컨볼루션 연산은 전술한 예시적인 하드웨어 집적 회로(114)에서 구현될 수 있는 컨볼루션 신경망(102)을 사용하여 실행된다.
신경망 블록은 단일 계층 또는 다중 계층을 포함하는 신경망의 구성요소를 설명할 수 있다. 모바일 비전 모델과 같은 예시적인 컴퓨터 비전 모델에서 광범위하게 사용되는 공통 블록은 역 병목(IBN) 계층 블록(402)("IBN 계층(402)")이다. 일반적으로, IBN 블록은 다수의 컨볼루션 계층을 특정 방식으로 결합하는 더 큰 신경 아키텍처의 매크로 블록일 수 있다. 예시적인 분류 또는 객체 검출 네트워크를 형성하기 위한 빌딩 블록으로서, IBN 계층을 포함하는 여러 유형의 계층(또는 블록)이 사용된다.
IBN 계층(402)은 포인트별(pointwise) 컨볼루션(404), K × K 깊이별 컨볼루션(405) 및 최종(final) 포인트별 컨볼루션(406)을 포함할 수 있다. 포인트별 컨볼루션은 채널 차원을 확장(expand)하며 이 포인트별 컨볼루션의 예가 도 4에 "1 × 1 Conv(Expand)"로 표시되어 있다. K × K 깊이별 컨볼루션 커널은 포인트별 컨볼루션 이후 채널 차원의 확장된 깊이에 적용된다. 최종 포인트별 컨볼루션(406)은 확장된 채널 차원을 더 작은 값으로 다시 투영(project)한다. 이 최종 포인트별 컨볼루션의 예가 도 4에 "1 × 1 Conv(Project)"로 표시되어 있다.
IBN 계층 블록(402)에서와 같이 K × K 깊이별 컨볼루션을 사용하는 것은 매우 일반적이다. 확장 후에, 대규모 또는 확장된 채널 차원에 대한 완전 컨볼루션을 계산하는 것은 프로세싱 및 계산 리소스 측면에서 매우 비용이 많이 들기 때문이다. 일부 구현예에서, 포인트별 컨볼루션(404) 및 K × K 깊이별 컨볼루션(405)은 융합-IBN 계층(407)을 나타내는 K × K 완전 컨볼루션(융합-확장) 프로세스 블록으로 대체된다. 일반적으로 융합-IBN 계층(407)은 확장 및 깊이별 컨볼루션 연산을 하나의 완전 컨볼루션 신경 블록으로 병합한다.
완전 컨볼루션은 많은 수의 파라미터/가중치를 포함할 수 있으며 집적 회로의 하드웨어 컴퓨팅 리소스의 상당한 비율을 요구한다. 위에 표시된 바와 같이, 그러한 리소스의 예는 회로(114)의 하드웨어 계산 어레이(예를 들어, 시스톨릭(systolic) 어레이)의 곱셈 누적 셀, 집적 회로(114)의 벡터 유닛, 또는 둘 다일 수 있다. 대조적으로, 아래 설명된 블록(414, 416, 422, 432)과 같은 개시된 신경 블록 대안을 사용하여 구현된 개시된 그룹 컨볼루션 기술은 입력 채널 세트(예를 들어, 대규모 채널)에 대해 트레이닝가능한 파라미터의 수량을 증가시키는 향상된 접근 방식을 제공하여 모델 정확도를 향상시키지만 비-그룹 컨볼루션 대안에 비해 계산 비용은 더 낮다.
이제 프로세스 블록(410)을 참조하면, 위에서 설명된 K × K 깊이별 컨볼루션(405)이 K × K 그룹 컨볼루션(414 또는 416)으로 대체되는, 그룹화된 IBN 점진적(progressive) 투영(또는 점진적 확장) 블록이 도시된다. 프로세스 블록(410)은 채널 차원의 점진적 투영을 수행하기 위해 K × K 그룹 컨볼루션(414)을 구현하는 제1 예 또는 채널 차원의 점진적 확장을 수행하기 위해 K × K 그룹 컨볼루션(416)을 구현하는 제2 예를 가질 수 있다.
프로세스 블록(410)의 제1 예에서, 시스템(100)은 입력 특징 맵에 1 × 1 컨볼루션(확장)(404)을 적용함으로써 입력 특징 맵(예를 들어, 입력(438))으로부터 확장된 특징 맵을 생성할 수 있다. 입력 특징 맵은 채널이 c1개인 h × w 특징 맵일 수 있다. 이 확장된 특징 맵은 c2개 채널을 갖는 h × w 특징 맵일 수 있다. 여기서 c2는 c1보다 크다. 일부 구현예에서, 1 × 1 컨볼루션은 입력 필터보다 출력 필터 수가 더 많다. K × K 그룹 컨볼루션(414)은 채널 차원의 점진적 투영을 수행하기 위해 확된 특징 맵에 적용된다. 예를 들어, 컨볼루션 신경망(102)은 컨볼루션 신경망(102)의 그룹 컨볼루션 계층에서 구현된 그룹 컨볼루션을 사용하여 확장된 특징 맵에 대한 점진적 투영을 수행할 수 있다. 그룹화된-IBN 점진적 투영은 투영 및 메인(main) K × K 컨볼루션 연산자 전용 파라미터 트레이드오프(tradeoff)에 유연성을 제공할 수 있다.
프로세스 블록(410)의 제1 예에서, 최종 포인트별 컨볼루션(406)은 확장된 채널 차원을 더 작은 값으로 다시 투영한다. 따라서 그룹 컨볼루션과 연관된 K×K 커널은 1×1 투영(406)이 채널 크기를 최종 값으로 감소시시키기 전에 채널 크기의 초기 감소를 수행할 수 있다. 각각의 추가 블록(418)은 주어진 프로세스 블록(예를 들어, 410)에 공급되는 입력(438)과 함께 예시적인 컨볼루션된 출력(436)을 추가하는 데 사용될 수 있는 선택적인 잔차(residual)(또는 스킵) 연결이다. 예시적인 합계(440)는 대응하는 프로세스 블록에서 수행되는 연산의 출력으로 전달된다.
프로세스 블록(410)의 제2 예에서, 시스템(100)은 입력 특징 맵에 1 × 1 컨볼루션(확장)(404)을 적용함으로써 입력 특징 맵(예를 들어, 입력(438))으로부터 초기 확장된 특징 맵을 생성할 수 있다. 이 초기 확장된 특징 맵은 c2개의 채널을 갖는 h × w 특징 맵일 수 있으며, 여기서 c2는 c1보다 크다. 시스템(100)은 초기 확장된 특징 맵에 K×K 그룹 컨볼루션(416)을 적용함으로써 초기 확장된 특징 맵으로부터 확장된 특징 맵을 생성한다. 예를 들어, 컨볼루션 신경망(102)은 컨볼루션 신경망(102)의 그룹 컨볼루션 계층에서 구현된 그룹 컨볼루션을 사용하여 초기 확장된 특징 맵으로부터 확장된 특징 맵을 생성할 수 있다. 확장된 특징 맵은 c3개의 채널을 갖는 h × w 특징 맵일 수 있으며, 여기서 c3은 c2보다 크다. 이 그룹화된-IBN 점진적 확장 연산은 확장 전용 파라미터와 메인 K × K 컨볼루션 연산자에 대한 유연성을 제공할 수 있다. 그룹화된-IBN 점진적 확장은 확장 계층의 일부를 융합되지 않은 상태로 유지하고 메인 K × K 컨볼루션 전에 그룹 전체에 걸쳐 채널별(channel-wise) 컨볼루션을 허용할 수 있다. 프로세스 블록(410)의 최종 포인트별 컨볼루션(406)은 확장된 채널 차원을 더 작은 값으로 다시 투영한다.
이제 프로세스 블록(420)을 참조하면, 이 프로세스 블록은 위에서 설명한 1×1 컨볼루션(확장)(404)과 K×K 깊이별 컨볼루션(405)이 K×K 그룹 컨볼루션(422)으로 대체되는 융합-그룹화된 IBN 블록이다. 이 K × K 그룹 컨볼루션(422)은 포인트별(404) + 깊이별(405) 쌍을 대체하고 K × K 그룹 컨볼루션(422)을 통해 이러한 연산의 측면을 융합하여 채널 차원을 확장할 수 있기 때문에 적어도 "융합-확장" 지정(designation)을 포함한다. 따라서, 프로세스 블록(420)에서, 시스템(100)은 K × K 그룹 컨볼루션(422)을 입력 특징 맵에 적용함으로써 예시적인 입력 특징 맵(예를 들어, 입력(438))으로부터 확장된 특징 맵을 생성할 수 있다. 입력 특징 맵의 예는 채널이 c1개인 h × w 특징 맵일 수 있다. 확장된 특징 맵은 c2개 채널을 갖는 h × w 특징 맵일 수 있으며, 여기서 c2는 c1보다 크다. 프로세스 블록(420)의 최종 포인트별 컨볼루션(406)은 확장된 채널 차원을 더 작은 값으로 다시 투영한다. 전술한 바와 같이, 대응하는 합계(440)는 프로세스 블록(420)에서 수행되는 특정 동작의 출력으로서 전달된다.
일부 구현예에서, 융합-그룹 컨볼루션 블록(422)은 채널 차원을 따라 보다 효율적인 프로세싱을 허용하는 융합-IBN 계층(407)에 대한 대안을 제공한다. 예를 들어, 이러한 효율성은 컴퓨터 비전 모델의 후반 단계에서 실현될 수 있다. 어떤 경우에는 이러한 후반 단계는 채널 차원을 따른 컨볼루션과 연관된 데이터 레졸루션(resolution)이 상당히 큰 경우에 대응한다. 융합-그룹 컨볼루션에 의해 제공되는 프로세싱 속도의 증가는 그룹 컨볼루션 동작을 포함하는 프로세스 블록(420)이 특정 유형의 특수 목적 집적 회로를 사용하여 실행될 때 특히 최적화될 수 있다. 예를 들어, 특수 목적 집적 회로는 메모리로부터 회로의 하나 이상의 계산 셀로 계층 입력을 브로드캐스트하는 브로드캐스트 입력 버스를 포함하는 신경망 프로세서일 수 있다.
융합-그룹 컨볼루션 블록(422)은 그룹화된 IBN 계층(414)에 비해 약간 더 높은 파라미터 개수를 요구할 수 있다. 완전 컨볼루션과 깊이별 분리가능 컨볼루션의 두 제약 조건 사이의 연속체에서는 융합-그룹 IBN(422)이 연속체에서 더 높다. 예를 들어, 융합-그룹화된 IBN 계층(422)은 깊이별 컨볼루션으로부터 완전 연속체로 연속체를 따라 완전 컨볼루션에 더 가까울 수 있다.
이제 프로세스 블록(430)을 참조하면, 이 프로세스 블록은 위에서 설명된 K × K 깊이별 컨볼루션(405)이 K × K 그룹 컨볼루션(432)으로 대체되는 그룹화된 IBN 블록이다. 전술한 바와 같이, 시스템(100)은 확장된 특징 맵을 생성하기 위해 입력(438)에 1×1 컨볼루션(404)을 적용한다. K×K 그룹 컨볼루션(432)은 컨볼루션 신경망(102)의 그룹 컨볼루션 계층에 적용된다. K×K 그룹 컨볼루션(432)은 입력 필터와 출력 필터의 총 개수가 동일할 수 있다. 다른 프로세스 블록과 유사하게, 프로세스 블록(430)의 최종 포인트별 컨볼루션(406)은 확장된 채널 차원을 더 작은 값으로 다시 투영하고 대응하는 합계(440)는 프로세스 블록(430)에서 수행되는 특정 동작의 출력으로서 전달된다.
프로세스 블록(430)에서 실행되는 컨볼루션 연산은 기준 IBN 계층에 비해 더 작은 확장 비율을 수반할 수 있다. 이러한 작은 확장 비율은 파라미터 개수를 줄일 수 있다. 파라미터 개수를 복구하기 위해 프로세스 블록(430)(및 다른 프로세스 블록)의 컨볼루션 연산은 교차-채널 정보를 활용하는 K × K 커널에 대한 그룹 컨볼루션을 사용할 수 있다. K × K 그룹 컨볼루션(432)은 입력 채널 차원을 따른 컨볼루션을 포함하는 다른 블록 유형과 인터리빙될 수 있다. 이 인터리빙된 패턴은 그룹 간 입력 채널 컨볼루션 부족을 완화할 수 있다.
일반적으로, 프로세스 블록(410, 430)의 각각의 아키텍처는 K × K 깊이별 컨볼루션을 K × K 그룹 컨볼루션으로 대체한다. K × K 깊이별 컨볼루션을 K × K 그룹 컨볼루션으로 대체하는 것의 적어도 한 가지 이점은 K × K 그룹 컨볼루션이 완전 컨볼루션에 비해 지연 시간이 감소하면서 더 트레이닝가능한 파라미터를 생성한다는 것이다. K × K 그룹 컨볼루션을 사용하여 추가로 트레이닝가능한 파라미터를 사용하면 모델 정확도가 향상된다. 이렇게 향상된 정확도는 깊이별 컨볼루션과 비교할 때 지연 시간이 약간 또는 최소한으로 증가하여 달성될 수 있다.
깊이별 컨볼루션을 그룹 컨볼루션으로 대체하는 것은 모바일 디바이스 또는 에지(Edge) 컴퓨팅 애플리케이션을 위해 구성된 텐서 프로세싱 유닛(TPU)과 같은 특정 유형의 하드웨어 가속기에 대한 컨볼루션 연산에 특정할 수 있다. 일부 구현예에서, K × K 깊이별 컨볼루션과 관련하여, K × K 그룹 컨볼루션은 집적 회로(114)의 하드웨어 레이아웃에 관해 보다 효율적인 하드웨어 매핑을 달성하도록 구성될 수 있다. 예를 들어, 그룹 컨볼루션은 입력 채널과 출력 채널의 측면에서 1:1 관계가 아닌 블록 개념을 활용하여 그룹 내 입력 채널을 따라 컨볼루션을 수행할 수 있다. 이는 입력 채널을 따라 더 많은 정보를 사용할 수 있는 알고리즘상의 이점을 제공하여 컴퓨터 비전 네트워크의 하나 이상의 계층에서 표현 용량을 향상시킨다.
특정 기계 학습 작업에 대한 계산이 CNN의 더 깊은 계층으로 진행됨에 따라 채널 차원이 더 커질 수 있다. 출력 정확도 또는 컴퓨팅/프로세싱 속도와 같은 특정 성능 개선을 실현하기 위한 시도로, 위에서 설명된 융합-IBN 계층(407)과 같은 융합 IBN 계층 블록을 사용하여 선행 접근법이 연구되었다. 그러나 융합-IBN 계층의 사용은 입력 채널(zin)의 더 큰 각 차원에 대해 완전 컨볼루션을 수행하는 비용으로 인해 실용적이지 않으며, 이로 인해 컴퓨팅 속도가 느려진다.
이전 접근법과 비교하여, 프로세스 블록(410, 420, 430)의 각각의 그룹 컨볼루션은 특정 프로세싱 패널티를 최소화하면서 모델 성능을 각각 향상시킬 수 있는 신경 블록 대안을 제공한다. 예를 들어, 융합-그룹화된 IBN 블록(422)은 종래의 IBN 계층 또는 융합-IBN 계층과 연관된 지연 시간 또는 확장/대형 데이터세트 프로세싱 페널티 없이 성능 개선을 달성하는 데 사용될 수 있다. 일반적으로 그룹 컨볼루션 블록(414, 416, 422, 432) 각각은 하나 이상의 그룹 컨볼루션 계층을 포함할 수 있는 신경망 블록이다. 또한, 그룹 컨볼루션 블록(414, 416, 422, 432) 각각은 입력 채널 차원을 따라 컨볼루션을 구현하는 다른 계층 또는 블록 유형과 인터리빙될 수 있다. 인터리빙된 신경 블록의 예가 도 5에 나와 있다.
인터리빙된 패턴은 그룹 간 입력 채널 컨볼루션의 부족을 완화할 수 있다. 예를 들어, 그룹 컨볼루션은 교차 채널 정보를 사용하지만, 이러한 정보는 그룹에만 제한되며, 일반적으로 그룹이 사용될 때 채널 차원에 따라 정보를 혼합하려면 셔플 연산이 필요하다. 인터리빙된 패턴은 또한 이러한 추가 셔플 연산자(예: ShuffleNet)의 사용을 방지한다. 블록(410 및 430)과 유사하게, 예를 들어 블록(422)을 통한 융합-그룹 컨볼루션 연산은 기준 IBN에 비해 더 트레이닝가능한 파라미터를 생성할 수 있으며, 특정 유형의 텐서 모양에 대해 기준 IBN 및 융합 IBN 계층에 비해 프로세싱 속도를 높일 수 있다(예: 더 빠르게 실행).
일부 구현예에서, 깊이별 컨볼루션은 입력 채널과 출력 채널을 동일한 크기로 제한하지만, 그룹 컨볼루션은 다른 크기를 가능하게 할 수 있다. 예를 들어, K × K 그룹 컨볼루션(414) 커널은 1 × 1 투영이 채널 크기를 최종 값으로 낮추기 전에 채널 크기의 초기 축소를 수행할 수 있다. 여기서 한 가지 가정은 그룹 컨볼루션이 채널을 최종 채널 차원으로 축소하여 1x1 투영을 제거하면 그룹당 채널 깊이(zo)가 작기 때문에 성능이 최적이 아닐 수 있다는 것이다(예: 저하). 그러나 점진적 확장 구현을 허용하는 집적 회로 구성을 통해 그룹 컨볼루션이 기본적으로 지원된다면 이는 완화될 수 있다. 예를 들어, 회로 구성은 집적 회로의 개별 MAC에 입력을 전달하는 것을 허용하는 입력 버스를 포함할 수 있다.
시스템(100)은 다수의 서로 다른 유형의 그룹 컨볼루션 블록으로부터 선택하도록 동작가능하다. 예를 들어, 위에서 설명된 그룹 컨볼루션 블록(414, 416, 422, 432 )외에도, 시스템(100)은 또한 K × K 그룹 컨볼루션을 구현하는 융합-투영-그룹화된 컨볼루션 블록 중에서 선택할 수 있다. 융합-투영-그룹화된 컨볼루션은 포인트별 투영을 (포인트별 확장을 융합하는 대신) K × K 메인 컨볼루션으로 융합한다. 텐서 모양에 따라 융합-투영-그룹화된 IBN은 융합-IBN에 비해 유사한 프로세싱 효율성을 달성하면서 더 트레이닝가능한 파라미터를 제공할 수 있다. 융합-투영-그룹화된 IBN은 투영 계층의 일부를 융합되지 않은 상태로 유지하고 메인 K × K 컨볼루션 이후 그룹 전체에 걸쳐 채널별 컨볼루션을 허용한다.
도 5는 도 1의 예시적인 컴퓨팅 시스템에서 사용될 수 있는 기계 학습 모델(102)의 컨볼루션 신경망에 대한 예시적인 아키텍처(500)이다. 신경 아키텍처(500)는 예시적인 입력 이미지의 서로 다른 특성을 획득하기 위해 다수의 개별 컨볼루션 연산 세트를 구현할 수 있다. 일부 구현예에서, 시스템(100)은 도 4의 예를 참조하여 위에서 설명된 그룹화된 IBN 옵션과 그룹화되지 않은 IBN 옵션으로부터 다양한 IBN 계층/블록 옵션을 전략적으로 선택하고 배치하도록 동작가능하다. 일부 구현예에서, 시스템(100)은 대규모 컴퓨터 비전 네트워크/모델를 구현하는 데 사용될 수 있는 예시적인 아키텍처(500)를 형성하기 위해 적층형, 연결형 또는 결합형 구성으로 동작을 선택 및 배열(즉, 이들을 함께 배열 및 결합)하도록 동작가능하다.
도 5의 예에서, 아키텍처(500)는 계층 블록들의 시퀀스를 포함하며, 여기서 시퀀스 내 계층 블록들의 제1 서브세트 각각은 입력 이미지를 프로세싱하기 위한 동작들을 수행하도록 구성된다. 더 구체적으로, 아키텍처(500)는 계층 블록(502)의 제1 서브세트, 계층 블록(504)의 제2 서브세트, 및 계층 블록(506)의 제3 서브세트를 포함한다. 일부 구현예에서, 계층 블록(502, 504, 506)의 적어도 하나의 서브세트는 2개 이상의 서로 다른 유형의 신경 블록의 교번하는(alternating) 시퀀스를 포함할 수 있다. 예를 들어, 계층 블록(502)의 서브세트는 융합-IBN 계층과 융합-그룹 IBN 계층을 포함하는 교번하는 시퀀스를 가질 수 있다.
융합-IBN 계층은 확장 및 깊이별 컨볼루션 연산을 하나의 완전 컨볼루션 신경 블록으로 병합하는 융합-IBN 계층(407)(위에서 설명됨)과 같은, 제1 개별 신경 블록(512)을 나타낼 수 있는 반면, 융합-그룹 IBN 계층은 포인트별(404) + 깊이별(405) 쌍을 대체하고 채널 차원을 확장하기 위해 K × K 그룹 컨볼루션(422)을 통해 이러한 연산의 측면을 융합할 수 있는 융합-그룹 IBN(422)과 같은, 제2 개별 신경 블록(514)을 나타낼 수 있다. 전술한 바와 같이, 이 블록은 채널 차원을 따라 보다 효율적인 프로세싱을 허용하는 융합-IBN 계층(407)에 대한 대안을 제공할 수 있다.
보다 구체적으로, 제1 신경 블록(512)은 그룹화되지 않은 IBN 블록일 수 있고, 제2 신경 블록(514)은 그룹화된 IBN 블록일 수 있다. 제1 및 제2 신경 블록(512, 514) 각각은 하나 이상의 컨볼루션 신경망 계층을 포함한다. 따라서, 계층 블록(502)은 그룹화된 IBN 계층과 그룹화되지 않은 IBN 계층의 교번하는 시퀀스를 포함할 수 있다. 예를 들어, 계층 블록의 교번하는 시퀀스는 비-그룹 컨볼루션 계층 블록과 인터리빙되는 그룹 컨볼루션 계층 블록을 가질 수 있다.
도 6은 예시적인 계산 루프 네스트(600)를 도시한다. 제1 계산 루프 네스트(602)는 완전 컨볼루션 계산을 위한 루프 네스트를 나타내는 반면, 제2 계산 루프 네스트(604)는 g 그룹을 갖는 그룹 컨볼루션 계산을 위한 루프 네스트를 나타낸다.
도 7은 그룹 컨볼루션을 사용하여 예시 이미지를 프로세싱하는 데 사용되는 예시적인 방법(700)의 흐름도이다. 예시 이미지는 위에서 설명된 이미지(102) 또는 다양한 다른 유형의 디지털 이미지 및 관련 그래픽 데이터일 수 있다. 일부 구현예에서, 방법(700)은 다른 데이터 프로세싱 기술에 비해 이미지 프로세싱 출력 측면에서 향상된 정확도를 허용하는 신경망 계산을 가속화하는 데 사용되는 기술의 일부이다.
방법(700)은 위에서 설명된 시스템(100)을 사용하여 구현되거나 실행될 수 있다. 따라서, 방법(700)의 설명은 위에서 언급한 시스템(100)의 컴퓨팅 리소스를 참조할 수 있다. 방법(700)의 단계 또는 동작은 본 문서에 설명된 디바이스 및 리소스의 하나 이상의 프로세서에 의해 실행가능한 프로그래밍된 펌웨어 또는 소프트웨어 명령에 의해 활성화될 수 있다. 일부 구현예에서, 방법(700)의 단계는 특수 목적의 신경망 프로세서 또는 신경망을 구현하도록 구성된 하드웨어 기계 학습 가속기와 같은, 하드웨어 집적 회로를 사용하여 신경망 계층에 대한 출력을 생성하기 위해 계산을 수행하는 방법에 대응한다.
방법(700)을 다시 참조하면, 시스템(100)은 입력 이미지를 획득하고(702) 예시적인 컨볼루션 신경망을 사용하여 입력 이미지를 프로세싱한다(704). 컨볼루션 신경망은 이미지(102)와 같은 디지털 입력 이미지를 프로세싱하기 위한 그룹 컨볼루션을 구현하는 데 사용되는 계층 블록들의 시퀀스를 포함한다. 개별 계층 블록은 컨볼루션 신경망(108)을 구현하는 하드웨어 집적 회로(114)에서 실행되는 그룹 컨볼루션 연산에 대응할 수 있다. 계층 블록들의 시퀀스 내 계층 블록들은 그룹 컨볼루션 연산에 대응하지 않는 블록도 포함할 수 있다.
예를 들어, 계층 블록들의 시퀀스는 그룹 컨볼루션 계층 블록 및 비-그룹 컨볼루션 계층 블록을 포함하거나 이들로부터 형성될 수 있다. 일부 구현예에서, 계층 블록들의 시퀀스는 비-그룹 컨볼루션 계층 블록과 인터리빙되는 그룹 컨볼루션 계층 블록을 갖는다. 예를 들어, 계층 블록들의 개별 시퀀스 중 일부(또는 전부)는 비-그룹 컨볼루션 계층 블록들 사이에 인터리빙되는 그룹 컨볼루션 계층 블록을 가질 수 있다. 일부 다른 구현예에서, 계층 블록들의 개별 시퀀스는 그룹 컨볼루션 계층 블록 및 비-그룹 컨볼루션 계층 블록의 서로 다른 배열을 가질 수 있다. 예를 들어, 인터리빙되는 대신, 계층 블록들의 시퀀스는 순차적 그룹 컨볼루션 계층 블록 및 순차적 비-그룹 컨볼루션 계층 블록의 별개의 서브세트로부터 형성될 수 있다.
시스템(100)은 컴퓨터 비전 작업 또는 신경망 아키텍처에 대한 하나 이상의 제약 조건에 기초하여 컨볼루션 그룹핑을 결정할 수 있다. 그런 다음 시스템(100)은 결정된 그룹핑에 기초하여 그룹 컨볼루션에 대응하는 입력 그룹을 결정할 수 있다. 예를 들어, 시스템(100)은 입력 매트릭스의 채널 차원을 따라 입력 매트릭스의 입력 특징 맵을 그룹핑하여 하나 이상의 입력 그룹을 형성할 수 있다. 입력 매트릭스는 입력 이미지로부터 파생된다. 시스템(100)은 대응하는 커널 매트릭스를 각 입력 그룹과 연관시키고 커널 매트릭스를 대응하는 입력 그룹과 컨볼루션하여 출력 매트릭스의 대응하는 출력 그룹을 생성할 수 있다.
계층 블록들의 시퀀스 내 계층 블록들의 제1 서브세트 각각은 이미지 프로세싱과 관련된 다양한 유형의 동작들을 수행하도록 구성된다. 예를 들어, CNN에 포함된 시퀀스의 계층 블록들의 서브세트는 계층 블록에 대한 입력 특징 맵을 수신(706)하도록 구성된다. 일부 구현예에서, 계층 블록에 대한 입력 특징 맵은 c1개의 채널들을 갖는 h x w 특징 맵이다. 계층 블록들의 서브세트는 그룹 컨볼루션을 사용하여 입력 특징 맵으로부터 확장된 특징 맵을 생성(708)하도록 구성된다. 일부 구현예에서, 확장된 특징 맵은 c2개의 채널을 갖는 h × w 특징 맵이며, 여기서 c2는 c1보다 크다. 계층 블록들의 서브세트는 확장된 특징 맵으로부터 축소된 특징 맵을 생성(710)하도록 구성된다. 일부 구현예에서, 축소된 특징 맵은 c1개의 채널을 갖는 h × w 특징 맵이다.
계층 블록들의 서브세트는 축소된 특징 맵으로부터 계층 블록에 대한 출력 특징 맵을 생성(712)하도록 구성된다. 일부 구현예에서, 계층 블록들의 서브세트는 축소된 특징 맵에 입력 특징 맵을 추가함으로써 출력 특징 맵을 생성한다. 일부 다른 구현예에서, 계층 블록들의 서브세트는 축소된 특징 맵에 직접 대응하는 출력 특징 맵을 생성한다. 예를 들어, 이러한 구현예에서 출력 특징 맵은 축소된 기능 맵과 동일하다.
본 명세서에 설명된 주제 및 기능적 동작의 실시예는 디지털 전자 회로, 유형적으로 구현된 컴퓨터 소프트웨어 또는 펌웨어, 본 명세서에 개시된 구조 및 그 구조적 등가물을 포함하는, 컴퓨터 하드웨어 또는 그 중 하나 이상의 조합으로 구현될 수 있다. 본 명세서에 설명된 주제의 실시예는 하나 이상의 컴퓨터 프로그램, 즉 데이터 프로세싱 장치에 의해 실행되거나 데이터 프로세싱 장치의 동작을 제어하기 위해 유형의 비일시적 프로그램 캐리어에 인코딩된 컴퓨터 프로그램 명령어들의 하나 이상의 모듈로서 구현될 수 있다.
대안적으로 또는 추가적으로, 프로그램 명령은 데이터 프로세싱 장치에 의한 실행을 위해 적절한 수신기 장치로 전송하기 위한 정보를 인코딩하기 위해 생성된 인위적으로 생성된 전파 신호, 예를 들어 기계 생성 전기, 광학 또는 전자기 신호에 인코딩될 수 있다. 컴퓨터 저장 매체는 기계 판독가능 저장 디바이스, 기계 판독가능 저장 기판, 랜덤 또는 직렬 액세스 메모리 디바이스, 또는 이들 중 하나 이상의 조합일 수 있다.
"컴퓨팅 시스템"이라는 용어는 예를 들어 프로그래밍가능 프로세서, 컴퓨터, 또는 다중 프로세서 또는 컴퓨터를 포함하여 데이터를 프로세싱하기 위한 모든 종류의 장치, 디바이스 및 기계를 포함한다. 장치는 예를 들어 FPGA(필드 프로그래밍 가능 게이트 어레이) 또는 ASIC(애플리케이션 특정 집적 회로)와 같은 특수 목적 논리 회로를 포함할 수 있다. 장치는 또한 하드웨어 외에 해당 컴퓨터 프로그램에 대한 실행 환경을 생성하는 코드, 예를 들어 프로세서 펌웨어, 프로토콜 스택, 데이터베이스 관리 시스템, 운영 체제 또는 이들 중 하나 이상의 조합을 구성하는 코드를 포함할 수 있다.
컴퓨터 프로그램(프로그램, 소프트웨어, 소프트웨어 애플리케이션, 모듈, 소프트웨어 모듈, 스크립트 또는 코드라고도 함)은 컴파일되거나 해석된 언어, 선언적 또는 절차적 언어를 포함한 모든 형태의 프로그래밍 언어로 작성될 수 있으며, 독립 실행형 프로그램, 모듈, 구성요소, 서브루틴 또는 컴퓨팅 환경에서 사용하기에 적합한 기타 유닛을 포함하여 모든 형태로 배포될 수 있다.
컴퓨터 프로그램은 파일 시스템의 파일에 대응할 수 있지만 반드시 그럴 필요는 없다. 프로그램은 다른 프로그램이나 데이터를 보유하는 파일의 일부, 예를 들어 마크업 언어 문서에 저장된 하나 이상의 스크립트, 해당 프로그램 전용 단일 파일 또는 여러 개의 조정된 파일, 예를 들어 하나 이상의 모듈, 서브 프로그램 또는 코드 일부를 저장하는 파일에 저장될 수 있다. 컴퓨터 프로그램은 하나의 컴퓨터 또는 한 사이트에 위치하거나 여러 사이트에 걸쳐 분산되고 통신 네트워크로 연결된 여러 컴퓨터에서 실행되도록 배포될 수 있다.
본 명세서에 설명된 프로세스 및 로직 흐름은 입력 데이터에 대해 동작하고 출력을 생성함으로써 기능을 수행하는 하나 이상의 컴퓨터 프로그램을 실행하는 하나 이상의 프로그래밍가능 컴퓨터에 의해 수행될 수 있다. 프로세스 및 로직 흐름은 특수 목적 논리 회로, 예를 들어 FPGA(필드 프로그래밍가능 게이트 어레이), ASIC(애플리케이션 특정 집적 회로) 또는 GPGPU(범용 그래픽 프로세싱 유닛)에 의해 수행될 수도 있으며, 장치 또한 구현될 수 있다.
컴퓨터 프로그램의 실행에 적합한 컴퓨터는 예를 들어, 범용 또는 특수 목적 마이크로프로세서 또는 둘 다에 기반할 수 있거나 임의의 다른 종류의 중앙 프로세싱 유닛에 기초할 수 있다. 일반적으로 중앙 프로세싱 유닛은 읽기 전용 메모리나 랜덤 액세스 메모리 또는 둘 다로부터 명령과 데이터를 수신한다. 컴퓨터의 일부 요소는 명령을 수행하거나 실행하기 위한 중앙 프로세싱 유닛과 명령어 및 데이터를 저장하기 위한 하나 이상의 메모리 디바이스이다. 일반적으로, 컴퓨터는 또한 데이터를 저장하기 위한 하나 이상의 대용량 저장 디바이스, 예를 들어 자기, 광자기 디스크 또는 광 디스크로부터 데이터를 수신하거나 전송하거나 둘 모두를 포함하거나 동작가능하게 결합될 것이다. 그러나 컴퓨터에 그러한 디바이스가 있을 필요는 없다. 또한, 컴퓨터는 휴대폰, 퍼스널 디지털 어시스턴트(PDA), 모바일 오디오 또는 비디오 플레이어, 게임 콘솔, 글로벌 포지셔닝 시스템(GPS) 수신기 또는 휴대용 저장 디바이스, 예를 들어 범용 직렬 버스(USB) 플래시 드라이브와 같은 다른 디바이스에 내장될 수 있다.
컴퓨터 프로그램 명령어 및 데이터를 저장하기에 적합한 컴퓨터 판독가능 매체는 예를 들어 EPROM, EEPROM 및 플래시 메모리 디바이스와 같은 반도체 메모리 디바이스; 내부 하드 디스크 또는 이동식 디스크와 같은 자기 디스크; 광자기 디스크; CD ROM 및 DVD-ROM 디스크와 같은 모든 형태의 비휘발성 메모리, 매체 및 메모리 디바이스를 포함한다. 프로세서와 메모리는 특수 목적 논리 회로로 보완되거나 통합될 수 있다.
사용자와의 상호작용을 제공하기 위해, 본 명세서에 설명된 주제의 실시예는 사용자에게 정보를 디스플레이하기 위한 디스플레이 디바이스, 예를 들어 LCD(액정 디스플레이) 모니터 및 사용자가 컴퓨터에 입력을 제공할 수 있는 키보드 및 포인팅 디바이스, 예를 들어 마우스 또는 트랙볼을 갖춘 컴퓨터에서 구현될 수 있다. 사용자와의 상호작용을 제공하기 위해 다른 종류의 디바이스도 사용될 수 있으며; 예를 들어, 사용자에게 제공되는 피드백은 시각적 피드백, 청각적 피드백 또는 촉각적 피드백과 같은 임의의 형태의 감각 피드백일 수 있으며; 사용자로부터의 입력은 음향, 음성 또는 촉각적 입력을 포함한 모든 형태로 수신될 수 있다. 또한 컴퓨터는 사용자가 사용하는 디바이스와 문서를 주고받는 방식으로 사용자와 상호작용할 수 있으며, 예를 들어, 웹 브라우저에서 받은 요청에 대한 응답으로 사용자 클라이언트 디바이스의 웹 브라우저로 웹 페이지를 보냄으로써 사용자와 상호작용할 수 있다.
본 명세서에 설명된 주제의 실시예는 백엔드 구성요소, 예를 들어 데이터 서버를 포함하거나 미들웨어 구성요소, 예를 들어 애플리케이션 서버를 포함하거나, 프런트엔드 구성요소, 예를 들어 사용자가 본 명세서에 설명된 주제의 구현과 상호 작용할 수 있는 그래픽 사용자 인터페이스나 웹 브라우저를 갖춘 클라이언트 컴퓨터를 포함하거나, 이러한 백엔드, 미들웨어 또는 프런트엔드 구성요소 중 하나 이상의 임의의 조합을 포함하는 컴퓨팅 시스템에서 구현될 수 있다. 시스템의 구성요소는 통신 네트워크와 같은 디지털 데이터 통신의 모든 형태나 매체를 통해 상호연결될 수 있다. 통신 네트워크의 예로는 근거리 통신망("LAN") 및 광역 통신망("WAN"), 예를 들어 인터넷이 포함된다.
컴퓨팅 시스템은 클라이언트와 서버를 포함할 수 있다. 클라이언트와 서버는 일반적으로 서로 멀리 떨어져 있으며 일반적으로 통신 네트워크를 통해 상호작용한다. 클라이언트와 서버의 관계는 각 컴퓨터에서 실행되고 서로 클라이언트-서버 관계를 갖는 컴퓨터 프로그램으로 인해 발생한다.
본 명세서는 많은 특정 구현 세부 사항을 포함하고 있지만, 이는 임의의 발명의 범위 또는 청구될 수 있는 범위에 대한 제한으로 해석되어서는 안 되며 오히려 특정 발명의 특정 실시예에 특정할 수 있는 특징에 대한 설명으로 해석되어야 한다. 별도의 실시예와 관련하여 본 명세서에 설명된 특정 특징은 단일 실시예에서 조합하여 구현될 수도 있다. 반대로, 단일 실시예의 맥락에서 설명된 다양한 특징은 다중 실시예에서 개별적으로 또는 임의의 적절한 하위 조합으로 구현될 수도 있다. 또한, 비록 특징들이 특정 조합으로 작용하는 것으로 위에서 설명될 수 있고 처음에는 그렇게 주장되기도 하지만, 청구된 조합의 하나 이상의 특징은 경우에 따라 조합에서 삭제될 수 있으며 청구된 조합은 하위 조합 또는 하위 조합의 변형에 관한 것일 수 있다.
유사하게, 동작이 특정 순서로 도면에 도시되어 있지만, 이는 그러한 동작이 도시된 특정 순서 또는 순차적인 순서로 수행되거나 도시된 모든 동작이 수행되어 바람직한 결과를 달성하도록 요구하는 것으로 이해되어서는 안 된다. 특정 상황에서는 멀티태스킹과 병렬 프로세싱이 유리할 수 있다. 또한, 전술한 실시예에서 다양한 시스템 모듈 및 구성요소의 분리는 모든 실시예에서 이러한 분리를 요구하는 것으로 이해되어서는 안 되며, 설명된 프로그램 구성요소와 시스템은 일반적으로 단일 소프트웨어 제품에 함께 통합되거나 여러 소프트웨어 제품에 패키지될 수 있다는 것이 이해되어야 한다.
주제의 특정 실시예가 설명되었다. 다른 실시예는 다음 청구범위의 범위 내에 있다. 예를 들어, 청구범위에 인용된 작업은 다른 순서로 수행될 수 있으며 여전히 원하는 결과를 얻을 수 있다. 일례로서, 첨부 도면에 도시된 프로세스는 바람직한 결과를 달성하기 위해 도시된 특정 순서 또는 순차적 순서를 반드시 필요로 하는 것은 아니다. 특정 구현예에서는 멀티태스킹 및 병렬 프로세싱이 유리할 수 있다.

Claims (20)

  1. 하나 이상의 컴퓨터에 의해 수행되는 방법으로서, 상기 방법은:
    입력 이미지를 획득하는 단계; 및
    컨볼루션 신경망(convolutional neural network)을 사용하여 입력 이미지를 프로세싱하는 단계, 상기 컨볼루션 신경망은 계층 블록들의 시퀀스를 포함하고, 시퀀스 내 계층 블록들의 제1 서브세트 각각은 동작들을 수행하도록 구성되며, 상기 동작들은:
    계층 블록에 대한 입력 특징 맵(input feature map)을 수신하는 동작, 상기 계층 블록에 대한 입력 특징 맵은 c1개 채널들을 갖는 h × w 특징 맵이고,
    그룹 컨볼루션을 사용하여 상기 입력 특징 맵으로부터 확장된 특징 맵(expanded feature map)을 생성하는 동작, 상기 확장된 특징 맵은 c2개 채널들을 갖는 h × w 특징 맵이고, c2는 c1보다 크며,
    상기 확장된 특징 맵으로부터 축소된 특징 맵(reduced feature map)을 생성하는 동작, 상기 축소된 특징 맵은 c1개 채널들을 갖는 h x w 특징 맵이며; 및
    상기 축소된 특징 맵으로부터 계층 블록에 대한 출력 특징 맵(output feature map)을 생성하는 동작을 포함하는, 방법.
  2. 제1항에 있어서,
    상기 확장된 특징 맵을 생성하는 동작은:
    상기 입력 특징 맵에 1×1 컨볼루션을 적용함으로써 상기 입력 특징 맵으로부터 초기 확장된 특징 맵을 생성하는 동작, 상기 초기 확장된 특징 맵은 c2개 채널들을 갖는 h x w 특징 맵이고, 및
    상기 초기 확장된 특징 맵에 그룹 컨볼루션을 적용함으로써 상기 초기 확장된 특징 맵으로부터 상기 확장된 특징 맵을 생성하는 동작을 포함하는, 방법.
  3. 제2항에 있어서,
    1×1 컨볼루션은 입력 필터들보다 출력 필터들의 개수가 더 많은, 방법.
  4. 제2항에 있어서,
    그룹 컨볼루션은 입력 필터들과 출력 필터들의 총 개수가 동일한, 방법.
  5. 제1항에 있어서,
    계층 블록들의 시퀀스는:
    비-그룹(non-group) 컨볼루션 계층 블록과 인터리빙되는(interleaved) 그룹 컨볼루션 계층 블록을 포함하고, 상기 그룹 컨볼루션 계층 블록은 그룹 컨볼루션을 구현하는 데 사용되는, 방법.
  6. 제1항에 있어서,
    그룹 컨볼루션은 계층 블록들의 시퀀스에 포함된 융합-그룹화된(fused-grouped) 역 병목(IBN) 계층을 사용하여 구현된 융합-그룹 컨볼루션인, 방법.
  7. 제1항에 있어서,
    상기 확장된 특징 맵을 생성하는 동작은:
    상기 입력 특징 맵에 그룹 컨볼루션을 적용함으로써 상기 입력 특징 맵으로부터 상기 확장된 특징 맵을 생성하는 동작을 포함하는, 방법.
  8. 제1항에 있어서,
    상기 확장된 특징 맵을 생성하는 동작은:
    상기 입력 특징 맵에 1×1 컨볼루션을 적용함으로써 상기 입력 특징 맵으로부터 초기 확장된 특징 맵을 생성하는 동작, 상기 초기 확장된 특징 맵은 c3개 채널들을 갖는 h × w 특징 맵이고, c3은 c2보다 크며, 및
    상기 초기 확장된 특징 맵에 그룹 컨볼루션을 적용함으로써 상기 초기 확장된 특징 맵으로부터 상기 확장된 특징 맵을 생성하는 동작을 포함하는, 방법.
  9. 시스템으로서, 상기 시스템은 프로세싱 디바이스 및 프로세싱 디바이스에 의해 실행되어 동작들을 수행하게 하는 명령어들을 저장하는 비일시적 기계 판독가능 저장 디바이스를 포함하고, 상기 동작들은:
    입력 이미지를 획득하는 동작; 및
    컨볼루션 신경망(convolutional neural network)을 사용하여 입력 이미지를 프로세싱하는 동작, 상기 컨볼루션 신경망은 계층 블록들의 시퀀스를 포함하고, 시퀀스 내 계층 블록들의 제1 서브세트 각각은 동작들을 수행하도록 구성되며, 상기 동작들은:
    계층 블록에 대한 입력 특징 맵(input feature map)을 수신하는 동작, 상기 계층 블록에 대한 입력 특징 맵은 c1개 채널들을 갖는 h × w 특징 맵이고,
    그룹 컨볼루션을 사용하여 상기 입력 특징 맵으로부터 확장된 특징 맵(expanded feature map)을 생성하는 동작, 상기 확장된 특징 맵은 c2개 채널들을 갖는 h × w 특징 맵이고, c2는 c1보다 크며,
    상기 확장된 특징 맵으로부터 축소된 특징 맵(reduced feature map)을 생성하는 동작, 상기 축소된 특징 맵은 c1개 채널들을 갖는 h x w 특징 맵이며; 및
    상기 축소된 특징 맵으로부터 계층 블록에 대한 출력 특징 맵(output feature map)을 생성하는 동작을 포함하는, 시스템.
  10. 제9항에 있어서,
    상기 확장된 특징 맵을 생성하는 동작은:
    상기 입력 특징 맵에 1×1 컨볼루션을 적용함으로써 상기 입력 특징 맵으로부터 초기 확장된 특징 맵을 생성하는 동작, 상기 초기 확장된 특징 맵은 c2개 채널들을 갖는 h x w 특징 맵이고, 및
    상기 초기 확장된 특징 맵에 그룹 컨볼루션을 적용함으로써 상기 초기 확장된 특징 맵으로부터 상기 확장된 특징 맵을 생성하는 동작을 포함하는, 시스템.
  11. 제10항에 있어서,
    1×1 컨볼루션은 입력 필터들보다 출력 필터들의 개수가 더 많은, 시스템.
  12. 제10항에 있어서,
    그룹 컨볼루션은 입력 필터들과 출력 필터들의 총 개수가 동일한, 시스템.
  13. 제9항에 있어서,
    계층 블록들의 시퀀스는:
    비-그룹(non-group) 컨볼루션 계층 블록과 인터리빙되는(interleaved) 그룹 컨볼루션 계층 블록을 포함하고, 상기 그룹 컨볼루션 계층 블록은 그룹 컨볼루션을 구현하는 데 사용되는, 시스템.
  14. 제9항에 있어서,
    그룹 컨볼루션은 계층 블록들의 시퀀스에 포함된 융합-그룹화된(fused-grouped) 역 병목(IBN) 계층을 사용하여 구현된 융합-그룹 컨볼루션인, 시스템.
  15. 제9항에 있어서,
    상기 확장된 특징 맵을 생성하는 동작은:
    상기 입력 특징 맵에 그룹 컨볼루션을 적용함으로써 상기 입력 특징 맵으로부터 상기 확장된 특징 맵을 생성하는 동작을 포함하는, 시스템.
  16. 제9항에 있어서,
    상기 확장된 특징 맵을 생성하는 동작은:
    상기 입력 특징 맵에 1×1 컨볼루션을 적용함으로써 상기 입력 특징 맵으로부터 초기 확장된 특징 맵을 생성하는 동작, 상기 초기 확장된 특징 맵은 c3개 채널들을 갖는 h × w 특징 맵이고, c3은 c2보다 크며, 및
    상기 초기 확장된 특징 맵에 그룹 컨볼루션을 적용함으로써 상기 초기 확장된 특징 맵으로부터 상기 확장된 특징 맵을 생성하는 동작을 포함하는, 시스템.
  17. 비일시적 기계 판독가능 저장 디바이스로서, 상기 비일시적 기계 판독가능 저장 디바이스는 프로세싱 디바이스에 의해 실행되어 동작들을 수행하게 하는 명령어들을 저장하며, 상기 동작들은:
    입력 이미지를 획득하는 동작; 및
    컨볼루션 신경망(convolutional neural network)을 사용하여 입력 이미지를 프로세싱하는 동작, 상기 컨볼루션 신경망은 계층 블록들의 시퀀스를 포함하고, 시퀀스 내 계층 블록들의 제1 서브세트 각각은 동작들을 수행하도록 구성되며, 상기 동작들은:
    계층 블록에 대한 입력 특징 맵(input feature map)을 수신하는 동작, 상기 계층 블록에 대한 입력 특징 맵은 c1개 채널들을 갖는 h × w 특징 맵이고,
    그룹 컨볼루션을 사용하여 상기 입력 특징 맵으로부터 확장된 특징 맵(expanded feature map)을 생성하는 동작, 상기 확장된 특징 맵은 c2개 채널들을 갖는 h × w 특징 맵이고, c2는 c1보다 크며,
    상기 확장된 특징 맵으로부터 축소된 특징 맵(reduced feature map)을 생성하는 동작, 상기 축소된 특징 맵은 c1개 채널들을 갖는 h x w 특징 맵이며; 및
    상기 축소된 특징 맵으로부터 계층 블록에 대한 출력 특징 맵(output feature map)을 생성하는 동작을 포함하는, 비일시적 기계 판독가능 저장 디바이스.
  18. 제17항에 있어서,
    상기 확장된 특징 맵을 생성하는 동작은:
    상기 입력 특징 맵에 1×1 컨볼루션을 적용함으로써 상기 입력 특징 맵으로부터 초기 확장된 특징 맵을 생성하는 동작, 상기 초기 확장된 특징 맵은 c2개 채널들을 갖는 h x w 특징 맵이고, 및
    상기 초기 확장된 특징 맵에 그룹 컨볼루션을 적용함으로써 상기 초기 확장된 특징 맵으로부터 상기 확장된 특징 맵을 생성하는 동작을 포함하는, 비일시적 기계 판독가능 저장 디바이스.
  19. 제17항에 있어서,
    계층 블록들의 시퀀스는:
    비-그룹(non-group) 컨볼루션 계층 블록과 인터리빙되는(interleaved) 그룹 컨볼루션 계층 블록을 포함하고, 상기 그룹 컨볼루션 계층 블록은 그룹 컨볼루션을 구현하는 데 사용되는, 비일시적 기계 판독가능 저장 디바이스.
  20. 제17항에 있어서,
    그룹 컨볼루션은 계층 블록들의 시퀀스에 포함된 융합-그룹화된(fused-grouped) 역 병목(IBN) 계층을 사용하여 구현된 융합-그룹 컨볼루션이고, 그리고
    상기 확장된 특징 맵을 생성하는 동작은:
    상기 입력 특징 맵에 그룹 컨볼루션을 적용함으로써 상기 입력 특징 맵으로부터 상기 확장된 특징 맵을 생성하는 동작을 포함하는, 비일시적 기계 판독가능 저장 디바이스.
KR1020247009232A 2021-10-08 2021-10-08 그룹 컨볼루션 구현을 위한 신경망 아키텍처 KR20240050389A (ko)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/US2021/054160 WO2023059336A1 (en) 2021-10-08 2021-10-08 Neural network architecture for implementing group convolutions

Publications (1)

Publication Number Publication Date
KR20240050389A true KR20240050389A (ko) 2024-04-18

Family

ID=78529016

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020247009232A KR20240050389A (ko) 2021-10-08 2021-10-08 그룹 컨볼루션 구현을 위한 신경망 아키텍처

Country Status (3)

Country Link
KR (1) KR20240050389A (ko)
TW (1) TW202316365A (ko)
WO (1) WO2023059336A1 (ko)

Also Published As

Publication number Publication date
TW202316365A (zh) 2023-04-16
WO2023059336A1 (en) 2023-04-13

Similar Documents

Publication Publication Date Title
JP7031033B2 (ja) ニューラルネットワークプロセッサにおけるバッチ処理
JP2022008571A (ja) 畳み込みニューラルネットワークのためのスーパーピクセル法
CN107454966B (zh) 用于神经网络处理器的预取权重
TWI825596B (zh) 用於執行類神經網路計算之電路、方法及非暫時性機器可讀儲存裝置
TWI645301B (zh) 使用類神經網路處理器計算卷積
TWI627593B (zh) 用於類神經網路計算的旋轉資料
JP2020513120A (ja) ベクトル縮小プロセッサ
CN110520834A (zh) 替选循环限制
US11144291B1 (en) Loop-oriented neural network compilation
JP2022550730A (ja) 高速なスパースニューラルネットワーク
JP2022546271A (ja) カーネルチューニングパラメータを予測するための方法及び装置
CN114402337A (zh) 加速神经网络计算的硬件电路
CN113469354B (zh) 受存储器限制的神经网络训练
US11461662B1 (en) Compilation time reduction for memory and compute bound neural networks
JP2023519564A (ja) 機械学習ジョブ中にメモリ圧縮転送を改善するための類似性に基づく特徴の並べ替え
US20200250842A1 (en) Method and apparatus with convolution neural network processing
KR20240050389A (ko) 그룹 컨볼루션 구현을 위한 신경망 아키텍처
EP3971787A1 (en) Spatial tiling of compute arrays with shared control
US11636569B1 (en) Matrix transpose hardware acceleration
CN115511070A (zh) 模型训练方法、装置及可读存储介质
CN114912590A (zh) 处理器、操作处理器的方法以及包括处理器的电子装置
KR20240063137A (ko) 하드웨어 가속기 최적화형 그룹 컨볼루션 기반 신경망 모델
CN118159986A (zh) 基于硬件加速器优化组卷积的神经网络模型
US11972349B1 (en) Flexible compute array utilization in a tensor processor
US20230071688A1 (en) System and method of controlling neural processing