KR102472282B1 - 고급 상호 연결 통신기술을 이용한 ai 훈련 가속화 방법 및 시스템 - Google Patents

고급 상호 연결 통신기술을 이용한 ai 훈련 가속화 방법 및 시스템 Download PDF

Info

Publication number
KR102472282B1
KR102472282B1 KR1020207019377A KR20207019377A KR102472282B1 KR 102472282 B1 KR102472282 B1 KR 102472282B1 KR 1020207019377 A KR1020207019377 A KR 1020207019377A KR 20207019377 A KR20207019377 A KR 20207019377A KR 102472282 B1 KR102472282 B1 KR 102472282B1
Authority
KR
South Korea
Prior art keywords
data block
gpu
data
processor
logical ring
Prior art date
Application number
KR1020207019377A
Other languages
English (en)
Other versions
KR20210044180A (ko
Inventor
즈뱌오 짜오
지옌 오우양
허페이 주
칭슈 천
웨이 치
Original Assignee
바이두닷컴 타임즈 테크놀로지(베이징) 컴퍼니 리미티드
바이두 유에스에이 엘엘씨
쿤룬신 테크놀로지(베이징) 캄파니 리미티드
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 바이두닷컴 타임즈 테크놀로지(베이징) 컴퍼니 리미티드, 바이두 유에스에이 엘엘씨, 쿤룬신 테크놀로지(베이징) 캄파니 리미티드 filed Critical 바이두닷컴 타임즈 테크놀로지(베이징) 컴퍼니 리미티드
Publication of KR20210044180A publication Critical patent/KR20210044180A/ko
Application granted granted Critical
Publication of KR102472282B1 publication Critical patent/KR102472282B1/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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3802Instruction prefetching
    • G06F9/3812Instruction prefetching with instruction modification, e.g. store into instruction stream
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/06Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
    • G06N3/063Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/80Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors
    • G06F15/8007Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors single instruction multiple data [SIMD] multiprocessors
    • G06F15/8015One dimensional arrays, e.g. rings, linear arrays, buses
    • 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/22Microcontrol or microprogram arrangements
    • G06F9/28Enhancement of operational speed, e.g. by using several microcontrol devices operating in parallel
    • 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/3017Runtime instruction translation, e.g. macros
    • G06F9/30178Runtime instruction translation, e.g. macros of compressed or encrypted instructions
    • 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
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/045Combinations of networks
    • G06N3/0454
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods
    • 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
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • G06T1/20Processor architectures; Processor configuration, e.g. pipelining
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • G06F15/163Interprocessor communication
    • G06F15/173Interprocessor communication using an interconnection network, e.g. matrix, shuffle, pyramid, star, snowflake
    • G06F15/17356Indirect interconnection networks
    • G06F15/17368Indirect interconnection networks non hierarchical topologies
    • G06F15/17375One dimensional, e.g. linear array, ring

Landscapes

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

Abstract

다양한 실시예에 따라, 고급 상호 연결 통신기술과 분산식 훈련 시스템에서 체계적인 제로값 압축(systematic zero-value compression)을 통해 인공 지능 (AI) 모델 훈련을 가속화할 수 있는 방법 및 시스템을 제공한다. 예시적인 방법에 의하면, 논리적 링으로 배치된 프로세서 클러스터에 대해 Scatter-Reduce 프로세스를 수행하여 신경망 모델을 훈련시키는 각 반복 기간 동안, 프로세서는 논리적 링의 이전 프로세서에서 압축 데이터를 수신하고, 수신한 압축 데이터 블록과 상기 프로세서에서 생성한 압축 데이터 블록에 대해 작업을 수행하여 연산된 데이터 블록을 획득하며, 연산된 데이터 블록을 논리적 링의 다음 프로세서에 전송한다. 각 프로세서에서 복수의 프로세서로부터 수신한 대응 데이터 블록에 따라 연산된 압축 데이터 블록을 식별하고 기타 프로세서 중 각각에 배포함으로써, AI 모델 훈련에 사용하도록 압축해제할 수 있다.

Description

고급 상호 연결 통신기술을 이용한 AI 훈련 가속화 방법 및 시스템
본 출원의 실시예는 전체적으로 머신 러닝에 관한 것이고, 구체적으로 신경망 훈련에 관한 것이다.
복잡한 문제 해결을 위해, 신경망도 점점 복잡해지고 있다. 복잡한 신경망은 훈련 단계에서 복잡한 딥 러닝 알고리즘 및 높은 데이터 대역폭을 필요로 한다. 이에 따라, 훈련 시간, 비용, 전력 소모가 증가된다. 트레이닝(training)의 가속화를 위해 고급 서버(예컨대 더 복잡한 인터페이스를 구비한 보다 빠른 서버 또는 서버 클러스터)를 사용함으로써 컴퓨팅 및 통신을 개선하여 고가의 하드웨어 비용을 절감하도록 한다. 그러나, 기존의 솔루션은 여전히 성능과 비용 측면에서 문제가 있다.
제1 양태에 있어서, 본 출원의 일부 실시예는 데이터 처리 (DP; Data Processing) 가속기를 이용한 인공지능 (AI) 모델 훈련을 위한 컴퓨터 구현 방법을 제공한다. 상기 방법은 중앙 처리 장치(CPU)로부터 요청을 수신하는 단계 -상기 요청은 CPU에서 배포된 복수의 데이터 블록을 구비한 트레이닝 데이터 세트에 따라 AI 모델을 트레이닝하기 위한 것임-; AI 모델을 트레이닝하기 위해, 논리적 링으로 배치된 복수의 범용 프로세싱 유닛(GPU)에 의해 복수의 DP 반복을 수행하는 단계;를 포함하고, 상기 복수의 DP 반복은, 각각의 DP 반복에서, 제1 DP 사이클 기간에 각 GPU에 의해 데이터 블록 중 하나에 대해 제1 설정 DP 작업을 각각 병행으로 수행하여 해당 DP 결과를 생성하고, 제2 DP 사이클 기간에 각 GPU에 의해 프로세서간 링크를 통해 제1 해당 DP 결과를 논리적 링의 다운스트림 GPU에 전송하여 추가적 처리를 진행하도록 한다.
제2 양태에 있어서, 본 출원의 일부 실시예는 데이터 처리 시스템을 제공한다. 상기 시스템은 적어도 하나의 중앙 처리 장치(CPU); 및 CPU에 연결된 복수의 범용 프로세싱 유닛(GPU);를 포함하고, 각 GPU는 CPU에서 배포된 인공지능 (AI) 데이터 처리 (DP) 작업을 수행하도록 구성된다. 상기 작업은 중앙 처리 장치(CPU)로부터 요청을 수신하는 단계 -상기 요청은 CPU에서 배포된 복수의 데이터 블록을 구비한 트레이닝 데이터 세트에 따라 AI 모델을 훈련시키기 위한 것임-; 및 AI 모델을 트레이닝하기 위해, 논리적 링으로 배치된 복수의 범용 프로세싱 유닛(GPU)에 의해 복수의 DP 반복을 수행하는 단계;를 포함하고, 상기 복수의 DP 반복은, 각각의 DP 반복에서, 제1 DP 사이클 기간에 각 GPU에 의해 데이터 블록 중 하나에 대해 제1 설정 DP 작업을 각각 병행으로 수행하여 해당 DP 결과를 생성하고, 제2 DP 사이클 기간에 각 GPU에 의해 프로세서간 링크를 통해 제1 해당 DP 결과를 논리적 링의 다운스트림 GPU에 전송하여 추가적 처리를 진행하도록 한다.
제3 양태에 있어서, 본 출원의 일부 실시예는 명령어가 저장되어 있는 비 일시적 컴퓨터 판독 가능 저장 매체를 제공한다. 상기 명령어가 프로세서에 의해 실행될 경우, 프로세서는 인공지능 (AI) 훈련을 위한 동작을 수행하고, 상기 동작은, 중앙 처리 장치(CPU)로부터 요청을 수신하는 단계 -상기 요청은 CPU에서 배포된 복수의 데이터 블록을 구비한 트레이닝 데이터 세트에 따라 AI 모델을 훈련시킴-; AI 모델을 트레이닝하기 위해, 논리적 링으로 배치된 복수의 범용 프로세싱 유닛(GPU)에 의해 복수의 DP 반복을 수행하는 단계;를 포함하고, 상기 복수의 DP 반복은, 각각의 DP 반복에서, 제1 DP 사이클 기간에 각 GPU에 의해 데이터 블록 중 하나에 대해 제1 설정 DP 작업을 각각 병행으로 수행하여 해당 DP 결과를 생성하고, 제2 DP 사이클 기간에 각 GPU에 의해 프로세서간 링크를 통해 제1 해당 DP 결과를 논리적 링의 다운스트림 GPU에 전송하여 추가적 처리를 진행하도록 한다.
본 출원의 실시예는 도면에서 제한이 아닌 예로서 도시되며, 동일한 참조 번호는 유사한 요소를 나타낸다.
도 1은 실시예에 따른 AI 모델 훈련에 사용되는 시스템의 일 예를 개략적으로 나타낸다.
도 2A 내지 도 2F는 실시예에 따른 AI 모델 훈련 과정의 데이터 전송의 예시적인 프로세스를 나타낸다.
도 3은 도 2A 내지 도 2F의 프로세스를 개선한 예시적 프로세스를 나타낸다.
도 4는 실시예에 따른 데이터 압축, 데이터 연산 및 상호 연결 버스의 예시적인 아키텍처를 나타낸다.
도 5는 실시예에 따른 제로섬 압축 기법(zero-sum compression technique)을 나타낸다.
도 6은 실시예에 따른 압축 데이터에 대한 예시적인 연산작업을 나타낸다.
도 7은 실시예에 따른 AI 모델 훈련의 예시적인 프로세스를 나타낸다.
이하에서 설명되는 세부 사항들을 참조하여 본 발명의 각 실시예 및 양태에 대해 설명할 것이고, 첨부된 도면은 각 실시예들을 나타낼 것이다. 아래의 설명 및 도면들은 본 발명의 예시일 뿐, 본 발명을 한정하는 것으로 이해해서는 안된다. 본 발명의 각 실시예들에 대한 충분한 이해를 제공하기 위해 많은 구체적인 세부 사항들에 대해 설명하였다. 그러나, 특정 경우에 있어서, 본 발명에 대한 간결한 설명을 제공하기 위해, 공지된 또는 종래의 세부 사항들에 대해 설명하지 않았다.
본 명세서에서 “일 실시예(one embodiment)” 또는 “실시예(an embodiment)”라고 지칭하는 것은 실시예에 결합하여 설명한 구체적인 특징, 구조 또는 특성이 본 발명의 적어도 하나의 실시예에 포함될 수 있음을 의미한다. 본 명세서의 여러 부분에서 관용구 “일 실시예에 있어서”가 나타날 경우, 이는 반드시 동일한 실시예를 가리켜야만 하는 것은 아니다.
다양한 실시예에 따라, 본 명세서에서는 고급 상호 연결 통신기술을 이용한 인공지능 (AI) 훈련을 가속화하기 위한 방법 및 시스템을 제공한다. 소프트웨어 및 하드웨어 컴포넌트를 이용함으로써, 본 출원에서 설명한 실시예에 따르면 통신 대역에 대한 요구, 소비전력 등을 현저히 낮출 수 있으며, 또한 훈련 시간을 감소함으로써 정확도 손실 없이 훈련 효과를 향상시킬 수 있다. 분산식 시스템에서 시스템 데이터 압축 및 압축해제를 통해 AI 모델 훈련을 진행하고, 고효율의 ALL-Reduce 알고리즘을 결합하여 사용한다.
일 실시예에서, AI 모델 훈련 컴퓨터 구현 방법은 아래와 같은 동작들을 포함한다. 프로세서 클러스터에서 Scatter-Reduce 프로세스 과정에 복수의 반복을 수행하고, 여기서 각각의 프로세서는 그래픽 처리 장치(GPU)일 수 있다. 프로세서는 논리적 링으로 배치되어 신경망 모델을 훈련시킬 수 있고, 각 프로세서는 복수의 데이터 블록을 포함하며 각 데이터 블록은 신경망 모델 내의 파라미터 집합을 나타내거나 또는 파라미터 집합을 업데이트하기 위한 그레디언트 (gradient) 집합을 나타낸다.
각각의 반복 기간에, 프로세서는 논리적 링의 이전 프로세서로부터 압축된 데이터 블록을 수신하고, 수신한 압축 데이터 블록과 해당 프로세서에서 생성한 압축 데이터 블록에 대해 작업을 수행하여, 연산된 데이터 블록을 획득하고 연산된 데이터 블록을 논리적 링의 다음 프로세서에 전송한다. 복수의 반복이 종료 시, 복수 프로세서 상의 각각의 데이터 블록은 모두 연산작업을 거쳐 압축된 상태가 된다. 상기 방법은 복수의 프로세서 중 각각에서 복수의 프로세서로부터 수신한 각 데이터 블록으로부터 연산된 압축 데이터 블록을 식별하는 동작을 더 포함한다.
일 실시예에서, 식별된 압축 데이터 블록은 논리적 링의 기타 프로세서 중 각각에 배포될 수 있고, 신경망 모델의 파라미터를 업데이트하도록 상기 프로세서에서 압축해제될 수 있다. 프로세서는 분산식 AI 모델 훈련 시스템 중 다른 시스템의 중앙 처리 장치(CPU)에 연결될 수 있다. 일 실시예에서, 각 프로세서는 제로값 압축 기법(zero-value compression technique)을 사용하여 데이터 블록을 압축 또는 압축해제하는 하드웨어 또는 소프트웨어 기반의 압축 모듈을 포함할 수 있다. 압축 데이터 블록은 비트마스크 부분과 압축 데이터 부분을 포함하는 데이터 구조로 표시될 수 있으며, 비트마스크 부분에는 데이터 블록에서 0이 아닌 값을 가진 위치를 나타내는 비트가 포함된다.
일 실시예에 따라, 중앙 처리 장치(CPU)로부터 AI 훈련에 대한 요청을 수신할 경우, 논리적 링으로 배치된 각 범용 프로세싱 유닛(GPU)는 파이프라인 (pipeline) 방식으로 CPU로부터 배포되는 데이터 블록에 대해 반복적으로 데이터 처리 (DP) 작업을 수행한다. CPU에 대해, 각 GPU는 DP 가속기로 작동한다. 각각의 반복에서, 제1 DP 사이클 기간에 각 GPU에 의해 데이터 블록 중 하나에 대해 제1 설정 DP 작업 (예컨대, 데이터 압축) 을 각각 병행으로 수행하여 해당 DP 결과를 생성한다. 제2 DP 사이클 기간에 각 GPU에 의해 대응하는 프로세서간 링크를 통해 해당 DP 결과를 논리적 링의 대응하는 다운스트림 GPU에 전송하여 추가적 처리를 진행하도록 한다. 설명을 위해 DP 가속기의 예로 GPU를 사용하였으나, DP 가속기로 기타 유형의 프로세서 또는 처리 로직을 사용할 수도 있다.
일 실시예에서, 제2 DP 사이클 기간에 각 GPU에 의해 대응하는 프로세서간 링크를 통해 논리적 링의 대응하는 업스트림 GPU로부터 처리 결과를 수신하여 GPU에서 추가적 처리를 진행하도록 한다. 일 실시예에서 제3 DP 사이클 기간에 각 GPU에 의해 자체적으로 처리된 제1 데이터 블록 (예컨대, 처리 결과) 과 업스트림 GPU로부터 수신한 제2 데이터 블록 (예컨대, 업스트림 GPU의 처리 결과) 에 대해 제2 설정 DP 작업 (예컨대, 합산과 같은 조합 연산) 을 동시에 수행한다. 일 실시예에서 제4 DP 사이클 기간에 각 GPU에 의해 데이터 압축해제와 같은 추가적인 DP 작업을 수행한다.
도 1은 실시예에 따른 AI 모델 훈련을 위한 시스템의 일 예를 나타낸다. 도 1에 도시된 바와 같이, 상기 시스템은 복수의 서버 (예컨대, 서버 A(103)와 서버 B(105)) 에 배포된 GPU 클러스터(101)를 포함하고, 여기서 각각의 서버는 하나 또는 복수의 CPU를 포함하며, 각각의 CPU는 하나 또는 복수의 GPU와 같은 DP 가속기와 연관된다. 서버는 이더넷(111)을 통해 서로 통신하는 CPU(107)와 CPU(109)를 포함한다. 도 1의 예시적인 시스템에서, 각 CPU는 복수의 GPU를 구비할 수 있고, 상기 복수의 GPU는 PCIe 스위치를 통해 CPU에 연결된다. 예를 들어, 서버 A(103)에서 GPU(117), GPU(119) 및 GPU(121)는 PCIe 스위치 A(113)를 통해 CPU A(107)에 연결되고; 서버 B(105)에서 GPU(123), GPU(125) 및 GPU(127)는 PCIe 스위치 B(115)를 통해 CPU B(109)에 연결된다.
CPU(107)와 CPU(109)는 신경망을 훈련시키기 위해 이더넷(111)과 같은 프로세서간 링크를 통해 서로 통신할 수 있다. 예를 들어, 작업 명령어는 이더넷(111)을 통해 각 서버에 배포될 수 있다. 이어서, 작업 명령어는 서버의 CPU로부터 상기 CPU에 연결된 GPU에 배포될 수 있다. 작업 명령어가 일단 배포되면, 시스템의 GPU간 데이터는 대응하는 프로세서간 링크 또는 CCIX (Cache Coherent Interconnect for Accelerators; 가속기를 위한 캐시 일관성 인터커넥트) 호환성 연결과 같은 연결을 통해 전송될 수 있다. 단방향 링 토폴로지를 사용할 수도 있으나, 시스템의 GPU는 도 1과 같이 양방향 링 토폴로지로 배치되었다.
CCIX는 CCIX 컨소시엄(CCIX Consortium)에서 개발한 오픈 캐시 일관성 인터커넥트 아키텍처이다. CCIX는 표준 PCIe에 대한 캐시 일관성 확장을 통해 중앙 처리 장치(예컨대, CPU)와 다양한 가속기(예컨대, GPU) 사이의 통신을 간소화하도록 설계되었다. CCIX는 이기종 시스템 아키텍처(heterogeneous system architectures)에 캐시 일관성 프레임워크를 제공하는 고성능 칩-투-칩 인터커넥트 아키텍처이다. 시스템 내 중앙 처리 장치와 다른 여러 가속기 사이의 캐시 일관성은 항상 자동으로 유지된다. 각각의 CCIX 지원 장치는 임의의 다른 CCIX 지원 장치와 핀 호환(pin-compatible)이 되는 적어도 하나의 CCIX 포트를 포함한다. CCIX는 칩-투-칩, 칩-스위치-칩, 메시(mesh), 데이지 체인, 링과 같은 대규모 토폴로지를 지원한다.
일 실시예에서 GPU는 파이프라인 방식으로 대응하는 CPU로부터 배포된 데이터 블록에 대해 AI 훈련 작업을 수행한다. 또한 각각의 GPU는 프로세서 간 링크를 통해 서로 통신한다. GPU는 링 형태로 배치됨으로써, 업스트림 GPU의 처리 결과를 수신하여 데이터를 추가적으로 처리하도록 한다. 각 GPU는 처리 결과를 대응하는 다운스트림 GPU에 전송하여 해당 GPU에서 추가적 처리를 진행하도록 할 수 있다. 따라서 각 GPU는 그에 할당된 DP 작업을 병행으로 수행하고 해당 DP 결과를 다운스트림 GPU에 전송한다. 동시에, 각 GPU는 업스트림 GPU로부터 처리 결과를 수신하여 추가적 처리를 진행한다.
도 2A 내지 도 2F는 실시예에 따른 AI 모델 훈련 과정의 데이터 전송에 대한 예시적인 프로세스를 나타낸다. 본 명세서에서 3개의 GPU인 GPU(203), GPU(205) 및 GPU(207)를 표시하였으나, 예시적인 프로세스는 훈련하고자 하는 신경망의 복잡성, 트레이닝 데이터의 크기 및 사용자가 원하는 훈련 속도 등 여러가지 요소에 따라 최대한 많은 GPU(예컨대, 수천 개의 GPU)를 사용할 수 있다.
예시적인 시스템에서 훈련할 수 있는 신경망의 예에는, 서로 연결된 뉴런의 집합을 포함하는 다층 퍼셉트론(MLP; multilayer perceptron) 신경망이 포함된다. 하나의 층에 있는 각각의 뉴런이 파라미터(예컨대, 가중치와 바이어스)에 의해 후속 층의 각각의 뉴런에 연결됨으로써 MLP 신경망의 뉴런은 완전 연결될 수 있다.
신경망 모델을 훈련시키는 동안, 신경망 모델의 예상 값과 신경망 모델의 실제 출력간 차이를 최소화하기 위해 경사 하강법(즉, 역전파)으로 파라미터 집합을 결정할 수 있다. 경사 하강에는 손실/오차 함수의 그레디언트를 계산하고, 상기 그레디언트에 대응하여 기존 파라미터를 업데이트하는 단계가 포함된다. 손실 함수가 최소값에 도달할 때까지 상기 사이클을 반복할 수 있다.
일 실시예에서, 신경망 모델에 대한 트레이닝 데이터 세트는 다수의 서브 세트으로 나뉠 수 있으며, 각 서브 세트는 GPU 중 하나에서의 신경망 모델 훈련에 사용되어, 신경망 훈련이 복수의 GPU에 의해 병행으로 수행될 수 있도록 한다. 각 GPU는 신경망 모델의 전체 사본을 가질 수 있다.
트레이닝 데이터 세트의 각 서브 세트는 동일한 크기의 여러 데이터 블록으로 논리적으로 나뉠 수 있다. 예시적인 프로세스에서 블록 수는 GPU 수와 같을 수 있다. 신경망 모델의 병렬화 훈련은 경사 하강에 대한 다중 반복을 요구한다. 각 반복에서, 각 GPU는 상기 GPU의 데이터에서 신경망 모델의 순전파를 실행하고, 이어서 오차 역전파를 실행함으로써 네트워크 파라미터 대비 손실 그레디언트를 계산한다. 그 다음, GPU는 서로 통신하여 그레디언트의 통계(예컨대, 평균값, 최대값 또는 최소값)를 계산하고, 통계결과(예컨대, 평균 그레디언트)를 적용하여 업데이트된 파라미터를 획득한다. 신경망 모델은 대량의 파라미터(예컨대, 수십억 개의 파라미터)를 가질 수 있으며, 각 파라미터는 그레디언트 값과 연관될 수 있다. 이와 같이 신경망에 있어서 그레디언트의 크기는 매우 클 수 있고, GPU 간 그레디언트의 전송은 대량의 대역폭을 점용할 수 있다.
도 2A 내지 도 2F를 참조하면, 예시적인 프로세스에서 GPU간 데이터 전송에 필요한 대역폭 요구량을 줄이는 알고리즘을 보여준다. 일 실시예에서, 본원에 사용된 대역폭은 주어진 네트워크 연결에서의 데이터 전송 최대 속도이다. 상기 알고리즘은 두 가지 프로세스를 포함할 수 있다. 첫번째 프로세스는 Scatter-Reduce 프로세스이고 두번째 프로세스는 Allgather 프로세스이다. Scatter-Reduce 프로세스 동안, GPU는 모든 GPU가 많은 양의 최종 결과로 마감될 때까지 데이터를 교환할 수 있다. Allgather 프로세스 동안, GPU는 모든 GPU가 완전한 최종 결과로 마감될 때까지 상기 많은 양의 결과들을 교환할 수 있다.
각 GPU는 상기 GPU의 트레이닝 데이터 세트의 서브 세트를 동일한 크기의 데이터 블록으로 분할하도록 구성된 하나 또는 복수의 애플리케이션을 포함할 수 있고; 예시적인 시스템에서 각 GPU 상의 데이터 블록 수는 GPU의 수와 동일하다. 신경망 모델을 훈련시키는 동안 각 데이터 블록은 자체의 그레디언트 집합을 생성할 수 있다.
위에서 설명한 바와 같이, 상기 실시예에서, 시스템에 3개의 GPU가 존재하므로 각 GPU의 데이터 블록의 수량은 3개이다. GPU#0(203)에서의 트레이닝 데이터 서브 세트으로부터 3개의 그레디언트 a0(215), b0(231), c0(237)를 생성할 수 있고; GPU #1(205)에서의 트레이닝 데이터 서브 세트으로부터 3개의 그레디언트 a1(217), b1(223), c1(239)를 더 생성할 수 있다. 마찬가지로, GPU#2(207)에서의 트레이닝 데이터 서브 세트으로부터 3개의 그레디언트 a2(219), b2(235), c2(241)를 생성할 수 있다. 일 실시예에서, 각 GPU의 서로 다른 그레디언트 집합들은 어레이 또는 기타 데이터 구조로 저장될 수 있다.
예를 들어, 상기 알고리즘은 트레이닝 데이터 세트의 각 서브 세트에 의해 생성된 그레디언트를 합산하여, 알고리즘이 완성 시 각 GPU가 트레이닝 데이터 세트으로부터 생성된 그레디언트의 총합을 가지도록 설계되었다.
예시적인 프로세스의 GPU는 Scatter-Reduce 프로세스 동안 N-1 회의 반복 작업을 수행할 수 있으며, 여기서 N은 시스템의 총 GPU 수이다. 따라서 예시적인 시스템의 GPU는 2 회 반복을 수행할 수 있다. 각각의 반복에서, 각 GPU는 GPU상의 그레디언트 집합을 우측으로 인접한 GPU에 전송하고, 좌측으로 인접한 GPU로부터 그레디언트 집합을 수신하며, 상기 두 그레디언트 집합을 합산하여 새로운 그레디언트 집합을 생성한다. 각 반복에서, 각 GPU가 송수신하는 그레디언트 집합은 서로 다르고; n번째 GPU는 n번째 그레디언트 집합을 전송하는 것으로 시작하여 (n-1)번째 그레디언트 집합을 수신한 후 역으로 처리한다.
도 2A 내지 도 2C는 Scatter-Reduce 프로세스를 나타낸다. 도 2A는 Scatter-Reduce 프로세스의 제1 반복에서의 데이터 전송을 나타낸다. 제1 전송 및 제1 수신이 완료된 후, 각 GPU는 두 개의 서로 다른 GPU에서의 두 그레디언트 집합의 합을 나타내는 값을 가진 어레이 요소를 갖게 된다. 예를 들어, GPU(205)의 제1 요소 a1은 제2 GPU(205)와 제1 GPU(203)의 그레디언트 집합의 합을 포함할 수 있다. 도 2B는 Scatter-Reduce 프로세스의 제2 반복에서의 데이터 전송을 나타내며, 또한 Scatter-Reduce 프로세스의 제1 반복이 완료된 후의 중간 합계를 보여준다. 제2 반복에서 Scatter-Reduce 프로세스는 계속되며, Scatter-Reduce 프로세스가 끝나는 시점에서(즉, 본 예에서 제2 반복 이후), 각 GPU는 모든 GPU에 걸쳐 대응하는 어레이 요소의 모든 그레디언트의 합을 포함하는 하나의 어레이 요소를 갖게 된다. 도 2C는 Scatter-Reduce 프로세스 종료 시의 최종 상태를 보여준다.
도 2D 내지 도 2F는 Scatter-Reduce와 동일하게 진행이 되고 마찬가지로 N-1 회의 반복을 진행하는 Allgather 프로세스를 나타낸다. 차이점은 GPU가 수신한 그레디언트를 누적하는 것이 아니라, 수신된 그레디언트가 수신 GPU의 대응하는 어레이 요소 중의 그레디언트를 커버할 수 있다는 것이다. 도 2D는 Allgather 프로세스의 제1 반복에서의 데이터 전송을 나타낸다. 도 2E에서와 같이 제1 반복 완료 후, 각 GPU는 모든 GPU를 거친 대응하는 어레이 요소의 모든 그레디언트의 합을 각각 포함하는 2개의 어레이 요소를 갖게 된다. 도 2E는 제2 반복에서의 Allgather 프로세스, 즉 예시적인 프로세스의 마지막 반복을 나타낸다. 도 2F와 같이, Allgather 프로세스 종료 시 GPU는 전체 트레이닝 데이터 세트에 따른 완전 누적된 그레디언트를 갖게 된다. 모든 데이터 전송은 이산 반복에서 동시에 발생하므로 예시적인 프로세스는 대역폭에 최적화된다.
도 3은 도 2A 내지 도 2F의 프로세스를 개선한 예시적인 프로세스를 개략적으로 나타낸다. 일 실시예에서 도 3의 예시적인 프로세스는 신경망 모델의 훈련기간 동안 신경망 파라미터 업데이트를 위한 그레디언트를 전송하는데 사용될 수 있으며, 여기서 수십 메가 바이트의 데이터가 분산 서버간에 전송되고 협력적으로 동작될 필요가 있을 수있다. 이를 위해 고효율의 하드웨어와 소프트웨어로 성능과 레이턴시지연을 개선할 필요가 있다.
일 실시예에서 예시적인 프로세스는 성능 및 레이턴시를 개선하기 위해 All-Reduce 알고리즘 및 소프트웨어 및 하드웨어 공동 설계를 활용한다. 소프트웨어와 하드웨어 공동 설계는 원하는 기능을 달성하기 위해 하드웨어와 소프트웨어의 동시 설계를 지칭한다. 상기 예시적인 프로세스는 클러스터 내 GPU를 연결하기 위한 가속기의 캐시 일관성 인터커넥트(CCIX)와 같은 하드웨어 컴포넌트 및, 제로값 압축 모듈 및 기타 압축 모듈과 같은 소프트웨어 모듈을 활용하여 압축된 데이터에 기반한 하드웨어 컴퓨팅을 진행한다. 상기 예시적인 프로세스는 매우 효율적인 All-Reduce 프로세스를 실행하도록 설계된 분산 시스템에서 체계적인 데이터 압축을 사용한다. 따라서, 트레이닝 데이터 세트의 상이한 서브 세트로부터 생성 된 그라디언트는 각 GPU에 더 빨리 축적되고 분산 될 수있어, AI 모델 훈련을 가속화시킨다. 매우 효율적인 All-Reduce 프로세스를 실행하도록 설계된 분산 시스템에서 체계적인 데이터 압축을 사용합니다. 따라서, 트레이닝 데이터 세트의 상이한 서브 세트로부터 생성 된 그라디언트는 각 GPU에 더 빨리 축적되고 분산 될 수있어, AI 모델 훈련을 가속화시킨다..
도 3에서, 왼쪽 부분은 도 2A 내지 도 2F에 자세히 설명되어 있는 전형적인 All-Reduce 프로세스(302)를 나타내고, 오른쪽 부분은 분산식 시스템에 대한 체계적 압축에 의해 개선된 All-Reduce 프로세스를 나타낸다. 도 3은 3개의 GPU 예로 사용하고, 여기서 상기 3개의 GPU는 논리적 링을 형성하도록 배치된다.
전형적인 All-Reduce 프로세스(302)와 개선된 All-Reduce 프로세스에서, CPU 사이에서 전송될 데이터 블록은 데이터 구조(예컨대, 어레이)에 저장되며, 데이터 블록은 신경망 모델의 훈련을 위한 트레이닝 데이터 세트의 서브 세트의 서로 다른 블록에서 생성된 그레디언트이다. 각 GPU는 훈련될 신경망 모델의 완전한 사본을 가질 수 있다. 신경망 모델의 파라미터를 업데이트하기 위해 GPU 사이에서 그레디언트를 전송한다.
일 실시예에서, Scatter-Reduce 프로세스의 제1 반복 또는 제1 처리 사이클 기간에, 각 GPU의 데이터 블록은 압축 모듈에 의해 압축될 수 있으며, 상기 압축 모듈은 하드웨어 또는 소프트웨어 모듈에서 구현될 수 있다. 예를 들어, GPU #0(203)의 데이터 블록 a0, GPU#1(205)의 데이터 블록 b1, GPU#2(207)의 데이터 블록 c2는 각각 동작(301), 동작(315) 및 동작(329)에서 압축된다.
압축된 데이터 블록은 다음 처리 사이클에서 인접한 GPU에 전송될 수 있다. 예를 들어 동작(303)에서 GPU #0(203)의 압축 데이터 블록을 GPU#1(205)에 전송할 수 있고, 동작(317)에서 GPU#1(205)의 압축 데이터 블록을 GPU#2(207)에 전송할 수 있으며, 동작(331)에서 GPU#2(207)의 압축 데이터 블록을 GPU#0(203)에 전송할 수 있다.
일 실시예에서 압축 데이터 블록을 인접한 GPU에 전송함과 동시에, 각 GPU의 다른 데이터 블록은 압축되어 상기한 바와 같이 수신한 압축 데이터에 합산될 수 있다. 상기 실시예에서는 합산 연산을 예로 사용하였으나, 기타 다른 연산(예컨대, 곱셈, 연역, 수학 평균)도 사용할 수 있다.
예를 들어, 동작(305)에서 GPU#0(203)의 데이터 블록 c0을 압축하여 GPU #2(207)로부터 수신한 압축 데이터 블록 c2과 합산할 수 있다. 동작(319)에서 GPU#1(205)의 데이터 블록 a1을 압축하여 GPU#0(203)으로부터 수신한 압축 데이터 블록 a0과 합산할 수 있다. 동작(333)에서 GPU#2(207)의 데이터 블록 b2를 압축하여 GPU#1(205)으로부터 수신한 압축 데이터 블록 b1과 합산할 수 있다.
Scatter-Reduce 프로세스의 나머지 반복 중 각각에 대해 상기 프로세스를 반복할 수 있다. 반복 횟수는 GPU 개수에서 1을 줄인 숫자일 수 있다. 이처럼 개선된 All-Reduce 프로세스의 Scatter-Reduce 프로세스(305)는 2회 반복될 수 있다. 나머지 반복 중 각각에 있어서, GPU에서 기존 압축 데이터 블록을 전송하는 것이 아니라, 각 GPU는 다중 GPU로부터 전달받은 압축 데이터 블록의 합을 다음 GPU에 전송할 수 있다.
예를 들어, 제2 반복에서 동작(307)에서, GPU#0(203)은 압축 데이터 블록 c0와 압축 데이터 블록 c2의 합을 GPU#1(205)에 전송할 수 있다. 동작(321)에서 GPU#1(205)은 GPU#2(207)에 압축 데이터 블록 a0와 압축 데이터 블록 a1의 합을 전송할 수 있다. 동작(335)에서, GPU#2(207)는 압축 데이터 블록 b1과 압축 데이터 블록 b2의 합을 GPU#0(203)에 전송할 수 있다.
일 실시예에서, 압축 데이터 블록의 합이 인접한 GPU에 전송됨과 동시에, 각 GPU는 GPU에 남아 있는 데이터 블록을 압축할 수 있고, 압축 데이터 블록을 앞서 논리적 링의 이전 GPU로부터 수신한 압축 데이터 블록의 합에 추가할 수 있다. 예를 들어, 동작(309)에서 GPU#0(203)의 데이터 블록 b0를 압축하여 압축 데이터 블록 b1과 b2의 합에 가산할 수 있다. 동작(323)에서 GPU#1(205)의 데이터 블록 c1을 압축하여 압축 데이터 블록 c0와 c2의 합에 가산할 수 있다. 동작(337)에서 GPU#2(207)의 데이터 블록 a2를 압축하여 압축 데이터 블록 a0와 a1의 합에 가산할 수 있다.
따라서, Scatter-Reduce 프로세스의 종료 시, 예시적인 프로세스에서 각 GPU는 모든 GPU를 걸친 어레이의 대응 위치의 압축 데이터 블록의 합을 갖게 된다.
Allgather 프로세스에서 각 GPU는 어레이의 대응 위치에서 서로 다른 GPU로 압축 데이터 블록의 합을 배포하여, Allgather 프로세스가 종료 시 각 GPU가 모든 압축 데이터 블록 합의 사본을 가질 수 있도록 한다. 그런 다음 각 GPU는 동작(313), 동작(327) 및 동작(341)에서 나타낸 바와 같이 압축된 총합을 압축해제할 수 있다. 각 GPU의 압축해제된 총합은 상기 GPU의 신경망 모델 사본의 파라미터 업데이트에 사용될 수 있다.
도 4는 실시예에 따른 데이터 압축, 데이터 연산 및 상호 연결 버스의 예시적인 아키텍처를 나타낸다.
도 4의 도면은 원시 데이터 블록(405 및 407)을 압축하고, 압축 데이터 블록을 상호 연결 버스(416 및 418)를 통해 전송하며 압축 데이터에 대해 연산작업(413 및 419)을 수행하고, 압축 데이터를 원시 데이터로 압축해제하는 데이터 흐름을 나타낸다.
도 4에 나타낸 바와 같이, 각 GPU는 한 쌍의 압축 모듈 및 압축해제 모듈을 사용할 수 있다. 예를 들어 GPU A(401)에는 압축 모듈(411)과 압축해제 모듈(409), 그리고 GPU B(403)에는 압축 모듈(417)과 압축해제 모듈(415)이 사용된다.
압축 모듈(411 및 417)의 경우 임의의 압축 알고리즘을 사용할 수 있다. 압축 알고리즘의 예로는 제로값 압축 알고리즘/기법이 있으며, 이러한 알고리즘은 아래에서 상세히 설명될 것이다. 제로값 비율이 50%인 경우, 제로값 압축 알고리즘을 사용함으로써 데이터 전송 대역폭을 50% 가까이 절감할 수 있고, 상호 연결 버스와 압축 데이터의 다양한 작업을 결합할 경우 대역폭 절약 효과는 50%를 초과할 수 있다.
도 5는 실시예에 따른 제로값 압축 기법을 나타낸다. 도 5에서 행렬(513)는 신경망 모델 훈련에 사용되는 4x4 원시 데이터 어레이다. 데이터 구조(510)는 제로값 압축 기법을 사용한 행렬(513)의 압축 형태를 보여준다. 데이터 구조(510)에는 유형 필드(501), 길이 필드(503), 비트마스크 필드(505) 및 압축 데이터 필드(507)와 같은 복수의 필드가 포함된다. 압축(511) 및 압축해제(509)를 통해 행렬(513)와 데이터 구조(510)를 서로 변환할 수 있다.
일 실시예에서 유형 필드(501)는 행렬(513) 내의 값의 데이터 유형을 나타낸다. 데이터 유형의 예로는 부동 소수점(FP)32, FP16 및 정수(INT) 8이 포함될 수 있다. 길이는 비트마스크 필드(505)와 압축 데이터 필드(507)의 총 크기를 바이트 단위로 표시하거나, 고정 크기를 가진 비트마스크 바이트의 압축 데이터 필드(507)의 크기를 나타낸다. 비트마스크 필드(505)는 “1”로 설정될 경우 행렬(513)에서 특정 위치의 0이 아닌 값을 나타내며, “0”으로 설정될 경우 해당 값이 0임을 나타낸다. 압축 데이터 필드(507)에는 정확한 얼라인/오프셋을 갖는 0이 아닌 값 데이터만 포함되어 있다. 또한 압축해제 모듈(예컨대, 도 4의 압축해제 모듈(409 또는 415)은 비트마스크 필드를 사용하여 0이 아닌 값을 4x4 데이터 행렬(513)에서의 원래 위치에 다시 입력한다.
도 6은 실시예에 따른 압축 데이터 연산의 일 예를 보여준다. 도 6에서, 합산 작업을 예로 들어 두 개의 압축 데이터 블록에 대한 연산이 어떻게 수행되는지를 보여준다.
일 실시예에서 압축 데이터(617)는 행렬 A(613)를 압축 형태로 표현한 데이터 구조이고, 압축 데이터(619)는 행렬 B(615)를 압축 형태로 표현한 데이터 구조이다. 이 두 구조는 도 5에 도시된 압축 기법을 이용하여 생성된 것이며, 압축해제 모듈(409 또는 415)을 이용하여 행렬 A(613)와 행렬 B(615)로 각각 압축해제될 수 있다.
일 실시예에서 두 개의 압축 행렬(613 및 615)을 압축된 형태로 합산하기 위해, 하드웨어 압축 모듈(예컨대, 도 4의 압축 모듈(411 또는 417))은 먼저 두 개의 압축 데이터 구조(617 및 619)를 배관하고(pipeline), 한 데이터 구조 내의 비트마스크 필드의 비트와 다른 한 데이터 구조 내의 비트마스크 필드의 비트를 비교하여, 그 비교 결과에 따라 출력 결과(621)를 출력한다.
GPU 간에압축된 형태로 데이터를 전달함으로써 데이터 전송의 대역폭 요구를 줄일 수 있다. 또한 압축 데이터 블록은 압축되지 않은 형태보다 적은 메모리를 소모하며, 동작 중에 메모리로부터 판독하고 메모리에 기입되는 비트 수가 적기 때문에 압축 데이터 블록의 작업에 대한 메모리 요구량이 감소된다.
예를 들어, 합산 작업은 두 번의 판독과 한 번의 기입을 필요로 한다. 메모리로부터 판독하고 메모리에 기입하는 데이터가 압축되어 있으므로, 합산 작업에 필요한 메모리 요구량이 감소된다.
도 7은 실시예에 따른 AI 모델 훈련 프로세스의 일 예(700)를 개략적으로 나타낸다. 프로세스(700)는 소프트웨어, 하드웨어 또는 이들의 조합을 포함할 수 있는 처리 로직에 의해 수행될 수 있다.
도 7을 참조하면, 동작(701)에서, 논리적 링으로 배치된 복수의 프로세서에서 신경망 모델을 훈련시키기 위해 복수의 반복을 수행하고, 각 프로세서는 복수의 데이터 블록을 포함한다. 동작(702)에서, 복수의 반복에 있어서, 복수의 프로세서 중 어느 한 프로세서는 논리적 링의 이전 프로세서로부터 압축 데이터 블록을 수신하고, 프로세서는 수신한 압축 데이터 블록과 상기 프로세서에서 생성된 압축 데이터 블록에 대해 연산을 수행하여 연산된 데이터 블록을 획득하고, 연산된 데이터 블록을 논리적 링의 다음 프로세서에 전송한다. 동작(703)에서 복수의 프로세서 중 각각에서 복수의 프로세서의 대응 데이터 블록으로부터 연산된 압축 데이터 블록을 식별한다. 식별된 데이터 블록은 다른 각 프로세서에 각각 배포되고, AI 모델 훈련, 예를 들어 신경망 모델의 파라미터 업데이트를 위해 압축해제된다.
위에서 도시되고 설명된 바와 같은 구성 요소들 중 일부 또는 전부는 소프트웨어, 하드웨어 또는 이들의 조합으로 구현될 수 있음에 유의하여야 한다. 예를 들어, 이러한 구성 요소는 영구 저장 장치에 설치 및 저장되는 소프트웨어로 구현될 수 있으며, 이러한 저장 장치는 프로세서(도시되지 않음)에 의해 메모리에 로드 및 실행되어 본 출원 전체에 기술된 프로세스 또는 동작을 수행할 수 있다. 대안적으로, 이러한 구성 요소들은 집적 회로(예를 들어, 애플리케이션 특정 IC 또는 ASIC), 디지털 신호 프로세서(DSP), 또는 필드 프로그램 가능 게이트 어레이(FPGA)와 같은 전용 하드웨어에 프로그래밍되거나 내장된 실행 코드로서 구현될 수 있으며, 이러한 코드는 응용 프로그램으로부터 해당 드라이버 및/또는 운영 체제를 통해 액세스할 수 있다. 또한, 이러한 구성 요소는 하나 이상의 특정 명령어를 통해 소프트웨어 컴포넌트에 의해 액세스 가능한 명령어 세트의 일부로서 프로세서 또는 프로세서 코어에서 특정 하드웨어 로직으로 구현될 수 있다.
전술한 상세한 설명의 일부는 컴퓨터 메모리 내의 데이터 비트에 대한 연산 작업의 알고리즘 및 상징적 표현과 관련하여 제시되었다. 이들 알고리즘적 설명 및 표현은 데이터 처리 분야의 당업자가 그들의 작업 내용을 다른 당업자에게 가장 효과적으로 전달하기 위해 사용하는 방식이다. 여기서 알고리즘은 일반적으로 원하는 결과를 도출하는 자체일관된 (self-consistent) 동작 시퀀스인 것으로 보아야 한다. 작업은 물리적 수량을 물리적으로 조작해야하는 작업을 가리킨다.
이들 및 유사한 용어는 모두 적절한 물리량과 관련되며 이들 수량에 적용되는 편리한 라벨일 뿐이다. 상기 논의로부터 명백하게 알 수 있듯이 달리 명백하게 언급되지 않는 한, 설명 전반에 걸쳐, 하기 청구 범위에 제시된 것과 같은 용어를 이용한 설명은, 컴퓨터 시스템의 레지스터 및 메모리 내의 물리적 (전자) 수량으로 표현된 데이터를 컴퓨터 시스템 메모리 또는 레지스터 내의 물리량 또는 유사하게 정보 저장, 전송 또는 디스플레이 장치 내의 물리량으로 표현되는 다른 데이터로 조작 및 변환하는 컴퓨터 시스템 또는 유사한 전자 컴퓨팅 장치의 작용 및 프로세스를 지칭하는 것으로 이해하여야 한다.
본 개시의 실시예는 또한 본 명세서의 동작을 수행하기 위한 장치에 관한 것이다. 이러한 컴퓨터 프로그램은 비 일시적 컴퓨터 판독 가능 매체에 저장된다. 기계 판독 가능 매체는 기계 (예를 들어, 컴퓨터)에 의해 판독 가능한 형태로 정보를 저장하기 위한 임의의 메커니즘을 포함한다. 예를 들어, 기계 판독 가능 (예를 들어, 컴퓨터 판독 가능) 매체는 기계 (예를 들어, 컴퓨터) 판독 가능 저장 매체 (예를 들어, 판독 전용 메모리 ("ROM"), 랜덤 액세스 메모리 ("RAM"), 자기 디스크 저장 매체, 광 저장 매체, 플래시 메모리 장치)를 포함한다.
전술한 도면에 도시된 프로세스 또는 방법은 하드웨어 (예를 들어, 회로, 전용 로직 등), 소프트웨어 (예를 들어, 비 일시적 컴퓨터 판독 가능 매체에 구현됨), 또는 양자의 조합을 포함하는 처리 로직에 의해 수행될 수 있다. 위에서 프로세스들 또는 방법들이 일부 순차적 동작들과 관련하여 설명되었으나, 설명된 동작들 중 일부는 다른 순서로 수행될 수도 있음을 이해하여야 한다. 또한, 일부 동작들은 순차적이 아니라 병행으로 수행될 수 있다.
본 개시의 실시예는 임의의 특정 프로그래밍 언어를 참조하여 설명되지 않는다. 본 명세서에 기술된 바와 같이 본 개시의 실시예의 교시를 구현하기 위해 다양한 프로그래밍 언어가 사용될 수 있다는 것이 이해될 것이다.
이상에서 본 출원의 구체적인 실시예에 대해 도시하고 또한 설명하였다. 다음의 청구 범위에 개시된 본 발명의 더 넓은 사상 및 범위를 벗어나지 않고 다양한 변형이 이루어질 수 있음은 명백할 것이다. 따라서, 명세서 및 도면은 한정적인 것이 아니라, 예시적인 것으로 이해해야 한다.

Claims (20)

  1. 데이터 처리 DP 가속기를 이용한 인공지능 AI 모델 훈련을 위한 컴퓨터 구현 방법에 있어서,
    상기 방법은,
    중앙 처리 장치(CPU)로부터 요청을 수신하는 단계 -상기 요청은 상기 CPU에서 배포된 복수의 데이터 블록을 구비한 트레이닝 데이터 세트에 따라 AI 모델을 훈련시킴-; 및
    상기 AI 모델을 트레이닝하기 위해, 논리적 링으로 배치된 복수의 범용 프로세싱 유닛(GPU)에 의해 복수의 DP 반복을 수행하는 단계;를 포함하고,
    상기 복수의 DP 반복은, 각각의 DP 반복에서,
    제1 DP 사이클 기간에, 상기 각 GPU에 의해 상기 데이터 블록 중 하나에 대해 제1 설정 DP 작업을 각각 병행으로 수행하여 제1 해당 DP 결과를 생성하고,
    제2 DP 사이클 기간에, 상기 각 GPU에 의해 프로세서간 링크를 통해 상기 제1 해당 DP 결과를 논리적 링의 다운스트림 GPU에 전송하여 추가적 처리를 진행하도록 하며,
    상기 프로세서는 논리적 링의 이전 프로세서로부터 데이터 압축 작업을 통해 압축된 데이터 블록을 수신하고, 수신한 압축 데이터 블록과 해당 프로세서에서 생성한 압축 데이터 블록에 대해 연산된 데이터 블록을 획득하고, 상기 연산된 데이터 블록을 논리적 링의 다음 프로세서에 전송하는 단계와,
    복수의 프로세서 중 각각의 프로세서로부터 수신한 각 데이터 블록으로부터 연산된 압축 데이터 블록을 식별하는 단계, 및
    상기 복수의 프로세서 중 각각에서 복수의 프로세서로부터 수신한 각 데이터 블록으로부터 연산된 압축 데이터 블록을 식별하는 단계에서 식별된 압축 데이터 블록은, 논리적 링의 기타 프로세서 중 각각에 배포되며, 신경망 모델의 파라미터를 업데이트하도록 상기 프로세서에서 데이터 압축해제 작업하는 단계를 포함하는 것을 포함하는 방법.
  2. 제1항에 있어서,
    상기 방법은,
    상기 제2 DP 사이클 기간에 상기 각 GPU에 의해 대응하는 프로세서간 링크를 통해 상기 논리적 링의 업스트림 GPU로부터 제2 해당 DP 결과를 수신하여 추가적 처리를 진행하도록 하는 단계를 더 포함하는 방법.
  3. 제2항에 있어서,
    상기 방법은,
    제3 DP 사이클 기간에 상기 각 GPU에 의해, 상기 GPU에서 처리된 데이터 블록과 대응하는 업스트림 GPU로부터 수신한 데이터 블록에 대해 제2 설정 DP 작업을 동시에 수행하는 단계를 더 포함하는 방법.
  4. 제3항에 있어서,
    현재 GPU에 의해 처리된 제1 데이터 블록 및 대응하는 업스트림 GPU에 의해 처리된 제2 데이터 블록에 대해 상기 제2 설정 DP 작업을 수행하여 제1 DP 결과를 생성하는 방법.
  5. 제4항에 있어서,
    상기 제2 설정 DP 작업은 상기 제1 데이터 블록과 상기 제2 데이터 블록의 조합 연산을 포함하는 방법.
  6. 제4항에 있어서,
    상기 방법은,
    제4 DP 사이클 기간에 상기 각 GPU에 의해 상기 제1 DP 결과에 대해 제3 설정 DP 작업을 동시에 수행하는 단계를 더 포함하는 방법.
  7. 제6항에 있어서,
    상기 제3 설정 DP 작업은 데이터 압축해제 작업을 포함하는 방법.
  8. 제1항에 있어서,
    상기 프로세서간 링크는 가속기의 캐시 일관성 인터커넥트 (CCIX) 연결을 포함하는 방법.
  9. 제1항에 있어서,
    상기 데이터 블록의 적어도 일 부분은 상기 AI 모델 훈련의 일부로 생성된 파라미터 또는 그레디언트를 나타내는 방법.
  10. 제1항에 있어서,
    상기 제1 설정 DP 작업은 데이터 압축 작업을 포함하는 방법.
  11. 제10항에 있어서,
    제로값 압축 알고리즘(zero-value compression algorithm)을 이용하여 상기 데이터 압축 작업을 수행하고, 상기 제로값 압축 알고리즘은 하나 또는 복수의 데이터 블록을 비트마스크 부분 및 압축 데이터 부분을 갖는 데이터 구조로 압축하며, 상기 비트마스크 부분은 상기 데이터 블록에서 ‘0’이 아닌 값의 위치를 나타내는 비트를 포함하는 방법.
  12. 데이터 처리 시스템에 있어서,
    적어도 하나의 중앙 처리 장치(CPU); 및
    상기 CPU에 연결된 복수의 범용 프로세싱 유닛(GPU);를 포함하고, 상기 각 GPU는 상기 CPU에서 배포된 인공지능 AI 데이터 처리 (DP) 작업을 수행하도록 구성되고,
    상기 작업은,
    중앙 처리 장치 (CPU) 로부터 요청을 수신하는 단계 -상기 요청은 상기 CPU에서 배포된 복수의 데이터 블록을 구비한 트레이닝 데이터 세트에 따라 AI 모델을 훈련시킴-; 및
    상기 AI 모델을 트레이닝하기 위해, 논리적 링으로 배치된 복수의 범용 프로세싱 유닛(GPU)에 의해 복수의 DP 반복을 수행하는 단계;를 포함하고,
    상기 복수의 DP 반복은, 각각의 DP 반복에서,
    제1 DP 사이클 기간에, 상기 각 GPU에 의해 상기 데이터 블록 중 하나에 대해 제1 설정 DP 작업을 각각 병행으로 수행하여 제1 해당 DP 결과를 생성하고,
    제2 DP 사이클 기간에, 상기 각 GPU에 의해 프로세서간 링크를 통해 상기 제1 해당 DP 결과를 논리적 링의 다운스트림 GPU에 전송하여 추가적 처리를 진행하도록 하며,
    상기 프로세서는 논리적 링의 이전 프로세서로부터 데이터 압축 작업을 통해 압축된 데이터 블록을 수신하고, 수신한 압축 데이터 블록과 해당 프로세서에서 생성한 압축 데이터 블록에 대해 연산된 데이터 블록을 획득하고, 상기 연산된 데이터 블록을 논리적 링의 다음 프로세서에 전송하며,
    복수의 프로세서 중 각각의 프로세서로부터 수신한 각 데이터 블록으로부터 연산된 압축 데이터 블록을 식별하고, 상기 복수의 프로세서 중 각각에서 복수의 프로세서로부터 수신한 각 데이터 블록으로부터 연산된 압축 데이터 블록을 식별하는 단계에서 식별된 압축 데이터 블록은, 논리적 링의 기타 프로세서 중 각각에 배포되며, 신경망 모델의 파라미터를 업데이트하도록 상기 프로세서에서 데이터 압축해제 작업하는 단계;를 포함하는 데이터 처리 시스템.
  13. 제12항에 있어서,
    상기 작업은,
    상기 제2 DP 사이클 기간에 상기 각 GPU에 의해 대응하는 프로세서간 링크를 통해 상기 논리적 링의 업스트림 GPU로부터 제2 해당 DP 결과를 수신하여 추가적 처리를 진행하도록 하는 단계를 더 포함하는 데이터 처리 시스템.
  14. 제13항에 있어서,
    상기 작업은,
    제3 DP 사이클 기간에 상기 각 GPU에 의해, 상기 GPU에서 처리된 데이터 블록과 대응하는 업스트림 GPU로부터 수신한 데이터 블록에 대해 제2 설정 DP 작업을 동시에 수행하는 단계를 더 포함하는 데이터 처리 시스템.
  15. 제14항에 있어서,
    현재 GPU에 의해 처리된 제1 데이터 블록 및 대응하는 업스트림 GPU에 의해 처리된 제2 데이터 블록에 대해 상기 제2 설정 DP 작업을 수행하여 제1 DP 결과를 생성하는 데이터 처리 시스템.
  16. 제15항에 있어서,
    상기 제2 설정 DP 작업은 상기 제1 데이터 블록과 상기 제2 데이터 블록의 조합 연산을 포함하는 데이터 처리 시스템.
  17. 제15항에 있어서,
    상기 작업은,
    제4 DP 사이클 기간에 상기 각 GPU에 의해 상기 제1 DP 결과에 대해 제3 설정 DP 작업을 동시에 수행하는 단계를 더 포함하는 데이터 처리 시스템.
  18. 제17항에 있어서,
    상기 제3 설정 DP 작업은 데이터 압축해제 작업을 포함하는 데이터 처리 시스템.
  19. 비 일시적 컴퓨터 판독 가능 저장 매체에 있어서,
    상기 비 일시적 컴퓨터 판독 가능 저장 매체에는 명령어가 저장되어 있고, 상기 명령어는 프로세서에 의해 실행될 경우 상기 프로세서가 인공지능 AI 훈련을 위한 동작을 수행하도록 하고,
    상기 동작은,
    중앙 처리 장치(CPU)로부터 요청을 수신하는 단계 -상기 요청은 상기 CPU에서 배포된 복수의 데이터 블록을 구비한 트레이닝 데이터 세트에 따라 AI 모델을 훈련시킴-; 및
    상기 AI 모델을 트레이닝하기 위해, 논리적 링으로 배치된 복수의 범용 프로세싱 유닛(GPU)에 의해 복수의 DP 반복을 수행하는 단계;를 포함하고,
    상기 복수의 DP 반복은, 각각의 DP 반복에서,
    제1 DP 사이클 기간에, 상기 각 GPU에 의해 상기 데이터 블록 중 하나에 대해 제1 설정 DP 작업을 각각 병행으로 수행하여 제1 해당 DP 결과를 생성하고,
    제2 DP 사이클 기간에, 상기 각 GPU에 의해 프로세서간 링크를 통해 상기 제1 해당 DP 결과를 논리적 링의 다운스트림 GPU에 전송하여 추가적 처리를 진행하도록 하며,
    상기 프로세서는 논리적 링의 이전 프로세서로부터 데이터 압축 작업을 통해 압축된 데이터 블록을 수신하고, 수신한 압축 데이터 블록과 해당 프로세서에서 생성한 압축 데이터 블록에 대해 연산된 데이터 블록을 획득하고, 상기 연산된 데이터 블록을 논리적 링의 다음 프로세서에 전송하며,
    복수의 프로세서 중 각각의 프로세서로부터 수신한 각 데이터 블록으로부터 연산된 압축 데이터 블록을 식별하고, 상기 복수의 프로세서 중 각각에서 복수의 프로세서로부터 수신한 각 데이터 블록으로부터 연산된 압축 데이터 블록을 식별하는 단계에서 식별된 압축 데이터 블록은, 논리적 링의 기타 프로세서 중 각각에 배포되며, 신경망 모델의 파라미터를 업데이트하도록 상기 프로세서에서 데이터 압축해제 작업하는 비 일시적 컴퓨터 판독 가능 저장 매체.
  20. 제19항에 있어서,
    상기 동작은,
    상기 제2 DP 사이클 기간에 상기 각 GPU에 의해 대응하는 프로세서간 링크를 통해 상기 논리적 링의 업스트림 GPU로부터 제2 해당 DP 결과를 수신하여 추가적 처리를 진행하도록 하는 단계를 더 포함하는 비 일시적 컴퓨터 판독 가능 저장 매체.
KR1020207019377A 2019-10-12 2019-10-12 고급 상호 연결 통신기술을 이용한 ai 훈련 가속화 방법 및 시스템 KR102472282B1 (ko)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/CN2019/110814 WO2021068243A1 (en) 2019-10-12 2019-10-12 Method and system for accelerating ai training with advanced interconnect technologies

Publications (2)

Publication Number Publication Date
KR20210044180A KR20210044180A (ko) 2021-04-22
KR102472282B1 true KR102472282B1 (ko) 2022-11-29

Family

ID=75437678

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020207019377A KR102472282B1 (ko) 2019-10-12 2019-10-12 고급 상호 연결 통신기술을 이용한 ai 훈련 가속화 방법 및 시스템

Country Status (6)

Country Link
US (1) US11544067B2 (ko)
EP (1) EP3830764A4 (ko)
JP (1) JP7256811B2 (ko)
KR (1) KR102472282B1 (ko)
CN (1) CN113272854A (ko)
WO (1) WO2021068243A1 (ko)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20240185587A1 (en) * 2021-08-16 2024-06-06 Baidu.Com Times Technology (Beijing) Co., Ltd. Hardware adaptive multi-model scheduling
CN114764942B (zh) * 2022-05-20 2022-12-09 清华大学深圳国际研究生院 一种难正负样本在线挖掘方法和人脸识别方法
CN115250253B (zh) * 2022-06-22 2024-02-27 西南交通大学 带宽感知的归约处理方法以及ai模型的训练方法
EP4361890A1 (en) * 2022-10-31 2024-05-01 Imagination Technologies Limited Implementing a scatter function on a neural network accelerator

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20190205745A1 (en) * 2017-12-29 2019-07-04 Intel Corporation Communication optimizations for distributed machine learning

Family Cites Families (24)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0784966A (ja) * 1993-08-06 1995-03-31 Toshiba Corp データ処理装置
GB2447494A (en) * 2007-03-15 2008-09-17 Linear Algebra Technologies Lt A method and circuit for compressing data using a bitmap to identify the location of data values
GB2457303A (en) * 2008-02-11 2009-08-12 Linear Algebra Technologies Randomly accessing elements of compressed matrix data by calculating offsets from non-zero values of a bitmap
CN104036451B (zh) * 2014-06-20 2018-12-11 深圳市腾讯计算机***有限公司 基于多图形处理器的模型并行处理方法及装置
CN104035751B (zh) * 2014-06-20 2016-10-12 深圳市腾讯计算机***有限公司 基于多图形处理器的数据并行处理方法及装置
CN104899641B (zh) 2015-05-25 2018-07-13 杭州朗和科技有限公司 深度神经网络学习方法、处理器和深度神经网络学习***
US10763893B2 (en) * 2016-07-20 2020-09-01 Georges Harik Method for data compression
CN108229687B (zh) * 2016-12-14 2021-08-24 腾讯科技(深圳)有限公司 数据处理方法、数据处理装置及电子设备
KR102457463B1 (ko) 2017-01-16 2022-10-21 한국전자통신연구원 희소 파라미터를 사용하는 압축 신경망 시스템 및 그것의 설계 방법
US10599935B2 (en) * 2017-02-22 2020-03-24 Arm Limited Processing artificial neural network weights
CN110582748A (zh) * 2017-04-07 2019-12-17 英特尔公司 用于提升用于深度学习的深度神经网络的方法和***
US10346944B2 (en) * 2017-04-09 2019-07-09 Intel Corporation Machine learning sparse computation mechanism
US10403003B2 (en) 2017-04-24 2019-09-03 Intel Corporation Compression mechanism
US10922606B2 (en) * 2017-06-13 2021-02-16 International Business Machines Corporation Multi-directional reduction in large scale deep-learning
WO2019082165A1 (en) * 2017-10-26 2019-05-02 Uber Technologies, Inc. GENERATION OF NEURAL NETWORKS WITH COMPRESSED REPRESENTATION HAVING A HIGH DEGREE OF PRECISION
US11080611B2 (en) * 2017-12-22 2021-08-03 Intel Corporation Compression for deep learning in case of sparse values mapped to non-zero value
US10474495B2 (en) * 2018-01-08 2019-11-12 Accenture Global Solutions Limited Utilizing an artificial intelligence model determined for a target domain based on a dataset associated with a source domain
CN110134636B (zh) * 2018-02-09 2023-04-18 中兴通讯股份有限公司 模型训练方法、服务器和计算机可读存储介质
CN110197275B (zh) * 2018-02-27 2020-08-04 上海寒武纪信息科技有限公司 集成电路芯片装置及相关产品
US10728091B2 (en) 2018-04-04 2020-07-28 EMC IP Holding Company LLC Topology-aware provisioning of hardware accelerator resources in a distributed environment
CN109214512B (zh) * 2018-08-01 2021-01-22 中兴飞流信息科技有限公司 一种深度学习的参数交换方法、装置、服务器及存储介质
US11295236B2 (en) * 2018-12-10 2022-04-05 International Business Machines Corporation Machine learning in heterogeneous processing systems
CN209044577U (zh) * 2018-12-27 2019-06-28 北京盛博协同科技有限责任公司 综合显示控制模块
US11501160B2 (en) * 2019-03-28 2022-11-15 International Business Machines Corporation Cloud computing data compression for allreduce in deep learning

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20190205745A1 (en) * 2017-12-29 2019-07-04 Intel Corporation Communication optimizations for distributed machine learning

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
Andrwe Gibiansky, Bringing HPC Techniques to Deep Learning,*
Cache Coherent Interface for Accelerators(CCIX), 2018 SNIA Persistent Memory Summit, 1-24pages (2016. 10.)*

Also Published As

Publication number Publication date
EP3830764A1 (en) 2021-06-09
JP7256811B2 (ja) 2023-04-12
US11544067B2 (en) 2023-01-03
CN113272854A (zh) 2021-08-17
JP2022504995A (ja) 2022-01-14
US20210318878A1 (en) 2021-10-14
WO2021068243A1 (en) 2021-04-15
EP3830764A4 (en) 2021-06-09
KR20210044180A (ko) 2021-04-22

Similar Documents

Publication Publication Date Title
KR102472282B1 (ko) 고급 상호 연결 통신기술을 이용한 ai 훈련 가속화 방법 및 시스템
US11893424B2 (en) Training a neural network using a non-homogenous set of reconfigurable processors
Li et al. Pipe-SGD: A decentralized pipelined SGD framework for distributed deep net training
US11740898B2 (en) Computing device and method
US20200285950A1 (en) Structured Weight Based Sparsity In An Artificial Neural Network Compiler
WO2017124644A1 (zh) 一种人工神经网络压缩编码装置和方法
CN112579043A (zh) 存储器中计算/近存储器计算(cim)电路架构
US11551028B2 (en) Structured weight based sparsity in an artificial neural network
US11847395B2 (en) Executing a neural network graph using a non-homogenous set of reconfigurable processors
US20200279133A1 (en) Structured Sparsity Guided Training In An Artificial Neural Network
US20210209450A1 (en) Compressed weight distribution in networks of neural processors
US20210201110A1 (en) Methods and systems for performing inference with a neural network
CN114402293A (zh) 具有持续且异步更新的流水线式神经网络处理
CN112836813B (zh) 一种用于混合精度神经网络计算的可重构脉动阵列***
US20220076095A1 (en) Multi-level sparse neural networks with dynamic rerouting
KR102525329B1 (ko) 플렉서블 케이블 연결 기반의 분산형 ai 훈련 토폴로지
CN111045728A (zh) 一种计算装置及相关产品
CN114626516A (zh) 一种基于对数块浮点量化的神经网络加速***
CN111886593A (zh) 数据处理***和数据处理方法
Barrachina et al. A flexible research-oriented framework for distributed training of deep neural networks
Jang et al. Smart-Infinity: Fast Large Language Model Training using Near-Storage Processing on a Real System
US20220067509A1 (en) System and method for learning from partial compressed representation
CN111198714B (zh) 重训练方法及相关产品
CN112906877A (zh) 用于执行神经网络模型的存储器架构中的数据布局有意识处理
CN111047024A (zh) 一种计算装置及相关产品

Legal Events

Date Code Title Description
N231 Notification of change of applicant
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant