KR101934067B1 - 컨볼루션 신경망들의 트레이닝을 병렬화 - Google Patents
컨볼루션 신경망들의 트레이닝을 병렬화 Download PDFInfo
- Publication number
- KR101934067B1 KR101934067B1 KR1020167031625A KR20167031625A KR101934067B1 KR 101934067 B1 KR101934067 B1 KR 101934067B1 KR 1020167031625 A KR1020167031625 A KR 1020167031625A KR 20167031625 A KR20167031625 A KR 20167031625A KR 101934067 B1 KR101934067 B1 KR 101934067B1
- Authority
- KR
- South Korea
- Prior art keywords
- data
- full
- layer
- training
- walker
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
- G06N3/0464—Convolutional networks [CNN, ConvNet]
-
- G06N3/0454—
-
- G06K9/4628—
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
- G06N3/045—Combinations of networks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/08—Learning methods
- G06N3/084—Backpropagation, e.g. using gradient descent
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06V—IMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
- G06V10/00—Arrangements for image or video recognition or understanding
- G06V10/40—Extraction of image or video features
- G06V10/44—Local 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/443—Local 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/449—Biologically inspired filters, e.g. difference of Gaussians [DoG] or Gabor filters
- G06V10/451—Biologically inspired filters, e.g. difference of Gaussians [DoG] or Gabor filters with interaction between the filter responses, e.g. cortical complex cells
- G06V10/454—Integrating the filters into a hierarchical structure, e.g. convolutional neural networks [CNN]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06V—IMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
- G06V10/00—Arrangements for image or video recognition or understanding
- G06V10/70—Arrangements for image or video recognition or understanding using pattern recognition or machine learning
- G06V10/82—Arrangements for image or video recognition or understanding using pattern recognition or machine learning using neural networks
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Evolutionary Computation (AREA)
- Artificial Intelligence (AREA)
- General Physics & Mathematics (AREA)
- Health & Medical Sciences (AREA)
- General Health & Medical Sciences (AREA)
- Life Sciences & Earth Sciences (AREA)
- Biomedical Technology (AREA)
- Molecular Biology (AREA)
- Software Systems (AREA)
- Computing Systems (AREA)
- Biophysics (AREA)
- General Engineering & Computer Science (AREA)
- Mathematical Physics (AREA)
- Data Mining & Analysis (AREA)
- Computational Linguistics (AREA)
- Multimedia (AREA)
- Computer Vision & Pattern Recognition (AREA)
- Biodiversity & Conservation Biology (AREA)
- Databases & Information Systems (AREA)
- Medical Informatics (AREA)
- General Factory Administration (AREA)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
- Feedback Control In General (AREA)
- Image Analysis (AREA)
Abstract
컴퓨터 저장 미디어 상에 인코딩된 컴퓨터 프로그램들을 포함하여, 컨볼루션 신경망(CNN)을 트레이닝 하는 방법들, 시스템들, 및 장치들. 시스템은 복수의 워커들을 포함하고, 상기 복수의 워커들 각각은 CNN의 각 컨볼루션 레이어(layer)들의 각각의 레플리카 및 CNN의 각각의 완전-연결(fully connected) 레이어들의 각각의 디스조인트 파티션을 유지하도록 구성되며, 상기 컨볼루션 레이어의 각각의 레플리카는 컨볼루션 레이어 내 모든 노드들을 포함하고, 상기 완전-연결 레이어의 각각의 디스조인트 파티션은 완전-연결 레이어의 일부 노드들을 포함한다.
Description
본 발명은 컨볼루션 신경망들(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은 워커들 사이에서 액티베이션 데이터 및 그라디언트 데이터를 통신하는 다른 예시적인 프로세스의 흐름도이다.
다양한 도면들에서 동일한 참조 번호들 및 명칭들은 동일한 엘리먼트를 나타낸다.
도 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))한다. 일반적으로, 워커가 가중치 값들을 업데이트 하는 방법은 사용되고 있는 트레이닝 기법에 의존한다. 예를 들면, 일부 트레이닝 기법들에서, 특정한 트레이닝 예에 대한 그라디언트를 사용하여 연산된 특정한 가중치의 새로운 값 은 다음을 만족한다: 은 가중치의 현재 값, 는 상수 값, 그리고 는 트레이닝 예의 가중치에 대한 그라디언트이다.
일반적으로, 오직 하나의 워커만이 특정한 완전히-연결된 레이어 내 각 노드를 유지하기 때문에, 완전히-연결된 레이어 내 각 노드에 대해, 각 워커는 워커에 의해 연산되는 그라디언트 일부들을 사용하여, 상기 워커에 의해 유지되는 노드들에 대한 가중치 값들을 업데이트 한다.
그러나, 컨볼루션 레이어들의 가중치 값들이 각 워커에 의해 별개로 유지되기 때문에, 컨볼루션 레이어들에 대한 그라디언트들은, 각 워커가 컨볼루션 레이어의 레플리카에 대한 가중치들을 업데이트 하기 전에, 동기화(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)
- 트레이닝 예들(training examples)의 복수의 배치(batches)를 통해 컨볼루션 신경망(convolution neural network)을 트레이닝 하는 시스템으로서, 상기 컨볼루션 신경망은 최하위(lowest)로부터 최상위(highest)로의 순서(sequence)로 배열된 복수의 층(layers)을 가지며, 상기 순서는 하나 이상의 컨볼루션 층과 이에 후속되는 하나 이상의 완전-연결(fully-connected) 층을 포함하며, 각 컨볼루션 층과 각 완전-연결 층은 각각의 복수의 노드들(nodes)을 포함하며, 상기 시스템은:
복수의 워커(worker)들과, 상기 각 워커는 각 컨볼루션 층의 각각의 레플리카(replica) 및 상기 각 완전-연결 층의 각각의 디스조인트 파티션(disjoint partition)을 유지하도록 구성되며, 컨볼루션 층의 각 레플리카는 상기 컨볼루션 층의 상기 노드들의 전부를 포함하며, 완전-연결 층의 각 디스조인트 파티션은 상기 완전-연결 층의 상기 노드들의 일부를 포함하며, 그리고 상기 복수의 워커들 각각은 동작들을 수행하도록 구성되며, 상기 동작들은:
상기 워커에게 배정된 트레이닝 예들의 배치(batch)를 수신하는 동작과, 상기 트레이닝 예들의 배치들은 각 워커가 상기 복수의 배치들의 각각의 배치를 수신하도록 배정되며;
상기 워커에게 배정된 상기 트레이닝 예들의 배치를 통해 상기 워커에 의해 유지되는 상기 컨볼루션 층의 레플리카를 트레이닝하는 동작과; 그리고
상기 트레이닝 예들의 복수의 배치들의 각각을 통해 상기 워커에 의해 유지되는 상기 완전-연결 층의 파티션들을 트레이닝 하는 동작을 포함하는 것을 특징으로 하는 시스템. - 청구항 1에 있어서,
상기 워커에게 배정된 상기 트레이닝 예들의 배치를 통해 상기 워커에 의해 유지되는 상기 컨볼루션 층의 레플리카를 트레이닝 하는 동작은:
상기 워커에게 배정된 상기 배치의 각 트레이닝 예에 대한 각각의 컨볼루션 액티베이션(activation) 데이터를 계산하기 위해, 상기 워커에 의해 유지되는 상기 컨볼루션 층 레플리카들의 전부를 통해 상기 트레이닝 예들의 배치를 프로세싱 하는 동작과;
상기 워커에게 배정된 상기 배치의 상기 트레이닝 예들의 각각에 대해 상기 워커에 의해 유지되는 최상위의 완전-연결 층의 레플리카에 대한 그라디언트 데이터(gradient data)를 획득하는 동작과; 그리고
상기 워커에 의해 유지되는 나머지 컨볼루션 층의 레플리카들을 통해, 상기 최상위의 완전-연결 층의 레플리카에 대한 그라디언트 데이터를 역전파 (backpropagating)하는 동작을 포함하는 것을 특징으로 하는 시스템. - 청구항 2에 있어서,
상기 트레이닝 예들의 복수의 배치들의 각각을 통해 상기 워커에 의해 유지되는 상기 완전-연결 층의 파티션들을 트레이닝 하는 동작은:
상기 복수의 배치들 전부의 상기 트레이닝 예들의 각각에 대해 각각의 컨볼루션 액티베이션 데이터를 획득하는 동작과, 상기 트레이닝 예들의 각각에 대한 상기 컨볼루션 액티베이션 데이터는 상기 트레이닝 예에 대한 컨볼루션 액티베이션을 포함하며;
상기 대응하는 트레이닝 예들에 대한 자신의 초기 완전-연결 층의 파티션 액티베이션 데이터를 생성하기 위해, 상기 워커에 의해 유지되는 최하위의 완전-연결 층의 파티션을 통해 상기 컨볼루션 액티베이션 데이터를 프로세싱하는 동작과;
상기 자신의 초기 완전-연결 층의 파티션 액티베이션 데이터를 상기 복수의 워커들 중 다른 워커들에게 전송하는 동작과;
상기 복수의 워커들 중 다른 워커들로부터, 다른 초기 완전-연결 층의 파티션 액티베이션 데이터를 수신하는 동작과;
상기 워커에 의해 유지되는 다른 완전-연결 층 파티션 각각에 대해:
상기 완전-연결 층 파티션에 대한 자신의 파티션 액티베이션 데이터를 생성하기 위해, 상기 완전-연결 층 파티션을 통해 상기 워커에 의해 유지되는 차하위 (nextlowest)의 완전-연결 층 파티션에 대한 자신의 파티션 액티베이션 데이터 및 다른 파티션 액티베이션 데이터를 프로세싱하는 동작과,
상기 완전-연결 층 파티션에 대한 상기 자신의 파티션 액티베이션 데이터를 상기 복수의 워커들 중 다른 워커들에게 전송하는 동작과, 그리고
상기 복수의 워커들 중 다른 워커들로부터, 상기 완전-연결 층 파티션에 대한 다른 파티션 액티베이션 데이터를 수신하는 동작과;
상기 트레이닝 예들의 각각에 대한 자신의 최상위의 완전-연결 층의 파티션 그라디언트 데이터를 수신하는 동작과;
상기 자신의 최상위의 완전-연결 층의 파티션 그라디언트 데이터를 상기 복수의 워커들 중 다른 워커들에게 전송하는 동작과;
상기 복수의 워커들 중 다른 워커들로부터 다른 최상위의 완전-연결 층의 파티션 그라디언트 데이터를 수신하는 동작과; 그리고
상기 워커에 의해 유지되는 다른 완전-연결 층 파티션 각각에 대해:
상기 완전-연결 층 파티션에 대한 자신의 파티션 그라디언트 데이터를 생성하기 위해, 상기 완전-연결 층 일부를 통해 상기 워커에 의해 유지되는 차상위 (next highest)의 완전-연결 층의 파티션에 대해 자신의 파티션 그라디언트 데이터 및 다른 파티션 그라디언트 데이터를 역전파하는 동작과,
상기 완전-연결 층 파티션에 대한 상기 자신의 파티션 그라디언트 데이터를 상기 복수의 워커들 중 다른 워커들에게 전송하는 동작과, 그리고
상기 복수의 워커들 중 다른 워커들로부터 상기 완전-연결 층 파티션에 대한 다른 파티션 그라디언트 데이터를 수신하는 동작을 포함하는 것을 특징으로 하는 시스템. - 청구항 3에 있어서,
상기 워커에게 배정된 상기 배치의 상기 트레이닝 예들의 각각에 대해 상기 워커에 의해 유지되는 최상위의 완전-연결 층의 레플리카에 대한 그라디언트 데이터를 획득하는 동작은:
각 트레이닝 예에 대한 상기 워커에 의해 유지되는 상기 최상위의 컨볼루션 층의 부분(portion)에 대한 자신의 그라디언트 데이터를 연산하는 동작과;
자신의 최상위의 완전-연결 층 레플리카의 그라디언트 부분 데이터를 상기 복수의 워커들 중 다른 워커들에게 전송하는 동작과; 그리고
상기 복수의 워커들 중 다른 워커들로부터, 다른 최상위의 완전-연결 층 레플리카의 그라디언트 부분을 수신하는 동작을 포함하는 것을 특징으로 하는 시스템. - 청구항 4에 있어서,
상기 복수의 배치들 전부의 상기 트레이닝 예들의 각각에 대해 각각의 컨볼루션 데이터를 획득하는 동작은:
자신의 컨볼루션 데이터를 상기 복수의 워커들 중 다른 워커들에게 전송하는 동작과, 상기 자신의 컨볼루션 데이터는 상기 워커에게 배정된 트레이닝 예들에 대한 상기 각각의 컨볼루션 액티베이션들을 포함하며; 그리고
상기 복수의 워커들 중 다른 워커들로부터 다른 컨볼루션 데이터를 수신하는 동작과, 상기 다른 컨볼루션 데이터는 다른 워커들에게 배정된 다른 트레이닝 예들에 대한 각각의 컨볼루션 액티베이션들을 포함하는 것을 특징으로 하는 시스템. - 청구항 5에 있어서,
자신의 컨볼루션 데이터를 다른 워커들에게 전송하는 동작은 상기 워커에게 배정된 상기 배치의 각 트레이닝 예에 대한 자신의 컨볼루션 데이터를 상기 복수의 워커들 중 각각의 다른 워커에게 전송하는 것을 포함하고, 그리고
다른 컨볼루션 데이터를 수신하는 동작은 상기 복수의 배치들 중 각각의 다른 배치의 각각의 다른 트레이닝 예에 대한 다른 컨볼루션 데이터를 수신하는 것을 포함하는 것을 특징으로 하는 시스템. - 청구항 6에 있어서,
자신의 최상위의 완전-연결 층 레플리카의 그라디언트 부분 데이터를 다른 워커들에게 전송하는 동작은 상기 복수의 배치들 중 각각의 다른 배치의 다른 트레이닝 예에 대한 자신의 최상위의 완전-연결 층 레플리카의 그라디언트 부분 데이터를 상기 트레이닝 예가 배정된 상기 워커에게 전송하는 것을 포함하고, 그리고
상기 복수의 워커들 중 다른 워커들로부터, 다른 최상위의 완전-연결 층 레플리카의 그라디언트 부분 데이터를 수신하는 동작은, 각각의 다른 워커로부터, 상기 워커에게 배정된 배치의 각 트레이닝 예에 대한 다른 최상위의 완전-연결 층 레플리카의 그라디언트 부분 데이터를 수신하는 것을 포함하는 것을 특징으로 하는 시스템. - 청구항 5에 있어서,
자신의 컨볼루션 데이터를 다른 워커들에게 전송하는 동작은 상기 워커에게 배정된 상기 배치의 각 트레이닝 예에 대한 자신의 컨볼루션 데이터를 상기 복수의 워커들 중 각각의 다른 워커에게 전송하는 것을 포함하고, 그리고
다른 컨볼루션 데이터를 수신하는 동작은 상기 자신의 컨볼루션 데이터를 프로세싱 하는 것과 병행하여, 특정한 다른 워커에게 배정된 배치의 각각의 다른 트레이닝 예에 대한 다른 컨볼루션 데이터를 수신하는 것을 포함하는 것을 특징으로 하는 시스템. - 청구항 8에 있어서,
상기 복수의 워커들 중 다른 워커들로부터, 다른 최상위의 완전-연결 층 레플리카의 그라디언트 부분 데이터를 수신하는 동작은, 각각의 다른 워커로부터, 상기 워커에게 배정된 배치의 각 트레이닝 예에 대한 다른 최상위의 완전-연결 층 레플리카의 그라디언트 부분 데이터를 수신하는 것을 포함하고, 그리고
상기 다른 컨볼루션 데이터를 프로세스 하는 동작은 상기 다른 최상위의 완전-연결 층 레플리카의 그라디언트 부분 데이터를 수신하는 것과 병행하여, 상기 특정한 다른 워커에게 배정된 상기 배치의 각각의 다른 트레이닝 예에 대한 상기 다른 컨볼루션 데이터를 프로세싱하는 것을 포함하는 것을 특징으로 하는 시스템. - 청구항 5에 있어서,
자신의 컨볼루션 데이터를 다른 워커들에게 전송하는 동작은 상기 워커에게 배정된 상기 배치의 트레이닝 예들의 미리-결정된 수(pre-determined number)에 대한 자신의 컨볼루션 데이터를 상기 복수의 워커들 중 각각의 다른 워커에게 전송하는 것을 포함하고, 그리고
다른 컨볼루션 데이터를 수신하는 동작은 상기 복수의 배치들 중 각각의 다른 배치의 상기 트레이닝 예들의 미리-결정된 수에 대한 다른 컨볼루션 데이터를 수신하는 것을 포함하는 것을 특징으로 하는 시스템. - 청구항 10에 있어서,
상기 자신의 컨볼루션 데이터와 상기 다른 컨볼루션 데이터를 프로세스하는 동작은, 상기 워커에게 배정된 상기 배치의 트레이닝 예들의 다른 미리-결정된 수에 대한 자신의 컨볼루션 데이터를 전송하는 것과 상기 복수의 배치들 중 각각의 다른 배치의 트레이닝 예들의 다른 미리-결정된 수에 대한 다른 컨볼루션 데이터를 수신하는 것과 병행하여, 상기 자신의 컨볼루션 데이터와 상기 다른 컨볼루션 데이터를 프로세스 하는 것을 포함하는 것을 특징으로 하는 시스템. - 청구항 11에 있어서,
자신의 최상위의 완전-연결 층 레플리카의 그라디언트 일부 데이터를 다른 워커들에게 전송하는 동작은 상기 복수의 배치들 중 각각의 다른 배치의 다른 트레이닝 예들의 상기 미리-결정된 수에 대한 자신의 최상위의 완전-연결 층 레플리카의 그라디언트 일부 데이터를 상기 트레이닝 예가 배정된 상기 워커에게 전송하는 것을 포함하고,
상기 복수의 워커들 중 다른 워커들로부터 다른 최상위의 완전-연결 층 레플리카의 그라디언트 부분 데이터를 수신하는 동작은 각각의 다른 워커로부터, 트레이닝 예들의 상기 미리-결정된 수에 대한 다른 최상위의 완전-연결 층 레플리카의 그라디언트 일부 데이터를 수신하는 것을 포함하고, 그리고
상기 자신의 컨볼루션 데이터와 상기 다른 컨볼루션 데이터를 프로세스하는 동작은, 상기 워커에게 배정된 상기 미리-결정된 수에 대한 상기 자신의 최상위의 완전-연결 층 레플리카의 그라디언트 부분 데이터를 전송하는 것과 상기 미리-결정된 수에 대한 상기 다른 최상위의 완전-연결 층 레플리카의 그라디언트 일부 데이터를 수신하는 것과 병행하여, 트레이닝 예들의 상기 다른 미리-결정된 수에 대한 상기 자신의 컨볼루션 데이터와 상기 다른 컨볼루션 데이터를 프로세스 하는 것을 포함하는 것을 특징으로 하는 시스템. - 청구항 3에 있어서,
상기 대응하는 그라디언트 데이터를 사용하여, 상기 컨볼루션 층 레플리카들과 상기 완전-연결 층 파티션들의 가중치들(weights)을 업데이트하는 동작을 더 포함하는 것을 특징으로 하는 시스템. - 트레이닝 예들의 복수의 배치(batches)를 통해 컨볼루션 신경망을 트레이닝 하는 방법으로서, 상기 컨볼루션 신경망은 최하위(lowest)로부터 최상위 (highest)로의 순서(sequence)로 배열된 복수의 층(layers)을 가지며, 상기 순서는 하나 이상의 컨볼루션 층과 이에 후속되는 하나 이상의 완전-연결((fully-connected) 층을 포함하며, 각 컨볼루션 층과 각 완전-연결 층은 각각의 복수의 노드들을 포함하며, 상기 방법은:
복수의 워커들의 각각에 의해, 각 컨볼루션 층의 각각의 레플리카를 유지하는 단계와, 컨볼루션 층의 각 레플리카는 상기 컨볼루션 층의 상기 노드들의 전부를 포함하며;
상기 워커들의 각각에 의해, 각 완전-연결 층의 각각의 디스조인트 파티션을 유지하는 단계와, 상기 완전-연결 층의 각 디스조인트 파티션은 상기 완전-연결 층의 상기 노드들의 일부를 포함하며;
상기 워커들의 각각에 의해, 상기 워커에게 배정된 트레이닝 예들의 배치를 수신하는 단계와, 상기 트레이닝 예들의 배치들은 각 워커가 상기 복수의 배치들의 각각의 배치를 수신하도록 배정되며;
상기 워커들의 각각에 의해, 상기 워커에게 배정된 상기 트레이닝 예들의 배치를 통해 상기 워커에 의해 유지되는 상기 컨볼루션 층의 레플리카를 트레이닝 하는 단계와; 그리고
상기 워커들의 각각에 의해, 상기 트레이닝 예들의 복수의 배치들의 각각을 통해 상기 워커에 의해 유지되는 상기 완전-연결 층의 파티션들을 트레이닝하는 단계를 포함하는 것을 특징으로 하는 방법. - 청구항 14에 있어서,
상기 워커에게 배정된 상기 트레이닝 예들의 배치를 통해 상기 워커에 의해 유지되는 상기 컨볼루션 층의 레플리카를 트레이닝 하는 단계는:
상기 워커에게 배정된 상기 배치의 각 트레이닝 예에 대한 각각의 컨볼루션 액티베이션 데이터를 계산하기 위해, 상기 워커에 의해 유지되는 상기 컨볼루션 층 레플리카들의 전부를 통해 상기 트레이닝 예들의 배치를 프로세싱하는 단계와;
상기 워커에게 배정된 상기 배치의 상기 트레이닝 예들의 각각에 대해 상기 워커에 의해 유지되는 최상위의 완전-연결 층 레플리카에 대한 그라디언트 (gardient) 데이터를 획득하는 단계와; 그리고
상기 워커에 의해 유지되는 남아있는 컨볼루션 층 레플리카들을 통해, 상기 최상위의 완전-연결 층 레플리카의 그라디언트 데이터를 역전파하는 단계를 포함하는 것을 특징으로 하는 방법. - 청구항 15에 있어서,
상기 트레이닝 예들의 복수의 배치들의 각각을 통해 상기 워커에 의해 유지되는 상기 완전-연결 층의 파티션들을 트레이닝하는 단계는:
상기 복수의 배치들 전부의 상기 트레이닝 예들의 각각에 대해 각각의 컨볼루션 액티베이션 데이터를 획득하는 단계와, 상기 트레이닝 예들의 각각에 대한 상기 컨볼루션 액티베이션 데이터는 상기 트레이닝 예에 대한 컨볼루션 액티베이션들을 포함하며;
상기 대응하는 트레이닝 예들에 대한 자신의 초기 완전-연결 층의 파티션 액티베이션 데이터들을 생성하기 위해, 상기 워커에 의해 유지되는 최하위의 완전-연결 층의 파티션을 통해 상기 컨볼루션 데이터를 프로세싱하는 단계와;
상기 자신의 초기 완전-연결 층의 파티션 액티베이션 데이터들을 상기 복수의 워커들 중 다른 워커들에게 전송하는 단계와;
상기 복수의 워커들 중 다른 워커들로부터, 다른 초기 완전-연결 층의 파티션 액티베이션 데이터들을 수신하는 단계와;
상기 워커에 의해 유지되는 각각의 다른 완전-연결 층 파티션에 대해:
상기 완전-연결 층 파티션에 대한 자신의 파티션 액티베이션 데이터를 생성하기 위해, 상기 완전-연결 층 파티션을 통해 상기 워커에 의해 유지되는 차하위 (nextlowest)의 완전-연결 층 파티션에 대한 자신의 파티션 액티베이션 데이터 및 다른 파티션 액티베이션 데이터를 프로세싱하는 단계와,
상기 완전-연결 층 파티션에 대한 상기 자신의 파티션 액티베이션 데이터를 상기 복수의 워커들 중 다른 워커들에게 전송하는 단계와, 그리고
상기 복수의 워커들 중 다른 워커들로부터, 상기 완전-연결 층 파티션에 대한 다른 파티션 액티베이션 데이터를 수신하는 단계와;
상기 트레이닝 예들의 각각에 대한 자신의 최상위의 완전-연결 층 파티션의 그라디언트 데이터를 수신하는 단계와;
상기 자신의 최상위의 완전-연결 층 파티션의 그라디언트 데이터를 상기 복수의 워커들 중 다른 워커들에게 전송하는 단계와;
상기 복수의 워커들 중 다른 워커들로부터 다른 최상위의 완전-연결 층 파티션의 그라디언트 데이터를 수신하는 단계와; 그리고
상기 워커에 의해 유지되는 각각의 다른 완전-연결 층 파티션에 대해:
상기 완전-연결 층 파티션에 대한 자신의 파티션 그라디언트 데이터를 생성하기 위해, 상기 완전-연결 층 부분을 통해 상기 워커에 의해 유지되는 차상위 (next highest)의 완전-연결 층 파티션에 대해 자신의 파티션 그라디언트 데이터 및 다른 파티션 그라디언트 데이터를 역전파하는 단계와,
상기 완전-연결 층 파티션에 대한 상기 자신의 파티션 그라디언트 데이터를 상기 복수의 워커들 중 다른 워커들에게 전송하는 단계와, 그리고
상기 복수의 워커들 중 다른 워커들로부터 상기 완전-연결 층 파티션에 대한 다른 파티션 그라디언트 데이터를 수신하는 단계를 포함하는 것을 특징으로 하는 방법. - 청구항 16에 있어서,
상기 워커에게 배정된 상기 배치의 상기 트레이닝 예들의 각각에 대해 상기 워커에 의해 유지되는 최상위의 완전-연결 층 레플리카에 대한 그라디언트 데이터를 획득하는 단계는:
각 트레이닝 예에 대한 상기 워커에 의해 유지되는 상기 최상위의 컨볼루션 층의 부분에 대한 자신의 그라디언트 데이터를 연산하는 단계와;
자신의 최상위의 완전-연결 층 레플리카의 그라디언트 부분 데이터를 상기 복수의 워커들 중 다른 워커들에게 전송하는 단계와; 그리고
상기 복수의 워커들 중 다른 워커들로부터, 다른 최상위의 완전-연결 층 레플리카의 그라디언트 부분 데이터를 수신하는 단계를 포함하는 것을 특징으로 하는 방법. - 청구항 17에 있어서,
상기 복수의 배치들 전부의 상기 트레이닝 예들의 각각에 대해 각각의 컨볼루션 데이터를 획득하는 단계는:
자신의 컨볼루션 데이터를 상기 복수의 워커들 중 다른 워커들에게 전송하는 단계와, 상기 자신의 컨볼루션 데이터는 상기 워커에게 배정된 트레이닝 예들에 대한 상기 각각의 컨볼루션 액티베이션들을 포함하며; 그리고
상기 복수의 워커들 중 다른 워커들로부터 다른 컨볼루션 데이터를 수신하는 단계와, 상기 다른 컨볼루션 데이터는 다른 워커들에게 배정된 다른 트레이닝 예들에 대한 각각의 컨볼루션 활성화들을 포함하는 것을 특징으로 하는 방법. - 청구항 16에 있어서,
상기 워커들의 각각에 의해, 상기 대응하는 그라디언트 데이터를 사용하여, 상기 워커에 의해 유지되는 상기 컨볼루션 층 레플리카들과 상기 워커에 의해 유지되는 상기 완전-연결 층 파티션들의 가중치들을 업데이트하는 단계를 더 포함하는 것을 특징으로 하는 방법. - 인코딩된 명령어들을 가진 하나 이상의 컴퓨터 판독가능 저장매체(computer readable storage medium)로서, 상기 명령어들은 하나 이상의 컴퓨터들에 의해 실행시, 상기 하나 이상의 컴퓨터들로 하여금 트레이닝 예들의 복수의 배치들 (batches)을 통해 컨볼루션 신경망을 트레이닝 하는 동작들을 수행하도록 하고, 상기 컨볼루션 신경망은 최하위(lowest)로부터 최상위(highest)로의 순서(sequence)로 배열된 복수의 층(layers)들을 가지며, 상기 순서는 하나 이상의 컨볼루션 층과 이에 후속되는 하나 이상의 완전-연결(fully-connected) 층을 포함하며, 각 컨볼루션 층과 각 완전-연결 층은 각각의 복수의 노드들을 포함하며, 상기 동작들은:
복수의 워커들의 각각에 의해, 각 컨볼루션 층의 각각의 레플리카를 유지하는 동작과, 컨볼루션 층의 각 레플리카는 상기 컨볼루션 층의 상기 노드들의 전부를 포함하며;
상기 워커들의 각각에 의해, 각 완전-연결 층의 각각의 디스조인트 파티션을 유지하는 동작과, 상기 완전-연결 층의 각 디스조인트 파티션은 상기 완전-연결 층의 상기 노드들의 일부를 포함하며;
상기 워커들의 각각에 의해, 상기 워커에게 배정된 트레이닝 예들의 배치를 수신하는 동작과, 상기 트레이닝 예들의 배치들은 각 워커가 상기 복수의 배치들의 각각의 배치를 수신하도록 배정되며;
상기 워커들의 각각에 의해, 상기 워커에게 배정된 상기 트레이닝 예들의 배치를 통해 상기 워커에 의해 유지되는 상기 컨볼루션 층의 레플리카를 트레이닝 하는 동작과; 그리고
상기 워커들의 각각에 의해, 상기 트레이닝 예들의 복수의 배치들의 각각을 통해 상기 워커에 의해 유지되는 상기 완전-연결 층의 파티션들을 트레이닝하는 동작을 포함하는 것을 특징으로 하는 컴퓨터 판독가능 저장매체.
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 KR20160144467A (ko) | 2016-12-16 |
KR101934067B1 true 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) | CN113255885A (ko) |
WO (1) | WO2015157718A2 (ko) |
Families Citing this family (42)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113255885A (zh) * | 2014-04-11 | 2021-08-13 | 谷歌有限责任公司 | 使卷积神经网络的训练并行化 |
US9953425B2 (en) * | 2014-07-30 | 2018-04-24 | Adobe Systems Incorporated | Learning image categorization using related attributes |
WO2017083772A1 (en) * | 2015-11-12 | 2017-05-18 | Google Inc. | Asynchronous deep reinforcement learning |
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 | 株式会社デンソーアイティーラボラトリ | ニューラルネットワークシステム、端末装置、管理装置およびニューラルネットワークにおける重みパラメータの学習方法 |
CN111310904B (zh) * | 2016-04-29 | 2024-03-08 | 中科寒武纪科技股份有限公司 | 一种用于执行卷积神经网络训练的装置和方法 |
US9940544B2 (en) | 2016-06-08 | 2018-04-10 | Adobe Systems Incorporated | Event image curation |
US10467529B2 (en) * | 2016-06-08 | 2019-11-05 | Adobe Inc. | Convolutional neural network joint training |
US10546211B2 (en) | 2016-07-01 | 2020-01-28 | Google Llc | Convolutional neural network on programmable two dimensional image processor |
US9715656B1 (en) | 2016-09-12 | 2017-07-25 | International Business Machines Corporation | Killing asymmetric resistive processing units for neural network training |
US9646243B1 (en) | 2016-09-12 | 2017-05-09 | International Business Machines Corporation | Convolutional neural networks using resistive processing unit array |
US10656962B2 (en) | 2016-10-21 | 2020-05-19 | International Business Machines Corporation | Accelerate deep neural network in an FPGA |
CN117709426A (zh) * | 2017-02-24 | 2024-03-15 | 渊慧科技有限公司 | 训练机器学习模型的方法、系统和计算机存储介质 |
US10339443B1 (en) * | 2017-02-24 | 2019-07-02 | Gopro, Inc. | Systems and methods for processing convolutional neural network operations using textures |
US20190370580A1 (en) * | 2017-03-14 | 2019-12-05 | Omron Corporation | Driver monitoring apparatus, driver monitoring method, learning apparatus, and learning method |
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 | 北京小米移动软件有限公司 | 训练深度卷积神经网络模型的方法、装置及存储介质 |
KR102072757B1 (ko) * | 2017-10-31 | 2020-02-03 | 국방과학연구소 | 딥 러닝을 이용한 이종 센서 정보 융합 장치 및 방법 |
US11734545B2 (en) * | 2017-11-14 | 2023-08-22 | Google Llc | Highly efficient convolutional neural networks |
WO2019098418A1 (ko) * | 2017-11-16 | 2019-05-23 | 삼성전자 주식회사 | 뉴럴 네트워크 학습 방법 및 디바이스 |
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 | 电子科技大学 | 一种卷积神经网络并行化训练加速方法 |
WO2019198814A1 (ja) * | 2018-04-12 | 2019-10-17 | 日本電信電話株式会社 | ニューラルネットワークシステム、ニューラルネットワーク方法、プログラム |
US10210860B1 (en) | 2018-07-27 | 2019-02-19 | Deepgram, Inc. | Augmented generalized deep learning with special vocabulary |
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 | 삼성전자주식회사 | 인공 신경망에서의 작업 관리 방법 및 이를 포함하는 시스템 |
US11995533B1 (en) | 2018-12-05 | 2024-05-28 | Perceive Corporation | Executing replicated neural network layers on inference circuit |
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核 |
KR102333730B1 (ko) * | 2019-02-13 | 2021-11-30 | 아주대학교 산학협력단 | 학습 모델 생성 장치 및 방법 |
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 | 富士通株式会社 | 機械学習プログラム,情報処理装置および機械学習方法 |
WO2023085458A1 (ko) * | 2021-11-11 | 2023-05-19 | 한국전자기술연구원 | 경량 딥러닝 학습 메모리 제어 방법 및 장치 |
CN114912587B (zh) * | 2022-06-09 | 2023-05-26 | 上海燧原科技有限公司 | 神经网络分布式训练系统、方法、装置、计算单元及介质 |
Family Cites Families (7)
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 |
CN113255885A (zh) * | 2014-04-11 | 2021-08-13 | 谷歌有限责任公司 | 使卷积神经网络的训练并行化 |
-
2015
- 2015-04-10 CN CN202110558370.7A patent/CN113255885A/zh active Pending
- 2015-04-10 WO PCT/US2015/025451 patent/WO2015157718A2/en active Application Filing
- 2015-04-10 US US14/684,186 patent/US10540587B2/en active Active
- 2015-04-10 KR KR1020167031625A patent/KR101934067B1/ko active IP Right Grant
- 2015-04-10 CN CN201580024703.0A patent/CN106462800A/zh active Pending
- 2015-04-10 EP EP15719356.6A patent/EP3129920B1/en active Active
- 2015-04-10 JP JP2017504627A patent/JP6370469B2/ja active Active
Also Published As
Publication number | Publication date |
---|---|
EP3129920A2 (en) | 2017-02-15 |
US20150294219A1 (en) | 2015-10-15 |
EP3129920B1 (en) | 2022-06-08 |
CN113255885A (zh) | 2021-08-13 |
US10540587B2 (en) | 2020-01-21 |
KR20160144467A (ko) | 2016-12-16 |
JP2017514251A (ja) | 2017-06-01 |
WO2015157718A2 (en) | 2015-10-15 |
JP6370469B2 (ja) | 2018-08-08 |
WO2015157718A3 (en) | 2016-01-21 |
CN106462800A (zh) | 2017-02-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR101934067B1 (ko) | 컨볼루션 신경망들의 트레이닝을 병렬화 | |
EP3254239B1 (en) | Distributed training of reinforcement learning systems | |
US11783182B2 (en) | Asynchronous deep reinforcement learning | |
US20200401897A1 (en) | Modifying computational graphs | |
US9721214B1 (en) | Training a model using parameter server shards | |
US20210042620A1 (en) | Training giant neural networks using pipeline parallelism | |
CN108885571B (zh) | 分批处理机器学习模型的输入 | |
RU2686030C1 (ru) | Непрерывное управление с помощью глубокого обучения с подкреплением | |
CN108021983A (zh) | 神经架构搜索 | |
CN109194510B (zh) | 基于区块链的数据处理方法和装置 | |
WO2018044633A1 (en) | End-to-end learning of dialogue agents for information access | |
CN111602148A (zh) | 正则化神经网络架构搜索 | |
EP3525139A1 (en) | Automatically scaling neural networks based on load | |
US11488067B2 (en) | Training machine learning models using teacher annealing | |
US11630994B2 (en) | Optimized asynchronous training of neural networks using a distributed parameter server with eager updates | |
KR20200080947A (ko) | 인공 신경망의 파라미터 셋을 결정하는 방법 | |
TWI758223B (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 |