KR20160144467A - 컨볼루션 신경망들의 트레이닝을 병렬화 - Google Patents

컨볼루션 신경망들의 트레이닝을 병렬화 Download PDF

Info

Publication number
KR20160144467A
KR20160144467A KR1020167031625A KR20167031625A KR20160144467A KR 20160144467 A KR20160144467 A KR 20160144467A KR 1020167031625 A KR1020167031625 A KR 1020167031625A KR 20167031625 A KR20167031625 A KR 20167031625A KR 20160144467 A KR20160144467 A KR 20160144467A
Authority
KR
South Korea
Prior art keywords
data
fully
walker
training
connected layer
Prior art date
Application number
KR1020167031625A
Other languages
English (en)
Other versions
KR101934067B1 (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 KR20160144467A publication Critical patent/KR20160144467A/ko
Application granted granted Critical
Publication of KR101934067B1 publication Critical patent/KR101934067B1/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/04Architecture, e.g. interconnection topology
    • G06N3/0464Convolutional networks [CNN, ConvNet]
    • 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/08Learning methods
    • G06N3/084Backpropagation, e.g. using gradient descent
    • G06K9/4628
    • 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
    • G06VIMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
    • G06V10/00Arrangements for image or video recognition or understanding
    • G06V10/40Extraction of image or video features
    • G06V10/44Local feature extraction by analysis of parts of the pattern, e.g. by detecting edges, contours, loops, corners, strokes or intersections; Connectivity analysis, e.g. of connected components
    • G06V10/443Local feature extraction by analysis of parts of the pattern, e.g. by detecting edges, contours, loops, corners, strokes or intersections; Connectivity analysis, e.g. of connected components by matching or filtering
    • G06V10/449Biologically inspired filters, e.g. difference of Gaussians [DoG] or Gabor filters
    • G06V10/451Biologically inspired filters, e.g. difference of Gaussians [DoG] or Gabor filters with interaction between the filter responses, e.g. cortical complex cells
    • G06V10/454Integrating the filters into a hierarchical structure, e.g. convolutional neural networks [CNN]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06VIMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
    • G06V10/00Arrangements for image or video recognition or understanding
    • G06V10/70Arrangements for image or video recognition or understanding using pattern recognition or machine learning
    • G06V10/82Arrangements for image or video recognition or understanding using pattern recognition or machine learning using neural networks

Abstract

컴퓨터 저장 미디어 상에 인코딩된 컴퓨터 프로그램들을 포함하여, 컨볼루션 신경망(CNN)을 트레이닝 하는 방법들, 시스템들, 및 장치들. 시스템은 복수의 워커들을 포함하고, 상기 복수의 워커들 각각은 CNN의 각 컨볼루션 레이어들의 각각의 레플리카 및 CNN의 각각의 완전히-결합된 레이어들의 각각의 디스조인트 파티션을 유지하도록 구성되며, 상기 컨볼루션 레이어의 각각의 레플리카는 컨볼루션 레이어 내 모든 노드들을 포함하고, 상기 완전히-연결된 레이어의 각각의 디스조인트 파티션은 완전히-연결된 레이어의 일부 노드들을 포함한다.

Description

컨볼루션 신경망들의 트레이닝을 병렬화{PARALLELIZING THE TRAINING OF CONVOLUTIONAL NEURAL NETWORKS}
본 발명은 컨볼루션 신경망들(convolutional neural networks)의 트레이닝을 병렬화(parallelize)하는 것과 관련된다.
컨볼루션 신경망들은 일반적으로 2종류의 신경망 레이어들(컨볼루션 신경망 레이어들(convolutional neural networks layers) 및 완전히-연결된 신경망 레이어들(fully-connected neural network layers))을 포함한다. 컨볼루션 신경망 레이어들은 희소 연결성(sparse connectivity)을 가지며, 컨볼루션 레이어 내 각 노드(node)는 다음으로 가장 낮은 신경망 레이어 내 노드들의 서브세트에서만 입력을 수신한다. 일부 컨볼루션 신경망 레이어들은 상기 컨볼루션 신경망 레이어 내의 다른 노드들과 가중치들(weights)을 공유하는 노드들을 갖는다. 그러나, 완전히-연결된 레이어들 내의 노드들은 다음으로 가장 낮은 신경망 레이어 내의 각 노드로부터 입력을 수신한다.
일반적으로, 본 발명은 트레이닝 예(training example)들의 다수의 배치들(batches)을 통해 컨볼루션 신경망(CNN)을 트레이닝 하는 기법들을 기술한다. 상기 CNN은 다수의 워커(worker)들에 의해 트레이닝 된다. 각 워커는 CNN의 컨볼루션 레이어들 각각의 각각의 레플리카(replica) 및 CNN의 완전히-연결된 레이어들 각각의 각각의 디스조인트 파티션(disjoint partition)을 유지하도록 구성된다. 컨볼루션 레이어의 각 레플리카는 컨볼루션 레이어의 노드들의 전부를 포함하고, 완전히-연결된 레이어의 각 디스조인트 파티션은 완전히-연결된 레이어의 노드들의 일부를 포함한다. 각 워커가 트레이닝 예들의 다수의 배치들의 전부를 통해 워커에 의해 유지되는 완전히-연결된 레이어 파티션을 트레이닝 하는 동안, 각 워커는 워커에 의해 유지되는 워커들에게 배정된 트레이닝 예들의 배치를 통해 컨볼루션 레이어 레플리카들을 트레이닝 한다.
본 명세서에 기술된 본 발명의 특정 실시예들은 다음의 장점들 중 하나 이상을 실현하도록 구현될 수 있다. 컨볼루션 신경망을 트레이닝 하는 동안 완전히-연결된 레이어들과는 다르게 컨볼루션 레이어들을 병렬화함으로써, 이들 2 종류의 레이어들의 서로 다른 구조를 레버리징(leveraging)하는 것에 의해 네트워크가 효율적으로 그리고 빠르게 트레이닝 될 수 있다. 추가적으로, 트레이닝과 함께 중재 통신들(intermediate communication)을 오버랩핑(overlapping)함으로써(예를 들어, 한 워커로부터 다른 워커에게 액티베이션 데이터(activation data)를 전송하고 이와 병행하여 이들 워커들이 다른 트레이닝 예들에 대한 데이터를 프로세싱 하거나, 혹은 한 워커로부터 다른 워커에게 그라디언트 데이터(gradient data)를 전송하고 이와 병행하여 이들 워커들이 다른 트레이닝 예들에 대한 데이터를 프로세싱 하거나, 혹은 상기 둘 다를 행함으로써), 트레이닝 시간이 줄어들 수 있고, 컨볼루션 신경망을 트레이닝 하는 워커들 사이에서 데이터의 전송으로 인한 트레이닝 지연들이 완화될 수 있다.
본 명세서의 본 발명의 하나 이상의 구현예들의 세부사항이 후술할 첨부 도면들과 설명에 기술된다. 본 발명의 다른 구성들, 양태들 및 이점들은 설명, 도면들 및 청구항들로부터 분명해질 것이다.
도 1은 컨볼루션 신경망(CNN)를 트레이닝 하는 예시적인 시스템의 블록 다이어그램이다.
도 2는 CNN을 트레이닝 하는 예시적인 프로세스의 흐름도이다.
도 3은 워커에 의해 유지되는 완전히-연결된 레이어 파티션들을 통해, 액티베이션 데이터를 프로세싱 하는 예시적인 프로세스의 흐름도이다.
도 4는 워커에 의해 유지되는 완전히-연결된 레이어 파티션들을 통해, 그라디언트들을 역전파(backpropagating)하는 예시적인 프로세스의 흐름도이다.
도 5는 워커들 사이의 액티베이션 데이터 및 그라디언트 데이터를 통신하는 예시적인 프로세스의 흐름도이다.
도 6은 워커들 사이에서 액티베이션 데이터 및 그라디언트 데이터를 통신하는 다른 예시적인 프로세스의 흐름도이다.
도 7은 워커들 사이에서 액티베이션 데이터 및 그라디언트 데이터를 통신하는 다른 예시적인 프로세스의 흐름도이다.
다양한 도면들에서 동일한 참조 번호들 및 명칭들은 동일한 엘리먼트를 나타낸다.
도 1은 컨볼루션 신경망(CNN)을 트레이닝 하는 예시적인 시스템(150)의 블록 다이어그램이다. CNN은 신경망 레이어들의 시퀀스(sequence)를 포함하며, CNN에 대한 입력들은 시퀀스 내 가장 낮은 레이어에 의해 수신되고, 입력으로부터 출력을 생성하기 위해 시퀀스 내 레이어들의 전부를 통해 상기 입력이 프로세스 된다. 예를 들면, 입력은 이미지일 수 있고, 출력은 카테고리들의 세트의 각각에 대한 스코어들의 세트일 수 있다. 특정한 카테고리에 대해 생성된 상기 스코어는 입력 이미지가 상기 카테고리에 속한 객체의 이미지를 포함할 가능성을 나타낸다.
CNN 내 각 신경망 레이어는 노드들의 세트를 포함한다. 각 노드는 (즉, 시퀀스 내 신경망 레이어 바로 아래의 레이어 내의 하나 이상의 노드들로부터 또는, 만일 레이어가 시퀀스에서 가장 낮은 레이어인 경우, CNN에 대한 입력의 전부 또는 일부로부터) 입력을 수신하고, 상기 입력으로부터 액티베이션을 생성한다. 특정한 신경망 레이어 내의 노드들에 의해 생성된 액티베이션들은 이후 시퀀스에서 다음으로 가장 높은 레이어 내의 노드들에 대한 입력으로 제공되거나, 만일 상기 레이어가 시퀀스에서 가장 높은 레이어인 경우, CNN의 출력으로 취급된다.
특히, 신경망 레이어들의 시퀀스는 컨볼루션 신경망 레이어들의 세트 및 이에 후속되는 완전히-연결된 신경망 레이어들의 세트를 포함한다. 일반적으로, 완전히-연결된 레이어 내의 각 노드는 시퀀스에서 다음으로 가장 낮은 레이어 내의 각 노드로부터 입력을 수신하고, 노드의 가중치들의 세트에 따라 수신된 입력들로부터 액티베이션을 생성한다. 특정한 완전히-연결된 레이어 내 각 노드에 의해 생성된 액티베이션들은 시퀀스에서 다음으로 가장 높은 완전히-연결된 레이어 내 각 노드들에 대한 입력으로 제공되거나 또는, 만일 상기 완전히-연결된 레이어가 시퀀스에서 가장 높은 레이어인 경우, CNN의 출력으로 취급된다.
완전히-연결된 레이어들과 달리, 컨볼루션 레이어들은 일반적으로 희소 연결 신경망 레이어들이다. 즉, 컨볼루션 레이어 내 각 노드는 선행하는 신경망 레이어 내 노드들의 일부(즉, 상기 노드들 모두보다 적은 노드)로부터 입력을 수신하거나 혹은, 만일 상기 컨볼루션 레이어가 시퀀스에서 가장 낮은 레이어인 경우 CNN으로의 입력의 일부를 수신하고, 상기 입력으로부터 액티베이션을 생성한다. 일반적으로, 컨볼루션 레이어들은 액티베이션을 생성하는 노드들을 가지며, 상기 노드들은 각 노드에 대한 가중치들의 세트에 따라서 수신된 입력들을 컨볼루션함으로써 액티베이션을 생성한다. 일부 경우들에서, 컨볼루션 레이어 내 노드들은 가중치들을 공유하도록 구성될 수 있다. 즉, 레이어의 노드들의 일부는 레이어의 다른 노드들과 언제나 동일한 가중치 값을 갖도록 강요될 수 있다.
일부 CNN들은 레이어들의 시퀀스 내에 배치된(intersperse) 다른 종류의 레이어들을 갖는다. 예를 들면, 다른 레이어들은 폴링 레이어(pooling layer) (즉, 시퀀스에서 다음으로 가장 낮은 레이어의 노드들의 일부로부터 입력을 수신하고 수신된 입력들을 폴링함으로써 -예를 들어, 수신된 입력들의 최대 또는 평균을 연산함으로써- 액티베이션을 생성하는 노드들을 포함하는 레이어들)을 포함할 수 있다. 다른 예시로서, 다른 레이어들은 스케일링 레이어(scaling layer) (즉, 시퀀스에서 다음으로 가장 낮은 레이어로부터 입력들을 수신하고, 수신된 각 입력 내 각 엘리먼트에 스칼라 기능(scalar function)을 적용하는 레이어들)을 포함할 수 있다. 이러한 다른 레이어들은 CNN의 트레이닝 동안 변경되는 가중치들을 갖지 않기 때문에, 시퀀스에서 그들의 존재 또는 부존재는 하기 기술된 CNN 트레이닝 기법들에 영향이 없다. 그러므로, 하기 기술된 CNN은 기술(description)의 명확성을 위해 다른 종류의 레이어들을 포함하지 않는 것으로 기술될 것이다. 그러나, 당해 기술분야에서 통상의 지식을 가진 자는 트레이닝 프로세스에 영향을 미침이 없이, 다른 종류의 레이어들이 CNN에 포함될 수 있음을 인식할 것이다.
시스템(150)은 다수의 워커들(즉, 워커 1(100a), 워커 2(100b), 및 워커 3(100c))을 포함한다. 각 워커(100a-100c)는 예를 들어, 컴퓨터, 다수의 코어(core)들을 갖는 컴퓨터 내의 코어, 또는 CNN의 파티션 또는 레플리카를 트레이닝 하는 연산들을 수행할 수 있는 컴퓨터 내의 다른 하드웨어 또는 소프트웨어 일 수 있다.
각 워커들(100a-100c)은 CNN의 각 컨볼루션 레이어의 각각의 레플리카를 유지하도록 구성된다. 도 1의 예시에서, 각 워커는 4개의 컨볼루션 레이어들의 레플리카들(106a-106c, 108a-108c, 110a-110c, 및 112a-112c)을 유지한다. 각 컨볼루션 레이어의 각 레플리카는 컨볼루션 레이어의 개별 인스턴스(instance)를 포함한다. 즉, 각 레플리카는 컨볼루션 레이어의 노드들의 전부를 포함한다.
또한, 각 워커들(100a-100c)은 CNN의 완전히-연결된 레이어들 각각의 각각의 파티션을 유지하도록 구성된다. 도 1의 예시에서, 각 워커는 CNN의 제1 완전히-연결된 레이어에 대한 각각의 파티션(114a-114c)과 CNN의 제2 완전히-연결된 레이어에 대한 각각의 파티션(116a-116c)을 유지한다. 완전히-연결된 레이어의 각 파티션은 완전히-연결된 레이어의 노드들의 디스조인트 파티션을 포함한다. 그러므로, 워커들(100a-100c)에 의해 유지되는 특정한 완전히-연결된 레이어의 집합적인 파티션들은 완전히-연결된 레이어의 단일 인스턴스를 구성한다. 즉, 각 파티션이 특정한 레이어의 단지 노드들의 일부를 포함하는 반면에, 파티션들은 집합적으로 레이어의 노드들의 전부를 포함한다.
워커들(100a-100c)은 트레이닝 데이터(102)로부터 선택된 트레이닝 예를 통해 CNN을 트레이닝 한다. 예를 들면, 트레이닝 예들은 특정 카테고리들로부터의 객체들의 이미지들을 포함하는 것으로 분류된 이미지들 일 수 있다. 트레이닝 데이터(102)는 트레이닝 예들(104a-104c)의 다수의 배치들을 포함하며, 각 배치는 트레이닝 예들의 미리-결정된 수를 포함한다.
트레이닝 예들을 사용하여 CNN을 트레이닝 하기 위해, 각 워커(100a-100c)는 트레이닝 예들의 서로 다른 배치들을 배정받고, 상기 트레이닝 데이터를 통해 CNN을 트레이닝 하기 위해 신경망 트레이닝 기법을 수행한다. 예를 들면, 트레이닝 기법은 확률적 경사 하강(stochastic gradient descent)(SGD)을 사용하여 CNN에 대한 목적 함수(objective function)를 최소화 또는 최대화하는 트레이닝 기법일 수 있다. 다수의 워커들을 가진 시스템에서, 트레이닝 데이터의 배치를 통해 CNN을 트레이닝 하는 방법은 도 3을 참조하여 하기에 더 자세히 기술된다. 일단 각 워커가 상기 워커의 배정된 배치를 통해 트레이닝 기법을 수행하였다면, 각 워커는 트레이닝 예들의 새로운 배치를 배정받을 수 있고, 새로운 배치를 통해 CNN을 트레이닝 하기 위해(예를 들어, 목표 함수를 최소화 또는 최대화 하는 시도를 계속하기 위해) 트레이닝 기법의 추가적인 반복을 수행할 수 있다.
도 2는 CNN을 트레이닝 하는 예시적인 프로세스의 흐름도이다. 프로세스(200)는 다수의 워커들 각각(예를 들어, 도 1의 각 워커들(100a-100c))에 의해 수행될 수 있고, CNN을 트레이닝 하는 기법의 일부로서 적절하게 프로그래밍 될 수 있다. 전술된 바와 같이, 각 워커는 CNN의 컨볼루션 레이어들 각각의 각각의 레플리카 및 CNN의 완전히-연결된 레이어들 각각의 각각의 파티션을 유지하도록 구성된다.
워커는 워커에게 배정된 트레이닝 예들의 배치를 수신(단계(202))한다.
워커는 상기 워커에 의해 유지되는 컨볼루션 레이어 레플리카들의 전부를 통해 배치 내 각 트레이닝 예를 프로세스 (단계(204))하여, 배치 내 각 트레이닝 예에 대한 각각의 컨볼루션 액티베이션들을 연산한다. 즉, 워커는 트레이닝 예에 대한 초기 컨볼루션 액티베이션들을 생성하기 위해, 가장 낮은 컨볼루션 레이어 레플리카를 통해 각 트레이닝 예를 프로세스 하고, 그 후 시퀀스 내 각 컨볼루션 레이어 레플리카를 통해 상기 가장 낮은 컨볼루션 액티베이션을 프로세스하여 트레이닝 예에 대한 컨볼루션 액티베이션들을 연산한다.
워커는 자신의 컨볼루션 액티베이션 데이터를 CNN을 트레이닝 하고 있는 다른 워커들에게 전송하고, CNN을 트레이닝 하고 있는 다른 워커들로부터 다른 컨볼루션 액티베이션 데이터를 수신(단계(206))한다. 일반적으로, 자신의 컨볼루션 액티베이션 데이터는, 자신의 각 트레이닝 예에 대한(즉, 워커에게 배정된 배치 내 각 트레이닝 예에 대한), 트레이닝 예에 대한 컨볼루션 액티베이션들을 포함한다. 유사하게, 다른 특정한 트레이닝 예(즉, CNN을 트레이닝 하는 다른 워커들 중 하나에게 배정된 트레이닝 예)에 대한 다른 컨볼루션 액티베이션 데이터는 다른 워커에 의해 연산된 트레이닝 예에 대한 컨볼루션 액티베이션들을 포함한다. 어떤 컨볼루션 액티베이션 데이터가 다른 워커들에게 전송될지 그리고 상기 컨볼루션 액티베이션 데이터가 언제 전송될지를 결정하는 예시적인 기법들은 도 5, 6 및 7을 참조하여 하기 기술된다.
워커는 완전히-연결된 레이어 파티션들의 전부를 통해 자신의 트레이닝 예들 및 다른 트레이닝 예들에 대한 컨볼루션 액티베이션 데이터를 프로세스(단계(208))하여, 자신의 각 트레이닝 예 및 각 다른 트레이닝 예에 대한 각각의 출력 파티션을 연산한다. 특히, 트레이닝 예에 대한 출력 파티션은 워커에 의해 유지되는 트레이닝 예에 대한 가장 높은 완전히-연결된 레이어 파티션의 액티베이션들을 포함한다. 출력 파티션을 연산하기 위해 컨볼루션 액티베이션 데이터를 프로세싱 하는 방법은 도 3을 참조하여 하기에 더 자세히 기술된다.
워커는 자신의 각 트레이닝 예 및 각 다른 트레이닝 예에 대한 각각의 그라디언트 일부를 획득(단계(210))한다. 일부 구현예들에서, 각 워커는 워커에 의해 연산된 출력 파티션들을 워커들 중 지정된 한 워커에게 전송한다. 상기 워커는 그 후 목적 함수의 그라디언트를 연산할 수 있고, 워커들 각각에게 적절한 그라디언트 일부를 전송할 수 있다. 일부 다른 구현예들에서, 각 워커는 각 트레이닝 예에 대한 각각의 그라디언트 일부를 연산한다. 예를 들면, 각 트레이닝 예에 대해, 워커는 워커에 의해 연산된 출력 부분과 트레이닝 예에 대해 알려져 있는 출력의 대응하는 부분(즉, 트레이닝 예에 대해 워커에 의해 유지되는 가장 높은 완전히-연결된 레이어 파티션 내의 노드들에 의해 연산되어야 하는 액티베이션들) 사이의 에러(error)를 결정한다. 워커는 그 후 상기 에러를 사용하여, 트레이닝 예에 대한 목표 함수의 그라디언트를 연산한다. 워커는 가장 높은 완전히-연결된 레이어의 노드들의 파티션만을 유지하는바, 워커에 의해 연산된 그라디언트는 단지 트레이닝 예에 대한 총 그라디언트 중 일부분뿐이다.
워커는 상기 워커에 의해 유지되는 완전히-연결된 레이어 파티션들의 전부를 통해 그라디언트 일부들을 역전파하고, 상기 역전파된 그라디언트들을 사용하여 워커에 의해 유지되는 가장 높은 컨볼루션 레이어 레플리카에 대한 그라디언트 일부들을 연산(단계(212))한다. 완전히-연결된 레이어 파티션들을 통해 그라디언트 일부를 역전파하는 방법은 도 4를 참조하여 하기 기술된다.
워커들은 자신의 그라디언트 데이터(즉, 상기 워커에 의해 유지되는 가장 높은 컨볼루션 레이어 레플리카에 대한 그라디언트 일부들)를 다른 워커들에게 전송하고, 다른 그라디언트 데이터(즉, 다른 워커들에 의해 유지되는 가장 높은 컨볼루션 레이어의 부분들에 대한 그라디언트 일부들)를 다른 워커들로부터 수신(단계(214))한다. 어떤 그라디언트 데이터가 다른 워커들에게 전송될지 그리고 상기 그라디언트 데이터가 언제 전송될지를 결정하는 예시적인 기법들은 도 5, 6 및 7을 참조하여 하기 기술된다. 일반적으로, 워커들은 특정한 트레이닝 예에 대한 자신의 그라디언트 데이터를 상기 특정한 트레이닝 예가 배정된 워커에게 전송한다. 이를 위해, 각 워커는 어떤 데이터가 어떤 트레이닝 예와 관련되었는지 기록하는바, 그러므로, 각 워커는 어떤 데이터가 어떤 워커에게 전송되어야 하는지 기록한다. 일부 구현예들에서, 워커로 하여금 상기 워커에 의해 프로세싱 되고 있는 어떤 데이터가 어떤 트레이닝 예에 대응하는지 결정하기 위해, 각 워커는, 어떤 데이터가 어떤 트레이닝 예에 대응하고 어떤 트레이닝 예들이 어떤 다른 워커에게 배정되는지를 정의하는 고정된 순서로, 다른 워커들로부터 수신된 데이터를 유지한다. 일부 다른 구현예들에서, 워커가 트레이닝 예에 대한 데이터를 다른 워커에게 전송할 때는 언제든지, 상기 워커는 또한 메타데이터(metadata)를 상기 다른 워커에게 전송할 수 있고, 상기 메타데이터는 데이터를 트레이닝 예와 관련시키는 데이터이다.
일단 데이터가 수신되면, 워커는, 워커에게 배정된 트레이닝 예들의 배치 내 각 트레이닝 예에 대한 가장 높은 컨볼루션 레이어 레플리카에 대한 각각의 전체 그라디언트를 생성하기 위해, 워커에게 배정된 각 트레이닝 예에 대한 워커에 의해 연산된 자신의 그라디언트 일부와 다른 워커들에 의해 연산된 트레이닝 예에 대한 다른 그라디언트 일부들을 결합할 수 있다.
워커는 워커에 의해 유지되는 남아있는 컨볼루션 레이어 레플리카들의 전부를 통해, 전체 그라디언트들을 역전파(단계(216))한다. 즉, 워커는 각 컨볼루션 레이어 레플리카에서 전체 그라디언트들을 연산하고, 그 후 레플리카에 대한 전체 그라디언트들을 연산하는데 사용하기 위해, 상기 전체 그라디언트들을 다음으로 가장 낮은 컨볼루션 레이어 레플리카로 역전파한다.
워커는 각각의 레플리카 및 파티션에 대해 대응하는 그라디언트들을 사용하여, 워커에 의해 유지되는 컨볼루션 레이어 레플리카들 및 완전히-연결된 레이어 파티션들에 대한 가중치 값들을 업데이트(단계(218))한다. 일반적으로, 워커가 가중치 값들을 업데이트 하는 방법은 사용되고 있는 트레이닝 기법에 의존한다. 예를 들면, 일부 트레이닝 기법들에서, 특정한 트레이닝 예에 대한 그라디언트를 사용하여 연산된 특정한 가중치의 새로운 값
Figure pct00001
은 다음을 만족한다:
Figure pct00002
Figure pct00003
Figure pct00004
은 가중치의 현재 값,
Figure pct00005
는 상수 값, 그리고
Figure pct00006
는 트레이닝 예의 가중치에 대한 그라디언트이다.
일반적으로, 오직 하나의 워커만이 특정한 완전히-연결된 레이어 내 각 노드를 유지하기 때문에, 완전히-연결된 레이어 내 각 노드에 대해, 각 워커는 워커에 의해 연산되는 그라디언트 일부들을 사용하여, 상기 워커에 의해 유지되는 노드들에 대한 가중치 값들을 업데이트 한다.
그러나, 컨볼루션 레이어들의 가중치 값들이 각 워커에 의해 별개로 유지되기 때문에, 컨볼루션 레이어들에 대한 그라디언트들은, 각 워커가 컨볼루션 레이어의 레플리카에 대한 가중치들을 업데이트 하기 전에, 동기화(synchronize)되어야 한다. 그라디언트들을 동기화 하기 위해, 각 워커는 가중치들을 동기화 할 각 컨볼루션 레이어의 다른 부분을 배정받을 수 있다. 각각의 다른 워커는 특정한 노드에 대한 그라디언트들을 노드가 배정된 워커에게 전송할 수 있다. 배정받은 워커는 그라디언트를 축적(accumulate)할 수 있고, 그 후 축적된 그라디언트를 각각의 다른 워커에게 전송할 수 있다. 이 후 각 워커는 각각의 다른 워커와 동일하게 축적된 그라디언트를 사용하여, 컨볼루션 레이어들 내 노드들에 대한 가중치들을 업데이트 할 수 있다.
선택에 따라서는, 각 워커에게 각 컨볼루션 레이어의 서로 다른 부분을 배정하기 보다는, 각 워커는 각 컨볼루션 레이어 레플리카의 각 노드에 대한 그라디언트들을 중앙 서버에 전송할 수 있다. 중앙 서버는 서버가 워커들로부터 수신한 각 노드들에 대한 그라디언트들을 축적할 수 있고, 이 후 각 워커에게 축적된 그라디언트들을 전송할 수 있다.
일단 각 워커가 프로세스(200)를 완료하면, 각 워커는 트레이닝 예들의 새로운 배치를 배정받을 수 있고, 새로운 배치에 대해 프로세스(200)를 반복할 수 있다. 워커들은 프로세스(200)를 계속 반복할 수 있다(예를 들어, CNN의 트레이닝에 대한 수렴 조건(convergence criteria)이 만족될 때까지, 또는 프로세스의 반복들이 미리-결정된 수만큼 수행될 때까지).
도 3은 워커에 의해 유지되는 완전히-연결된 레이어 파티션들을 통해, 액티베이션 데이터를 프로세싱 하는 예시적인 프로세스(300)의 흐름도이다. 그 후 프로세스(300)는 다수의 워커들 중 각각(예를 들어, 도 1의 각 워커들(100a-100c))에 의해 수행될 수 있고, CNN을 트레이닝 하는 기법의 일부로서 적절하게 프로그래밍 될 수 있다.
워커는 트레이닝 예들에 대한 컨볼루션 액티베이션 데이터를 획득(단계(302))한다.
액티베이션 데이터 내 식별된 각 트레이닝 예에 대한 각각의 초기 완전히-연결된 레이어 일부 액티베이션들을 연산하기 위해, 워커는 초기 완전히-연결된 레이어 파티션을 통해 컨볼루션 액티베이션 데이터를 프로세스 한다. 특히, 각각의 예에 대한 각각의 초기 완전히-연결된 레이어 일부 액티베이션들을 생성하기 위해, 워커는 액티베이션 데이터 내의 초기 완전히-연결된 레이어 파티션을 통해 각각의 예에 대한 컨볼루션 액티베이션들을 프로세스한다. 각각의 예에 대한 초기 완전히-연결된 레이어 일부 액티베이션들은 워커에 의해 유지되는 초기 완전히-연결된 레이어의 파티션 내의 각 노드에 의해 생성되는 각각의 액티베이션을 포함한다.
워커는 자신의 초기 완전히-연결된 레이어 액티베이션 데이터를 다른 워커들에게 제공하고, 다른 워커들로부터 다른 초기 완전히-연결된 액티베이션 데이터를 수신(단계(306))한다. 즉, 워커는, 각 트레이닝 예에 대해, 트레이닝 예에 대한 초기 완전히-연결된 레이어 액티베이션들을 각각의 다른 워커에게 제공한다. 또한, 워커는, 다른 워커들로부터, 각 트레이닝 예에 대한 초기 완전히-연결된 레이어 액티베이션들을 수신한다. 그러므로, 워커가 다른 액티베이션들을 수신한 이후, 워커는, 트레이닝 예들의 각각에 대해, 트레이닝 예들의 각각에 대한 초기 완전히-연결된 레이어 액티베이션들을 완료한다. 유사하게, 다른 워커들로 하여금 트레이닝 예들의 각각에 대한 완료된 초기 완전히-연결된 레이어 액티베이션들을 소유하게 하기 위해, 워커는 자신의 초기 완전히-연결된 레이어 액티베이션 데이터를 각각의 다른 워커에게 제공한다.
시스템은, 각 트레이닝 예에 대한 각각의 후속적인 완전히-연결된 레이어 파티션 액티베이션들을 생성하기 위해, 워커에 의해 유지되는 다음으로 가장 높은 완전히-연결된 레이어 파티션을 통해 각 트레이닝 예에 대한 완료된 초기 완전히-연결된 레이어 액티베이션들을 프로세스(단계(308))한다. 특정한 워커에 대한 후속적인 완전히-연결된 레이어 부분 액티베이션들은 워커에 의해 유지되는 다음으로 가장 높은 완전히-연결된 레이어의 파티션 내 각 노드에 의해 생성되는 각각의 액티베이션을 포함한다.
만일 후속적인 레이어가 CNN 내 가장 높은 완전히-연결된 레이어인 경우, 워커는 상기 후속적인 완전-연결 레이어 파티션 액티베이션들을 워커에 대한 최종 완전히-연결된 액티베이션들로 취급한다. 만일 시퀀스 내에 후속적인 레이어보다 더 높은 레이어가 하나 이상 있다면, 워커는 상기 더 높은 레이어 각각에 대해 단계(304) 및 단계(306)를 반복할 수 있다(즉, 결합된 현재의 완전히-연결된 레이어 액티베이션들을 생성하기 위해, 자신의 현재의 완전히-연결된 레이어 파티션 액티베이션 데이터를 다른 워커들에게 제공함으로써 그리고 다른 워커들로부터 다른 현재의 완전히-연결된 레이어 파티션 액티베이션 데이터를 수신함으로써, 그리고 이후 시퀀스에서 다음으로 가장 높은 레이어를 사용하여 결합된 액티베이션들을 프로세싱함으로써 상기 단계들을 반복할 수 있다).
도 4는 워커에 의해 유지되는 완전히-연결된 레이어 파티션들을 통해, 그라디언트들을 역전파하는 예시적인 프로세스(400)의 흐름도이다. 그 후 프로세스(400)는 다수의 워커들 중 각각(예를 들어, 도 1의 각 워커들(100a-100c))에 의해 수행될 수 있고, CNN을 트레이닝 하는 기법의 일부로서 적절하게 프로그래밍 될 수 있다.
워커는 가장 높은-레이어 그라디언트 데이터를 수신(단계(402))한다. 상기 가장 높은-레이어 그라디언트 데이터는 워커에 의해 유지되는 다수의 트레이닝 예들의 각각에 대한 가장 높은 완전히-연결된 레이어 파티션에 대한 목적 함수의 각각의 그라디언트들을 포함한다.
워커는 자신의 가장 높은-레이어 그라디언트 데이터(즉, 각 트레이닝 예에 대한 가장 높은-레이어 그라디언트들)를 다른 워커들에게 전송하고, 다른 워커들로부터 다른 가장 높은-레이어 그라디언트들을 수신(단계(204))한다. 각 트레이닝 예에 대해, 트레이닝 예에 대한 결합된 가장 높은-레이어 그라디언트를 생성하기 위해, 워커는 트레이닝 예에 대한 다른 가장 높은-레이어 그라디언트들과 트레이닝 예에 대한 자신의 가장 높은-레이어 그라디언트를 결합할 수 있다.
워커는, 각 트레이닝 예에 대한 결합된 가장 높은-레이어 그라디언트들을 사용하여, 가장 높은 완전히-연결된 레이어 파티션 바로 아래의 완전히-연결된 레이어 파티션에 대한 그라디언트 일부들을 연산(단계(406))한다. 만일 가장 높은 완전히-연결된 레이어 파티션 바로 아래의 완전히-연결된 레이어 파티션이 시퀀스 내의 가장 낮은 파티션인 경우, 워커는 가장 높은 파티션 바로 아래의 파티션에 대한 그라디언트들을 시퀀스 내 가장 낮은 완전히-연결된 레이어 파티션에 대한 그라디언트들로 취급한다. 만일 추가적인 완전히-연결된 레이어 파티션들이 있다면, 워커는 더 낮은 완전히-연결된 레이어 파티션 각각에 대해 단계(404) 및 단계(406)를 반복할 수 있다.
워커는, 가장 낮은 완전히-연결된 레이어 파티션 그라디언트들을 사용하여, 각 트레이닝 예에 대해 가장 높은 컨볼루션 레이어에 대한 그라디언트 일부를 연산(단계(408))한다. 즉, 워커는, 워커에 의해 유지되는 가장 낮은 완전히-연결된 레이어 파티션의 노드들에 대한 가중치의 값들과 완전히-연결된 레이어 파티션들을 통해 역전파되는 데이터를 사용하여, 가장 높은 컨볼루션 레이어에 대한 그라디언트 일부를 연산한다.
도 5는 워커들 사이에서 액티베이션 데이터 및 그라디언트 데이터를 통신하는 예시적인 프로세스(500)의 흐름도이다. 그 후 프로세스(500)는 다수의 워커들 중 각각(예를 들어, 도 1의 각 워커들(100a-100c))에 의해 수행될 수 있고, CNN을 트레이닝 하는 기법의 일부로서 적절하게 프로그래밍 될 수 있다.
워커는 자신의 모든 컨볼루션 액티베이션 데이터(즉, 워커에게 배정된 트레이닝 예들의 배치 내 각 트레이닝 예에 대한 액티베이션들)를 CNN을 트레이닝 하는 각각의 다른 워커들에게 전송(단계(502))한다.
워커는 CNN을 트레이닝 하는 각각의 다른 워커로부터 다른 컨볼루션 액티베이션 데이터를 수신(단계(504))한다. 일단 모든 컨볼루션 액티베이션들이 수신되었으면, 워커는 트레이닝 기법의 현재의 반복 동안 CNN을 트레이닝 하는 임의의 워커들에게 배정된 각 트레이닝 예에 대한 컨볼루션 액티베이션들을 갖는다.
워커는, 예를 들어, 도 2, 3 및 4를 참조하여 전술한 바와 같이, 각 트레이닝 예에 대한 그라디언트 데이터를 연산하기 위해, 완전히-연결된 레이어 파티션들의 전부를 통해 자신의 액티베이션 데이터와 다른 액티베이션 데이터를 프로세스(단계(506))한다.
워커는 다른 워커들에게 자신의 그라디언트 데이터를 전송(단계(508))한다. 즉, 워커는, 워커에 의해 연산된 가장 높은 완전히-연결된 레이어 레플리카 그라디언트 일부 각각에 대해, 대응하는 트레이닝 예 및 워커를 식별하며, 상기 워커로부터 트레이닝 예에 대한 액티베이션 데이터가 수신된다. 그 후, 워커는 각 트레이닝 예에 대한 가장 높은-완전히-연결된 레이어 레플리카 그라디언트 일부를 워커에게 전송하고, 상기 워커로부터 트레이닝 예에 대한 액티베이션 데이터가 수신된다.
워커는 다른 워커들로부터 다른 그라디언트 데이터를 수신(단계(510))한다. 즉, 워커에게 배정된 배치 내 각 트레이닝 예에 대해, 워커는 CNN을 트레이닝 하는 각각의 다른 워커로부터, 트레이닝 예에 대한 가장 높은-완전히-연결된 레이어 레플리카 그라디언트 일부들을 수신한다. 워커에게 배정된 배치 내의 각 트레이닝 예에 대한, 트레이닝 예에 대한 결합된 그라디언트를 생성하기 위해, 시스템은 트레이닝 예에 대한 자신의 그라디언트 데이터와 트레이닝 예에 대한 다른 그라디언트 데이터를 결합한다.
워커는, 예를 들어, 도 2를 참조하여 전술된 바와 같이, 워커에 의해 유지되는 남아있는 컨볼루션 레이어 레플리카들을 통해, 워커에게 배정되는 배치 내 트레이닝 예들에 대한 결합된 그라디언트를 역전파(단계(512))한다.
일부 구현예들에서, 워커에 의해 유지되는 완전히-연결된 레이어 파티션들을 통해 액티베이션 데이터를 프로세스 하기 전에 각 워커가 모든 트레이닝 예들에 대한 액티베이션 데이터를 전송하고 수신하는 것 대신, 일부 동작들이 병렬화 될 수 있다. 즉, 워커는, 다른 트레이닝 예들에 대한 액티베이션 데이터가 워커에 의해 수신되고 있는 동안, 일부 트레이닝 예들에 대한 액티베이션 데이터를 프로세싱 하는 것을 시작할 수 있다.
도 6은 워커들 사이에서 액티베이션 데이터 및 그라디언트 데이터를 통신하는 다른 예시적인 프로세스(600)의 흐름도이다. 그 후 프로세스(600)는 다수의 워커들 중 각각(예를 들어, 도 1의 각 워커들(100a-100c))에 의해 수행될 수 있고, CNN을 트레이닝 하는 기법의 일부로서 적절하게 프로그래밍 될 수 있다.
워커는 CNN을 트레이닝 하는 다른 워커로부터 트레이닝 예들의 배치에 대한 다른 컨볼루션 액티베이션 데이터를 수신하거나, 상기 워커에게 배정된 배치에 대한 자신의 컨볼루션 액티베이션 데이터를 CNN을 트레이닝 하는 각각의 다른 워커에게 전송(단계(602))한다. CNN을 트레이닝 하는 각 워커는 다른 컨볼루션 데이터를 수신하는 것 보다는, 워커가 자신의 컨볼루션 데이터를 상기 각 워커에게 전송하는 순서대로 각각의 포지션을 배정받는다. 만일 상기 순서 내 현재 포지션이 워커에게 배정된 포지션이라면, 워커는 자신의 데이터를 전송한다. 만일 아니라면, 워커는 다른 데이터를 수신한다. 일단 현재 워커가 각각의 다른 워커에게 자신의 데이터를 전송하면, 순서 내 현재 포지션은 다음 포지션으로 증가한다.
워커는, 예를 들어, 도 2, 3 및 4를 참조하여 전술된 바와 같이, 워커에 의해 유지된 완전히-연결된 레이어 파티션들을 통해 자신의 배치 또는 다른 배치에 대한 컨볼루션 액티베이션 데이터를 프로세스 하고, 배치에 대한 가장 높은-완전히-연결된 레이어 레플리카 그라디언트 일부들을 연산(단계(606))한다.
배치에 대한 액티베이션 데이터를 프로세싱 하는 것과 병행하여, 워커는 서로 다른 워커로부터 상기 워커에게 배정된 배치에 대한 다른 액티베이션 데이터를 수신하거나, 자신의 액티베이션 데이터를 전송(단계(602))한다. 즉, 워커는 순서에서의 현재 포지션이 자신에게 배정된 포지션과 일치하는지 여부를 다시 결정하고, 만일 현재 포지션이 일치한다면 자신의 데이터를 전송하고, 만일 현재 포지션이 일치하지 않는다면 자신의 데이터를 수신한다.
일단 워커가 배치에 대한 가장 높은-완전히-연결된 레이어 레플리카 그라디언트 일부들을 연산하면, 워커는 다른 워커들에게 자신의 그라디언트 데이터를 전송하거나, 다른 워커들로부터 다른 그라디언트 데이터를 수신(단계(606))한다.
그라디언트 데이터를 전송 또는 수신하는 것과 병행하여, 워커는 그라디언트 데이터를 생성하기 위해 이전의 액티베이션 데이터를 프로세싱 하는 워커와 병행하여 전송 또는 수신되는 컨볼루션 액티베이션 데이터를 프로세스(단계(604)) 한다.
일단 임의의 워커들에게 배정된 모든 배치들이 워커에 의해 프로세스 되고 워커가 상기 워커에게 배정된 배치 내 각 트레이닝 예에 대한 그라디언트 데이터를 완료하면, 워커는 도 2를 참조하여 전술된 바와 같이, 상기 워커에 의해 유지되는 남아있는 컨볼루션 레이어 레플리카들을 통해 완성 그라디언트 데이터를 역전파(단계(608))한다.
도 7은 워커들 사이에서 액티베이션 데이터 및 그라디언트 데이터를 통신하는 다른 예시적인 프로세스(700)의 흐름도이다. 그 후 프로세스(700)는 다수의 워커들 중 각각(예를 들어, 도 1의 각 워커들(100a-100c))에 의해 수행될 수 있고, CNN을 트레이닝 하는 기법의 일부로서 적절하게 프로그래밍 될 수 있다.
워커는 N/K 트레이닝 예들에 대한 컨볼루션 액티베이션 데이터를 각각의 다른 워커에게 전송(단계(702))하며, N은 워커에게 배정된 배치 내 트레이닝 예들의 총 수(total number)이고, K는 CNN을 트레이닝 하는 워커들의 총 수이다.
워커는 각각의 다른 워커로부터 N/K 다른 트레이닝 예들에 대한 다른 컨볼루션 액티베이션 데이터를 수신(단계(704))한다. 그러므로, 워커는 (N)*(K-1)/K 총 트레이닝 예들에 대한 컨볼루션 액티베이션 데이터를 수신한다.
워커는, 예를 들어, 도 2, 3 및 4를 참조하여 전술된 바와 같이, 워커에 의해 유지되는 완전히-연결된 레이어 파티션들을 통해, N 트레이닝 예들(즉, the (N)*(K-1)/K 다른 트레이닝 예들 및 N/K 자신의 트레이닝 예들)에 대한 컨볼루션 액티베이션 데이터를 프로세스 하고, 각 트레이닝 예에 대한 가장 높은-완전히-연결된 레이어 레플리카 그라디언트 일부들을 연산(단계(706))한다.
N 트레이닝 예들에 대한 컨볼루션 액티베이션 데이터를 프로세싱하는 것과 병행하여, 워커는 다른 워커들에게 전송될 컨볼루션 액티베이션 데이터가 더 있는지 여부를 결정(단계(708))한다. 특히, 워커는 자신에게 배정된 배치 내에 CNN을 트레이닝 하는 다른 워커들에게 아직 전송되지 않은 트레이닝 예들이 있는지 여부를 결정한다.
만일 다른 워커들에게 전송될 컨볼루션 액티베이션 데이터가 더 있다면, 워커는, 현재 N 트레이닝 예들에 대한 컨볼루션 액티베이션 데이터를 프로세싱하는 것과 병행하여, N/K 추가 트레이닝 예들에 대한 컨볼루션 액티베이션 데이터를 각각의 다른 워커에게 전송(단계(702))하고, 각각의 다른 워커로부터 N/K 추가 트레이닝 예들에 대한 다른 컨볼루션 데이터를 수신(단계(704))한다.
일단 현재의 N 트레이닝 예들에 대한 가장 높은-완전히-연결된 레이어 레플리카 그라디언트 일부들이 연산되면, 워커는 각각의 N 트레이닝 예들에 대한 그라디언트 데이터를 트레이닝 예가 배정된 워커에게 전송하고(단계(710)), 다른 워커들로부터 워커에게 배정된 트레이닝 예들에 대한 그라디언트 데이터를 수신(단계(712))한다.
그라디언트 데이터를 전송 및 수신하는 것과 병행하여, 단계(708)에서 만일 워커가 전송될 컨볼루션 액티베이션 데이터가 더 있다고 판단했다면, 워커는 다음 N 트레이닝 예들에 대한 컨볼루션 액티베이션 데이터를 프로세스(단계(706)) 하는 것을 시작한다.
단계(708)에서 만일 워커가 전송될 컨볼루션 데이터가 더 없다고 판단했다면, 일단 워커에게 배정된 모든 N 트레이닝 예들에 대한 그라디언트 데이터가 수신되었다면, 예를 들어, 도 2를 참조하여 전술된 바와 같이, 워커에 의해 유지되는 남아있는 컨볼루션 레이어 레플리카들을 통해 그라디언트 데이터를 역전파한다.
전술한 내용은 일반적으로 워커에 의해 유지되는 컨볼루션 레이어 레플리카들의 전부를 통해 워커에게 배정된 모든 트레이닝 예들에 대한 그라디언트 데이터가 역전파 될 때까지, 워커들이 완전히-연결된 레이어들의 가중치들을 업데이트 하기를 기다리는 것을 기술한다. 그러나, 일부 구현예들에서, 워커는 컨볼루션 레이어들에 대한 가중치들이 업데이트 되는 인터벌들(intervals)과 서로 다른 인터벌들로, 완전히-연결된 레이어들의 가중치들을 업데이트 할 수 있다. 예를 들면, 프로세스(700)가 컨볼루션 레이어 레플리카들과 완전히-연결된 레이어 파티션들 사이에서 데이터를 교환하는데 사용되는 구현예들에서, 각 워커는 N 트레이닝 예들의 각각의 세트에 대한 그라디언트들이 연산된 이후, 워커에 의해 유지되는 완전히-연결된 레이어 파티션들에 대한 가중치들을 업데이트하고, 컨볼루션 레이어 레플리카들의 전부를 통해 워커에게 배정된 배치 내 모든 N 트레이닝 예들에 대한 그라디언트들이 역전파될 때까지, 워커에 의해 유지되는 컨볼루션 레이어 레플리카들에 대한 가중치들을 업데이트하기 위해 대기할 수 있다. 유사하게, 프로세스(600)가 컨볼루션 레이어 레플리카들과 완전히-연결된 레이어 파티션들 사이에서 데이터를 교환하는데 사용되는 구현예들에서, 각 워커는 워커들에 의해 현재 프로세싱 되고 있는 트레이닝 예들에 대한 그라디언트들이 연산된 이후, 워커에 의해 유지되는 완전히-연결된 레이어 파티션들에 대한 가중치들을 업데이트하고, 컨볼루션 레이어 레플리카들의 전부를 통해 워커에게 배정된 배치 내 모든 N 트레이닝 예들에 대한 그라디언트들이 역전파될 때까지, 워커에 의해 유지되는 컨볼루션 레이어 레플리카들에 대한 가중치들을 업데이트하기 위해 대기할 수 있다.
본 발명의 실시예들 및 본 명세서에 기술된 기능적인 동작들은 본 명세서에 개시된 구조들과 그들의 구조적 균등물들을 포함하는 디지털 전자 회로, 유형적으로 구현된(tangibly-embodied) 컴퓨터 소프트웨어 또는 펌웨어, 컴퓨터 하드웨어 또는 그들 중 하나 이상의 조합들에서 구현된다. 본 명세서에 기술된 본 발명의 실시예들은 하나 이상의 컴퓨터 프로그램들로서 구현된다. 즉, 데이터 프로세싱 장치들에 의한 실행을 위한 또는 데이터 프로세싱 장치의 동작을 제어하기 위한 유형적인 비일시적 프로그램 상에 인코딩된 컴퓨터 프로그램 명령들의 하나 이상의 모듈들. 대안적으로 또는 추가로, 프로그램 명령들은 인공적으로 생성된 전파 신호(예를 들어, 데이터 프로세싱 장치에 의한 실행을 위한 적절한 수신기 장치에 전송하기 위한 정보를 인코딩하기 위해 생성된 기계-생성 전자적, 광학적 또는 전자기적 신호)에 인코딩된다. 컴퓨터 저장 매체는 머신-판독가능 저장 디바이스, 머신-판독가능 저장 기판, 랜덤 또는 시리얼 메모리 디바이스, 또는 그들의 하나 이상의 조합일 수 있다.
용어 "데이터 프로세싱 장치"는 데이터를 프로세싱하기 위한 모든 종류의 장치들, 디바이스들, 및 기계들을 포함하며, 예시로서 프로그래머블 프로세서, 컴퓨터, 또는 다수의 프로세서들 또는 컴퓨터들을 포함한다. 장치는 특수 목적 논리 회로(예를 들어, FPGA(필드 프로그래머블 게이트 어레이) 또는 ASIC(응용 주문형 집적 회로))를 포함할 수 있다. 또한, 장치는 하드웨어에 더하여, 코드를 포함하며, 상기 코드는 문제되는 컴퓨터 프로그램에 대한 실행환경을 생성한다. 예를 들면, 프로세서 펌웨어, 프로토콜 스탁, 데이터베이스 관리 시스템, 운영 체제, 또는 그들의 하나 이상의 조합을 구성하는 코드.
컴퓨터 프로그램(프로그램, 소프트웨어, 소프트웨어 어플리케이션, 스크립트, 또는 코드로서 또한 지칭되거나 기술됨)은 임의의 형태의 프로그래밍 언어로 작성되며, 컴파일되거나 인터프리트된 언어들, 또는 선언적 또는 절차적 언어들을 포함하며, 단독형 프로그램 또는 모듈, 컴포넌트, 서브루틴, 또는 컴퓨팅 환경에서 사용하기 위한 적절한 다른 유닛을 포함하여 임의의 형태 내에 배치될 수 있다. 컴퓨터 프로그램은, 파일 시스템 내의 파일에 대응하지만, 필수적이지는 않다. 프로그램은 다른 프로그램들 또는 데이터를 보유하는 파일의 일부(예를 들어, 마크업 언어 문서 내에 저장된 하나 이상의 스크립트들)에, 문제되는 프로그램 전용의 단일 파일에, 또는 다수의 조화된 파일들에(예를 들면, 하나 이상의 모듈들, 서브 프로그램들, 또는 코드의 부분들을 저장하는 파일들)에 저장된다. 컴퓨터 프로그램은 하나의 컴퓨터 또는 다수의 컴퓨터들 상에서 실행되도록 배치되며, 상기 컴퓨터들은 하나의 사이트에 위치되거나, 다수의 사이트들에 걸쳐 분산되고 통신 네트워크를 통해 상호 연결된다.
본 명세서에 기술된 프로세서들 및 논리 흐름들은 입력 데이터 및 생성 출력을 작동함으로써 기능들을 수행하기 위해 하나 이상의 컴퓨터 프로그램들을 실행하는 하나 이상의 프로그래머블 프로세서들에 의해 수행될 수 있다. 또한, 프로세스들 및 논리 흐름들은 전용 논리 회로(예를 들어, FPGA(필드 프로그래머블 게이트 어레이) 또는 ASIC(응용 주문형 집적 회로))에 의해 수행되고, 장치들 또한 상기 전용 논리 회로로서 구현된다.
컴퓨터 프로그램의 실행을 위해 적절한 컴퓨터들은, 예시로서, 범용 및 전용 마이크로 프로세서들 또는 모두, 또는 임의의 다른 종류의 중앙 처리 유닛에 기초할 수 있다. 일반적으로, 중앙 처리 유닛은 명령들 및 데이터를 리드-온리 메모리 또는 랜덤 엑세스 메모리 또는 둘다로부터 수신할 것이다. 컴퓨터의 필수적인 엘리먼트들은 명령들을 수행하거나 실행하는 중앙 처리 유닛 및 명령들과 데이터를 저장하는 하나 이상의 메모리 디바이스들이다. 일반적으로, 컴퓨터는 또한, 데이터를 저장하기 위해 하나 이상의 대형 저장 디바이스들(예를 들어, 자기적, 자기 광학 디스크들, 또는 광학 디스크들)을 포함하거나, 이들로부터 데이터를 수신하거나 또는 이들에게 데이터를 전송하거나 또는 둘 다를 위해 동작적으로 연결된다. 그러나, 컴퓨터는 이러한 디바이스들을 반드시 가질 필요는 없다. 게다가, 컴퓨터는 다른 디바이스들(예를 들어, 모바일 폰, PDA, 모바일 오디오 또는 비디오 플레이어, 게임 콘솔, GPS 수신기, 또는 휴대용 저장 디바이스(예를 들어, USB 플래시 드라이브))에 내장될 수 있다.
컴퓨터 프로그램 명령들 및 데이터를 저장하는 적절한 디바이스들은 모든 형태들의 비휘발성 메모리, 미디어 및 메모리 디바이스들을 포함하며, 예시로서 반도체 메모리 디바이스들, 예를 들어, EPROM, EEPROM, 및 플래시 메모리 디바이스들; 자기 디스크들, 예를 들면, 내장 하드 디스크들 또는 이동식 디스크들; 자기 광학 디스크들; 및 CD-ROM 및 DVD-ROM 디스크들을 포함한다. 프로세서 및 메모리는 전용 논리 회로에 의해 공급되거나, 이에 통합된다.
사용자와의 인터렉션을 제공하기 위해, 본 명세서에 기술된 본 발명의 실시예들은 사용자에게 정보를 디스플레이 하는 디스플레이 디바이스(예를 들어, CRT(Cathode ray tube), LCD(Liquid crystal Display)) 및 키보드 및 사용자가 컴퓨터에 입력을 제공할 수 있는 포인팅 디바이스(예를 들어, 마우스 또는 트랙볼)를 가진 컴퓨터 상에서 구현될 수 있다. 다른 종류의 디바이스들 또한 사용자와의 인터렉션을 위해 제공될 수 있다; 예를 들면, 사용자에게 제공된 피드백은 임의의 형태의 감각적 피드백(예를 들어, 시각적 피드백, 청각적 피드백 또는 촉각적 피드백)이고; 사용자로부터의 입력은 음향적, 음성, 또는 촉각적 입력을 포함하는 임의의 형태로 수신될 수 있다. 추가적으로, 컴퓨터는 사용자에 의해 사용되는 디바이스에 문서들을 전송하고 그로부터 문서들을 수신함으로써 사용자와 인터렉션할 수 있다; 예를 들면, 웹 브라우저로부터 수신된 요청들에 응답하여 사용자의 클라이언트 디바이스 상의 웹 브라우저로 웹 페이지들을 전송함으로써 사용자와 인터렉션한다.
본 명세서에 기술된 본 발명의 실시예들은 백-엔드 컴포넌트(예를 들어, 데이터 서버로서)를 포함하는 컴퓨팅 시스템, 또는 미들웨어 컴포넌트(예를 들어, 어플리케이션 서버)를 포함하는 컴퓨팅 시스템, 또는 프론트 엔드 컴포넌트(예를 들어, 그래픽 사용자 인터페이스 또는 사용자가 본 명세서에 기술된 본 발명의 구현예와 인터렉션할 수 있는 웹 브라우저를 가지는 클라이언트 컴퓨터)를 포함하는 컴퓨팅 시스템 또는 하나 이상의 상기 백-엔드, 미들웨어 또는 프론트 엔트 컴포넌트들의 임의의 조합에서 구현된다. 시스템의 컴포넌트들은 디지털 데이터 통신(예를 들어, 통신 네트워크)의 임의의 형태 또는 매체에 의해 상호 연결될 수 있다. 통신 네트워크들의 예시들은 근거리 네트워크(“LAN”) 및 광역 네트워크(“WAN”)(예를 들어, 인터넷)를 포함한다.
컴퓨팅 시스템은 클라이언트들과 서버들을 포함할 수 있다. 클라이언트와 서버는 일반적으로 서로 떨어져 있으며, 전형적으로 통신 네트워크를 통해 인터렉트한다. 클라이언트와 서버의 관계는 각각의 컴퓨터들 상에서 동작하고 서로에 대해 클라이언트-서버 관계를 갖는 컴퓨터 프로그램들에 의해 생긴다.
본 명세서가 많은 특정 구현예의 세부사항들을 포함하고 있지만, 이들은 발명들 또는 청구된 것의 범위에 관한 제한들로서 고려되어서는 아니되며, 오히려 특정 발명들의 특정 구현예들에 특정된 구성들의 설명들로서 고려되어야 한다. 또한 별개의 구현예들의 맥락에서 본 명세서에 기술된 일정 구성들은 조합으로 단일 구현예로 구현될 수 있다. 또한 반대로, 단일 구현예의 맥락에서 기술된 다양한 구성들은 다수의 구현예들에서 별개로 또는 임의의 적절한 서브컴비네이션으로 구현될 수 있다. 게다가, 비록 구성들이 일정 조합들로 동작하는 것으로 상기 기술되었지만, 그리고 그와 같이 초기적으로 청구되었지만, 일부 경우들에서, 청구된 조합으로부터 하나 이상의 구성들이 상기 조합으로부터 수행될 수 있고, 청구된 조합은 서브컴비네이션 또는 서브컴비네이션의 변화를 안내할 수 있다.
유사하게, 동작들이 도면에서 특정 순서로 도시되었지만, 이는 원하는 결과들을 달성하기 위해 상기 동작들이 도시된 특정 순서로 또는 순차적 순서로 수행되어야 한다거나 모든 도시된 동작들이 수행되어야 한다는 것 요구하는 것으로 이해되어서는 아니된다. 특정 환경들에서, 멀티태스팅 및 병렬 프로세싱은 이점이 있다. 게다가, 상기 기술된 구현예들에서 다양한 시스템 컴포넌트들의 분리는 상기 분리가 모든 구현예들에서 상기 분리가 요구되는 것으로서 이해되어서는 아니되며, 기술된 프로그램 컴포넌트들 및 시스템들은 일반적으로 단일의 소프트웨어 제품에 통합되거나 하나 이상의 유형의 매체 상에 내장된 다수의 소프트웨어 제품들에 패키징 될 수 있음이 이해되어야 한다.
본 발명의 특정 구현예들이 기술되었다. 다른 구현예들은 후속하는 청구항들의 범위 내에 있다. 예를 들면, 청구항들에 기재된 동작들은 다른 순서로 수행될 수 있고, 여전히 원하는 결과들을 달성한다. 일 예시로서, 첨부 도면들에 도시된 프로세스들은 원하는 결과들을 달성하기 위해 도시된 특정 순서 또는 순차적 순서를 필수적으로 요구되지 않는다. 특정 구현예들에서, 멀티태스킹 또는 병렬 프로세싱이 유리할 수 있다.

Claims (20)

  1. 트레이닝 예들(training examples)의 복수의 배치들(batches)을 통해 컨볼루션 신경망(convolution neural network)을 트레이닝 하는 시스템으로서, 상기 컨볼루션 신경망은 가장 낮은 것으로부터 가장 높은 것으로의 시퀀스(sequence)로 배열된 복수의 레이어들(layers)을 가지며, 상기 시퀀스는 하나 이상의 컨볼루션 레이어들(convolutional layers)과 이에 후속되는 하나 이상의 완전히-연결된 레이어들(fully-connected layers)을 포함하며, 각 컨볼루션 레이어와 각 완전히-연결된 레이어는 각각의 복수의 노드들(nodes)을 포함하며, 상기 시스템은:
    복수의 워커(worker)들과, 상기 복수의 워커들 각각은 상기 컨볼루션 레이어들 각각의 각각의 레플리카(replica) 및 상기 완전히-연결된 레이어들 각각의 각각의 디스조인트 파티션(disjoint partition)을 유지하도록 구성되며, 컨볼루션 레이어의 각 레플리카는 상기 컨볼루션 레이어의 상기 노드들의 전부를 포함하며, 완전히-연결된 레이어의 각 디스조인트 파티션은 상기 완전히-연결된 레이어의 상기 노드들의 일부를 포함하며, 그리고 상기 복수의 워커들 각각은 동작들을 수행하도록 구성되며, 상기 동작들은:
    상기 워커에게 배정된 트레이닝 예들의 배치를 수신하는 동작과, 상기 트레이닝 예들의 배치들은 각 워커가 상기 복수의 배치들의 각각의 배치를 수신하도록 배정되며;
    상기 워커에게 배정된 상기 트레이닝 예들의 배치를 통해 상기 워커에 의해 유지되는 상기 컨볼루션 레이어 레플리카를 트레이닝 하는 동작과; 그리고
    상기 트레이닝 예들의 복수의 배치들의 각각을 통해 상기 워커에 의해 유지되는 상기 완전히-연결된 레이어 파티션들을 트레이닝 하는 동작을 포함하는 것을 특징으로 하는 시스템.
  2. 청구항 1에 있어서,
    상기 워커에게 배정된 상기 트레이닝 예들의 배치를 통해 상기 워커에 의해 유지되는 상기 컨볼루션 레이어 레플리카를 트레이닝 하는 동작은:
    상기 워커에게 배정된 상기 배치의 각 트레이닝 예에 대한 각각의 컨볼루션 액티베이션들(convolutional activations)을 계산하기 위해, 상기 워커에 의해 유지되는 상기 컨볼루션 레이어 레플리카들의 전부를 통해 상기 트레이닝 예들의 배치를 프로세싱 하는 것과;
    상기 워커에게 배정된 상기 배치의 상기 트레이닝 예들의 각각에 대해 상기 워커에 의해 유지되는 가장 높은-완전히-연결된 레이어 레플리카(highest fully-connected layer replica)에 대한 그라디언트 데이터(gradient data)를 획득하는 것과; 그리고
    상기 워커에 의해 유지되는 남아있는 컨볼루션 레이어 레플리카들을 통해, 상기 가장 높은-완전히-연결된 레이어 레플리카 그라디언트 데이터를 역전파(backpropagating)하는 것을 포함하는 것을 특징으로 하는 시스템.
  3. 청구항 2에 있어서,
    상기 트레이닝 예들의 복수의 배치들의 각각을 통해 상기 워커에 의해 유지되는 상기 완전히-연결된 레이어 파티션들을 트레이닝 하는 동작은:
    상기 복수의 배치들 전부의 상기 트레이닝 예들의 각각에 대해 각각의 컨볼루션 데이터를 획득하는 것과, 상기 트레이닝 예들의 각각에 대한 상기 컨볼루션 데이터는 상기 트레이닝 예에 대한 컨볼루션 액티베이션들을 포함하며;
    상기 대응하는 트레이닝 예들에 대한 자신의 초기 완전히-연결된 레이어 파티션 액티베이션들(initial fully-connected layer partition activations)을 생성하기 위해, 상기 워커에 의해 유지되는 가장 낮은 완전히-연결된 레이어(lowest fully-connected layer)의 파티션을 통해 상기 컨볼루션 데이터를 프로세싱하는 것과;
    상기 자신의 초기 완전히-연결된 레이어 파티션 액티베이션들을 상기 복수의 워커들 중 다른 워커들에게 전송하는 것과;
    상기 복수의 워커들 중 다른 워커들로부터, 다른 초기 완전히-연결된 레이어 파티션 액티베이션들을 수신하는 것과;
    상기 워커에 의해 유지되는 각각의 다른 완전히-연결된 레이어 파티션에 대해:
    상기 완전히-연결된 레이어 파티션에 대한 자신의 파티션 액티베이션 데이터를 생성하기 위해, 상기 완전히-연결된 레이어 파티션을 통해 상기 워커에 의해 유지되는 다음으로 가장 낮은 완전히-연결된 레이어 파티션에 대한 자신의 파티션 액티베이션 데이터와 다른 파티션 액티베이션 데이터를 프로세싱하는 것과,
    상기 완전히-연결된 레이어 파티션에 대한 상기 자신의 파티션 액티베이션 데이터를 상기 복수의 워커들 중 다른 워커들에게 전송하는 것과, 그리고
    상기 복수의 워커들 중 다른 워커들로부터, 상기 완전히-연결된 레이어 파티션에 대한 다른 파티션 액티베이션 데이터를 수신하는 것과;
    상기 트레이닝 예들의 각각에 대한 자신의 가장 높은-완전히-연결된 레이어 파티션 그라디언트 데이터를 수신하는 것과;
    상기 자신의 가장 높은-완전히-연결된 레이어 파티션 그라디언트 데이터를 상기 복수의 워커들 중 다른 워커들에게 전송하는 것과;
    상기 복수의 워커들 중 다른 워커들로부터 다른 가장 높은-완전히-연결된 레이어 파티션 그라디언트 데이터를 수신하는 것과; 그리고
    상기 워커에 의해 유지되는 각각의 다른 완전히-연결된 레이어 파티션에 대해:
    상기 완전히-연결된 레이어 파티션에 대한 자신의 그라디언트 파티션 데이터를 생성하기 위해, 상기 완전히-연결된 레이어 일부를 통해 상기 워커에 의해 유지되는 다음으로 가장 높은-완전히-연결된 레이어 파티션에 대한 자신의 파티션 그라디언트 데이터와 다른 파티션 그라디언트 데이터를 역전파하는 것과,
    상기 완전히-연결된 레이어 파티션에 대한 상기 자신의 파티션 그라디언트 데이터를 상기 복수의 워커들 중 다른 워커들에게 전송하는 것과, 그리고
    상기 복수의 워커들 중 다른 워커들로부터 상기 완전히-연결된 레이어 파티션에 대한 다른 파티션 그라디언트 데이터를 수신하는 것을 포함하는 것을 특징으로 하는 시스템.
  4. 청구항 3에 있어서,
    상기 워커에게 배정된 상기 배치의 상기 트레이닝 예들의 각각에 대해 상기 워커에 의해 유지되는 가장 높은-완전히-연결된 레이어 레플리카에 대한 그라디언트 데이터를 획득하는 것은:
    각 트레이닝 예에 대한 상기 워커에 의해 유지되는 상기 가장 높은 컨볼루션 레이어의 일부에 대한 자신의 그라디언트 데이터를 연산하는 것과;
    자신의 가장 높은-완전히-연결된 레이어 레플리카 그라디언트 일부 데이터를 상기 복수의 워커들 중 다른 워커들에게 전송하는 것과; 그리고
    상기 복수의 워커들 중 다른 워커들로부터, 다른 가장 높은-완전히-연결된 레이어 레플리카 그라디언트 일부를 수신하는 것을 포함하는 것을 특징으로 하는 시스템.
  5. 청구항 4에 있어서,
    상기 복수의 배치들 전부의 상기 트레이닝 예들의 각각에 대해 각각의 컨볼루션 데이터를 획득하는 것은:
    자신의 컨볼루션 데이터를 상기 복수의 워커들 중 다른 워커들에게 전송하는 것과, 상기 자신의 컨볼루션 데이터는 상기 워커에게 배정된 트레이닝 예들에 대한 상기 각각의 컨볼루션 액티베이션들을 포함하며; 그리고
    상기 복수의 워커들 중 다른 워커들로부터 다른 컨볼루션 데이터를 수신하는 것과, 상기 다른 컨볼루션 데이터는 다른 워커들에게 배정된 다른 트레이닝 예들에 대한 각각의 컨볼루션 액티베이션들을 포함하는 것을 특징으로 하는 시스템.
  6. 청구항 5에 있어서,
    자신의 컨볼루션 데이터를 다른 워커들에게 전송하는 것은 상기 워커에게 배정된 상기 배치의 각 트레이닝 예에 대한 자신의 컨볼루션 데이터를 상기 복수의 워커들 중 각각의 다른 워커에게 전송하는 것을 포함하고, 그리고
    다른 컨볼루션 데이터를 수신하는 것은 상기 복수의 배치들 중 각각의 다른 배치의 각각의 다른 트레이닝 예에 대한 다른 컨볼루션 데이터를 수신하는 것을 포함하는 것을 특징으로 하는 시스템.
  7. 청구항 6에 있어서,
    자신의 가장 높은-완전히-연결된 레이어 레플리카 그라디언트 일부 데이터를 다른 워커들에게 전송하는 것은 상기 복수의 배치들 중 각각의 다른 배치의 다른 트레이닝 예에 대한 자신의 가장 높은-완전히 연결된 레이어 레플리카 그라디언트 일부 데이터를 상기 트레이닝 예가 배정된 상기 워커에게 전송하는 것을 포함하고, 그리고
    상기 복수의 워커들 중 다른 워커들로부터, 다른 가장 높은-완전히-연결된 레이어 레플리카 그라디언트 일부 데이터를 수신하는 것은, 각각의 다른 워커로부터, 상기 워커에게 배정된 배치의 각 트레이닝 예에 대한 다른 가장 높은-완전히-연결된 레이어 레플리카 그라디언트 일부 데이터를 수신하는 것을 포함하는 것을 특징으로 하는 시스템.
  8. 청구항 5에 있어서,
    자신의 컨볼루션 데이터를 다른 워커들에게 전송하는 것은 상기 워커에게 배정된 상기 배치의 각 트레이닝 예에 대한 자신의 컨볼루션 데이터를 상기 복수의 워커들 중 각각의 다른 워커에게 전송하는 것을 포함하고, 그리고
    다른 컨볼루션 데이터를 수신하는 것은 상기 자신의 컨볼루션 데이터를 프로세싱 하는 것과 병행하여, 특정한 다른 워커에게 배정된 배치의 각각의 다른 트레이닝 예에 대한 다른 컨볼루션 데이터를 수신하는 것을 포함하는 것을 특징으로 하는 시스템.
  9. 청구항 8에 있어서,
    상기 복수의 워커들 중 다른 워커들로부터, 다른 가장 높은-완전히-연결된 레이어 레플리카 그라디언트 일부 데이터를 수신하는 것은, 각각의 다른 워커로부터, 상기 워커에게 배정된 배치의 각 트레이닝 예에 대한 다른 가장 높은-완전히-연결된 레이어 레플리카 그라디언트 일부 데이터를 수신하는 것을 포함하고, 그리고
    상기 다른 컨볼루션 데이터를 프로세스 하는 것은 상기 다른 가장 높은-완전히-연결된 레이어 레플리카 그라디언트 일부 데이터를 수신하는 것과 병행하여, 상기 특정한 다른 워커에게 배정된 상기 배치의 각각의 다른 트레이닝 예에 대한 상기 다른 컨볼루션 데이터를 프로세싱 하는 것을 포함하는 것을 특징으로 하는 시스템.
  10. 청구항 5에 있어서,
    자신의 컨볼루션 데이터를 다른 워커들에게 전송하는 것은 상기 워커에게 배정된 상기 배치의 트레이닝 예들의 미리-결정된 수(pre-determined number)에 대한 자신의 컨볼루션 데이터를 상기 복수의 워커들 중 각각의 다른 워커에게 전송하는 것을 포함하고, 그리고
    다른 컨볼루션 데이터를 수신하는 것은 상기 복수의 배치들 중 각각의 다른 배치의 상기 트레이닝 예들의 미리-결정된 수에 대한 다른 컨볼루션 데이터를 수신하는 것을 포함하는 것을 특징으로 하는 시스템.
  11. 청구항 10에 있어서,
    상기 자신의 컨볼루션 데이터와 상기 다른 컨볼루션 데이터를 프로세스 하는 것은, 상기 워커에게 배정된 상기 배치의 트레이닝 예들의 다른 미리-결정된 수에 대한 자신의 컨볼루션 데이터를 전송하는 것과 상기 복수의 배치들 중 각각의 다른 배치의 트레이닝 예들의 다른 미리-결정된 수에 대한 다른 컨볼루션 데이터를 수신하는 것과 병행하여, 상기 자신의 컨볼루션 데이터와 상기 다른 컨볼루션 데이터를 프로세스 하는 것을 포함하는 것을 특징으로 하는 시스템.
  12. 청구항 11에 있어서,
    자신의 가장 높은-완전히-연결된 레이어 레플리카 그라디언트 일부 데이터를 다른 워커들에게 전송하는 것은 상기 복수의 배치들 중 각각의 다른 배치의 다른 트레이닝 예들의 상기 미리-결정된 수에 대한 자신의 가장 높은-완전히-연결된 레이어 레플리카 그라디언트 일부 데이터를 상기 트레이닝 예가 배정된 상기 워커에게 전송하는 것을 포함하고,
    상기 복수의 워커들 중 다른 워커들로부터 다른 가장 높은-완전히-연결된 레이어 레플리카 그라디언트 일부 데이터를 수신하는 것은 각각의 다른 워커로부터, 트레이닝 예들의 상기 미리-결정된 수에 대한 다른 가장 높은-완전히-연결된 레이어 레플리카 그라디언트 일부 데이터를 수신하는 것을 포함하고, 그리고
    상기 자신의 컨볼루션 데이터와 상기 다른 컨볼루션 데이터를 프로세스 하는 것은, 상기 워커에게 배정된 상기 미리-결정된 수에 대한 상기 자신의 가장 높은-완전히-연결된 레이어 레플리카 그라디언트 일부 데이터를 전송하는 것과 상기 미리-결정된 수에 대한 상기 다른 가장 높은-완전히-연결된 레이어 레플리카 그라디언트 일부 데이터를 수신하는 것과 병행하여, 트레이닝 예들의 상기 다른 미리-결정된 수에 대한 상기 자신의 컨볼루션 데이터와 상기 다른 컨볼루션 데이터를 프로세스 하는 것을 포함하는 것을 특징으로 하는 시스템.
  13. 청구항 3에 있어서,
    상기 대응하는 그라디언트 데이터를 사용하여, 상기 컨볼루션 레이어 레플리카들과 상기 완전히-연결된 레이어 파티션들의 가중치들(weights)을 업데이트하는 동작을 더 포함하는 것을 특징으로 하는 시스템.
  14. 트레이닝 예들의 복수의 배치들을 통해 컨볼루션 신경망을 트레이닝 하는 방법으로서, 상기 컨볼루션 신경망은 가장 낮은 것으로부터 가장 높은 것으로의 시퀀스로 배열된 복수의 레이어들을 가지며, 상기 시퀀스는 하나 이상의 컨볼루션 레이어들과 이에 후속되는 하나 이상의 완전히-연결된 레이어들을 포함하며, 각 컨볼루션 레이어와 각 완전히-연결된 레이어는 각각의 복수의 노드들을 포함하며, 상기 방법은:
    복수의 워커들의 각각에 의해, 상기 컨볼루션 레이어들 각각의 각각의 레플리카를 유지하는 단계와, 컨볼루션 레이어의 각 레플리카는 상기 컨볼루션 레이어의 상기 노드들의 전부를 포함하며;
    상기 워커들의 각각에 의해, 상기 완전히-연결된 레이어들 각각의 각각의 디스조인트 파티션을 유지하는 단계와, 완전히-연결된 레이어의 각 디스조인트 파티션은 상기 완전히-연결된 레이어의 상기 노드들의 일부를 포함하며;
    상기 워커들의 각각에 의해, 상기 워커에게 배정된 트레이닝 예들의 배치를 수신하는 단계와, 상기 트레이닝 예들의 배치들은 각 워커가 상기 복수의 배치들의 각각의 배치를 수신하도록 배정되며;
    상기 워커들의 각각에 의해, 상기 워커에게 배정된 상기 트레이닝 예들의 배치를 통해 상기 워커에 의해 유지되는 상기 컨볼루션 레이어 레플리카를 트레이닝 하는 단계와; 그리고
    상기 워커들의 각각에 의해, 상기 트레이닝 예들의 복수의 배치들의 각각을 통해 상기 워커에 의해 유지되는 상기 완전히-연결된 레이어 파티션들을 트레이닝 하는 단계를 포함하는 것을 특징으로 하는 방법.
  15. 청구항 14에 있어서,
    상기 워커에게 배정된 상기 트레이닝 예들의 배치를 통해 상기 워커에 의해 유지되는 상기 컨볼루션 레이어 레플리카를 트레이닝 하는 단계는:
    상기 워커에게 배정된 상기 배치의 각 트레이닝 예에 대한 각각의 컨볼루션 액티베이션들을 계산하기 위해, 상기 워커에 의해 유지되는 상기 컨볼루션 레이어 레플리카들의 전부를 통해 상기 트레이닝 예들의 배치를 프로세싱 하는 것과;
    상기 워커에게 배정된 상기 배치의 상기 트레이닝 예들의 각각에 대해 상기 워커에 의해 유지되는 가장 높은-완전히-연결된 레이어 레플리카에 대한 그라디언트 데이터를 획득하는 것과; 그리고
    상기 워커에 의해 유지되는 남아있는 컨볼루션 레이어 레플리카들을 통해, 상기 가장 높은-완전히-연결된 레이어 레플리카 그라디언트 데이터를 역전파하는 것을 포함하는 것을 특징으로 하는 방법.
  16. 청구항 15에 있어서,
    상기 트레이닝 예들의 복수의 배치들의 각각을 통해 상기 워커에 의해 유지되는 상기 완전히-연결된 레이어 파티션들을 트레이닝 하는 단계는:
    상기 복수의 배치들 전부의 상기 트레이닝 예들의 각각에 대해 각각의 컨볼루션 데이터를 획득하는 것과, 상기 트레이닝 예들의 각각에 대한 상기 컨볼루션 데이터는 상기 트레이닝 예에 대한 컨볼루션 액티베이션들을 포함하며;
    상기 대응하는 트레이닝 예들에 대한 자신의 초기 완전히-연결된 레이어 파티션 액티베이션들을 생성하기 위해, 상기 워커에 의해 유지되는 가장 낮은 완전히-연결된 레이어의 파티션을 통해 상기 컨볼루션 데이터를 프로세싱하는 것과;
    상기 자신의 초기 완전히-연결된 레이어 파티션 액티베이션들을 상기 복수의 워커들 중 다른 워커들에게 전송하는 것과;
    상기 복수의 워커들 중 다른 워커들로부터, 다른 초기 완전히-연결된 레이어 파티션 액티베이션들을 수신하는 것과;
    상기 워커에 의해 유지되는 각각의 다른 완전히-연결된 레이어 파티션에 대해:
    상기 완전히-연결된 레이어 파티션에 대한 자신의 파티션 액티베이션 데이터를 생성하기 위해, 상기 완전히-연결된 레이어 파티션을 통해 상기 워커에 의해 유지되는 다음으로 가장 낮은 완전히-연결된 레이어 파티션에 대한 자신의 파티션 액티베이션 데이터와 다른 파티션 액티베이션 데이터를 프로세싱하는 것과,
    상기 완전히-연결된 레이어 파티션에 대한 상기 자신의 파티션 액티베이션 데이터를 상기 복수의 워커들 중 다른 워커들에게 전송하는 것과, 그리고
    상기 복수의 워커들 중 다른 워커들로부터, 상기 완전히-연결된 레이어 파티션에 대한 다른 파티션 액티베이션 데이터를 수신하는 것과;
    상기 트레이닝 예들의 각각에 대한 자신의 가장 높은-완전히-연결된 레이어 파티션 그라디언트 데이터를 수신하는 것과;
    상기 자신의 가장 높은-완전히-연결된 레이어 파티션 그라디언트 데이터를 상기 복수의 워커들 중 다른 워커들에게 전송하는 것과;
    상기 복수의 워커들 중 다른 워커들로부터 다른 가장 높은-완전히-연결된 레이어 파티션 그라디언트 데이터를 수신하는 것과; 그리고
    상기 워커에 의해 유지되는 각각의 다른 완전히-연결된 레이어 파티션에 대해:
    상기 완전히-연결된 레이어 파티션에 대한 자신의 그라디언트 파티션 데이터를 생성하기 위해, 상기 완전히-연결된 레이어 일부를 통해 상기 워커에 의해 유지되는 다음으로 가장 높은-완전히-연결된 레이어 파티션에 대한 자신의 파티션 그라디언트 데이터와 다른 파티션 그라디언트 데이터를 역전파하는 것과,
    상기 완전히-연결된 레이어 파티션에 대한 상기 자신의 파티션 그라디언트 데이터를 상기 복수의 워커들 중 다른 워커들에게 전송하는 것과, 그리고
    상기 복수의 워커들 중 다른 워커들로부터 상기 완전히-연결된 레이어 파티션에 대한 다른 파티션 그라디언트 데이터를 수신하는 것을 포함하는 것을 특징으로 하는 방법.
  17. 청구항 16에 있어서,
    상기 워커에게 배정된 상기 배치의 상기 트레이닝 예들의 각각에 대해 상기 워커에 의해 유지되는 가장 높은-완전히-연결된 레이어 레플리카에 대한 그라디언트 데이터를 획득하는 것은:
    각 트레이닝 예에 대한 상기 워커에 의해 유지되는 상기 가장 높은 컨볼루션 레이어의 일부에 대한 자신의 그라디언트 데이터를 연산하는 것과;
    자신의 가장 높은-완전히-연결된 레이어 레플리카 그라디언트 일부 데이터를 상기 복수의 워커들 중 다른 워커들에게 전송하는 것과; 그리고
    상기 복수의 워커들 중 다른 워커들로부터, 다른 가장 높은-완전히-연결된 레이어 레플리카 그라디언트 일부를 수신하는 것을 포함하는 것을 특징으로 하는 방법.
  18. 청구항 17에 있어서,
    상기 복수의 배치들 전부의 상기 트레이닝 예들의 각각에 대해 각각의 컨볼루션 데이터를 획득하는 것은:
    자신의 컨볼루션 데이터를 상기 복수의 워커들 중 다른 워커들에게 전송하는 것과, 상기 자신의 컨볼루션 데이터는 상기 워커에게 배정된 트레이닝 예들에 대한 상기 각각의 컨볼루션 액티베이션들을 포함하며; 그리고
    상기 복수의 워커들 중 다른 워커들로부터 다른 컨볼루션 데이터를 수신하는 것과, 상기 다른 컨볼루션 데이터는 다른 워커들에게 배정된 다른 트레이닝 예들에 대한 각각의 컨볼루션 액티베이션들을 포함하는 것을 특징으로 하는 방법.
  19. 청구항 16에 있어서,
    상기 워커들의 각각에 의해, 상기 대응하는 그라디언트 데이터를 사용하여, 상기 워커에 의해 유지되는 상기 컨볼루션 레이어 레플리카들과 상기 워커에 의해 유지되는 상기 완전히-연결된 레이어 파티션들의 가중치들을 업데이트하는 단계를 더 포함하는 것을 특징으로 하는 방법.
  20. 인코딩된 명령어들을 가진 하나 이상의 컴퓨터 저장 미디어(computer storage media)로서, 상기 명령어들은 하나 이상의 컴퓨터들에 의해 실행시, 상기 하나 이상의 컴퓨터들로 하여금 트레이닝 예들의 복수의 배치들을 통해 컨볼루션 신경망을 트레이닝 하는 동작들을 수행하도록 하고, 상기 컨볼루션 신경망은 가장 낮은 것으로부터 가장 높은 것으로의 시퀀스로 배열된 복수의 레이어들을 가지며, 상기 시퀀스는 하나 이상의 컨볼루션 레이어들과 이에 후속되는 하나 이상의 완전히-연결된 레이어들을 포함하며, 각 컨볼루션 레이어와 각 완전히-연결된 레이어는 각각의 복수의 노드들을 포함하며, 상기 동작들은:
    복수의 워커들의 각각에 의해, 상기 컨볼루션 레이어들 각각의 각각의 레플리카를 유지하는 동작과, 컨볼루션 레이어의 각 레플리카는 상기 컨볼루션 레이어의 상기 노드들의 전부를 포함하며;
    상기 워커들의 각각에 의해, 상기 완전히-연결된 레이어들 각각의 각각의 디스조인트 파티션을 유지하는 동작과, 완전히-연결된 레이어의 각 디스조인트 파티션은 상기 완전히-연결된 레이어의 상기 노드들의 일부를 포함하며;
    상기 워커들의 각각에 의해, 상기 워커에게 배정된 트레이닝 예들의 배치를 수신하는 동작과, 상기 트레이닝 예들의 배치들은 각 워커가 상기 복수의 배치들의 각각의 배치를 수신하도록 배정되며;
    상기 워커들의 각각에 의해, 상기 워커에게 배정된 상기 트레이닝 예들의 배치를 통해 상기 워커에 의해 유지되는 상기 컨볼루션 레이어 레플리카를 트레이닝 하는 동작과; 그리고
    상기 워커들의 각각에 의해, 상기 트레이닝 예들의 복수의 배치들의 각각을 통해 상기 워커에 의해 유지되는 상기 완전히-연결된 레이어 파티션들을 트레이닝 하는 동작을 포함하는 것을 특징으로 하는 컴퓨터 저장 미디어.
KR1020167031625A 2014-04-11 2015-04-10 컨볼루션 신경망들의 트레이닝을 병렬화 KR101934067B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US201461978734P 2014-04-11 2014-04-11
US61/978,734 2014-04-11
PCT/US2015/025451 WO2015157718A2 (en) 2014-04-11 2015-04-10 Parallelizing the training of convolutional neural networks

Publications (2)

Publication Number Publication Date
KR20160144467A true KR20160144467A (ko) 2016-12-16
KR101934067B1 KR101934067B1 (ko) 2019-01-02

Family

ID=53015929

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020167031625A KR101934067B1 (ko) 2014-04-11 2015-04-10 컨볼루션 신경망들의 트레이닝을 병렬화

Country Status (6)

Country Link
US (1) US10540587B2 (ko)
EP (1) EP3129920B1 (ko)
JP (1) JP6370469B2 (ko)
KR (1) KR101934067B1 (ko)
CN (2) CN106462800A (ko)
WO (1) WO2015157718A2 (ko)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20190048597A (ko) * 2017-10-31 2019-05-09 국방과학연구소 딥 러닝을 이용한 이종 센서 정보 융합 장치 및 방법
WO2019098418A1 (ko) * 2017-11-16 2019-05-23 삼성전자 주식회사 뉴럴 네트워크 학습 방법 및 디바이스
KR20200098904A (ko) * 2019-02-13 2020-08-21 아주대학교산학협력단 학습 모델 생성 장치 및 방법
WO2023085458A1 (ko) * 2021-11-11 2023-05-19 한국전자기술연구원 경량 딥러닝 학습 메모리 제어 방법 및 장치

Families Citing this family (37)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106462800A (zh) * 2014-04-11 2017-02-22 谷歌公司 使卷积神经网络的训练并行化
US9953425B2 (en) * 2014-07-30 2018-04-24 Adobe Systems Incorporated Learning image categorization using related attributes
CN114897156A (zh) * 2015-11-12 2022-08-12 渊慧科技有限公司 异步深度强化学习
US10572800B2 (en) * 2016-02-05 2020-02-25 Nec Corporation Accelerating deep neural network training with inconsistent stochastic gradient descent
JP6561004B2 (ja) * 2016-03-25 2019-08-14 株式会社デンソーアイティーラボラトリ ニューラルネットワークシステム、端末装置、管理装置およびニューラルネットワークにおける重みパラメータの学習方法
CN111860812B (zh) * 2016-04-29 2024-03-01 中科寒武纪科技股份有限公司 一种用于执行卷积神经网络训练的装置和方法
US10467529B2 (en) * 2016-06-08 2019-11-05 Adobe Inc. Convolutional neural network joint training
US9940544B2 (en) 2016-06-08 2018-04-10 Adobe Systems Incorporated Event image curation
US10546211B2 (en) 2016-07-01 2020-01-28 Google Llc Convolutional neural network on programmable two dimensional image processor
US9646243B1 (en) 2016-09-12 2017-05-09 International Business Machines Corporation Convolutional neural networks using resistive processing unit array
US9715656B1 (en) 2016-09-12 2017-07-25 International Business Machines Corporation Killing asymmetric resistive processing units for neural network training
US10656962B2 (en) 2016-10-21 2020-05-19 International Business Machines Corporation Accelerate deep neural network in an FPGA
US10339443B1 (en) * 2017-02-24 2019-07-02 Gopro, Inc. Systems and methods for processing convolutional neural network operations using textures
CN117709426A (zh) * 2017-02-24 2024-03-15 渊慧科技有限公司 训练机器学习模型的方法、系统和计算机存储介质
DE112017007252T5 (de) * 2017-03-14 2019-12-19 Omron Corporation Fahrerüberwachungsvorrichtung, fahrerüberwachungsverfahren, lernvorrichtung und lernverfahren
US10839286B2 (en) * 2017-09-14 2020-11-17 Xilinx, Inc. System and method for implementing neural networks in integrated circuits
CN107590534B (zh) * 2017-10-17 2021-02-09 北京小米移动软件有限公司 训练深度卷积神经网络模型的方法、装置及存储介质
US20190156214A1 (en) * 2017-11-18 2019-05-23 Neuralmagic Inc. Systems and methods for exchange of data in distributed training of machine learning algorithms
US11836610B2 (en) * 2017-12-13 2023-12-05 Advanced Micro Devices, Inc. Concurrent training of functional subnetworks of a neural network
US20190197395A1 (en) * 2017-12-21 2019-06-27 Fujitsu Limited Model ensemble generation
CN108090565A (zh) * 2018-01-16 2018-05-29 电子科技大学 一种卷积神经网络并行化训练加速方法
US20210073615A1 (en) * 2018-04-12 2021-03-11 Nippon Telegraph And Telephone Corporation Neural network system, neural network method, and program
US10720151B2 (en) 2018-07-27 2020-07-21 Deepgram, Inc. End-to-end neural networks for speech recognition and classification
US11423284B2 (en) * 2018-09-07 2022-08-23 Black Sesame Technologies, Inc Subgraph tile fusion in a convolutional neural network
KR20200030806A (ko) 2018-09-13 2020-03-23 삼성전자주식회사 반도체 제조 공정을 모니터링하기 위해 인공 신경망에 기초하는 이미지 변환 모델을 포함하는 비일시적 컴퓨터 판독가능 매체 그리고 반도체 웨이퍼의 이미지를 변환하는 방법
KR20200051278A (ko) 2018-11-05 2020-05-13 삼성전자주식회사 인공 신경망에서의 작업 관리 방법 및 이를 포함하는 시스템
US11604973B1 (en) * 2018-12-05 2023-03-14 Perceive Corporation Replication of neural network layers
US11847567B1 (en) 2018-12-05 2023-12-19 Perceive Corporation Loss-aware replication of neural network layers
CN109784489B (zh) * 2019-01-16 2021-07-30 北京大学软件与微电子学院 基于fpga的卷积神经网络ip核
CN110096346B (zh) * 2019-03-29 2021-06-15 广州思德医疗科技有限公司 一种多计算节点的训练任务处理方法及装置
JP7208528B2 (ja) * 2019-05-23 2023-01-19 富士通株式会社 情報処理装置、情報処理方法および情報処理プログラム
CN112396154A (zh) * 2019-08-16 2021-02-23 华东交通大学 一种基于卷积神经网络训练的并行方法
US11494695B2 (en) 2019-09-27 2022-11-08 Google Llc Training neural networks to generate structured embeddings
JP7383803B2 (ja) 2019-10-04 2023-11-20 テレフオンアクチーボラゲット エルエム エリクソン(パブル) 不均一モデルタイプおよびアーキテクチャを使用した連合学習
US11556450B2 (en) 2019-10-11 2023-01-17 International Business Machines Corporation Hybrid data-model parallelism for efficient deep learning
JP2023017335A (ja) 2021-07-26 2023-02-07 富士通株式会社 機械学習プログラム,情報処理装置および機械学習方法
CN114912587B (zh) * 2022-06-09 2023-05-26 上海燧原科技有限公司 神经网络分布式训练系统、方法、装置、计算单元及介质

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7747070B2 (en) 2005-08-31 2010-06-29 Microsoft Corporation Training convolutional neural networks on graphics processing units
US8027938B1 (en) * 2007-03-26 2011-09-27 Google Inc. Discriminative training in machine learning
US8234228B2 (en) * 2008-02-07 2012-07-31 Nec Laboratories America, Inc. Method for training a learning machine having a deep multi-layered network with labeled and unlabeled training data
US9390370B2 (en) * 2012-08-28 2016-07-12 International Business Machines Corporation Training deep neural network acoustic models using distributed hessian-free optimization
US9495620B2 (en) * 2013-06-09 2016-11-15 Apple Inc. Multi-script handwriting recognition using a universal recognizer
US9679258B2 (en) * 2013-10-08 2017-06-13 Google Inc. Methods and apparatus for reinforcement learning
CN106462800A (zh) * 2014-04-11 2017-02-22 谷歌公司 使卷积神经网络的训练并行化

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20190048597A (ko) * 2017-10-31 2019-05-09 국방과학연구소 딥 러닝을 이용한 이종 센서 정보 융합 장치 및 방법
WO2019098418A1 (ko) * 2017-11-16 2019-05-23 삼성전자 주식회사 뉴럴 네트워크 학습 방법 및 디바이스
US11681912B2 (en) 2017-11-16 2023-06-20 Samsung Electronics Co., Ltd. Neural network training method and device
KR20200098904A (ko) * 2019-02-13 2020-08-21 아주대학교산학협력단 학습 모델 생성 장치 및 방법
WO2023085458A1 (ko) * 2021-11-11 2023-05-19 한국전자기술연구원 경량 딥러닝 학습 메모리 제어 방법 및 장치

Also Published As

Publication number Publication date
EP3129920A2 (en) 2017-02-15
US20150294219A1 (en) 2015-10-15
JP2017514251A (ja) 2017-06-01
CN113255885A (zh) 2021-08-13
US10540587B2 (en) 2020-01-21
JP6370469B2 (ja) 2018-08-08
CN106462800A (zh) 2017-02-22
KR101934067B1 (ko) 2019-01-02
WO2015157718A3 (en) 2016-01-21
WO2015157718A2 (en) 2015-10-15
EP3129920B1 (en) 2022-06-08

Similar Documents

Publication Publication Date Title
KR101934067B1 (ko) 컨볼루션 신경망들의 트레이닝을 병렬화
CN107209872B (zh) 用于训练强化学习系统的系统、方法和存储介质
US10733535B1 (en) Training a model using parameter server shards
US11783182B2 (en) Asynchronous deep reinforcement learning
US11087216B2 (en) Modifying computational graphs
RU2686030C1 (ru) Непрерывное управление с помощью глубокого обучения с подкреплением
CN109194508B (zh) 基于区块链的数据处理方法和装置
CN107851216B (zh) 一种用于选择待由与环境进行交互的强化学习代理执行的动作的方法
US20210042620A1 (en) Training giant neural networks using pipeline parallelism
CN108021983A (zh) 神经架构搜索
WO2018044633A1 (en) End-to-end learning of dialogue agents for information access
EP3525139A1 (en) Automatically scaling neural networks based on load
CN111602148A (zh) 正则化神经网络架构搜索
CN109313722A (zh) 存储器高效的基于时间的反向传播
CN111819578A (zh) 使用带有急速更新的分布式参数服务器对神经网络进行优化的异步训练
CN110462638A (zh) 使用后验锐化训练神经网络
CN112655005B (zh) 动态小批量大小
KR20230099543A (ko) 분산 병렬 학습 방법 및 분산 병렬 학습 제어 장치

Legal Events

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