KR20230024418A - 빠른 분산 훈련을 위한 축소 서버 - Google Patents

빠른 분산 훈련을 위한 축소 서버 Download PDF

Info

Publication number
KR20230024418A
KR20230024418A KR1020237002240A KR20237002240A KR20230024418A KR 20230024418 A KR20230024418 A KR 20230024418A KR 1020237002240 A KR1020237002240 A KR 1020237002240A KR 20237002240 A KR20237002240 A KR 20237002240A KR 20230024418 A KR20230024418 A KR 20230024418A
Authority
KR
South Korea
Prior art keywords
gradient
virtual machines
data
worker
processes
Prior art date
Application number
KR1020237002240A
Other languages
English (en)
Inventor
창 란
소로쉬 라드푸어
Original Assignee
구글 엘엘씨
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 구글 엘엘씨 filed Critical 구글 엘엘씨
Publication of KR20230024418A publication Critical patent/KR20230024418A/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5061Partitioning or combining of resources
    • G06F9/5066Algorithms for mapping a plurality of inter-dependent sub-tasks onto a plurality of physical CPUs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F18/00Pattern recognition
    • G06F18/20Analysing
    • G06F18/21Design or setup of recognition systems or techniques; Extraction of features in feature space; Blind source separation
    • G06F18/214Generating training patterns; Bootstrap methods, e.g. bagging or boosting
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3877Concurrent instruction execution, e.g. pipeline or look ahead using a slave processor, e.g. coprocessor
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/541Interprogram communication via adapters, e.g. between incompatible applications
    • 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
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45562Creating, deleting, cloning virtual machine instances
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/4557Distribution of virtual machine instances; Migration and load balancing
    • 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/098Distributed learning, e.g. federated learning

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Data Mining & Analysis (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Artificial Intelligence (AREA)
  • Evolutionary Computation (AREA)
  • Health & Medical Sciences (AREA)
  • Mathematical Physics (AREA)
  • Biophysics (AREA)
  • Biomedical Technology (AREA)
  • General Health & Medical Sciences (AREA)
  • Molecular Biology (AREA)
  • Computing Systems (AREA)
  • Computational Linguistics (AREA)
  • Bioinformatics & Cheminformatics (AREA)
  • Bioinformatics & Computational Biology (AREA)
  • Computer Vision & Pattern Recognition (AREA)
  • Evolutionary Biology (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Debugging And Monitoring (AREA)

Abstract

하나 이상의 호스트 처리 디바이스들을 포함하는 데이터 처리 시스템으로서: 하나 이상의 호스트 처리 디바이스들은 복수의 가상 머신들의 인스턴스화를 지원하여 제1 세트의 가상 머신들이 하나 이상의 작업자 프로세스들을 실행하도록 구성될 수 있으며, 각각의 작업자 프로세스는 개개의 그래디언트를 생성하도록 개개의 데이터 세트에 대해 동작한다. 호스트 처리 디바이스들은, 집계된 그래디언트를 생성하기 위해 각각의 작업자 프로세스에 의해 생성된 각각의 개별 그래디언트에 대해 동작하는 하나 이상의 축소기 프로세스들을 실행하는 제2 세트의 가상 머신들의 인스턴스화를 지원하도록 구성될 수 있다. 하나 이상의 축소기 프로세스들은 집계된 그래디언트가 각각의 작업자 프로세스에 브로드캐스트되게 할 수 있다.

Description

빠른 분산 훈련을 위한 축소 서버
[0001] 본 출원은 2020년 10월 21일자 출원된 미국 출원 제17/076,393호의 계속이며, 이 출원의 개시내용은 이로써 본 명세서에 참조로 포함된다.
[0002] 기계 학습은 일반적으로, 샘플 데이터에 기반하여 모델들을 구축하기 위해 통계적 기법들에 의존한다. 기계 학습은 주어진 작업과 연관된 성능을 개선하도록, 예컨대 명시적으로 그렇게 하도록 프로그래밍되지 않으면서 정확한 예측들 또는 결정들을 내리도록 샘플 데이터에 기반하여 학습하는 능력을 컴퓨터 시스템들에 제공한다. 기계 학습은 3개의 파라미터들: 경험("E"), 작업들("T") 및 성능 측정("P")에 기반하여 특성화될 수 있다. 그러한 3개의 파라미터들을 사용하는 기계 학습의 표준 정의는 다음과 같다: P에 의해 측정된 프로그램 또는 시스템의 성능이 경험(E)과 함께 개선된다면, 컴퓨터 프로그램 또는 시스템은 작업들(T)과 관련하여 경험(E)으로부터 학습하는 것으로 간주된다. 경험(E)은 보다 일반적으로는 훈련 데이터로 지칭되는 샘플 데이터를 포함한다. 딥 러닝(deep learning)은 데이터, 예컨대 훈련 데이터를 처리할 때 신경망 개념들에 의존하는 기계 학습의 한 형태이다.
[0003] 인터넷은 전 세계의 다양한 소스들, 예컨대 인터넷 검색 엔진들, 전자 상거래 플랫폼들 등으로부터의 방대한 데이터의 소스가 되었다. 이러한 방대한 데이터는 일반적으로 빅 데이터(big data)로 지칭된다. 이는 다양한 애플리케이션들, 예컨대 사기 검출, 음성 인식, 객체 인식, 의사 결정 등을 훈련시키기 위한 데이터의 소스를 제공한다. 빅 데이터로서 이용 가능한 엄청난 양의 데이터를 처리하는 것은 통상적으로, 분산 처리를 위해 다수의 기계들에 걸쳐 데이터가 분할되거나 분해되는 클라우드 컴퓨팅 자원(cloud computing resource)들의 사용을 필요로 한다.
[0004] 기계 학습을 위한 훈련 데이터와 연관된 데이터 처리를 다수의 기계들에 걸쳐 분배하는 것은 빠른 분산 훈련에 대한 가능성을 제공하지만, 처리 기계들 사이의 데이터 처리 및 통신들 모두와 연관된 비용, 레이턴시, 효율 및 병목 현상들과 같은 파라미터들의 고려 사항들 및 관리를 수반한다. 개시된 기술의 양상은, allreduce의 2배만큼 스루풋을 개선할 수 있는, 동기식 훈련을 위한 집합적 통신 프리미티브(primitive)를 제공하는 시스템들, 아키텍처들의 시스템 또는 기법들의 제공이다.
[0005] 개시된 기법의 양상은 일 형태로 데이터 처리 시스템일 수 있다. 시스템은 하나 이상의 호스트(host) 처리 디바이스들을 포함할 수 있으며, 하나 이상의 호스트 처리 디바이스들은 복수의 가상 머신들의 인스턴스화(instantiation)를 지원한다. 시스템은 복수의 가상 머신들 중 하나 이상을 포함하는 제1 세트의 가상 머신들― 제1 세트의 가상 머신들은 하나 이상의 작업자 프로세스들을 실행하고, 각각의 작업자 프로세스는 개개의 그래디언트(gradient)를 생성하도록 개개의 데이터 세트에 대해 동작함 ―, 및 복수의 가상 머신들 중 하나 이상을 포함하는 제2 세트의 가상 머신들을 더 포함할 수 있으며, 제2 세트의 가상 머신들은 집계(aggregate)된 그래디언트를 생성하기 위해 각각의 작업자 프로세스에 의해 생성된 각각의 개별 그래디언트의 적어도 일부에 대해 동작하는 하나 이상의 축소기(reducer) 프로세스들을 실행한다. 하나 이상의 축소기 프로세스들은 집계된 그래디언트가 각각의 작업자 프로세스에 브로드캐스트되게 한다.
[0006] 시스템의 개시된 기술의 다른 양상들은 예컨대, 각각의 개별 데이터 세트가 동일한 크기의 데이터 블록들을 포함하는 것을 포함할 수 있다. 동일한 크기의 데이터 블록들은 입력 데이터 스트림을 분할함으로써 생성된 데이터 블록들을 포함할 수 있다. 동일한 크기의 데이터 블록들은 하나 이상의 가상 머신들 상에서 실행되는 축소기 프로세스들의 수에 비례하는 크기일 수 있다.
[0007] 시스템의 개시된 기술의 다른 양상들은 예컨대, 하나 이상의 호스트 처리 디바이스들이 제1 세트의 가상 머신들을 호스팅하기 위한 적어도 하나의 GPU(graphics processing unit)를 포함하는 것을 포함할 수 있다. 하나 이상의 호스트 처리 디바이스들은 또한, 예컨대 제2 세트의 가상 머신들을 호스팅하기 위한 적어도 하나의 CPU(central processing unit)를 포함할 수 있다.
[0008] 시스템의 개시된 기술의 다른 양상들은 예컨대, 제1 세트의 가상 머신들의 사용과 연관된 제1 총 대역폭이 제2 세트의 가상 머신들의 사용과 연관된 제2 총 대역폭과 동일하다는 것을 포함할 수 있다.
[0009] 시스템의 개시된 기술의 다른 양상들은 예컨대, 하나 이상의 축소기 프로세스들이 하나 이상의 축소기 프로세스들 중 제1 축소기 프로세스에 의해 그래디언트들 중 제1 그래디언트를 수신하는 것에 의해 정의된 시간 데드라인(deadline) 내에 그래디언트들을 수용하는 것을 포함할 수 있다.
[0010] 시스템의 개시된 기술의 다른 양상들은 예컨대, 하나 이상의 작업자 프로세스들이 API(Application Programming Interface) 라이브러리(library)의 통신 프리미티브로서 인스턴스화되거나 또는 API 라이브러리와 별개인 것을 포함할 수 있다. 하나 이상의 작업자 프로세스들이 API 라이브러리의 통신 프리미티브로서 인스턴스화될 때, 인스턴스화된 작업자 프로세스들은 하나 이상의 축소기 프로세스들로부터의 그래디언트들을 푸시(push) 및 풀링(pull)한다. 하나 이상의 작업자 프로세스들은 또한 또는 대안적으로, 축소기 프로세스 함수 사이의 연결들이 하나 이상의 작업자 프로세서들과 하나 이상의 축소기 프로세스들 사이의 연결들 및 데이터 전송들을 관리하도록 API 라이브러리와 별개로 인스턴스화될 수 있다.
[0011] 개시된 기술의 또 다른 양상들에서, 하나 이상의 작업자 프로세스들의 각각의 작업자 프로세스는 예컨대, 각각의 작업자 프로세스에 의해 생성된 그래디언트들을 개개의 그래디언트 청크(chunk)들로 파티셔닝할 수 있고, 주어진 작업자 프로세스는 제1 축소 프로세스로부터 제1 그래디언트 청크를 풀링하는 한편, 주어진 작업자 프로세스는 제2 그래디언트 청크를 제1 축소 프로세스로 푸시한다. 작업자 프로세스들은 또한, 예컨대 신경망을 훈련시키는 맥락에서 미니 배치 확률적(mini batch stochastic) 그래디언트 하강에 따라 신경망의 가중치 계수들을 조정할 수 있다.
[0012] 시스템의 개시된 기술의 다른 양상들은 예컨대, 그래디언트 배치(batch)들의 나머지를 무시하는 하나 이상의 작업자 프로세스들의 서브세트로부터 수신된 그래디언트 배치들의 서브세트에 대해서만 하나 이상의 축소기 프로세스들에 의해 축소가 컴퓨팅되며, 미리 결정된 크기(m)를 갖는 서브세트 또는 서브세트의 크기는 제1 그래디언트 배치의 수신 후 미리 결정된 데드라인(T)까지 수신된 그래디언트 배치들에 의해 결정된다.
[0013] 개시된 기법의 양상은 일 형태로 데이터 처리 시스템일 수 있다. 시스템은 하나 이상의 호스트 처리 디바이스들 ― 하나 이상의 호스트 처리 디바이스들은 복수의 가상 머신들의 인스턴스화를 지원함 ―; 복수의 가상 머신들 중 하나 이상을 포함하는 제1 세트의 가상 머신 ― 제1 세트의 가상 머신들은 하나 이상의 작업자 프로세스들을 실행하고, 각각의 작업자 프로세스는 개개의 그래디언트를 각각 생성하도록 개개의 데이터 블록에 대해 동작함 ―; 하나 이상의 축소기들을 포함하는 축소 서버를 포함할 수 있으며, 각각의 축소기는 집계된 그래디언트를 생성하기 위해 각각의 개별 그래디언트의 적어도 일부에 대해 동작하는 축소기 프로세스를 실행하는 가상 머신을 포함하고; 축소 서버는 하나 이상의 작업자 프로세스들을 실행하는 하나 이상의 가상 머신들에 집계된 그래디언트를 브로드캐스트한다.
[0014] 시스템의 개시된 기술의 다른 양상들은 예컨대, 그래디언트 배치들의 나머지를 무시하는 작업자들의 서브세트로부터 수신된 그래디언트 배치들의 서브세트에 대해서만 축소 서버에 의해 축소가 컴퓨팅되는 것을 포함할 수 있으며, 미리 결정된 크기(m)를 갖는 서브세트 또는 서브세트의 크기는 제1 그래디언트 배치의 수신 후 미리 결정된 데드라인(T)까지 수신된 그래디언트 배치들에 의해 결정된다. 개개의 데이터 블록 각각은 예컨대, 동일한 크기의 데이터 블록들을 포함할 수 있다. 동일한 크기의 데이터 블록들은 하나 이상의 가상 머신들 상에서 실행되는 축소기 프로세스들의 수에 비례하는 크기일 수 있다.
[0015] 시스템의 개시된 기술의 다른 양상들은 예컨대, 하나 이상의 호스트 처리 디바이스들이 제1 세트의 가상 머신들을 호스팅하기 위한 적어도 하나의 GPU(graphics processing unit)를 또한 포함할 수 있는 것을 포함할 수 있다. 하나 이상의 호스트 처리 디바이스들은 축소 서버의 축소기들을 호스팅하기 위한 적어도 하나의 CPU(central processing unit)를 포함한다. 추가 양상들에서, 제1 세트의 가상 머신들의 사용과 연관된 제1 총 대역폭은 축소 서버의 사용과 연관된 제2 총 대역폭과 동일할 수 있다.
[0016] 시스템의 개시된 기술의 다른 양상들은 예컨대, 각각의 축소기가 하나 이상의 축소기들 중 제1 축소기에 의해 그래디언트들 중 제1 그래디언트를 수신하는 것에 의해 정의된 시간 데드라인 내에 그래디언트들을 수용하는 것을 포함할 수 있다.
[0017] 시스템의 개시된 기술의 다른 양상들은 예컨대, 하나 이상의 작업자 프로세스들이 API(Application Programming Interface) 라이브러리의 통신 프리미티브로서 인스턴스화되거나 또는 API 라이브러리와 별개인 것을 포함할 수 있다. 하나 이상의 작업자 프로세스들은 대안적으로, API 라이브러리의 통신 프리미티브로서 인스턴스화될 수 있으며, 인스턴스화된 작업자 프로세스들은 하나 이상의 축소기 프로세스들로부터의 그래디언트들을 푸시 및 풀링한다. 하나 이상의 작업자 프로세스들이 API 라이브러리와 별개로 인스턴스화될 때, 축소기 프로세스 함수 사이의 연결들이 하나 이상의 작업자 프로세서들과 하나 이상의 축소기 프로세스들 사이의 연결들 및 데이터 전송들을 관리한다.
[0018] 시스템의 개시된 기술의 다른 양상들은 예컨대, 하나 이상의 작업자 프로세스들이 각각의 작업자 프로세스에 의해 생성된 그래디언트들을 개개의 그래디언트 청크들로 파티셔닝하고, 주어진 작업자 프로세스는 제1 축소기로부터 제1 그래디언트 청크를 풀링하는 한편, 주어진 작업자 프로세스는 제2 그래디언트 청크를 축소기로 푸시한다. 작업자 프로세스들은 또한 또는 대안적으로, 신경망을 훈련시키는 맥락에서 미니 배치 확률적 그래디언트 하강에 따라 신경망의 가중치 계수를 조정할 수 있다.
[0019] 개시된 기술의 양상은 일 형태로, 동기식 분산 훈련을 위한 방법일 수 있으며, 이 방법은: 하나 이상의 작업자 프로세스들을 실행하는 제1 세트의 가상 머신들을 인스턴스화하는 단계 ― 각각의 작업자 프로세스는 개개의 그래디언트를 각각 생성하도록 개개의 데이터 블록에 대해 동작함 ―; 축소 서버를 포함하는 제2 세트의 가상 머신들을 인스턴스화하는 단계 ― 제2 세트의 가상 머신들은 집계된 그래디언트를 생성하기 위해 각각의 개별 그래디언트의 적어도 일부에 대해 동작하는 축소기 프로세스를 실행함 ―; 및 축소 서버에 의해, 집계된 그래디언트를 제1 세트의 가상 머신들에 브로드캐스트하는 단계를 포함한다.
[0020] 이 방법의 개시된 기술의 다른 양상들은 예컨대, 제1 세트의 가상 머신들에 의해, 출력 데이터 파일을 생성하도록, 집계된 그래디언트를 처리하는 단계를 포함할 수 있다. 개시된 방법의 추가 양상은 축소 서버에 의해, 그래디언트 배치들의 나머지를 무시하는 작업자들의 서브세트로부터 수신된 그래디언트 배치들의 서브세트에 대해서만 축소를 컴퓨팅하는 단계를 포함할 수 있으며, 미리 결정된 크기(m)를 갖는 서브세트 또는 서브세트의 크기는 제1 그래디언트 배치의 수신 후 미리 결정된 데드라인(T)까지 수신된 그래디언트 배치들에 의해 결정된다.
[0021] 방법의 개시된 기술의 다른 양상들은 예컨대, 그래디언트 배치들의 나머지를 무시하는 작업자들의 서브세트로부터 수신된 그래디언트 배치들의 서브세트에 대해서만 축소를 컴퓨팅하는 단계를 포함할 수 있으며, 미리 결정된 크기(m)를 갖는 서브세트 또는 서브세트의 크기는 제1 그래디언트 배치의 수신 후 미리 결정된 데드라인(T)까지 수신된 그래디언트 배치들에 의해 결정된다.
[0022] 방법의 개시된 기술의 다른 양상들은 예컨대, 하나 이상의 작업자 프로세스들을 실행하는 제1 세트의 가상 머신들을 인스턴스화하는 단계가 적어도 하나의 GPU(graphics processing unit) 상에서 제1 세트의 가상 머신들을 인스턴스화하는 단계를 포함하는 것을 포함할 수 있다.
[0023] 방법의 개시된 기술의 다른 양상들은 예컨대, 축소 서버를 포함하는 제2 세트의 가상 머신들을 인스턴스화하는 단계가 축소 서버의 하나 이상의 축소기들을 호스팅하기 위한 하나 이상의 CPU(central processing unit)를 인스턴스화하는 단계를 포함하는 것을 포함할 수 있다.
[0024] 방법의 개시된 기술의 다른 양상들은 예컨대, 제1 세트의 가상 머신들의 사용과 연관된 제1 총 대역폭이 축소 서버의 사용과 연관된 제2 총 대역폭과 동일하다는 것을 포함할 수 있다.
[0025] 방법의 개시된 기술의 다른 양상들은 예컨대, 하나 이상의 축소기들 각각에 의해, 하나 이상의 축소기들 중 제1 축소기에 의해 그래디언트들 중 제1 그래디언트를 수신하는 것에 의해 정의된 시간 데드라인 내에 그래디언트들을 수용하는 단계를 포함할 수 있다.
[0026] 개시된 기술의 양상은 일 형태로, 하나 이상의 처리 디바이스들을 동작시키기 위한 명령들이 저장되어 있는 비-일시적 컴퓨터 판독 가능 매체들일 수 있으며, 명령들은 하나 이상의 처리 디바이스들로 하여금 프로세스 또는 방법을 구현하게 한다. 프로세스는 하나 이상의 작업자 프로세스들을 실행하는 제1 세트의 가상 머신들을 인스턴스화하는 것 ― 각각의 작업자 프로세스는 개개의 그래디언트를 각각 생성하도록 개개의 데이터 블록에 대해 동작함 ―; 축소 서버를 포함하는 제2 세트의 가상 머신들을 인스턴스화하는 것 ― 제2 세트의 가상 머신들은 집계된 그래디언트를 생성하기 위해 각각의 개별 그래디언트의 적어도 일부에 대해 동작하는 축소기 프로세스를 실행함 ―; 그리고 축소 서버에 의해, 집계된 그래디언트를 제1 세트의 가상 머신들에 브로드캐스트하는 것을 포함한다. 비-일시적 컴퓨터 판독 가능 매체들의 개시된 기술의 다른 양상들은 예컨대, 하나 이상의 처리 디바이스들로 하여금 본 개시내용의 다른 방법 단계들 또는 처리를 수행하게 하는 다른 명령들을 저장하는 것을 포함할 수 있다.
[0027] 도 1은 개시된 기술의 양상들에 따른 예시적인 클라우드 시스템의 블록도이다.
[0028] 도 2는 개시된 기술의 양상들에 따른 예시적인 분산 데이터 처리 시스템의 블록도이다.
[0029] 도 3은 개시된 기술의 양상들에 따른 데이터 처리 시스템 및 데이터 처리 시스템에서의 데이터 흐름의 예의 논리적 뷰(view)를 예시하는 블록도이다.
[0030] 도 4는 개시된 기술의 양상들에 따른 데이터 처리 시스템의 예의 블록도이다.
[0031] 도 5는 개시된 기술의 양상들에 따른 데이터 처리 시스템 모델의 블록도이다.
[0032] 도 6은 개시된 기술의 양상들에 따른 데이터 처리 시스템 모델의 블록도이다.
[0033] 도 7은 개시된 기술의 양상들에 따른 컴퓨터 처리 시스템의 예의 블록도이다.
[0034] 도 8은 개시된 기술의 양상들에 따른 방법의 블록도이다.
[0035] 도 9는 개시된 기술의 양상들에 따른 방법의 블록도이다.
[0036] 도 10은 개시된 기술의 양상들에 따른 방법의 블록도이다.
[0037] 도 11은 개시된 기술의 양상들에 따른 예시적인 데이터 처리 흐름이다.
[0038] 도 12는 개시된 기술의 양상들에 따른 allreduce와 축소 서버의 비교를 도시한다.
개요
[0039] 개시된 기술의 양상들은 예컨대, 기계 학습 타입 애플리케이션들을 위한 동기식 훈련 절차들의 일부로서, 데이터, 특히 방대한 양의 데이터 또는 빅 데이터의 처리를 관리하기 위한 기법들 및 시스템들을 포함한다. 이 기법은 분산 컴퓨팅 환경에서 축소 서비스 또는 축소 서버로서 구현될 수 있다. 분산 환경은 복수의 VM(virtual machine)들의 인스턴스화를 지원하는 하나 이상의 호스트 처리 디바이스들을 포함하는 데이터 처리 시스템들을 포함한다. 예컨대, 이 기법은 비교적 작은 vCPU(virtual central processing unit)들(즉, 요구되는 자원들의 관점에서 작은 풋프린트)을 갖는 VM들이 작업자 프로세스들을 실행하는 작업자들로부터 수신된 그래디언트들에 대한 축소 동작들을 제공하고, 하나 이상의 집계된 그래디언트들을 작업자들에게 다시 리턴하는 서비스로서 구현될 수 있다. 이러한 방식으로, 축소 프로세스 또는 동작은 데이터 처리 네트워크에서 축소기 노드들로서 기능하는 vCPU들에 의해 서비스로서 제공된다. 시스템에서, 축소 동작을 수행하도록 할당된 vCPU들의 집합은 축소 서버로 간주될 수 있다. 대안적으로, 작업자 및 축소 프로세스들은 물리적 하드웨어 상에서 실행되도록 구현될 수 있다.
[0040] 동기식 훈련의 일부로서 데이터를 처리하는 것은 통상적으로, 분산형 학습 시스템들에서 사용되는 통신 동작을 일반적으로 포함하는 allreduce와 같은 집합적 통신 프리미티브들, 및 NCCL(NVIDIA Collective Communications Library)의 일부로서 이들의 구현을 사용하는 것을 수반한다. 통신 프리미티브들은, (예컨대, 애플리케이션 프로그래밍 인터페이스("API")를 통해 액세스 가능한) 프로그램들이 처리 자원들(예컨대, vCPU들, vGPU(virtual Graphics Processing Unit)들), 저장소 등)을 상호 연결하는 기반 통신 네트워크를 사용하는 고레벨 구성들 또는 추상화를 포함한다. allreduce의 사용은 동기식 분산 GPU 훈련에서 그래디언트 집계에 대한 사실상의 표준으로 간주될 수도 있을 정도로 충분히 널리 퍼져 있다. 그러나 allreduce 동작들은, 특히 동작들이 큰 모델들과 연관되는 경우, 훈련을 분배하는 데 있어서 점점 더 병목 현상이 되고 있다. 예컨대, allreduce 요청과 연관된 동작들을 수행하기 위한 시간은 다음과 같이 대역폭(B)과 관련하여 노드들의 수(n)에 비례하며: t = (S/B) * (2*(n-1)/n), 여기서 S는 처리될 엘리먼트들의 수이다. 입력 데이터의 모든 비트에 대해 allreduce에 의해 얼마나 많은 네트워크 트래픽이 발생하는지의 비율은 전술한 공식으로부터 최소 2(n-1)/n인 것으로 추론될 수 있다. 개시된 기술의 양상은 2(n-1)/n의 비를 축소시키는, 보다 대역폭 효율적인 기법을 포함한다. 예컨대, 그래디언트 하강 방법들에 따라 신경망들을 훈련시키는 프로세스에서 필요한 축소들을 컴퓨팅하도록 작업자 프로세스들을 보조하는 축소 서비스들이 추가된다. 축소 서비스들의 제공은 추가 자원들 및 가능하게는 하드웨어를 요구하지만, 본 명세서에서 제안된 기법 및 아키텍처는, 일 양상에서, 그것이 작업자들 자체들 사이에서 축소들을 컴퓨팅하는 종래의 방법들의 통신 복잡성을 감소시키기 때문에 유리하다. 통신 복잡성의 감소는 감소를 컴퓨팅할 때 더 높은 스루풋, 예컨대 대역폭의 보다 효율적인 사용으로 이어진다.
[0041] NCCL 환경의 관점에서, 축소 서비스 또는 축소기 역할은 NCCL의 일부가 아닐 수 있다. 구체적으로, 이 기술의 일 양상에서, 작업자 또는 작업자 프로세스가 축소기 역할 또는 축소 서버가 인에이블된 상태에서 "all-reduce"와 같은 집합적 동작을 실행할 때, 작업자들은 NCCL 외부의 축소기들로부터 그래디언트들을 푸시 및 풀링한다. 이에 따라, 축소기 역할 또는 축소 서버는 NCCL을 지원하는 API의 일부로서 구현될 수 있지만 NCCL 외부에서 실행되는 동기식 훈련을 위한 집합적 통신 프리미티브를 포함한다. 대안적으로, 축소 서버 개념은 NCCL 내에서 통신 프리미티브로서 구현될 수 있다.
[0042] 예시적인 방법에서, 하나 이상의 입력 파일들 내의 데이터는 동일한 크기의 데이터 블록들이 요건이 아니지만 동일한 크기일 수 있는 데이터 블록들로 분할되고, 작업자 에이전트들 또는 프로세스들("작업자들")에 제공된다. 작업자들은 중간 데이터 블록들 또는 그래디언트들을 생성하도록 동작한다. "그래디언트"라는 용어는 기계 학습, 구체적으로는 신경망의 가중치들이 조정되는 신경망들의 훈련 단계(training phase)에 관한 것이다. 그래디언트 또는 그래디언트 값은 조정되는 가중치의 값에 대해 신경망 출력과 원하는 출력 사이의 측정된 에러의 변화율이다. 그래디언트 및 선택적으로 학습률 하이퍼파라미터(hyperparameter) 값은 네트워크의 특정 가중치의 조정 정도를 지정하고, 구현에 따라 수치 값으로서, 예컨대 정수 값, 부동 또는 고정 소수점 값으로서 표현된다. 축소 서버로서 본 명세서에 제시된 기법들은 일반적으로 축소들의 계산에 관한 것이지만, 기법들은 신경망들의 훈련 단계 동안 컴퓨팅되는 축소 동작들의 맥락에서 특히 유용하고 적용 가능하다. 따라서 그러한 축소에서 집계되는 값들은 본 명세서에서 "그래디언트들"로 지칭된다. 예를 들어, 작업자들은 현재 반복에 대한 입력 데이터에 기반하여 모델 파라미터들 또는 가중치들에 대한 그래디언트들을 계산하기 위해 역전파(backpropagation)(또는 그래디언트 하강을 사용하는 인공 네트워크들의 지도 학습을 위한 다른 유사한 기법들) 동작들을 수행할 수 있다. 이에 따라, 중간 데이터 블록들로 고려될 수 있는 그래디언트들이 모델 파라미터들로부터 매핑된다. 그런 다음, 작업자들은 중간 데이터 블록들 또는 그래디언트들을 축소기들에 푸시한다. 구체적으로, n개의 작업자들 및 m개의 축소기들을 가정하면, 각각의 작업자는 자신의 i 번째 블록을 i 번째 축소기로 푸시하여, 각각의 축소기가 총 n개의 데이터 블록들(또는 보다 일반적으로는 n/m개의 입력 데이터)을 수신한다. 이는, 축소를 수행하기 위한 컴퓨팅 및 통신이 축소기들에 걸쳐 균등하게 분산되는 것을 보장하고, 이로써 축소기들에 걸쳐 워크로드(workload)를 균등하게 밸런싱함으로써 병목 현상들을 피하고 높은 자원 활용도를 지원한다. 그 다음, 각각의 축소기는 자신이 수신하는 n개의 블록들을 단일 데이터 블록 또는 집계된 그래디언트로 축소시키고, 집계된 그래디언트 또는 단일 데이터 블록을 n개의 모든 작업자들에게 다시 브로드캐스트한다. 예컨대, 축소 동작은 수치 집계 동작이고, 수신된 그래디언트들, 즉 수치 값들의 합 또는 평균을 컴퓨팅하는 것을 포함할 수 있다. 축소를 컴퓨팅한 후에, 축소기는 그래디언트를 제공한 작업자들에게 축소 동작의 결과를 다시 통신한다. 따라서 축소 서버는 작업자들로부터 그래디언트들을 푸시하고 풀링한다. 통상적으로, 작업자들은 수신된 그래디언트를 적용하여 자신들의 파라미터를 업데이트한다. 모든 파라미터들이 업데이트된 후에, 훈련의 다음 반복이 시작된다. 따라서 작업자들 및 축소기들은, 에러 바운드(error bound)(예컨대, 모델과 모델의 파라미터들 사이의 에러) 또는 비용 함수와 연관된 주어진 최소치 내에서 솔루션에 도달하기 위해 그래디언트 하강 프로세스의 일부로서 푸시/풀 동작들을 사용하여 반복 프로세스에서 그래디언트들을 교환할 수 있다.
[0043] 아키텍처의 관점에서, 시스템은 예컨대, 클라우드 컴퓨팅 환경과 같은 분산 컴퓨팅 시스템에서 구현된다. 작업자들은 입력 데이터 파일 또는 스트림으로부터 분리된 데이터 블록들을 수신하는 가상 GPU들 상에서 실행되는 작업자 프로세스들로서 구현된다. 그런 다음, 작업자들은 축소기들에 제공되는 중간 데이터 블록들을 생성하도록 위에서 설명된 바와 같이 데이터 블록들에 대해 동작한다. 그래디언트 하강 학습의 맥락에서, 작업자에 의해 생성된 중간 데이터 블록은 확률적 그래디언트 하강에서 미니 배치의 훈련으로부터 야기되는 한 세트의 그래디언트들을 포함할 수 있다. 축소기들은 vCPU들 상에서 실행되는 축소기 프로세스들로서 구현된다. 축소기들 각각은 축소 동작들을 수행하고, 위에서 설명된 바와 같이 집계된 그래디언트 또는 단일 데이터 블록을 추가 처리를 위해 작업자들에게 리턴한다. 시스템의 동작과 관련하여, 축소기들의 총 대역폭이 작업자들의 총 대역폭과 동일한 경우, 시스템 성능이 향상되고, 여기서 총 대역폭은 각각의 개별 축소기 또는 작업자에 각각 이용 가능한 대역폭의 합을 나타낸다. 시스템은 또한 작업자들 및 축소기들에 작업들을 할당하는 하나 이상의 마스터 프로세스들을 포함한다.
[0044] 축소 서버 또는 축소 서비스의 제공은 통신들의 관점으로부터 보다 대역폭 효율적인 동작들을 제공함으로써 클라우드 환경에서 allreduce 동작에 대한 대역폭 요건들의 이점 개선으로서 제공한다. 예컨대, 축소 서버의 사용을 통해, 각각의 작업자는 통상적으로, 처리되는 모든 그래디언트의 바이트에 대해 1 바이트의 그래디언트를 전송 및 수신할 필요가 있을 것이다. 대조적으로, 축소기들 또는 축소 서비스들을 명시적으로 사용하지 않는 종래의 allreduce 처리에서의 각각의 작업자는 각각의 그래디언트를 2*(n-1)/n회 전송 및 수신한다. 따라서 축소기들 또는 축소 서비스들의 사용은, 축소 동작의 결과들을 획득하기 위해 개별 작업자들에 의해 교환(송신 및 수신)되는 메시지들의 수를 상당히 감소시킨다. 더욱이, 축소 동작의 컴퓨팅은 작업자들로부터 축소기들 또는 축소 서비스들에 오프로드(offload)된다.
[0045] 더욱이, 축소 서버 처리는 레이턴시를 감소시키고, 축소 동작의 적어도 일부 반복들을 위해 vCPU들을 사용함으로써 축소된 비용으로 일어난다. 이와 관련하여, 축소 서버는 전문화된 하드웨어 및 패브릭 지원을 요구하지 않으며, 이는 비용 축소를 돕는다. 추가로, 대역폭의 관점에서, 축소 서버는 그러한 GPU들의 비용의 일부로 GPU들에 대한 네트워크 대역폭 처리 능력을 매칭시킬 수 있다.
예시적인 시스템들 및 API 모델들
[0046] 도 1은 본 개시내용의 양상들에 따른 예시적인 시스템(100)이다. 시스템(100)은 컴퓨팅 디바이스들(1101 내지 110k)을 포함할 수 있는 하나 이상의 컴퓨팅 디바이스들(110), 저장소(138), 네트워크(140), 및 클라우드 컴퓨팅 시스템들(1501 내지 150l)을 포함할 수 있는 하나 이상의 클라우드 컴퓨팅 시스템들(150)을 포함한다. 컴퓨팅 디바이스들(110)은 클라우드 컴퓨팅 서비스들, 이를테면 IaaS(Infrastructure as a Service), PaaS(Platform as a Service) 및/또는 SaaS(Software as a Service)를 사용하는 고객 위치에 위치된 컴퓨팅 디바이스들을 포함할 수 있다. 예컨대, 컴퓨팅 디바이스(110)가 비즈니스 기업에 위치된다면, 컴퓨팅 디바이스(110)는 기업 시스템들을 운영하는 데 사용되는 컴퓨팅 디바이스들(110)에 소프트웨어 애플리케이션들, 예컨대 회계, 워드 처리, 재고 추적 등을 제공하는 서비스로서 클라우드 시스템들(150)을 사용할 수 있다. 추가로, 컴퓨팅 디바이스(110)는, 자신의 비즈니스 기업을 지원하는 애플리케이션들을 훈련시키기 위해 기계 학습, 딥 러닝 또는 보다 일반적으로는 인공 지능 기술을 이용하는 동작들의 일부로서 클라우드 컴퓨팅 시스템들(150)에 액세스할 수 있다. 예를 들어, 컴퓨팅 디바이스(110)는, 자신의 카드 소지자들에 의한 신용 카드 사용과 관련된 데이터를 축적하고 그 데이터를 클라우드 플랫폼 제공자에게 공급한 다음, 클라우드 플랫폼 제공자가 그 데이터를 처리하여 부정 행위 검출 모델 또는 시스템을 업데이트하는 데 사용될 수 있는 사용 패턴들을 검출하며, 그런 다음, 그 사용 패턴들은 카드 소유자의 신용 카드 계정에 대한 의심스러운 또는 비정상적인 활동을 카드 소유자에게 통지하는 데 사용될 수 있는 은행 또는 신용 카드 발행자의 고객 컴퓨터 또는 서버를 포함할 수 있다. 다른 고객들은 소셜 미디어 플랫폼 제공자들, 정부 기관들, 또는 그 동작들의 일부로서 기계 학습을 사용하는 임의의 다른 비즈니스를 포함할 수 있다. 시스템(150)을 통해 제공되는 기계 또는 딥 러닝 프로세스들, 예컨대 그래디언트 하강은, 고객들이 그들의 비즈니스들을 운영하는데 사용되는 기계 학습 모델들을 업데이트하기 위해 사용하는 모델 파라미터들을 제공할 수 있다.
[0047] 도 1에 도시된 바와 같이, 컴퓨팅 디바이스들(110) 각각은, 하나 이상의 프로세서들(112), 데이터(D) 및 명령들(I)을 저장하는 메모리(116), 디스플레이(120), 통신 인터페이스(124) 및 입력 시스템(128)을 포함할 수 있으며, 이들은 네트워크(130)를 통해 상호 연결된 것으로 도시된다. 컴퓨팅 디바이스(110)는 또한, 고객의 동작의 일부로서 축적된 데이터를 저장하는, 예컨대 SAN(Storage Area Network) 상의 로컬 또는 원격 저장소를 포함할 수 있는 저장소(136)에 결합되거나 연결될 수 있다. 컴퓨팅 디바이스(110)는 독립형 컴퓨터(예컨대, 데스크톱 또는 랩톱) 또는 고객과 연관된 서버를 포함할 수 있다. 주어진 고객은 또한 자신의 비즈니스의 일부로서 다수의 컴퓨팅 디바이스들을 서버들로서 구현할 수 있다. 독립형 컴퓨터라면, 네트워크(130)는 컴퓨터 내부의 데이터 버스들 등을 포함할 수 있고; 서버라면, 네트워크(130)는 근거리 네트워크, 가상 사설 네트워크, 광역 네트워크, 또는 네트워크(140)와 관련하여 아래에서 설명되는 다른 타입들의 네트워크들 중 하나 이상을 포함할 수 있다. 메모리(116)는 프로세서(들)(112)에 의해 실행되거나 달리 사용될 수 있는 명령들(132) 및 데이터(134)를 포함하여, 하나 이상의 프로세서들(112)에 의해 액세스 가능한 정보를 저장한다. 메모리(116)는 컴퓨팅 디바이스 판독 가능 매체, 또는 하드 드라이브, 메모리 카드, ROM, RAM, DVD 또는 다른 광학 디스크들뿐만 아니라 다른 기록 가능 및 판독 전용 메모리들과 같은 전자 디바이스의 도움으로 판독될 수 있는 데이터를 저장하는 다른 매체를 포함하여, 프로세서에 의해 액세스 가능한 정보를 저장할 수 있는 임의의 타입일 수 있다. 시스템들 및 방법들은 전술한 것들의 상이한 조합들을 포함할 수 있으며, 이로써 명령들 및 데이터의 상이한 부분들이 상이한 타입들의 매체들 상에 저장된다.
[0048] 명령들(132)은 프로세서에 의해 (기계 코드와 같이) 직접적으로 또는 (스크립트(script)들과 같이) 간접적으로 실행될 명령들의 임의의 세트일 수 있다. 예컨대, 명령들은 컴퓨팅 디바이스 판독 가능 매체 상에 컴퓨팅 디바이스 코드로서 저장될 수 있다. 그와 관련하여, "명령들" 및 "프로그램들"이라는 용어들은 본 명세서에서 상호 교환 가능하게 사용될 수 있다. 명령들은 프로세서에 의한 직접적인 처리를 위한 객체 코드 포맷으로, 또는 요구에 따라 해석되거나 미리 컴파일되는 독립적인 소스 코드 모듈들의 집합들 또는 스크립트들을 포함하는 임의의 다른 컴퓨팅 디바이스 언어로 저장될 수 있다. 명령들의 프로세스들, 기능들, 방법들 및 루틴들은 아래 더 상세히 설명된다.
[0049] 데이터(132)는 명령들(132)에 따라 프로세서(112)에 의해 리트리브(retrieve), 저장 또는 수정될 수 있다. 예로서, 메모리(116)와 연관된 데이터(132)는 하나 이상의 클라이언트 디바이스들, 애플리케이션 등에 대한 서비스들을 지원하는 데 사용되는 데이터를 포함할 수 있다. 그러한 데이터는 호스팅 웹 기반 애플리케이션들, 파일 공유 서비스들, 통신 서비스들, 게이밍, 비디오 또는 오디오 파일들의 공유, 또는 임의의 다른 네트워크 기반 서비스들을 지원하기 위한 데이터를 포함할 수 있다.
[0050] 하나 이상의 프로세서들(112)은 시중에서 구할 수 있는 CPU들과 같은 임의의 종래 프로세서일 수 있다. 대안적으로, 하나 이상의 프로세서들은 ASIC 또는 다른 하드웨어 기반 프로세서와 같은 전용 디바이스일 수 있다. 도 1은 프로세서, 메모리, 및 컴퓨팅 디바이스(110)의 다른 엘리먼트들을 동일한 블록 내에 있는 것으로 기능적으로 예시하지만, 프로세서, 컴퓨팅 디바이스 또는 메모리가 실제로는, 동일한 물리적 하우징 내에 위치 또는 저장될 수 있거나 그렇지 않을 수 있는 다수의 프로세서들, 컴퓨팅 디바이스들 또는 메모리들을 포함할 수 있다고 당해 기술분야에서 통상의 지식을 가진 자들에 의해 이해될 것이다. 일 예에서, 하나 이상의 컴퓨팅 디바이스들(110)은 고객의 비즈니스 운영의 일부로서 다른 컴퓨팅 디바이스들로 그리고 다른 컴퓨팅 디바이스들로부터 데이터를 수신, 처리 및 송신할 목적으로 네트워크의 상이한 노드들과 정보를 교환하는 복수의 컴퓨팅 디바이스들, 예컨대 로드 밸런싱된 서버 팜(load balanced server farm)을 갖는 하나 이상의 서버 컴퓨팅 디바이스들을 포함할 수 있다.
[0051] 컴퓨팅 디바이스(110)는 또한, 컴퓨팅 디바이스(110)를 제어할 수 있게 하는 사용자 인터페이스를 제공하는 디스플레이(120)(예컨대, 스크린을 갖는 모니터, 터치스크린, 프로젝터, 텔레비전, 또는 정보를 디스플레이하도록 동작 가능한 다른 디바이스)를 포함할 수 있다. 그러한 제어는 예컨대, 컴퓨팅 디바이스를 사용하여, 처리를 위해 입력 시스템(128)을 통해 클라우드 시스템(150)에 데이터가 업로드되게 하거나, 저장소(136) 상에 데이터의 누적을 야기하거나, 또는 보다 일반적으로는 고객의 컴퓨팅 시스템의 상이한 양상을 관리하는 것을 포함할 수 있다. 입력 시스템(128)은 데이터, 예컨대 USB 포트를 업로드하는 데 사용될 수 있지만, 컴퓨팅 시스템은 또한 커맨드들 및/또는 데이터를 수신하는 데 사용될 수 있는 마우스, 키보드, 터치스크린 또는 마이크로폰을 포함할 수 있다.
[0052] 네트워크(140)는 단거리 통신 프로토콜들, 이를테면 Bluetooth™, Bluetooth™ LE, 인터넷, 월드 와이드 웹(World Wide Web), 인트라넷들, 가상 사설 네트워크들, 광역 네트워크들, 로컬 네트워크들, 하나 이상의 회사들 소유의 통신 프로토콜들을 사용하는 사설 네트워크들, 이더넷, WiFi, HTTP 등 그리고 전술한 것들의 다양한 조합들을 포함하는 다양한 구성들 및 프로토콜들을 포함할 수 있다. 이러한 통신은 모뎀들 및 무선 인터페이스들과 같은 다른 컴퓨팅 디바이스들에 그리고 그러한 다른 컴퓨팅 디바이스들로부터 데이터를 송신할 수 있는 임의의 디바이스에 의해 가능하게 될 수 있다. 컴퓨팅 디바이스는 주어진 통신 프로토콜을 지원하는 데 필요한 하드웨어, 드라이버들 및 소프트웨어를 포함할 수 있는 통신 인터페이스(124)를 통해 네트워크(140)와 인터페이싱한다.
[0053] 클라우드 컴퓨팅 시스템들(150)은 고속 통신들 또는 컴퓨팅 네트워크들을 통해 링크될 수 있는 하나 이상의 데이터 센터들을 포함할 수 있다. 시스템(150) 내의 주어진 데이터 센터는 컴퓨팅 시스템들 및 이들의 연관된 컴포넌트들, 예컨대 저장 시스템들 및 통신 시스템들을 수용하는 빌딩 내의 전용 공간을 포함할 수 있다. 통상적으로, 데이터 센터는 통신 장비의 랙(rack)들, 서버들/호스트들 및 디스크들을 포함할 것이다. 서버들/호스트들 및 디스크들은 가상 컴퓨팅 자원들, 이를테면 VM들을 제공하는 데 사용되는 물리적 컴퓨팅 자원들을 포함한다. 주어진 클라우드 컴퓨팅 시스템이 하나 초과의 데이터 센터를 포함하는 범위까지, 그러한 데이터 센터들은, 적시에 그리고 경제적으로 효율적인 방식으로 서비스들을 전달할 뿐만 아니라, 리던던시(redundancy)를 제공하고 높은 가용성을 유지하도록 선택되는, 서로 비교적 가까운 인근 내의 상이한 지리적 위치들에 있을 수 있다. 유사하게, 상이한 클라우드 컴퓨팅 시스템들은 통상적으로 상이한 지리적 위치들에 제공된다.
[0054] 도 1에 도시된 바와 같이, 컴퓨팅 시스템(150)은 인프라 구조(152), 저장소(154) 및 컴퓨터 시스템(158)을 포함하는 것으로 예시될 수 있다. 인프라 구조(152), 저장소(154) 및 컴퓨터 시스템(158)은 클라우드 컴퓨팅 시스템(150) 내의 데이터 센터를 포함할 수 있다. 인프라 구조(152)는 서버들, 스위치들, 물리적 링크들(예컨대, 섬유), 및 저장소(154) 및 컴퓨터 시스템(158)과 데이터 센터 내의 서버들을 상호 연결하는 데 사용되는 다른 장비를 포함할 수 있다. 저장소(154)는 데이터 센터 내의 처리 디바이스들 상에서 실행되는 가상 머신들에 물리적 또는 가상 저장소를 제공하도록 파티셔닝 가능한 디스크 또는 다른 저장 디바이스를 포함할 수 있다. 저장소(154)는 저장소(154)에 의해 지원되는 가상 머신들을 호스팅하는 데이터 센터 내에서 또는 저장소(154)가 지원하는 가상 머신들과 물리적 위치를 공유하지 않는 상이한 데이터 센터에서 SAN으로서 제공될 수 있다. 컴퓨터 시스템(158)은 주어진 데이터 센터에 의해 처리되는 작업들에 대한 감독자 또는 관리 에이전트로서의 역할을 한다. 일반적으로, 컴퓨터 시스템(158)은 예컨대, 고객 데이터에 대한 동기식 훈련 동작의 일부로서 요청된 동작들을 관리하는 데 필요한 명령들을 포함할 것이다. 컴퓨터 시스템(158)은 예컨대, 고객으로부터 API(application programming interface)를 통해 수신되는 입력의 결과로서, 작업들을 수신할 수 있다.
[0055] 도 2는 개시된 기술의 양상들에 따른 클라우드 기반 분산 데이터 처리 시스템(200)의 예의 블록도이다. 도 2는 상호 연결된 데이터 센터들(DC1 내지 DC4)의 관점에서 클라우드 컴퓨팅 시스템들(150)의 예들을 도시한다. 데이터 센터들은 클라우드 컴퓨팅 시스템들(150) 사이에 분산될 수 있고, 하나 초과의 데이터 센터는 주어진 클라우드를 포함할 수 있다. 당해 기술 분야에서 통상의 지식을 가진 자들은 시스템 레이아웃이 단지 하나의 예시적인 구성이며, 시스템이 다른 레이아웃들 또는 형태들로 예시될 수 있음을 인식할 것이다.
[0056] 시스템(200)은 데이터를 수신, 저장, 처리 및 출력한다. 시스템(200)은 데이터 센터 내에서 처리 디바이스들, 예컨대 CPU들 또는 GPU들 사이뿐만 아니라 데이터 센터들 사이의 비교적 고속의 데이터 이송을 가능하게 하기 위해, 모뎀들, 라우터들, 스위치들, 브리지들, 무선 안테나들 및 타워들과 같은 다른 하드웨어를 따라 광 링크들 또는 다른 통신 채널들을 포함할 수 있다. 데이터 센터들 내에서, 네트워크 통신들은 LAN(local area network)을 통해 그리고 WAN(wide area network)들을 수반하는 데이터 센터들 사이에서 발생할 수 있다.
[0057] 데이터 센터들은 서로 가까이에 또는 반대로 서로 멀리 위치될 수 있다. 도시된 바와 같이, DC1(205)은 다수의 장비 랙들(209)을 포함한다. 각각의 랙은 통상적으로 트레이, 하나 이상의 서버들, 스위치들, 저장소 등에 홀딩 또는 지지하도록 엔지니어링(engineer)된다. 도 2에서, 서버들은 단순성을 위해 도시되지 않는다. 오히려, 서버를 구성할 수 있는 데이터 프로세서들(215), 예컨대 CPU들 및 GPU들은 랙들 내에서 지원되는 것으로 도시된다. 데이터 프로세서들은 네트워크 부착 저장 디바이스들 및 다른 컴퓨터 제어 디바이스들과 연관되는 프로세서들을 포함할 수 있다. 적어도 하나의 프로세서는, 네트워킹된 시스템(200)을 통해 수행되는 컴퓨팅 작업들 및 데이터 분배 작업들의 스케줄링을 제어하는 마스터 프로세서로서(예컨대, 도 1의 시스템(158)으로서) 동작될 수 있다. 도시된 바와 같이, 각각의 랙 내의 프로세서들은 랙 스위치(226)를 통해 상호 연결될 수 있다. 데이터 센터 내의 랙들은 데이터 센터 스위치를 통해 상호 연결될 수 있다.
[0058] 도 3은 개시된 기술의 양상들에 따른 데이터 처리 시스템 및 대규모 데이터 처리 시스템에서의 데이터 흐름의 예의 논리적 뷰를 예시하는 블록도이다. 시스템 및 흐름은 도 1 또는 도 2에 도시된 시스템들에서 구현될 수 있다. 예컨대, 이들은 단일 데이터 센터에서 구현될 수 있거나, 대안적으로 클라우드 또는 분산 컴퓨팅 환경의 일부로서 상이한 데이터 센터들에 걸쳐 구현되거나 확산될 수 있다.
[0059] 도 3에 도시된 바와 같이, 고객에 의해 요청된 작업 또는 동작은 스크립트 또는 이진 파일(310)의 형태로 제공될 수 있다. 애플리케이션 프로그래머들은 작업자(…), 축소(…), 파티션(…) 등과 같은 연산자들을 개발할 수 있다. 이러한 연산자들은 예컨대, 입력 데이터 파일들을 통해 수신된 입력 데이터를 중간 데이터 또는 그래디언트들로 처리하는 컴퓨터 프로그램들이다. 축소 동작들은 일반적으로, 예컨대 작업자들에 의해 생성된 그래디언트들을 조합하는 중간 데이터 값들을 병합하거나 그렇지 않으면 조합한다. 파티션 동작들은 일반적으로, 한 세트의 중간 데이터 파일들에 걸쳐 중간 데이터가 어떻게 파티셔닝될지를 지정한다. 동작들(예컨대, 축소)은 축소 동작들, I/O 스케줄링, 전송, 계산들의 병렬화 등을 자동으로 핸들링하는 라이브러리 기능들을 호출한다. 작업 요청 또는 스크립트는 통상적으로 API를 통해 애플리케이션 프로그래머에 의해 생성될 것이다. 그런 다음, API는 컴퓨터 시스템(158)에서 수신되는 이진 로드 파일(310)을 생성할 수 있다. 그런 다음, 컴퓨터 시스템(158)은 마스터 프로세스 또는 프로세스들(314)에 의해 제어 또는 관리되는 한 세트의 처리 작업들을 생성하도록 이진 로드 파일을 처리한다. 마스터 프로세스(들)(314)는 예컨대, 얼마나 많은 프로세스들 또는 작업들을 사용할지를 결정할 수 있는데, 이를테면 사용할 프로세스들 또는 작업들을 감소시킬지 등, 그리고 그러한 작업들을 수행하기 위해 어느 프로세서들이 사용되어야 하는지뿐만 아니라 그래디언트들, 또는 다른 형태들의 중간 데이터 및 궁극적으로는 출력 파일들(예컨대, 업데이트된 모델(들) 또는 업데이트된 모델 파라미터들을 갖는 하나 이상의 파일들을 포함함)을 어디에 저장할지를 결정할 수 있다.
[0060] 아래에서 더 상세히 논의되는 바와 같이, 축소 서버의 개념은 NCCL의 일부가 아닐 수 있다. 그 경우에, 축소기 역할은, 파일(310)에서의 작업자와 축소 동작들 사이의 분리에 의해 표시된 바와 같이, 이진 로드 파일(310)과는 다른 이진일 수 있다. 축소 서버가 NCCL 내에서 구현되는지 또는 NCCL 없이 구현되는지에 관계없이, 축소 서버는 클라우드 환경에서 상이한 아키텍처 오버레이를 제공한다. 축소 서버를 포함할 수 있는 축소기들, 축소 에이전트들 또는 축소 프로세스들의 집합은 효율적인 대역폭 관리 및 레이턴시 완화에 관한 이점들을 제공할 뿐만 아니라, 호스트 레벨에 있든 가상 머신 레벨에 있든, 컴퓨팅 자원들의 보다 동적인 할당을 허용한다. 구체적으로, 축소 서버는, 심층 기계 학습 또는 신경망을 포함하여, 특히 기계 학습에 사용되는 분산 컴퓨팅 아키텍처들을 개선한다.
[0061] 마스터(314)는 입력 파일들이 저장되는 데이터 센터들의 하나 이상의 프로세서들에 작업들을 할당할 수 있다. 개시된 기술의 양상에 따르면, 마스터(314)는 또한 주어진 작업, 예컨대 작업자 프로세스들 또는 에이전트들에 의해 수행되는 작업들에 대한 vGPU들 및 축소기 에이전트들 또는 프로세스들에 의해 수행되는 작업들에 대한 vCPU들을 실행하기 위한 적절한 프로세서를 결정할 수 있다. 마스터 프로세스들(314)은 하나 이상의 가상 머신들(322, 326)에 결합된다. 가상 머신들(322)은, 각각 작업자 프로세스들을 실행하거나 또는 작업자 에이전트들(W1, W2, W3, … Wn)로서 기능하는 제1 세트의 가상 머신들을 포함할 수 있다. 제1 세트의 가상 머신들은 vGPU들 또는 vTPU들(가상 텐서(tensor) 처리 유닛들)을 포함할 수 있고, 각각의 vGPU 또는 vTPU는 하나 이상의 작업자 프로세스들을 실행할 수 있다. 가상 머신들(326)은, 각각 축소 프로세스들을 실행하거나 또는 축소기들 또는 축소기 에이전트들(R1, R2, R3, … Rm)로서 기능하는 다른 또는 제2 세트의 가상 머신들을 포함할 수 있다. 가상 머신들(326)은 vCPU들을 포함할 수 있고, 여기서 각각의 vCPU는 프로세스들을 더 축소시킬 수 있다.
[0062] 도 3에 도시된 바와 같이, 블록(332)은 처리를 위한 입력 데이터를 포함한다. 입력 데이터는 신경망 모델과 연관된 가중치 값들 또는 파라미터들을 포함할 수 있다. 입력 데이터는 I1, I2, I3, … In으로 표현되는 데이터 블록들로 분할된다. 필수적이지는 않지만, 데이터 블록들은 동일한 크기의 데이터 블록들, 예컨대 n개의 동일한 크기의 데이터 블록들로 분할될 수 있다. 예컨대, 각각의 데이터 블록은 64 MB 데이터 블록을 포함할 수 있다. 각각의 작업자(W1, W2 등)는 처리를 위해 데이터 블록(I1, I2) 등을 수신한다. 그 다음, 각각의 작업자는 자신의 i 번째 블록을 블록 또는 축소기 서버(326)의 i 번째 축소기로 푸시한다. 예시된 바와 같이, 작업자들 및 축소기들은 도 1 및 도 2와 관련하여 이전에 설명된 바와 같이, 데이터 센터 내의 LAN 또는 다른 데이터 센터에 대한 LAN/WAN 접속일 수 있는 네트워크(337)를 통해 통신한다. 각각의 작업자에 의해 푸시된 i 번째 블록이 처리될 때, 이는 중간 데이터 또는 데이터 값들, 또는 그래디언트들로 간주될 수 있다. 도시된 바와 같이, W1, W2, W3, …, Wn 각각은, R1이 데이터 값들(G11, G21, G31, … Gn1)을 수신하도록 자신의 제1 데이터 블록(즉, i = 1)을 축소기(R1)에 푸시하며, 여기서 G11은 첫 번째 작업자로부터의 첫 번째 그래디언트를, 또는 보다 일반적으로 중간 데이터 값을 나타내고, G21은 두 번째 작업자로부터의 첫 번째 그래디언트를 나타내고, G31은 세 번째 작업자로부터의 세 번째 그래디언트를 나타내는 식이다. 축소기(R2)는, Rm이 데이터 값들(G1n, G2n, G3n, … Gnm)을 수신하도록, 데이터 수신 값들(G12, G22, G32, … Gn3)을 수신하고; R3은 데이터 값들(G13, G23, G33, … Gn3)을 수신하는 식이다.
[0063] 각각의 축소기는, 그것이 수신하는 n개의 그래디언트들 또는 데이터 블록들을 축소 동작의 일부로서 단일 또는 집계된 그래디언트 또는 단일 데이터 블록으로 축소시킨다. 구체적으로, 축소기(R1)는 단일 데이터 블록 또는 집계된/단일 그래디언트( G1 )를 생성할 수 있고, R2는 단일 데이터 블록 또는 그래디언트( G2 )를 생성하고, R3은 단일 데이터 블록 또는 그래디언트( G3 )를 생성하고, Rm은 단일 데이터 블록 또는 그래디언트( Gm )를 생성하는 식이다. 집계된 그래디언트들(G1, G2,..Gm)은 도 3에서 각각의 집계된 그래디언트 위에 바(bar)를 갖는 것으로 도시되는 반면, 이러한 상세한 설명에서 이들은 굵게 표시되고 밑줄이 그어지지만, 기록된 설명 및 도면들은 동일한 집계된 그래디언트를 논의하고 도시하고 있음을 주목한다. 그 다음, 각각의 축소기는 각각의 작업자가 각각의 그래디언트를 수신하도록 모든 작업자들에게 다시 각각의 그래디언트를 브로드캐스트한다. 도 3에 도시된 바와 같이, 각각의 작업자는 G1 , G2 , … Gm 을 포함하는 집계된 그래디언트를 수신한다. 데이터 처리의 각각의 반복에서, 축소기들은 작업자들로부터 수신된 그래디언트들 또는 데이터를 집계하거나, 작업자들은 축소기들로부터 집계된 그래디언트들을 풀링한다. 그래디언트 벡터의 수신 시에, 각각의 작업자는 O1, O2, … On으로서 표현된 출력 데이터 값들 또는 파일들을 생성하도록 추가 처리 동작들을 수행할 수 있으며, 그 파일들은 다음에, 예컨대 기계 학습 모델을 업데이트하도록 고객에게 리턴될 수 있다.
[0064] 도 4는 개시된 기술의 양상들에 따른 작업자들의 집합(440)과 통신하는 축소 서버(420)를 예시하는 데이터 처리 시스템(400)의 예의 블록도이다. 이 예에서, 축소 서버(420)는 4개의 작업자들(4401 - 4404)에 통신 가능하게 결합된 4개의 축소기들(4201 - 4204)을 포함한다. 도시된 바와 같이, 축소 서버는 대규모 데이터 분산 처리 시스템들: 축소기들에 추가 타입의 역할을 도입한다. 축소기들은 비교적 적은 양의 vCPU들을 갖는 저렴한 CPU VM들을 포함할 수 있다. 도 4에 예시된 바와 같이, 축소기 역할은 컴퓨팅들 및 통신들이 축소기들에 걸쳐 균등하게 분산될 수 있게 하며, 이는 병목 현상 회피를 포함하는 개선된 성능으로 이어질 수 있다. 도 4에 도시된 예를 통해 또한 표시된 바와 같이, 축소 서버를 통해 제공되는 전체 아키텍처는 파라미터 서버에 대한 아키텍처와 유사한 것으로 간주될 수 있다. 당해 기술분야에서 통상의 지식을 가진 자들이 인식할 수 있는 바와 같이, 파라미터 서버는 클러스터 상에서 기계 학습 모델들을 훈련시키기 위해 사용되는 키 값 저장소이다. 값들은 기계 학습 모델(예컨대, 신경망)의 파라미터들이다. 키들은 모델 파라미터들을 인덱싱한다. 그러나 서버들이 모델 파라미터들을 유지하는 파라미터 서버와 달리, 축소기들은 상태가 없으며 작업자들로부터 그래디언트들 또는 중간 데이터 블록들을 수신하고, 축소 동작을 수행하고, 그리고 그래디언트들을 다시 작업자들에게 전송하는 것을 담당하거나 단지 담당할 뿐이다. 축소기들의 단순성은 성능 개선들을 가능하게 하고, 상이한 훈련 애플리케이션들에 걸쳐 일반적인 애플리케이션 또는 동질성을 허용한다. 축소 서버들은 샤드(shard)들로 파티셔닝될 수 있는데, 예컨대 축소 서버에 포함된 각각의 축소기는 작업자들에 의해 제공된 데이터의 특정 샤드를 처리한다. all-reduce 동작의 제1 단계에서, 작업자는 그 축소기에 의해 컴퓨팅된 축소에 포함될 그래디언트 데이터의 개개의 샤드를 각각의 축소 서버에 제공한다. 이에 따라, 각각의 축소기는 작업자들 각각으로부터 축소될 그래디언트들의 배치를 수신하거나, 또는 확률적 그래디언트 하강의 경우에 추후에 설명될 바와 같이, 이들의 서브세트를 수신한다. 제2 단계들에서, 축소기는 축소 동작을 사용하여 작업자들로부터 수신된 입력들을 집계한다. 제3 단계에서, 각각의 축소기는 자신이 다루고 있는 샤드의 축소의 결과를 모든 작업자들에게 이용 가능하게 한다.
[0065] 축소 서버의 제공은 또한, 작업자가 모든 축소기들 사이에서 자신의 그래디언트를 샤드할 수 있게 한다. 이에 따라, 원칙적으로, 축소기들에 의해 사용되는 총 집합 대역폭이 작업자들에 의한 총 집합 대역폭과 매칭하는 한, 축소기들은 비교적 높은 대역폭을 요구할 것으로 예상되지 않는다. 각각의 축소기의 대역폭이 각각의 작업자의 대역폭보다 작다면, 축소기들의 수는 축소기들의 수보다 많을 것이다. 예로서, 100Gbps를 갖는 2개의 작업자 VM들에 대한 피크 네트워크 성능을 달성하기 위해, 100Gbps를 갖는 2개의 축소기 VM들을 사용하거나, 25Gbps를 갖는 8개의 축소기 VM들이 사용될 수 있다. 이는 동적 클라우드 환경에서 축소기들을 위한 VM 형상들을 제공하는 데 있어서 추가적인 유연성을 허용한다. 축소기들의 총 집합 대역폭을 작업자들의 대역폭과 동일하게 하는 것은, 개시된 기술과 연관된 적어도 하나의 이익을 제공한다.
[0066] 비교적 많은 수의 축소기들을 이용한 동기식 훈련은 잠재적으로 낙오자(straggler)들에게 취약할 수 있다. 보다 구체적으로, n개의 작업자들 및 m개의 축소기들을 갖는 축소 서버는 O(m*n)개의 네트워크 링크들을 가질 것이다. 낙오자들(예컨대, 다른 작업자들보다 느려지고 있는 작업자들)의 확률은 링크들의 수가 증가함에 따라 높아진다. 그러나 텐서들의 각각의 부분들의 축소가 서로 독립적이기 때문에, 테일 레이턴시의 영향은 캐스케이드(cascade)되지 않을 것이다. 축소 서버는 축소가 축소기들에 걸쳐 적응적으로 로드 밸런싱되는 것을 확인해야 한다. 추가로, 낙오자들을 완화시키기 위해 추가 접근법들이 사용될 수 있다. 이러한 추가 접근법들은 훈련의 결정론적 성질에 영향을 미칠 수 있으므로(단대단 성능이 개선될 수 있지만) 이들은 선택적인 것으로 간주되고 테일 레이턴시 영향이 실제로 문제가 되는 경우에만(즉, 최후의 수단으로서) 사용되어야 하며; 이러한 추가 접근법들은 미니 배치 확률적 그래디언트 하강에 기반한 훈련에 특히 적용 가능하다:
1. 백업 작업자들. 축소는 생성된 n개의 그래디언트들 중 처음 m개를 취한다. 이는, 일부 상황들에서, SGD(stochastic gradient descent)의 특정 배치를 무시하는 것이 적절할 수 있다는 사실을 활용한다. 다시 말해서, 그래디언트 배치들의 나머지를 무시하는 작업자들의 서브세트로부터 수신된 그래디언트 배치들의 서브세트에 대해서만 축소 서버에 의해 축소가 컴퓨팅되며, 작업자들의 서브세트는 적어도 총 작업자들의 수보다 더 작은 미리 결정된 크기(m)를 갖는다. 서브세트의 최소 크기는 이를테면, 예컨대 사용자에 의해 경험적으로 결정될 수 있다. 훈련 정확도와 속도 사이의 트레이드-오프(trade-off)들이 고려될 필요가 있을 수 있는데: 크기가 더 작을수록, 그래디언트들에 더 많은 잡음이 있을 것이지만, 반복은 통상적으로 더 빠를 것이다.
2. 제한된 지연. 축소는 첫 번째 그래디언트가 수신된 후 데드라인(T) 내에 수신된 그래디언트들을 취한다. 이 접근법은 또한, 나머지를 스킵하기 전에 적어도 m개의 그래디언트들이 수신되어야 하도록 첫 번째 접근법과 조합될 수 있다. 다시 말해서, 축소는 작업자들의 서브세트로부터 수신된 그래디언트 배치들의 서브세트에 대해서만 축소 서버에 의해 컴퓨팅되며, 서브세트 또는 작업자들의 크기는 첫 번째 그래디언트 배치의 수신 후 미리 결정된 데드라인(T)까지 수신된 그래디언트 배치들에 의해 결정된다.
[0067] 축소 서버는 또한 레이턴시를 감소시킬 수 있다. 종래의 링-allreduce의 O(n) 레이턴시 및 종래의 트리 allreduce의 O(log n) 레이턴시(n은 작업자 노드들의 수임)와 비교하여, 본 명세서에 개시된 축소 서버 아키텍처는 O(1) 레이턴시만을 취하는데, 이는 축소기들의 도움으로, 즉 각각의 작업자가 축소기들 각각에 그래디언트 데이터를 통신하고 후속하여 각각의 축소기로부터 결과들을 획득함으로써 단일 교환으로 allreduce 동작을 수행하기 때문이다. 각각의 반복에서 n개의 작업자들과 k개의 축소기들 사이의 축소가 순차적이지 않고 동시적이기 때문에, 레이턴시는 축소기들의 수와 무관하다:
링 allreduce 트리 allreduce 축소 서버
알고리즘 대역폭 Busbw * n / 2(n-1) Busbw * n / 2(n-1) Busbw
레이턴시 O(n) O(log n) O(1)
[0068] 상기에서, 버스 대역폭은, 알고리즘 대역폭을 지칭하는 algbw와 비교하여, 하드웨어 대역폭을 지칭하는 버스 대역폭을 지칭한다. allreduce의 성능은 다음과 같이 그의 알고리즘 대역폭 및 버스 대역폭에 기반하여 추론될 수 있다:
algbw := input_size / 시간
busbw := transferred_size / 시간
algbw == busbw / (transferred_size / input_size)
[0069] 비율(transferred_size/input_size)은 입력 데이터의 모든 바이트에 대해 all-reduce에 의해 얼마나 많은 네트워크 트래픽이 발생하는지를 나타낸다. 이전에 논의된 바와 같이, allreduce에 대해, 최소 비율은 2(n-1)/n이다.
[0070] 도 5는 개시된 기술의 양상들에 따른 데이터 처리 시스템 모델(500)의 블록도이다. 시스템 모델(500)은 NCCL에서의 전송으로서 작업자 역할들을 구현하는 것을 수반하는 한편, 축소기 역할은 NCCL의 일부가 아니다. 기술의 이러한 양상에 따르면, 작업자가 예컨대, 축소 서버 모드가 인에이블된 allreduce와 같은 집합적 동작을 실행할 때, 전송은 외부 작업자들로부터 그래디언트들을 푸시한 다음 풀링할 것이다. 이와 관련하여, 축소기 역할은 도 5에 묘사된 바와 같이 NCCL 환경 외부에서 별개로 실행되는 상이한 이진을 포함할 것이다. 이러한 구현은, 사용자들(또는 플랫폼)이 작업자들에 추가로 축소기들을 가져오도록 요구될 가능성이 있다는 점을 제외하고는 사용자 코드에 대해 투명할 수 있다. 이 구현은 또한, TensorFlow, PyTorch 및 MXnet과 같은 프레임워크들과 호환된다.
[0071] 도 6은 개시된 기술의 양상들에 따른 데이터 처리 시스템 모델(600)의 블록도이다. 이러한 구현에서, 작업자 역할은 tf.distribute.Strategy로서 구현될 수 있고, 축소기 역할은 ReductionServerStrategy로서 NCCL의 일부로서 구현될 수 있다. ReductionServerStrategy는 작업자들과 축소기들 사이의 연결 및 전달을 다룬다. 이러한 구현은 통신 토폴로지, 메모리 관리, 데이터 복사 등에 대한 축소 서버 제어를 허용한다.
[0072] 도 7은 도 1, 도 2 및 도 3에 도시된 데이터 처리 시스템들(200, 300)과 함께 사용될 수 있는 컴퓨터 시스템(700)이다. 컴퓨터 시스템(700)은, 위에서 논의된 바와 같이, 작업 흐름 또는 작업들을 관리하고, 가상 머신들을 스케줄링하고, 인스턴스화하고, 관리하기 위해 도 2 및 도 3과 관련하여 논의된 시스템들뿐만 아니라 도 1의 컴퓨터 시스템(158)을 포함할 수 있다. 컴퓨터 시스템(700)은 일반적으로, 하나 이상의 처리 유닛들(CPU들, GPU들, TPU들)(702), 하나 이상의 네트워크 또는 다른 통신 인터페이스들(710), 메모리(712), 및 이들 컴포넌트들을 상호 연결하기 위한 하나 이상의 통신 버스들(714)을 포함한다. 시스템(700)은 선택적으로 사용자 인터페이스(704), 예컨대 디스플레이(706) 및 키보드(708)를 포함할 수 있다. 메모리(712)는 고속 랜덤 액세스 메모리를 포함할 수 있고, 또한 하나 이상의 자기 디스크 저장 디바이스들과 같은 비휘발성 메모리를 포함할 수 있다. 메모리(712)는 중앙 처리 유닛(들)(702)으로부터 원격으로 위치되는 대용량 저장소를 포함할 수 있다.
[0073] 메모리(712)는 운영 시스템(716)(예컨대, Linux 또는 Unix), 네트워크 통신 모듈(718), 시스템 초기화 모듈(720), 애플리케이션 소프트웨어(722) 및 라이브러리(730)를 저장한다. 운영 시스템(716)은 일반적으로, 다양한 기본 시스템 서비스들을 다루기 위한 그리고 하드웨어 의존적 작업들을 수행하기 위한 절차들을 포함한다. 네트워크 통신 모듈(718)은 인터넷, 다른 광역 네트워크들, 로컬 영역 네트워크들, 대도시 영역 네트워크들 등과 같은 하나 이상의 통신 네트워크들을 통해 FS(file system)(746), 서버들 또는 다른 컴퓨팅 디바이스들에 시스템(700)을 연결하기 위해 사용된다. 시스템 초기화 모듈(720)은 시스템(700)의 적절한 동작에 필요한 메모리에 저장된 다른 모듈들 및 데이터 구조들을 초기화한다. 일부 실시예들에서, 애플리케이션 소프트웨어(722)는 축소 연산자(726) 및 파티션 연산자(728)를 포함하고, 라이브러리(730)는 애플리케이션 독립적 축소 기능들(734) 및 파티션 기능들(736)을 포함한다. 애플리케이션 소프트웨어(722)는 또한 조합기 연산자(725)를 포함할 수 있다. 라이브러리(730) 내의 기능들, 절차들 또는 명령들은 대규모 데이터 처리 작업들(예컨대, 동기식 훈련)의 애플리케이션 독립적인 양상들을 취급하는 한편, 애플리케이션 소프트웨어(722)는 출력 데이터를 생성하기 위한 애플리케이션 특정 기능들을 제공한다. 애플리케이션 소프트웨어(722)는 도 3에서 이진 파일(310)에 의해 표현된, 조합기, 축소 및 분할 연산자들뿐만 아니라 대응하는 컴파일된 프로그램들에 대한 소스 프로그램들을 포함할 수 있다.
[0074] 도 3과 관련하여 설명된 바와 같이, 작업들 및 프로세스들을 추적하기 위해 하나 이상의 상태 테이블들(744)이 또한 포함된다. 일부 실시예들에서, 컴퓨터 시스템(700)은 작업자 프로세스들(738), 중간 파일들(740), 하나 이상의 마스터 프로세스(들)(742) 및 축소기 프로세스들을 포함한다. 작업자 프로세스들(438), 축소기 프로세스들(750) 및 마스터 프로세스들(442)의 상호 작용은 위에서 설명되었다.
[0075] 도 3과 관련하여 이전에 논의된 바와 같이, 애플리케이션 프로그래머는 하나 이상의 연산자들(724, 726, 728)을 포함하는 애플리케이션 소프트웨어(722)를 사용하여 스크립트 또는 프로그램을 생성할 수 있다. 스크립트 또는 프로그램은 이진 파일(310)로 처리되고 작업 대기열 마스터(314)에 제공된다.
예시적인 방법들
[0076] 도 8은 개시된 기술의 양상들에 따른 방법(800)의 블록도이다. 블록(820)에서, 이 방법은 하나 이상의 작업자 프로세스들을 실행하는 제1 세트의 가상 머신들을 인스턴스화한다. 가상 머신과 연관된 각각의 작업자 프로세스는 도 3과 관련하여 위에서 논의된 바와 같이 개개의 그래디언트들을 생성하기 위해 자신이 수신하는 데이터 블록에 대해 동작한다.
[0077] 블록(840)에서, 이 방법은 집합적으로 축소 서버를 형성하거나 축소 서버로서 동작하는 제2 세트의 가상 머신들을 인스턴스화한다. 축소 서버는 집계된 그래디언트 또는 단일 데이터 블록을 생성하도록 제1 세트의 가상 머신들에 의해 생성된 그래디언트들에 대해 동작한다. 예컨대, 축소 서버는 다수의 축소기들 또는 축소기 프로세스들을 포함할 수 있으며, 이들 각각은 제2 세트의 가상 머신들 중 각각의 가상 머신 상에서 실행되고, 도 3과 관련하여 위에서 논의된 바와 같이 그래디언트를 생성한다.
[0078] 블록(860)에서, 축소 서버는 단일 데이터 블록 또는 그래디언트를 제1 세트의 가상 머신들에 브로드캐스트한다. 그 후, 제1 세트의 가상 머신들은 출력 파일을 생성하도록 단일 그래디언트들 또는 데이터 블록을 추가로 처리할 수 있다.
[0079] 도 9는 개시된 기술의 양상들에 따른 방법 또는 처리 흐름(900)을 도시한다. 방법(900)은 도 8의 블록(820)에서 발생하는 처리 하위 단계들을 포함할 수 있다. 도 9에 도시된 바와 같이, 프로세스는 블록(910)에서 기계 학습 모델과 연관된 모델 가중치들 또는 파라미터들의 초기 세트로 시작된다. 결정 다이아몬드(920)에서, 모델 가중치들이 종료 조건을 충족하는지 여부에 관한 결정이 이루어진다. 종료 조건은 예컨대, 모델과 관련 데이터, 예컨대 파라미터들 사이의 에러의 양을 포함할 수 있다. 종료 조건이 충족되지 않는다면, 처리는 블록(930)으로 진행한다.
[0080] 블록(930)에서, 작업자는 데이터의 다음 미니 배치를 판독한다. 블록(940)에서, 작업자는 하나 이상의 그래디언트들을 생성하기 위해 판독된 미니 배치에 대해 SGD 동작들을 수행한다. 블록(950)에서, 작업자는 축소 또는 축소 처리를 위해 축소기들에 샤드된 그래디언트들을 푸시한다. 블록(960)에서, 작업자는 축소기들로부터 집계된 그래디언트들을 풀링하고, 블록(970)에서, 작업자는 모델 가중치들 또는 파라미터들을 업데이트하기 위해 집계된 그래디언트를 사용한다. 푸시 및 풀링 프로세스는 이전에 논의된 바와 같이 발생할 수 있다.
[0081] 업데이트된 모델 가중치들 또는 파라미터들은 종료 조건이 충족되는지 여부를 결정하기 위해 결정(920)으로 리턴된다. 종료 조건이 충족되지 않는다면, 작업자(들)는 블록들(930-970)로서 묘사된 프로세스의 다른 반복을 수행한다. 종료 조건이 충족된다면, 처리는 모델이 저장되는 블록(980)으로 진행한다. 그런 다음, 저장된 모델은 출력 파일로서 고객에게 제공될 수 있다. 도 9에 묘사된 프로세스는 vGPU들 또는 vTPU들을 사용하는 VM 상에서 실행되는 작업자에 의해 수행될 수 있다.
[0082] 도 10은 개시된 기술의 양상들에 따른 방법 또는 처리 흐름(1000)을 묘사한다. 위에서 언급되고 도 9에 도시된 바와 같이, 작업자들은 축소기들로부터 그래디언트들을 푸시 및 풀링한다. 도 10은 축소기에 의해 수행되는 처리를 묘사한다. 블록(1010)에서, 처리는 작업자(들)와의 네트워크 연결들의, 축소기에 의한 초기화로 시작된다. 축소기는 블록(1020)에서, 작업에 수반되는 모든 작업자들로부터 그래디언트들을 수신한다. 블록(1030)에서, 축소기는 자신이 각각의 작업자로부터 수신하는 각각의 그래디언트 샤드에 대해 축소 동작들을 수행한다. 블록(1040)에서, 축소기는 자신의 결과들을 모든 작업자들에게 브로드캐스트한다. 판정 다이아몬드(1050)에서, 축소기는 처리가 종료되는지 여부를 결정한다. 처리가 종료되지 않는다면, 축소기는 처리의 다른 반복을 위해 블록(1020)으로 리턴한다. 그렇지 않으면, 처리는 블록(1060)에서 종료된다. 도 10에 도시된 프로세스는 vCPU들을 사용하는 VM 상에서 수행될 수 있다.
[0083] 도 11은 개시된 기술의 양상들에 따른 예시적인 프로세스 흐름(1100)의 블록도이다. 도 11은 처리 반복을 위해 2개의 작업자들이 2개의 축소기들과 연관되는 예를 도시한다. 도시된 바와 같이, (서브-블록들(1101A, 1102A)로서 도시된) 각각의 작업자의 제1 그래디언트가 축소기 1로 푸시된다. 유사하게, 그래디언트 서브-블록들(1101B, 1102B)이 축소기 2로 푸시된다. 그런 다음, 축소기 1은 그래디언트들(1101A, 1102A)을 수신하는 축소기 1에 대한 축소 처리 블록(1120)을 통해 묘사된 바와 같이 자신이 수신하는 그래디언트들을 그래디언트(1110)로 집계한다. 축소기 2는 그래디언트들(1101B, 1102B)에 대해 유사한 처리를 수행할 것이다. 도시된 바와 같이, 그 후, 축소기 1 및 축소기 2는 블록(1120) 아래의 도 11의 부분에 묘사된 바와 같이, 이들 개개의 그래디언트들을 작업자 1 및 작업자 2에 브로드캐스트한다.
예시적인 사용 사례들
[0084] 위에서 논의된 바와 같이, 축소 서버는 동일한 all-reduce API를 재사용할 수 있어서, 축소 서버는 기존의 all-reduce 프리미티브들에 대한 드롭-인(drop-in) 대체로서 사용될 수 있다. 각각의 "all-reduce" 동작 동안, 작업자들은 축소기들로부터 그래디언트들을 푸시 및 풀링한다. 따라서 축소 서버는 집합적 동작들을 사용하는 대부분의 프레임워크들과 호환될 것이다.
[0085] 푸시 및 풀링 동작들은 듀플렉스(duplex)가 아니라, 축소 서버는 텐서 파티셔닝 및 파이프라이닝(pipelining)을 수행함으로써 양방향 네트워크 대역폭을 완전히 이용할 수 있다. 푸시 및 풀링 동작을 수행하기 전에, 그래디언트 텐서들이 작은 청크들로 파티셔닝될 수 있다. 제1 청크를 축소기에 푸시한 후에, 작업자는 예컨대, 동일한 반복의 부분으로서 또는 동일한 프로세스 사이클 동안 제1 청크를 실시간으로 풀링한다. 동시에, 작업자는 두 번째 청크를 푸시하기 시작한다. 따라서 양방향 대역폭은 첫 번째 청크 및 마지막 청크를 제외하고 완전히 이용된다.
[0086] 예로서, 축소 서버가 CAIP 훈련과 같은 NCCL AI 플랫폼 지원 외부에서 실행되고 있다고 가정하는 것은, 사용자들이 작업을 제출할 때 축소 서버를 인에이블할 수 있게 하는 옵션으로서 구현될 수 있다. 축소기 지지 측에 대해, 축소 서버가 인에이블된다면, CAIP 훈련은 축소기들로서 작업에 추가 CPU VM들을 추가할 것이다. 이러한 축소기 VM들은 축소기 이진을 포함하는 내부 컨테이너 이미지를 실행할 것이다.
[0087] 도 12에 도시된 바와 같이, 축소 서버는 큰 메시지 크기들에 대해 ~2x 알고리즘 대역폭을 달성한다. 이로써 알고리즘 대역폭은 축소들이 컴퓨팅되는 데이터의 볼륨을 축소들을 컴퓨팅하는 데 걸리는 시간으로 나눈 것을 지칭한다.
[0088] 신경망의 데이터 병렬 훈련의 맥락에서, 각각의 반복에서, 각각의 작업자가 입력 데이터의 미니 배치를 취하고, 미니 배치에 대해 각각의 가중치(또는 파라미터)의 그래디언트들을 컴퓨팅하고, 각각의 그래디언트에 대한 작업자들에 걸쳐 평균한 다음, 평균된 그래디언트들을 사용하여 모델 가중치들을 업데이트한다. allreduce는 "각각의 그래디언트에 대한 작업자들에 걸친 평균들"을 해결하기 위해 사용되며, 축소 서버는 allreduce에 대한 드롭-인 대체이다.
[0089] 개시된 기술의 비-제한적인 양상들은 다음의 특징들을 포함할 수 있다:
1. 데이터 처리 시스템은:
하나 이상의 호스트 처리 디바이스들 ― 하나 이상의 호스트 처리 디바이스들은 복수의 가상 머신들의 인스턴스화를 지원함 ―;
복수의 가상 머신들 중 하나 이상을 포함하는 제1 세트의 가상 머신들 ― 제1 세트의 가상 머신들은 하나 이상의 작업자 프로세스들을 실행하고, 각각의 작업자 프로세스는 개개의 그래디언트를 생성하도록 개개의 데이터 세트에 대해 동작함 ―;
복수의 가상 머신들 중 하나 이상을 포함하는 제2 세트의 가상 머신들을 포함하며, 제2 세트의 가상 머신들은 집계된 그래디언트를 생성하기 위해 각각의 작업자 프로세스에 의해 생성된 각각의 개별 그래디언트의 적어도 일부에 대해 동작하는 하나 이상의 축소기 프로세스들을 실행하고;
하나 이상의 축소기 프로세스들은 집계된 그래디언트가 각각의 작업자 프로세스에 브로드캐스트되게 한다.
2. 1에 따른 시스템에서, 개개의 데이터 세트 각각은 동일한 크기의 데이터 블록들을 포함한다.
3. 1 또는 2에 따른 시스템에서, 동일한 크기의 데이터 블록들은 입력 데이터 스트림을 분할함으로써 생성된 데이터 블록들을 포함한다.
4. 1 또는 2에 따른 시스템에서, 동일한 크기의 데이터 블록들은 하나 이상의 가상 머신들 상에서 실행되는 축소기 프로세스들의 수에 비례하는 크기이다.
5. 1 내지 4 중 어느 하나에 따른 시스템에서, 하나 이상의 호스트 처리 디바이스들은 제1 세트의 가상 머신들을 호스팅하기 위한 적어도 하나의 GPU(graphics processing unit)를 포함한다.
6. 1 내지 5 중 어느 하나에 따른 시스템에서, 하나 이상의 호스트 처리 디바이스들은 제2 세트의 가상 머신들을 호스팅하기 위한 적어도 하나의 CPU(central processing unit)를 포함한다.
7. 1 내지 6 중 어느 하나에 따른 시스템에서, 제1 세트의 가상 머신들의 사용과 연관된 제1 총 대역폭은 제2 세트의 가상 머신들의 사용과 연관된 제2 총 대역폭과 동일하다.
8. 1 내지 7 중 어느 하나에 따른 시스템에서, 하나 이상의 축소기 프로세스들은 하나 이상의 축소기 프로세스들 중 제1 축소기 프로세스에 의해 그래디언트들 중 제1 그래디언트를 수신하는 것에 의해 정의된 시간 데드라인 내에 그래디언트들을 수용한다.
9. 1 내지 8 중 어느 하나에 따른 시스템에서, 하나 이상의 작업자 프로세스들은 API(Application Programming Interface) 라이브러리의 통신 프리미티브로서 인스턴스화되거나 또는 API 라이브러리와 별개이다.
10. 9에 따른 시스템에서, 하나 이상의 작업자 프로세스들이 API 라이브러리의 통신 프리미티브로서 인스턴스화될 때, 인스턴스화된 작업자 프로세스들은 하나 이상의 축소기 프로세스들로부터의 그래디언트들을 푸시 및 풀링한다.
11. 9에 따른 시스템에서, 하나 이상의 작업자 프로세스들이 API 라이브러리와 별개로 인스턴스화될 때, 축소기 프로세스 함수 사이의 연결들이 하나 이상의 작업자 프로세서들과 하나 이상의 축소기 프로세스들 사이의 연결들 및 데이터 전송들을 관리한다.
12. 1 내지 11 중 어느 하나에 따른 시스템에서, 하나 이상의 작업자 프로세스들의 각각의 작업자 프로세스는 각각의 작업자 프로세스에 의해 생성된 그래디언트들을 개개의 그래디언트 청크들로 파티셔닝하고, 주어진 작업자 프로세스는 제1 축소 프로세스로부터 제1 그래디언트 청크를 풀링하는 한편, 주어진 작업자 프로세스는 제2 그래디언트 청크를 제1 축소 프로세스로 푸시한다.
13. 1 내지 12 중 어느 하나에 따른 시스템에서, 작업자 프로세스들은 신경망을 훈련시키는 맥락에서 미니 배치 확률적 그래디언트 하강에 따라 신경망의 가중치 계수를 조정한다.
14. 1 내지 13 중 어느 하나에 따른 시스템에서, 그래디언트 배치들의 나머지를 무시하는 하나 이상의 작업자 프로세스들의 서브세트로부터 수신된 그래디언트 배치들의 서브세트에 대해서만 하나 이상의 축소기 프로세스들에 의해 축소가 컴퓨팅되며, 미리 결정된 크기(m)를 갖는 서브세트 또는 서브세트의 크기는 제1 그래디언트 배치의 수신 후 미리 결정된 데드라인(T)까지 수신된 그래디언트 배치들에 의해 결정된다.
15. 데이터 처리 시스템은:
하나 이상의 호스트 처리 디바이스들 ― 하나 이상의 호스트 처리 디바이스들은 복수의 가상 머신들의 인스턴스화를 지원함 ―;
복수의 가상 머신들 중 하나 이상을 포함하는 제1 세트의 가상 머신들 ― 제1 세트의 가상 머신들은 하나 이상의 작업자 프로세스들을 실행하고, 각각의 작업자 프로세스는 개개의 그래디언트를 각각 생성하도록 개개의 데이터 블록에 대해 동작함 ―;
하나 이상의 축소기들을 포함하는 축소 서버를 포함하며, 각각의 축소기는 집계된 그래디언트를 생성하기 위해 각각의 개별 그래디언트의 적어도 일부에 대해 동작하는 축소기 프로세스를 실행하는 가상 머신을 포함하고;
축소 서버는 하나 이상의 작업자 프로세스들을 실행하는 하나 이상의 가상 머신들에 집계된 그래디언트를 브로드캐스트한다.
16. 15의 데이터 처리 시스템에서, 그래디언트 배치들의 나머지를 무시하는 작업자들의 서브세트로부터 수신된 그래디언트 배치들의 서브세트에 대해서만 축소 서버에 의해 축소가 컴퓨팅되며, 미리 결정된 크기(m)를 갖는 서브세트 또는 서브세트의 크기는 제1 그래디언트 배치의 수신 후 미리 결정된 데드라인(T)까지 수신된 그래디언트 배치들에 의해 결정된다.
17. 15 또는 16에 따른 시스템에서, 개개의 데이터 블록 각각은 동일한 크기의 데이터 블록들을 포함한다.
18. 15 내지 17 중 어느 하나에 따른 시스템에서, 동일한 크기의 데이터 블록들은 하나 이상의 가상 머신들 상에서 실행되는 축소기 프로세스들의 수에 비례하는 크기이다.
19. 15 내지 18 중 어느 하나에 따른 시스템에서, 하나 이상의 호스트 처리 디바이스들은 제1 세트의 가상 머신들을 호스팅하기 위한 적어도 하나의 GPU(graphics processing unit)를 포함한다.
20. 1 내지 19 중 어느 하나에 따른 시스템에서, 하나 이상의 호스트 처리 디바이스들은 축소 서버의 축소기들을 호스팅하기 위한 적어도 하나의 CPU(central processing unit)를 포함한다.
21. 15 내지 20 중 어느 하나에 따른 시스템에서, 제1 세트의 가상 머신들의 사용과 연관된 제1 총 대역폭은 축소 서버의 사용과 연관된 제2 총 대역폭과 동일하다.
22. 15 내지 21 중 어느 하나에 따른 시스템에서, 각각의 축소기가 하나 이상의 축소기들 중 제1 축소기에 의해 그래디언트들 중 제1 그래디언트를 수신하는 것에 의해 정의된 시간 데드라인 내에 그래디언트들을 수용한다.
23. 1 내지 22 중 어느 하나에 따른 시스템에서, 하나 이상의 작업자 프로세스들은 API(Application Programming Interface) 라이브러리의 통신 프리미티브로서 인스턴스화되거나 또는 API 라이브러리와 별개이다.
24. 23에 따른 시스템에서, 하나 이상의 작업자 프로세스들이 API 라이브러리의 통신 프리미티브로서 인스턴스화될 때, 인스턴스화된 작업자 프로세스들은 하나 이상의 축소기 프로세스들로부터의 그래디언트들을 푸시 및 풀링한다.
25. 23에 따른 시스템에서, 하나 이상의 작업자 프로세스들이 API 라이브러리와 별개로 인스턴스화될 때, 축소기 프로세스 함수 사이의 연결들이 하나 이상의 작업자 프로세서들과 하나 이상의 축소기 프로세스들 사이의 연결들 및 데이터 전송들을 관리한다.
26. 15 내지 25 중 어느 하나에 따른 시스템에서, 하나 이상의 작업자 프로세스들은 각각의 작업자 프로세스에 의해 생성된 그래디언트들을 개개의 그래디언트 청크들로 파티셔닝하고, 주어진 작업자 프로세스는 제1 축소기로부터 제1 그래디언트 청크를 풀링하는 한편, 주어진 작업자 프로세스는 제2 그래디언트 청크를 축소기로 푸시한다.
27. 15 내지 26 중 어느 하나에 따른 시스템에서, 작업자 프로세스들은 신경망을 훈련시키는 맥락에서 미니 배치 확률적 그래디언트 하강에 따라 신경망의 가중치 계수를 조정한다.
28. 동기식 분산 훈련을 위한 데이터 처리 방법은:
하나 이상의 작업자 프로세스들을 실행하는 제1 세트의 가상 머신들을 인스턴스화하는 단계 ― 각각의 작업자 프로세스는 개개의 그래디언트를 각각 생성하도록 개개의 데이터 블록에 대해 동작함 ―;
축소 서버를 포함하는 제2 세트의 가상 머신들을 인스턴스화하는 단계 ― 제2 세트의 가상 머신들은 집계된 그래디언트를 생성하기 위해 각각의 개별 그래디언트의 적어도 일부에 대해 동작하는 축소기 프로세스를 실행함 ―; 및
축소 서버에 의해, 집계된 그래디언트를 제1 세트의 가상 머신들에 브로드캐스트하는 단계를 포함한다.
29. 28에 따른 데이터 처리 방법은, 제1 세트의 가상 머신들에 의해, 출력 데이터 파일을 생성하도록, 집계된 그래디언트를 처리하는 단계를 포함한다.
30. 28 또는 29에 따른 데이터 처리 방법은, 그래디언트 배치들의 나머지를 무시하는 작업자들의 서브세트로부터 수신된 그래디언트 배치들의 서브세트에 대해서만 축소를 컴퓨팅하는 단계를 포함하며, 미리 결정된 크기(m)를 갖는 서브세트 또는 서브세트의 크기는 제1 그래디언트 배치의 수신 후 미리 결정된 데드라인(T)까지 수신된 그래디언트 배치들에 의해 결정된다.
31. 28 내지 30 중 어느 하나에 따른 데이터 처리 방법에서, 하나 이상의 작업자 프로세스들을 실행하는 제1 세트의 가상 머신들을 인스턴스화하는 단계는 적어도 하나의 GPU(graphics processing unit) 상에서 제1 세트의 가상 머신들을 인스턴스화하는 단계를 포함한다.
32. 28 내지 31 중 어느 하나에 따른 데이터 처리 방법에서, 축소 서버를 포함하는 제2 세트의 가상 머신들을 인스턴스화하는 단계가 축소 서버의 하나 이상의 축소기들을 호스팅하기 위한 하나 이상의 CPU(central processing unit)를 인스턴스화하는 단계를 포함한다.
33. 32에 따른 데이터 처리 방법은, 하나 이상의 축소기들 각각에 의해, 하나 이상의 축소기들 중 제1 축소기에 의해 그래디언트들 중 제1 그래디언트를 수신하는 것에 의해 정의된 시간 데드라인 내에 그래디언트들을 수용하는 단계를 포함한다.
34. 28 내지 33 중 어느 하나에 따른 데이터 처리 방법에서, 제1 세트의 가상 머신들의 사용과 연관된 제1 총 대역폭은 축소 서버의 사용과 연관된 제2 총 대역폭과 동일하다.
35. 데이터 처리 시스템은:
하나 이상의 호스트 처리 디바이스들 ― 하나 이상의 호스트 처리 디바이스들은 복수의 가상 머신들의 인스턴스화를 지원함 ―;
복수의 가상 머신들 중 하나 이상을 포함하는 제1 세트의 가상 머신들 ― 제1 세트의 가상 머신들은 하나 이상의 작업자 프로세스들을 실행하고, 각각의 작업자 프로세스는 개개의 수치 값을 생성하도록 개개의 데이터 세트에 대해 동작함 ―;
복수의 가상 머신들 중 하나 이상을 포함하는 제2 세트의 가상 머신들을 포함하며, 제2 세트의 가상 머신들은 집계된 수치 값을 생성하기 위해 각각의 작업자 프로세스에 의해 생성된 각각의 개별 수치 값의 적어도 일부에 대해 동작하는 하나 이상의 축소기 프로세스들을 실행하고;
하나 이상의 축소기 프로세스들은 집계된 수치 값이 각각의 작업자 프로세스에 브로드캐스트되게 한다.
36. 35에 따른 데이터 처리 시스템에서, 각각의 수치 값은 개개의 그래디언트이고, 집계된 수치 값은 집계된 그래디언트이다.
37. 1 내지 14 중 어느 하나 및 36에 따른 데이터 처리 시스템.
38. 데이터 처리 시스템은:
하나 이상의 호스트 처리 디바이스들 ― 하나 이상의 호스트 처리 디바이스들은 복수의 가상 머신들의 인스턴스화를 지원함 ―;
복수의 가상 머신들 중 하나 이상을 포함하는 제1 세트의 가상 머신들 ― 제1 세트의 가상 머신들은 하나 이상의 작업자 프로세스들을 실행하고, 각각의 작업자 프로세스는 개개의 수치 값을 각각 생성하도록 개개의 데이터 블록에 대해 동작함 ―;
하나 이상의 축소기들을 포함하는 축소 서버를 포함하며, 각각의 축소기는 집계된 수치 값을 생성하기 위해 각각의 개별 수치 값의 적어도 일부에 대해 동작하는 축소기 프로세스를 실행하는 가상 머신을 포함하고;
축소 서버는 하나 이상의 작업자 프로세스들을 실행하는 하나 이상의 가상 머신들에 집계된 수치 값을 브로드캐스트한다.
39. 38에 따른 데이터 처리 시스템에서, 각각의 수치 값은 개개의 그래디언트이고, 집계된 수치 값은 집계된 그래디언트이다.
40. 15 내지 26 중 어느 하나 및 39에 따른 데이터 처리 시스템.
[0090] 달리 언급되지 않는 한, 전술한 대안적인 예들은 상호 배타적이지 않으며, 고유한 이점들을 달성하기 위해 다양한 조합들로 구현될 수 있다. 청구항들에 의해 정의된 요지를 벗어나지 않으면서 앞서 논의한 특징들의 이러한 그리고 다른 변형들 및 결합들이 이용될 수 있으므로, 실시예들의 상기 설명은 청구항들에 의해 정의된 요지의 한정으로라기보다는 예시로 취해져야 한다. 추가로, 본 명세서에서 설명한 예들뿐만 아니라, "예컨대," "포함하는" 등과 같이 표현된 절들의 제공은 청구항들의 요지를 특정 예들로 한정하는 것으로 해석되지 않아야 하며, 그보다 예들은 많은 가능한 실시예들 중 단 하나를 예시하는 것으로 의도된다. 또한, 서로 다른 도면들에서 동일한 참조 번호들이 동일한 또는 비슷한 엘리먼트들을 식별할 수 있다.

Claims (20)

  1. 데이터 처리 시스템으로서,
    하나 이상의 호스트(host) 처리 디바이스들 ― 상기 하나 이상의 호스트 처리 디바이스들은 복수의 가상 머신(virtual machine)들의 인스턴스화(instantiation)를 지원함 ―;
    상기 복수의 가상 머신들 중 하나 이상을 포함하는 제1 세트의 가상 머신들 ― 상기 제1 세트의 가상 머신들은 하나 이상의 작업자 프로세스들을 실행하고, 각각의 작업자 프로세스는 개개의 그래디언트(gradient)를 생성하도록 개개의 데이터 세트에 대해 동작함 ―; 및
    상기 복수의 가상 머신들 중 하나 이상을 포함하는 제2 세트의 가상 머신들을 포함하며,
    상기 제2 세트의 가상 머신들은 집계(aggregate)된 그래디언트를 생성하기 위해 각각의 작업자 프로세스에 의해 생성된 각각의 개별 그래디언트의 적어도 일부에 대해 동작하는 하나 이상의 축소기(reducer) 프로세스들을 실행하고;
    상기 하나 이상의 축소기 프로세스들은 상기 집계된 그래디언트가 각각의 작업자 프로세스에 브로드캐스트되게 하는,
    데이터 처리 시스템.
  2. 제1 항에 있어서,
    상기 개개의 데이터 세트 각각은 동일한 크기의 데이터 블록들을 포함하는,
    데이터 처리 시스템.
  3. 제2 항에 있어서,
    상기 동일한 크기의 데이터 블록들은 입력 데이터 스트림을 분할함으로써 생성된 데이터 블록들을 포함하는,
    데이터 처리 시스템.
  4. 제2 항에 있어서,
    상기 동일한 크기의 데이터 블록들은 상기 하나 이상의 가상 머신들 상에서 실행되는 상기 축소기 프로세스들의 수에 비례하는 크기인,
    데이터 처리 시스템.
  5. 제1 항에 있어서,
    상기 하나 이상의 호스트 처리 디바이스들은 상기 제1 세트의 가상 머신들을 호스팅하기 위한 적어도 하나의 GPU(graphics processing unit)를 포함하는,
    데이터 처리 시스템.
  6. 제1 항에 있어서,
    상기 하나 이상의 호스트 처리 디바이스들은 상기 제2 세트의 가상 머신들을 호스팅하기 위한 적어도 하나의 CPU(central processing unit)를 포함하는,
    데이터 처리 시스템.
  7. 제1 항에 있어서,
    상기 제1 세트의 가상 머신들의 사용과 연관된 제1 총 대역폭은 상기 제2 세트의 가상 머신들의 사용과 연관된 제2 총 대역폭과 동일한,
    데이터 처리 시스템.
  8. 제1 항에 있어서,
    상기 하나 이상의 축소기 프로세스들은 상기 하나 이상의 축소기 프로세스들 중 제1 축소기 프로세스에 의해 그래디언트들 중 제1 그래디언트의 수신에 의해 정의된 시간 데드라인(deadline) 내에 상기 그래디언트들을 수용하는,
    데이터 처리 시스템.
  9. 제1 항에 있어서,
    상기 하나 이상의 작업자 프로세스들은 API(Application Programming Interface) 라이브러리(library)의 통신 프리미티브(primitive)로서 인스턴스화되거나 또는 API 라이브러리와 별개인,
    데이터 처리 시스템.
  10. 제9 항에 있어서,
    상기 하나 이상의 작업자 프로세스들이 API 라이브러리의 통신 프리미티브로서 인스턴스화될 때, 인스턴스화된 작업자 프로세스들은 상기 하나 이상의 축소기 프로세스들로부터의 그래디언트들을 푸시(push) 및 풀링(pull)하는,
    데이터 처리 시스템.
  11. 제9 항에 있어서,
    상기 하나 이상의 작업자 프로세스들이 API 라이브러리와 별개로 인스턴스화될 때, 축소기 프로세스 함수 사이의 연결들은 하나 이상의 작업자 프로세서와 상기 하나 이상의 축소기 프로세스들 사이의 연결들 및 데이터 전송들을 관리하는,
    데이터 처리 시스템.
  12. 제1 항에 있어서,
    상기 하나 이상의 작업자 프로세스들의 각각의 작업자 프로세스는 각각의 작업자 프로세스에 의해 생성된 그래디언트들을 개개의 그래디언트 청크(chunk)들로 파티셔닝(partition)하고,
    주어진 작업자 프로세스는 제1 축소 프로세스로부터 제1 그래디언트 청크를 풀링하는 한편, 상기 주어진 작업자 프로세스는 제2 그래디언트 청크를 상기 제1 축소 프로세스로 푸시하는,
    데이터 처리 시스템.
  13. 제1 항에 있어서,
    상기 작업자 프로세스들은 신경망을 훈련시키는 맥락에서 미니 배치 확률적 그래디언트 하강(mini batch stochastic gradient descent)에 따라 신경망의 가중치 계수를 조정하는,
    데이터 처리 시스템.
  14. 제1 항에 있어서,
    그래디언트 배치(batch)들의 나머지를 무시하는 상기 하나 이상의 작업자 프로세스들의 서브세트로부터 수신된 그래디언트 배치들의 서브세트에 대해서만 상기 하나 이상의 축소기 프로세스들에 의해 축소가 컴퓨팅되며,
    미리 결정된 크기(m)를 갖는 서브세트 또는 상기 서브세트의 크기는 제1 그래디언트 배치의 수신 후 미리 결정된 데드라인(T)까지 수신된 그래디언트 배치들에 의해 결정되는,
    데이터 처리 시스템.
  15. 동기식 분산 훈련을 위한 데이터 처리 방법으로서,
    하나 이상의 작업자 프로세스들을 실행하는 제1 세트의 가상 머신들을 인스턴스화하는 단계 ― 각각의 작업자 프로세스는 개개의 그래디언트를 각각 생성하도록 개개의 데이터 블록에 대해 동작함 ―;
    축소 서버를 포함하는 제2 세트의 가상 머신들을 인스턴스화하는 단계 ― 상기 제2 세트의 가상 머신들은 집계된 그래디언트를 생성하기 위해 각각의 개별 그래디언트의 적어도 일부에 대해 동작하는 축소기 프로세스를 실행함 ―; 및
    상기 축소 서버에 의해, 상기 집계된 그래디언트를 상기 제1 세트의 가상 머신들에 브로드캐스트하는 단계를 포함하는,
    동기식 분산 훈련을 위한 데이터 처리 방법.
  16. 제15 항에 있어서,
    그래디언트 배치들의 나머지를 무시하는 작업자들의 서브세트로부터 수신된 그래디언트 배치들의 서브세트에 대해서만 축소를 컴퓨팅하는 단계를 포함하며,
    미리 결정된 크기(m)를 갖는 서브세트 또는 상기 서브세트의 크기는 제1 그래디언트 배치의 수신 후 미리 결정된 데드라인(T)까지 수신된 그래디언트 배치들에 의해 결정되는,
    동기식 분산 훈련을 위한 데이터 처리 방법.
  17. 제15 항에 있어서,
    상기 하나 이상의 작업자 프로세스들을 실행하는 제1 세트의 가상 머신들을 인스턴스화하는 단계는 적어도 하나의 GPU(graphics processing unit) 상에서 상기 제1 세트의 가상 머신들을 인스턴스화하는 단계를 포함하는,
    동기식 분산 훈련을 위한 데이터 처리 방법.
  18. 제15 항에 있어서,
    상기 축소 서버를 포함하는 제2 세트의 가상 머신들을 인스턴스화하는 단계는 상기 축소 서버의 하나 이상의 축소기들을 호스팅하기 위한 하나 이상의 CPU(central processing unit)를 인스턴스화하는 단계를 포함하는,
    동기식 분산 훈련을 위한 데이터 처리 방법.
  19. 제18 항에 있어서,
    상기 하나 이상의 축소기들 각각에 의해, 상기 하나 이상의 축소기들 중 제1 축소기에 의해 그래디언트들 중 제1 그래디언트를 수신하는 것에 의해 정의된 시간 데드라인 내에 상기 그래디언트들을 수용하는 단계를 포함하는,
    동기식 분산 훈련을 위한 데이터 처리 방법.
  20. 제15 항에 있어서,
    상기 제1 세트의 가상 머신들의 사용과 연관된 제1 총 대역폭은 상기 축소 서버의 사용과 연관된 제2 총 대역폭과 동일한,
    동기식 분산 훈련을 위한 데이터 처리 방법.
KR1020237002240A 2020-10-21 2021-10-14 빠른 분산 훈련을 위한 축소 서버 KR20230024418A (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US17/076,393 2020-10-21
US17/076,393 US11966766B2 (en) 2020-10-21 2020-10-21 Reduction server for fast distributed training
PCT/US2021/054973 WO2022086780A1 (en) 2020-10-21 2021-10-14 Reduction server for fast distributed training

Publications (1)

Publication Number Publication Date
KR20230024418A true KR20230024418A (ko) 2023-02-20

Family

ID=78536619

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020237002240A KR20230024418A (ko) 2020-10-21 2021-10-14 빠른 분산 훈련을 위한 축소 서버

Country Status (5)

Country Link
US (1) US11966766B2 (ko)
EP (1) EP4232898A1 (ko)
KR (1) KR20230024418A (ko)
CN (1) CN115917509A (ko)
WO (1) WO2022086780A1 (ko)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117725019A (zh) * 2024-02-07 2024-03-19 北京壁仞科技开发有限公司 用于gpu集合通信的方法和计算系统

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10698766B2 (en) 2018-04-18 2020-06-30 EMC IP Holding Company LLC Optimization of checkpoint operations for deep learning computing
US11315013B2 (en) * 2018-04-23 2022-04-26 EMC IP Holding Company LLC Implementing parameter server in networking infrastructure for high-performance computing

Also Published As

Publication number Publication date
CN115917509A (zh) 2023-04-04
WO2022086780A1 (en) 2022-04-28
US20220121465A1 (en) 2022-04-21
EP4232898A1 (en) 2023-08-30
US11966766B2 (en) 2024-04-23

Similar Documents

Publication Publication Date Title
US10728091B2 (en) Topology-aware provisioning of hardware accelerator resources in a distributed environment
Pan et al. Multi-GPU graph analytics
US7647590B2 (en) Parallel computing system using coordinator and master nodes for load balancing and distributing work
CN102307133B (zh) 一种公有云平台虚拟机调度方法
Hu et al. Flutter: Scheduling tasks closer to data across geo-distributed datacenters
US10310908B2 (en) Dynamic usage balance of central processing units and accelerators
US9785472B2 (en) Computing cluster performance simulation using a genetic algorithm solution
US20160378554A1 (en) Parallel and Distributed Computing Using Multiple Virtual Machines
US10970649B2 (en) Automated reinforcement-learning-based application manager that uses local agents
US10719366B1 (en) Dynamic and selective hardware acceleration
US20170091668A1 (en) System and method for network bandwidth aware distributed learning
Naik et al. Multiobjective virtual machine selection for task scheduling in cloud computing
Kijsipongse et al. A hybrid GPU cluster and volunteer computing platform for scalable deep learning
WO2024082985A1 (zh) 一种安装有加速器的卸载卡
Li et al. Wide-area spark streaming: Automated routing and batch sizing
CN111666158A (zh) 一种基于Kubernetes的容器调度方法、装置、存储介质及电子设备
US20210390405A1 (en) Microservice-based training systems in heterogeneous graphic processor unit (gpu) cluster and operating method thereof
KR20230024418A (ko) 빠른 분산 훈련을 위한 축소 서버
US9009713B2 (en) Apparatus and method for processing task
CN113608858A (zh) 一种基于MapReduce架构的数据同步用块任务执行系统
US10198291B2 (en) Runtime piggybacking of concurrent jobs in task-parallel machine learning programs
Liu A Programming Model for the Cloud Platform
Fiaidhi et al. Empowering extreme automation via zero-touch operations and GPU parallelization
Rachuri et al. Optimizing Near-Data Processing for Spark
Liu et al. Optimize resource placement for in-network computing