[리뷰] Distributed Deep Learning in Open Collaborations

daewoo kim
10 min readJul 29, 2021

--

SETI@home을 통해 외계 생명체를 찾았던 것 분산 컴퓨팅 기술을 training에 사용할 수 있을까…..?

뉴럴 네트워크 모델의 크기가 커지면서 모델 학습을 위해 점점 더 많은 컴퓨팅 리소스를 필요로 하게 되어 최근 GPT-3와 같은 모델은 수백~수천대의 GPU을 사용해야 한다.

이렇게 거대한 학습 리소스를 소유한 기업은 매우 소수로 컴퓨팅 리소스 소유에 따른 AI 사용의 불평등이 가속화되고 있는 상황에서 다양한 노드가 제공하는 컴퓨팅 리소스를 모아 Super-Computer급 성능을 제공하는 Collaborative training이 그 대안으로 떠오르고 있다.

미국 Hugging Face, 러시아, 캐나다의 연구진들은 지난 6월 분산 컴퓨팅을 이용하여 Collaborative training을 구현한 DeDLOC(Distirbuted Deep Learning in Open Collaborations)을 발표하였다.

DeDLOC를 이해하면서 Collaborative training의 Challenge와 기본 구현에 대해 이해해보도록 하자.

관련 연구

Volunteer Computing 또는 Grid Computing으로 불리는 분산 컴퓨팅 기술은 과거 SETI@home이나 최근 Folding@home에서 이미 구현되어 상용화되었다.

SETI@home

  • 외계 지적 생명체를 탐구하는 프로젝트.
  • 외계로부터의 신호를 전파망원경으로 수신한 후 데이터를 일정 단위로 작게 나누어 PC로 분산시켜 데이터를 분석함.
  • 20년 3월 현재 79만명의 활성 컴퓨터가 42 peta flops를 제공하였음
  • 의미있는 결과가 없어 20년 3월 31일 프로젝트 중단.
  • 현재는 Hibernation mode로 더이상 운영되지 않음

Folding@home

  • 단백질 folding을 연구하는 프로젝트로 현재는 Covid-19 연구를 진행 중
  • 356,000 개 이상의 GPU가 참여한 분산 컴퓨팅 프로젝트로 20년4월 기준 70만명의 자원봉사자가 참여 2.43 exaflops를 제공

기계 학습에 사용된 volunteer computing는 다음과 같은 프로젝트가 있다.

  • MLC@home
  • Learning@home

Collaborative training의 Challenge

위와 같은 Volunteer Computing을 활용하면 Super-Computer의 성능을 능가할 수 있으나 Collaborative training에 활용하기 위해선 여러 가지 Challenge 가 존재한다.

  1. 참여하는 디바이스의 종류가 GPU 서버부터 스마트폰까지 매우 다양하며 성능의 편차가 매우 크다.
  2. 네트워크에 연결된 디바이스가 Bandwidth가 제한적이고 불안정적인 가정용 인터넷에 연결되어 있다.
  3. 프로그램에 참가자는 파트타임으로 디바이스를 기부하고 있어 마음대로 실험에 참가하거나 종료한다.

이러한 환경에서 뉴럴네트워크를 학습하는 것은 이론적으로 가능하지만 협소한 범위 조건에서만 효율적이다.

예를들어 최근 Data Parallelism을 구현하기 위해 사용되는 Ring All-Reduce 방식은 네트워크 latency와 bandwidth의 변동이 클 경우 성능이 크게 저하되며 NAT(Network Address Translation) 문제는 Volunteer Computing을 더욱 어렵게 만든다.

이 논문에서는 위와 같은 Challenge를 분석하여 Heterogeneous Device를 수용할 수 있도록 설계한 DeDLOC(Distributed Deep Learning in Open Collaborations) 방법을 제안한다.

DeDLOC의 Collaborative Training 전략

실제적으로 Collaborative training을 구현하기 위해서 다음과 같은 문제를 해결해야 한다.

  • 동적으로 변화하는 하드웨어 및 네트워크 조건에서 최적의 학습 성능을 유지하는 문제
  • 일관되지 않은 참가자로 구성된 조건에서 일관된 학습 결과를 보장하는 문제

전략 1. 동적인 환경에서 Training 일관성 확보 전략

많은 SOTA 모델들은 엄격한 학습 체계을 요구하며 권장 배치 크기를 벗어나거나 오래된 기울기(stale gradients)를 사용하게 되면 최종 학습 결과에 상당한 영향을 미치게 된다.

Collaborative training과 같이 디바이스의 참여와 탈퇴가 일상이므로 특별한 예방조치가 없다면 모델의 최종 accuracy가 크게 다를 수 있다. DeDLOC는 다training 일관성을 확보하기 위해 다음과 같은 방법을 사용한다.

  • 참여자의 수에 관계없이 고정 hyper-parameter를 사용하고 동기식 data parallelism을 사용
  • 상대적으로 느린 통신 속도를 개선하기 위해 peer간 통신을 덜 할 수 있도록 Large batch training을 사용함
  • 각 디바이스는 전체 협력 목표 배치 크기에 도달할 때까지 자신의 페이스대로 gradient를 누적(accumulate)한 후 gradients를 교환하고 optimizer step을 수행

전략 2. 가용 디바이스 수에 따라 학습 throughput을 최대화하는 통신 전략

low latency와 동종 하드웨어로 구성된 분산 네트워크에서는 Ring All-Reduce방식이 가장 잘 동작하지만 Parameter Server 방식은 다수의 worker 노드와 통신하기 위해 Parameter Server는 전용 high bandwidth이 필요하다.

예를들어 동종의 참여자가 Ring All-Reduce로 collaborative training을 시작하였다가 새로운 참여자가 합류하게 되면 결국 네트워크 부하를 처리할 수 없게 되어 다른 전략으로 전환해야 한다.

이를 위해 다음과 같은 하드웨어와 네트워크 제한 조건에 따라 모든 peer에 알맞은 역할을 동적으로 할당하는 프로토콜이 필요하다.

DeDLOC의 목표는 위의 제한조건에서 가장 높은 training throughput, 즉 단위시간 당 목표배치 크기(B)로 가장 많은 SGD 를 수행하는 통신 전략을 찾는 것이다. DeDLOC는 단순성과 효율성을 위해 Microsoft Zero-Offload의 Delayed Parameter Updates(DPU) 방식을 사용한다.

DeDLOC의 동작 방식

DeDLOC는 Role 할당 알고리즘을 통해 Collaborative Training에 참가한 peer 에 3가지 Role 중 1가지 Role을 부여한다.

  • R1&R2: 학습의 전 과정(Pick → Forward → Backward → Aggregate → Update)에 참여하는 Role: 주로 GPU 노드
  • R1: Aggregate 단계를 제외한 학습의 전 과정에 참여하는 Role: 네트워크의 bandwidth가 낮은 노드
  • R2: Aggregate 만 수행하는 Role: 주로 CPU 노드 (Non-GPU 노드)

6개의 peer가 Collaborative Training에 참가하는 DeDLOC 예제

R1: 4개, R2: 1개, R1&R2: 1개로 구성된 네트워크에서 DeDLOC가 Collaborative training을 하는 방법을 설명한다.

DeDLOC로 학습 시 Peer간 자주 통신하는 것을 방지하기 위해 매우 큰 배치를 사용한다.

  • (1) 각 Peer는 Target Batch Size에 도달할 때까지 R1 peer과 R1&R2 peer는 자체적으로 gradients을 accumulation을 수행함
  • (2) Target Batch Size에 도달하면 R1 peer와 R1&R2 Peer가 accumulation하고 있는 gradients를 Aggregate를 담당하는R1&R2 peer와 R2 peer에 보낸다.
  • (3) R1&R2 peer와 R2 peer는 Aggregate를 수행한 후 Aggregate된 결과를 모든 R1 peer와 R1&R2 peer로 전송한다.
  • (4) R1 peer와 R1&R2 peer의 Optimizer가 Update 과정을 수행한다.
  • (5) (1) ~ (4)을 반복한다.

동기화 업데이트를 사용하는 Regular HPC Cluster 상에서 large batch training하는 효과를 볼 수 있다.

Real-world collaborative training 결과

DeDLOC의 실제 성능을 측정하기 위해 자원자들을 대상으로 collaborative training을 실시하였다. 바이어스를 피하기 위해 특정 형태의 참여를 유도하지 않고 자원자들은 제공할 하드웨어와 기간을 자유롭게 선택할 수 있도록 하였다. 다음은 학습 조건 및 학습 기간 중 통계이다. DeDLOC 논문에서 학습한 모델을 sahajBERT라고 명명하였다.

  • 모델 아키텍처: ALBERT-Large
  • 데이터셋: Wikipedia & OSCAR의 다국어 corpus 의 벵골어 부분
  • 40명의 자원자 & 91개의 Unique Device
  • 자원자의 중간 GPU 시간: 약 1.5일
  • 동시 활성화 디바이스의수: 15~35대
  • 자원자의 디바이스가 교육시간당 소비한 네트워크 트래픽: 6.95GB

결과적으로 모델은 8일간 훈련 후 수렴되었으며 8개의 V100 GPU를 사용한 것 보다 1.8배 가량 더 빨랐다.

레퍼런스

[1] Distributed Deep Learning In Open Collaborations

[2] Deep Learning over the Internet: Training Language Models Collaboratively

--

--

daewoo kim
daewoo kim

Written by daewoo kim

AI developer & Author | Working@semiconductor-industry. I write and share about what I learn.

No responses yet