KR20220142059A - 이미지 기반 딥 러닝 학습의 배칭 연산 가속을 위한 인 메모리 소프트웨어 디코딩 캐시 구조 및 관리 기법 - Google Patents

이미지 기반 딥 러닝 학습의 배칭 연산 가속을 위한 인 메모리 소프트웨어 디코딩 캐시 구조 및 관리 기법 Download PDF

Info

Publication number
KR20220142059A
KR20220142059A KR1020210048352A KR20210048352A KR20220142059A KR 20220142059 A KR20220142059 A KR 20220142059A KR 1020210048352 A KR1020210048352 A KR 1020210048352A KR 20210048352 A KR20210048352 A KR 20210048352A KR 20220142059 A KR20220142059 A KR 20220142059A
Authority
KR
South Korea
Prior art keywords
gpu
tasks
data
cache
learning
Prior art date
Application number
KR1020210048352A
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 한국과학기술원
Priority to KR1020210048352A priority Critical patent/KR20220142059A/ko
Publication of KR20220142059A publication Critical patent/KR20220142059A/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/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • G06F9/5038Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering the execution order of a plurality of tasks, e.g. taking priority or time dependency constraints into consideration
    • 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/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • 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
    • 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/5077Logical partitioning of resources; Management or configuration of virtualized resources
    • 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
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Health & Medical Sciences (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Biomedical Technology (AREA)
  • Biophysics (AREA)
  • General Health & Medical Sciences (AREA)
  • Artificial Intelligence (AREA)
  • Computational Linguistics (AREA)
  • Data Mining & Analysis (AREA)
  • Evolutionary Computation (AREA)
  • Molecular Biology (AREA)
  • Computing Systems (AREA)
  • Mathematical Physics (AREA)
  • Neurology (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

다중 GPU 클러스터 환경에서 이미지 기반 딥 러닝 학습 시 배칭 연산 시 작업 간 호스트 CPU 경합으로 발생하는 배칭 연산의 병목과 작업 간 불공정 문제를 해결하여 전체 학습 작업 효율 개선을 위한 인 메모리 구조의 디코딩 캐시 기법에 관한 것이다.

Description

이미지 기반 딥 러닝 학습의 배칭 연산 가속을 위한 인 메모리 소프트웨어 디코딩 캐시 구조 및 관리 기법{In-memory Decoding Cache and Its Management Scheme for Accelerating Deep Learning Batching Process}
본 발명은 고차원 이미지 기반의 딥 러닝 환경에서의 학습 과정 중 발생하게 되는 고차원 이미지의 데이터 I/O 및 디코딩 연산의 병목 현상을 제거하고 및 지연을 가속하는 기술로, 인 메모리 캐시 구조와 캐시 관리 기법을 통해 딥 러닝 학습에 사용되는 이미지 데이터를 함으로써 로딩에 필요한 지연 시간을 개선하고 다중 작업의 불필요한 배칭 작업을 제거한다. 해당 기법은 디코딩 캐시로 하여금 다중 GPU 환경에서 디코딩 된 이미지 데이터를 prefetch하고 저장하는 역할을 수행하도록 하여, GPU의 관점에서 미리 준비된 배치를 큰 오버헤드 없이 즉시 실행할 수 있어 GPU 활용도를 향상시킨다. 이를 통해 이미지 기반의 딥 러닝의 학습 성능을 향상시키고 I/O 및 전처리에 소요되는 시간을 단축시켜 전체 시스템 성능을 개선할 수 있다. 특히, 후술하는 내용에서 설명하는 다중 GPU 시스템의 자원 경쟁 상황에서 다수의 리소스를 두고 경쟁 상태인 상황에서, 긴 작업을 수행 중인 GPU에서 코어 자원을 독점하는 공정성 문제를 해결할 수 있다.
종래의 관련 연구[1]에 따르면, 주파수 기술의 정체로 인해 CPU 컴퓨팅 파워의 개발이 둔화되고 있다. 그러나 SM 코어의 수가 증가한 만큼 GPU의 성능 개선이 이를 뒷받침하고 있기 때문에, 컴퓨팅 성능의 개선은 CPU 성능의 개선보다 더 높다. 근래의 관련 연구에 따르면, 이러한 추세가 유지되면 위의 차이는 몇 년 내에 빠르게 확대될 것으로 예상된다. 딥러닝 학습을 위한 GPU의 컴퓨팅 성능은 이미 CPU에 비해 수십 배의 성능 차이를 보여주고 있으며, 이러한 추세는 점점 더 커지고 있다. 이러한 추세에 따라 빠른 속도의 GPU에 비해 GPU가 처리할 데이터를 준비하는 CPU 및 I/O가 병목 현상이 될 것이다. 이러한 디코딩 및 전처리에 소요되는 시간의 비율 증가는 GPU 작업의 대기 시간을 유발하여 고성능의 GPU 자원을 효율적으로 사용하지 못하게 한다. 한편 학습을 위한 이미지넷, 마이크로소프트 COCO와 같은 벤치마크 또는 사용자 정의 이미지 데이터셋의 경우 JPEG, PNG와 같은 압축 상태로 존재하며 이 데이터 용량이 점점 증가하는 추세이다. 이들은 1. 전원이 꺼지더라도 보관되어야 하는 데이터셋이고, 2. 디코딩 된 이미지의 픽셀 데이터를 모두 저장하기에 호스트나 GPU의 DRAM으로 모두 저장하는 것이 불가능하며, 3. 용량 당 비용이 높은 DRAM을 모든 데이터셋이 보관될 수 있게 구성하기가 어렵기 때문에 본 데이터셋들은 비휘발성 매체인 HDD, SSD와 같은 스토리지에 보관된다. 이러한 추세로 인해 CPU 및 I/O 쪽 병목을 해결하는 것이 더 중요해지고 있다.
Pytorch[4]와 TensorFlow[3] 같이 널리 사용되는 딥러닝 프레임워크에서는 이를 가속화하기 위한 멀티 프로세스 기반의 데이터 배칭 작업을 지원한다. 그 중 이미지 처리를 위해, Pytorch는 DataLoader를 사용하여 GPU에 대한 입력으로 사용할 데이터를 생성하게 된다. Pytorch는 위 과정의 데이터 생성의 병목 현상을 극복하기 위해, 하나의 학습 작업에 대해 다중 프로세스를 기반으로 여러 DataLoader 객체를 생성하여 다음 반복 연산에 배치될 데이터를 미리 처리하는 파이프라이닝 방법을 지원한다. 각 DataLoader 객체가 하나의 CPU 코어를 점유하여 이미지 데이터의 배칭 과정(I/O, 디코딩 및 사전 처리) 시간을 줄이거나 없앨 수 있다. 그러나, 너무 많은 DataLoader 객체는 단시간 내 사용하지 않을 데이터 배치까지 동시에 처리하기 때문에 CPU의 불필요한 경합을 발생시키며 오히려 현재 필요한 데이터 배치 작업을 기다리는 GPU 대기 시간이 더 길어질 수 있어 학습 데이터와 모델 뿐만 아니라 컴퓨팅 자원의 처리 성능 고려하여 신중히 프로세스 개수를 결정해야한다. 또한, 다중 GPU 환경의 클러스터에서 다중 학습 작업이 동시에 진행될 때 이러한 멀티 프로세스 기반 배칭 파이프라이닝 방법이 CPU 경합을 쉽게 발생시켜 학습 시간의 저하와 작업 간 불공정 문제를 유발한다.
딥 러닝 작업에서, CPU 및 스토리지가 처리하는 데이터 일괄 처리 프로세스의 병목 현상을 해결하기 위해 NVIDIA는 DALI(Data Loading Library)[2] 프레임워크를 제안했다. NVIDIA DALI는 NVIDA GPU 환경에서 학습하는 데 필요한 I/O, 디코딩 및 전처리(이미지 자르기, 크기 조정, 지터 등)와 같은 이미지 계산 작업을 기존 CPU에서 NVIDIA GPU에 오프로딩하여 처리함으로써 배칭 과정의 시간을 가속한다. 특히 JPEG 이미지 형식 파일은 라이브러리 nvJPEG를 사용하여 디코딩을 가속화한다. 또한 JPEG 형식 외에도 다른 직렬화 형식 (LMDB, RecordID, TFRecord 등)을 지원하며, DALI는 pytorch 및 tensorflow와 같은 딥 러닝 프레임워크와의 통합을 위한 어댑터를 제공한다. 하지만 DALI를 사용하게 될 경우 GPU에서 수행하는 연산 수가 늘어남에 따라 거기에 대한 GPU DRAM 필요량이 더 커지게 된다. 이는 일반적으로 수십 GB 정도 되는 비용이 비싼 GPU 메모리 상에 큰 문제를 낳는다. 실제로 64 배치 사이즈를 가지는 이미지 넷 데이터 학습의 경우 약 500MB 가량의 GPU 메모리 공간을 더 사용하게 되는데, 일반적인 RTX GPU 시리즈의 메모리가 수 GB 인 점을 감안하면, 이로 인해 학습 시 배치 사이즈를 늘리지 못하거나 모델이 빌드가 안되는 추가적인 문제를 발생시킨다.
[1] Fast data pipeline for deep learning training, Published as a conference paper in GPU Technology Conference, 2018. S. L. T. Gale and P. Tredak. [2] Fast ai data pre-preprocessing with dali, Published as a conference paper in GPU Technology Conference, 2019 J. Lisiecki and M. Zientkiewicz. [3] Tensorflow: A system for large-scale machine learning, Published as a conference paper in 12th USENIX Symposium on Operating Systems Design and Implementation (OSDI 16), 2016 M. Abadi, P. Barham, J. Chen, Z. Chen, A. Davis, J. Dean, M. Devin, S. Ghemawat, G. Irving, M. Isard, M. Kudlur, J. Levenberg, R. Monga, S. Moore, D. G. Murray, B. Steiner, P. Tucker, V. Vasudevan, P. Warden, M. Wicke, Y. Yu, and X. Zheng. [4] Pytorch: An imperative style, high-performance deep learning library, Advances in neural information processing systems, 2019. A. Paszke, S. Gross, F. Massa, A. Lerer, J. Bradbury, G. Chanan, T. Killeen, Z. Lin, N. Gimelshein, L. Antiga et al.
아키텍쳐 상의 병렬화 특성을 고려할 때, CNN을 포함한 다양한 학습 모델을 사용하여 이미지 분류를 수행하는 딥 러닝 (DL) 작업의 경우 통상 GPU를 활용하여 수행된다. 딥 러닝 학습 과정에서는 스토리지로부터 이미지 데이터세트를 여러 개의 배치로 나눠 반복적으로 모델을 학습한다. 이 때 전체 데이터세트를 한번씩 모델에 넣어 학습할 때를 한 epoch이라고 지칭하며, 일반적으로 한 모델을 학습하는데 수 십에서 수 백 epoch를 반복해야 한다. 기존 학습 프레임워크나 시스템에서는 다중 GPU 환경에서 위의 과정을 반복적으로 수행하는 동시 수행 작업이 여러 개가 존재할 때, 최적 파라미터 탐색과 같은 이유로 인해 하나 이상의 작업이 동일한 데이터셋을 학습하더라도 각 작업이 동일한 I/O 및 디코딩 작업을 반복하여 불필요한 CPU 자원 사용을 야기한다. 예를 들어, NVIDIA RTX 2080 Super GPU와 삼성 970 NVMe SSD, 그리고 Intel Xeon Silver 4214R의 GPU 서버 상에서 ResNet-50 모델을 이미지넷 데이터를 통해 학습 시 총 학습 시간의 약 52% 가량을 배칭 과정이 차지하며, 이중 I/O와 디코딩은 약 77%를 차지한다. 본 발명에서는, 다중 GPU에 연결된 호스트 CPU의 글로벌 인 메모리 캐시를 통해 다중 학습 작업 환경에서 학습 속도 향상과 작업 간 불공정 문제를 해결하여 전체적인 클러스터의 효율성을 증가시키고자 한다.
본 발명에서는, 전술한 다중 작업 간 불필요한 디코딩 과정 반복 문제나 작업의 데이터 배칭 프로세스 간 발생하는 CPU 경합으로 인한 배칭 과정의 병목을 해결하기 위해 이미지 I/O 디코딩의 중복성을 제거하는 소프트웨어 정의 디코딩 캐시와 작업의 컴퓨팅 및 데이터 특성에 따른 캐싱 비율을 제어하는 캐시 관리 기법을 제안한다.
제안한 캐시는 호스트의 DRAM에 위치하는 인 메모리 캐시로 학습 작업에서 다음에 사용될 배치 데이터들을 디코딩 된 형태로 프리패칭하고 있다. 학습 연산의 주체인 GPU의 관점에서 SSD 및 HDD와 같은 스토리지에서 처리되는 I/O나 CPU에서 처리되는 디코딩 과정을 거칠 필요없이 인 메모리 접근 시간만으로 배칭할 수 있기 때문에 고성능의 GPU 활용도를 향상 시킬 수 있도록 한다.
디코딩 캐시는 압축 해제된 이미지 객체를 직렬화 된 형태로 DRAM 공간으로 캐싱된다. 해당 지연은 GPU에서 해당 데이터의 학습이 처리되기 전에 호스트 CPU 상에서 처리되므로 전체 학습 시간을 증가시키지 않으므로, 학습 시스템 성능을 크게 향상시킬 수 있다. 이 때 제한 된 DRAM 공간에 모든 이미지를 캐싱해 놓을 수 없으므로, 현재 진행되는 학습 작업의 배치 순서에 따라 동적으로 데이터를 캐싱하고 만료(Eviction)해야 한다. 또한, 다중 학습 작업이 동시에 실행되는 환경에서 작업의 불균형 및 CPU 경합 문제를 해결하기 위해 이 디코딩 캐시는 작업 간의 GPU 연산 시간 및 학습 이미지의 크기, 배칭 사이즈에 따라 제한된 CPU 자원을 분배하여 전체 작업 시간을 단축하고 작업 간 균형을 유지하는 글로벌 캐싱 관리를 통해 전체 시스템 성능을 향상시킬 수 있을 뿐만 아니라, 리소스가 경쟁하는 상황에서 공정성 문제를 해결할 수 있으며, 향후 I/O 성능과 연산 성능의 격차가 더욱 심화될수록 성능 및 균형 조정 문제를 효과적으로 해결할 수 있다.
해당 디코딩 캐시 구조와 관리 기법을 통해, 다중 GPU 컴퓨팅 환경에서 딥 러닝 학습 작업 학습 시 서술하는 세 가지 문제 및 현상들을 해소할 수 있다.
첫째, GPU로 배칭될 데이터를 미리 인 메모리에 프리패칭 함으로써, GPU의 대기 시간을 줄이고 고성능 GPU의 컴퓨팅 활용도를 최대화 할 수 있다. 실제로 GPU가 배칭 데이터를 요청할 때 미리 프리패칭된 디코딩 캐시에 성공적으로 히트가 발생했을 경우, 스토리지 I/O에 접근하는 데 필요한 시간과 이미지를 디코딩하는 데 걸리는 시간을 디코딩 캐시에 접근하는 시간 하나로 단축하여 대체할 수 있고, 일반적으로 인 메모리 접근 시간은 위 2개의 시간 합보다 훨씬 짧기 때문에 전체 학습 시간 가속에 효과가 있다.
둘째, 최근 딥 러닝 가속 컴퓨팅 환경으로 사용되는 일반적인 4 GPU 또는 8 GPU 서버 상에서 동시에 다중 학습 작업이 생길 때 발생하는 CPU 경합을 줄일 수 있다. 해당 캐시 관리 기법은 다중 학습 작업 간 반복 작업에 필요한 컴퓨팅 요구사항과 데이터 배칭 시간을 분석하여, 가장 한번 반복 학습에 오래 걸리는 작업에 대한 캐싱 작업을 수행하는 CPU를 우선적으로 할당함으로써, 학습 작업의 완료 시간을 줄이면서 작업 간 공정성이 깨지는 문제도 해결할 수 있다.
셋째, 딥 러닝 작업의 epoch 반복이나 또는 최적 파라미터 탐색을 위해 한 데이터셋을 다중 작업이 동시에 활용할 때 생기는 불필요한 중복 I/O 및 디코딩 작업을 개선한다. 일반적으로 딥 러닝 학습 작업은 매 Epoch 마다 배치 될 데이터 순서를 섞어서 학습을 진행하게 되는데, 디코딩 캐시는 모든 작업으로부터 배치될 데이터의 순서를 받아 순차적으로 캐싱을 진행하게 된다. 이 때 중복되는 I/O, 디코딩 과정을 캐시 관리 기법을 통해 제거함으로써 제한된 DRAM 공간 상에 데이터 관리와 전체 데이터 배칭에 드는 연산 수를 효과적으로 감소시킨다. 예를 들어 한 작업에서 사용 된 이미지가 다른 작업에서 주어진 시간 내에 사용되면 디코딩 캐시는 이 데이터를 만료시키지 않고 보관하도록 캐싱 관리를 효과적으로 수행한다.
따라서, 본 발명에서 제시한 디코딩 캐시 기법을 통해 이미지 기반의 딥 러닝 학습 과정에서 발생하는 I/O 접근 및 이미지 디코딩 시간을 간소화함으로써, 전체적인 딥 러닝 학습 과정에서의 성능 개선을 기대할 수 있다.
도 1은 본 발명에 의한 이미지 기반 딥러닝 작업 요청의 학습 과정으로, 여러 사용자로부터 모델 및 데이터 세트가 포함된 학습 요청를 시스템을 디코딩 캐시 시스템으로 처리될 때의 전체 개념도를 나타낸다. 이 때 학습 요청은 같은 사용자로부터 발생된 다른 모델 또는 다른 데이터세트일 수 있다.
도 2는 GPU 가속기를 통한 딥 러닝 학습 작업의 일반적인 배칭 플로우 차트이다. 매 반복 학습마다 GPU에서 컴퓨팅을 연산을 수행하기 위해서, 스토리지에서 파일 I/O가 발생하고, 이후 CPU 연산에 의해 이미지를 디코딩하게 되며, 이를 전처리 과정을 통해 GPU로 전송하게 된다.
도 3는 디코딩 캐시 모델을 사용했을 때 한 반복 학습의 지연 시간이 간소화되는 과정을 보여주는 플로우 차트이다. 디코딩 캐시는 디코딩 된 픽셀 데이터의 직렬화 된 값, 파일 이름을 키 값으로 하는 인 메모리 캐시로 동작한다. 해당 도에서 Path 1은 디코딩 캐시 내에 필요한 데이터가 없는 경우(캐시 미스) 시 발생하게 되는 데이터 흐름을, Path 2은 디코딩 캐시 내에 찾고자 하는 데이터 세트가 존재하는 경우(캐시 히트)의 데이터 흐름을 나타낸다.
도 4는 다중 GPU 환경에서의 학습 과정에서 해당 디코딩 캐시가 적용되는 전체 시스템 구성에 관한 도면으로, 디코딩 캐시 내 관리 기법을 형상화 한 도면이다. 캐싱 관리자는 내부에서 학습 작업들의 Epoch 마다 타이밍 정보 및 처리된 이미지의 수 정보를 이용하여 캐싱에 참여할 CPU 코어 수 및 프로세스 수를 결정한다.
도 5는 캐싱 관리 방법에 의해 각 학습 작업의 타이밍 정보를 프로파일링 하고 이를 바탕으로 캐싱 자원을 할당하여 동적으로 작업 별 캐시 히트 비율을 조절하는 과정의 도면이다.
본 발명은 딥 러닝 환경에서 이미지 처리 및 학습 과정에서 발생하는 I/O 와 전처리 프로세스를 단축하여 딥 러닝 모델의 학습 성능을 가속화하는 기술로서, 이하 첨부된 도면을 참조로 본 발명의 실시예들을 상세히 설명하기로 한다.
도 1은 본 발명의 실시예들이 적용되는 이미지 기반의 데이터세트들이 딥 러닝 학습에 이용되는 데 필요한 일반적인 과정을 나타내는 도면으로, 이 때 딥 러닝 모델과 학습하고자 하는 데이터세트들은 각 학습 요청마다 각각 다를 수 있다. 디코딩 캐시에서 관리하는 다중 코어 CPU의 데이터 패칭 프로세스들은 관리자에 의해 결정된 프로세스 수에 따라 JPEG, PNG 등 다양한 포맷으로 압축된 이미지 데이터세트를 HDD 또는 SSD로부터 DRAM로 로드하는 I/O 작업을 수행하고, 압축된 형태의 RAW 이미지를 RGB 포맷의 픽셀 단위로 변형하는 디코딩 작업을 수행한 뒤 이 데이터를 직렬화하여 캐시에 보관된다. 학습 작업의 요청에 의해 캐시 히트가 발생할 경우 역직렬화를 통해 데이터를 복원한 뒤 전처리 과정을 거쳐 학습 GPU에 배칭된다.
도 2는 각 딥 러닝 학습 작업 과정에서 한 반복 작업에 필요한 과정들을 분리하여, 각각의 수행 시간들을 분해한 플로우 차트로, 학습 작업 i에 대해서 저장 장치(SSD)로부터 이미지 파일을 CPU로 수신하는 파일 I/O를 수행하는 시간
Figure pat00001
, CPU에서 가져온 인코딩 된 이미지 바이트 데이터로부터 픽셀 데이터를 디코딩 하는데 걸리는 디코딩 시간
Figure pat00002
, 디코딩된 픽셀 데이터에 임의성을 부여하고 회전하거나 정제하는 등의 딥 러닝 모델에 학습시킬 수 있는 형태로 구성하는 전처리 시간
Figure pat00003
, 전처리된 배칭 이미지를 PCIe 버스를 통해 GPU가 연산할 수 있도록 GPU 메모리에 데이터를 복사하는
Figure pat00004
, GPU 환경에서 해당 정보를 모델에 통과시켜 학습을 수행하는 시간
Figure pat00005
로 구성된다. 여기서 GPU에서 연산이 시작되기 전 모든 작업 과정이 배칭에 필요한 서브 작업들이다. 위의 배칭 과정이 사용자가 정의한 총 Epoch 수만큼 반복적으로 일어나게 된다. 현대 GPU 기반 딥러닝 가속 컴퓨팅 구조에서의 주요 병목은 CPU 상에서 처리되는 디코딩 시간
Figure pat00006
과 스토리지에서 I/O 시간
Figure pat00007
에서 주요하게 구성되는데, 이는 이미지 데이터의 크기에 비례한다. 따라서, 고해상도의 이미지일수록 위 과정의 병목이 더욱 심화된다. 또한, 매 Epoch마다 동일한 이미지를 다시 디코딩해야 하므로 오버 헤드가 누적되며, 다중 사용자가 동일한 데이터 세트를 사용하더라도 파일 I/O 캐시만 공유되고 동일한 이미지의 디코딩을 중복 수행하여야 하고, 다중 GPU 및 다중 작업 환경에서 훈련 작업을 수행할 때 CPU 리소스가 부족해지는 문제점을 가진다.
본 발명에서 제안하는 디코딩 캐시 시스템 환경에서 배칭 과정은 도 4와 같이 학습 연산을 수행하는 GPU에서 배칭 데이터를 가져올 때 캐시 히트와 미스에 따른 데이터의 흐름도로 표현된다. 이 때 작업 i에 대한 평균 캐시 히트 비율을
Figure pat00008
라고 할 때, 예상되는 한 반복 횟수 시간은 [수학식 1]과 같다.
[수학식 1] 디코딩 캐시를 사용할 때 딥러닝 학습 작업 i의 한 반복 학습 예측 시간
Figure pat00009
캐시 히트가 발생할 때 데이터를 가져오는 시간
Figure pat00010
는 DRAM으로부터 직렬화 된 이미지 데이터를 가져오는 시간과 역직렬화를 통해 데이터를 복원하는 시간으로 구성된다. 이 시간은 I/O 및 디코딩 시간에 비해 훨씬 짧은 시간으로 캐시 히트 비율이 높아지면, 작업의 한 반복 학습 예상시간 줄어든다. 캐싱 관리 기법은 현재 실행되는 다중 학습 작업에 대해 각 작업의 히트 비율을 조절한다. 이 때, 각 작업 별 히트 비율
Figure pat00011
을 조절하기 위해 정해진 CPU 코어 개수를 바탕으로 배칭을 수행할 총 프로세스 수
Figure pat00012
를 제어한다. 이 때, 예상되는 히트 비율
Figure pat00013
과 프로세스 수
Figure pat00014
간 관계를 아래 [수학식 2]와 같이 정의한다.
[수학식 2] 디코딩 캐시의 프로세스 할당에 의해 결정되는 히트 비율
Figure pat00015
, where
Figure pat00016
[수학식 2]에서 총 캐싱에 참여하는 프로세스 수는 코어 간 경합이 발생하지 않도록 총 코어 개수
Figure pat00017
보다 작도록 제어한다. 캐싱 효율 파라미터인
Figure pat00018
는 작업이 사용하는 데이터셋의 특징(이미지 차원, RAW 이미지 파일 형태)에 따라서 프로세스가 작업을 캐싱할 때의 효율을 나타내는 파라미터이다. 즉, 작은 차원의 이미지는 상대적으로 1에 가까운 값을 지니고, 고차원의 이미지일수록 캐싱에 많은 프로세스가 요구되기 때문에 0에 가까운 값을 지닌다.
Figure pat00019
는 현재 실행되고 있는 작업들 사이의 상대적인 값으로 정의되며, 학습 작업들의 매 Epoch 시작마다 프로파일링하여 얻어진다. 이 때, 히트 비율이 1이 되는 최소 프로세스 수가 가장 작은 작업의
Figure pat00020
값을 1.0으로 설정한다.
해당 모델링을 바탕으로 캐싱 관리 기법에서는 각 작업에서 사용되는 데이터셋의 캐싱하기 위한 CPU 자원 할당을 위해 [수학식 3]과 같은 최적화 함수를 정의한다.
[수학식 3] 캐싱 자원 할당을 위한 최적화 함수
Figure pat00021
Figure pat00022
이 때,
Figure pat00023
는 현재 실행되는 전체 작업 집합을 의미하고
Figure pat00024
는 그 작업의 개수를 의미한다. [수학식 3]의 최적화 함수는 캐싱 자원을 할당할 때, 작업의 기아상태 발생을 방지하기 위해 현재 작업 중 가장 선행적으로 CPU 코어를 할당하게 된다. 이 때, 작업 간 중복되는 데이터셋이 있으면 동일한 데이터셋에 대한 한 작업 반복 횟수 시간을 더하는 형태로 표현하여 최적화를 수행한다. 해당 문제를 풀기 위해 위 시간을 역수형태로 표현하여 학습 속도로 나타낸 뒤 문제를 maxmin 문제로 변형하여 선형 프로그래밍으로 푼다. [도 5]는 캐싱 관리 방법이 새로운 학습 작업이 들어왔을 때 또는 새로운 Epoch에 들어가는 작업이 생겼을 때 새로운 캐싱 자원 할당을 결정하는 알고리즘을 나타내는 순서도이다. 먼저, Cold-Start 반복 학습 동안 독립적으로 각각의 작업을 실행하여 타이밍 정보와 캐싱 효율 파라미터
Figure pat00025
를 계산한다. 이 때 Cold-start 반복 횟수는 일반적으로 수십 내외로 설정하게 되는데, 이는 한 Epoch에 필요한 반복 횟수가 일반적으로 수만 번 이상이기 때문에 전체 학습 시간에 큰 영향을 주지 않고 캐싱 자원을 스케줄링 할 수 있다.
100

Claims (2)

  1. 다중 GPU 클러스터 환경에서 이미지 기반 딥 러닝 학습 시 배칭 연산 시 작업 간 호스트 CPU 경합으로 발생하는 배칭 연산의 병목과 작업 간 불공정 문제를 해결하여 전체 학습 작업 효율 개선을 위한 인 메모리 구조의 디코딩 캐시 기법.
  2. 제1항에 있어서, 상기 시스템은 다중 작업 간 캐싱 자원 할당을 위해
    (A)현재 다중 GPU 클러스터에서 학습되고 있는 작업의 GPU 연산 시간과 배칭 시간의 비율 프로파일링을 통해 호스트 CPU 자원 할당 시 캐시 히트율을 예측하는 모델
    (B) 취합된 작업 별 히트율을 바탕으로 전체 작업의 불공정 문제를 해결하면서 배칭 연산을 가속하기 위한 캐싱 자원 분배 기능을 갖는 캐싱 관리 기법.
KR1020210048352A 2021-04-14 2021-04-14 이미지 기반 딥 러닝 학습의 배칭 연산 가속을 위한 인 메모리 소프트웨어 디코딩 캐시 구조 및 관리 기법 KR20220142059A (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020210048352A KR20220142059A (ko) 2021-04-14 2021-04-14 이미지 기반 딥 러닝 학습의 배칭 연산 가속을 위한 인 메모리 소프트웨어 디코딩 캐시 구조 및 관리 기법

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020210048352A KR20220142059A (ko) 2021-04-14 2021-04-14 이미지 기반 딥 러닝 학습의 배칭 연산 가속을 위한 인 메모리 소프트웨어 디코딩 캐시 구조 및 관리 기법

Publications (1)

Publication Number Publication Date
KR20220142059A true KR20220142059A (ko) 2022-10-21

Family

ID=83805217

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020210048352A KR20220142059A (ko) 2021-04-14 2021-04-14 이미지 기반 딥 러닝 학습의 배칭 연산 가속을 위한 인 메모리 소프트웨어 디코딩 캐시 구조 및 관리 기법

Country Status (1)

Country Link
KR (1) KR20220142059A (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116155750A (zh) * 2023-04-19 2023-05-23 之江实验室 深度学习作业资源放置方法、系统、设备和存储介质

Non-Patent Citations (4)

* Cited by examiner, † Cited by third party
Title
[1] Fast data pipeline for deep learning training, Published as a conference paper in GPU Technology Conference, 2018. S. L. T. Gale and P. Tredak.
[2] Fast ai data pre-preprocessing with dali, Published as a conference paper in GPU Technology Conference, 2019 J. Lisiecki and M. Zientkiewicz.
[3] Tensorflow: A system for large-scale machine learning, Published as a conference paper in 12th USENIX Symposium on Operating Systems Design and Implementation (OSDI 16), 2016 M. Abadi, P. Barham, J. Chen, Z. Chen, A. Davis, J. Dean, M. Devin, S. Ghemawat, G. Irving, M. Isard, M. Kudlur, J. Levenberg, R. Monga, S. Moore, D. G. Murray, B. Steiner, P. Tucker, V. Vasudevan, P. Warden, M. Wicke, Y. Yu, and X. Zheng.
[4] Pytorch: An imperative style, high-performance deep learning library, Advances in neural information processing systems, 2019. A. Paszke, S. Gross, F. Massa, A. Lerer, J. Bradbury, G. Chanan, T. Killeen, Z. Lin, N. Gimelshein, L. Antiga et al.

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116155750A (zh) * 2023-04-19 2023-05-23 之江实验室 深度学习作业资源放置方法、系统、设备和存储介质
CN116155750B (zh) * 2023-04-19 2023-08-01 之江实验室 深度学习作业资源放置方法、系统、设备和存储介质

Similar Documents

Publication Publication Date Title
CN106991011B (zh) 基于cpu多线程与gpu多粒度并行及协同优化的方法
TWI531974B (zh) 管理巢狀執行串流的方法和系統
EP2542973B1 (en) Gpu support for garbage collection
WO2021254135A1 (zh) 任务执行方法及存储设备
TWI488118B (zh) 處理系統中動態產生任務的傳訊、排序和執行
US9626216B2 (en) Graphics processing unit sharing between many applications
US8239866B2 (en) Reduction of memory latencies using fine grained parallelism and FIFO data structures
Bai et al. Efficient data loader for fast sampling-based GNN training on large graphs
US11720496B2 (en) Reconfigurable cache architecture and methods for cache coherency
US8180998B1 (en) System of lanes of processing units receiving instructions via shared memory units for data-parallel or task-parallel operations
KR20220142059A (ko) 이미지 기반 딥 러닝 학습의 배칭 연산 가속을 위한 인 메모리 소프트웨어 디코딩 캐시 구조 및 관리 기법
US20230090284A1 (en) Memory processing optimisation
US11429299B2 (en) System and method for managing conversion of low-locality data into high-locality data
Chen et al. Data prefetching and eviction mechanisms of in-memory storage systems based on scheduling for big data processing
CN105378652A (zh) 线程共享资源分配方法及装置
Cui et al. Scalable deep learning on distributed GPUs with a GPU-specialized parameter server
Li et al. Dual buffer rotation four-stage pipeline for CPU–GPU cooperative computing
Chu et al. Designing High-Performance In-Memory Key-Value Operations with Persistent GPU Kernels and OpenSHMEM
Inupakutika et al. Quantifying Performance Gains of GPUDirect Storage
US11966999B2 (en) Real-time simulation using material point method on graphics processing units
CN116681575B (zh) 图形处理单元、图形渲染方法、存储介质、终端设备
WO2024012153A1 (zh) 一种数据处理方法及装置
LeBeane et al. Network cache injection for coherent GPUs
US20230115542A1 (en) Programmable matrix multiplication engine
Eilers Multireduce and multiscan on modern GPUs

Legal Events

Date Code Title Description
A201 Request for examination