top of page

대규모 분산 컴퓨팅 환경에서 딥러닝 프로젝트 발목을 잡는 네트워크/스토리지 성능 문제 해결을 위한 팁

딥러닝 프로젝트 관련해 컴퓨팅 성능에 대한 기업의 고민이 깊어지고 있습니다. 클러스터가 처리해야 하는 작업은 나날이 늘고 있습니다. 문제는 모델이 점점 커지고 있고, 트레이닝을 위해 사용하는 데이터 양도 많아지고 있다는 것입니다. 그러다 보니 모델 개발과 트레이닝 관련 성능 부족이나 병목을 어떻게 해결할 것인가? 이에 대한 답을 찾는 곳이 많습니다. 성능 문제에 대한 답은 만병통치약 같은 것이 없습니다. 유즈 케이스에 따라 병목을 일으키는 원인과 구간이 다를 수 있습니다. 물론 기본은 있습니다. 성능 개선을 위해 가장 먼저 해야 할 기본은 크게 다르지 않습니다. 데이터 처리 최적화입니다. 데이터가 이동하는 경로를 최단으로 잡는 것, 즉 가능한 가까이 데이터를 두는 접근은 성능 문제 해결에 있어 기본 중 기본입니다.


콜드와 핫 데이터를 잘 구분하는 것이 중요


다른 분야와 마찬가지로 딥러닝 역시 티어링 개념을 적용해 가까이 둘 데이터와 거리를 좀 두어도 되는 데이터를 구분합니다. 자주 쓰지 않는 콜드 데이터(Cold data) 성격의 데이터 세트는 가성비가 좋은 오브젝트 스토리지에 저장합니다. 사용 빈도가 더 높은 웜 데이터(Warm data)는 올플래시 스토리지 같은 고성능 스토리지에 둡니다. 매우 빈번하게 사용하는 핫 데이터(Hot data)는 로컬 캐시나 메모리를 이용하는 것이 가장 좋습니다. 보통 GPU를 이용하는 환경에서는 GPU 메모리를 사용합니다.



딥러닝 트레이닝 관련 속도와 효율에 영향을 끼치는 네트워크 토폴로지 최적화는 어려운 과제입니다. 알아야 할 것이 너무 많습니다. InfiniBand, RoCE, RDMA, SHARP(Scalable Hierachical Aggregation & Reduction Protocole), AR(Adaptive Routing) 등을 두루 알아야 하죠. 또한, GPU 클러스터를 쓰는 곳이라면 NVLink, GPUDirect 등의 기술에 대한 이해도 바탕이 되어야 합니다. 이 모든 것에 통달하는 것은 사실 딥러닝 클러스터 사용자나 관리자의 몫이 아닙니다. 본연의 업무가 아니죠. 그렇다면 어떻게 네트워크 토폴리지 최적화를 바탕으로 스토리지 병목 문제를 해결할 수 있을까요?


딥러닝 및 GPU 클러스터 관리자가 네트워크, 스토리지 전문가가 될 필요는 없다!


몇 가지 팁을 정리해 봅니다. 첫 번째는 cnvrg.io나 slurm 같은 도구를 이용하는 것입니다. 트레이닝 잡과 사용자 관련 자원 오케스트레이션 자동화 도구를 이용하면 손쉽게 성능 문제를 해결할 수 있습니다. 데이터센터 인프라 모니터링 솔루션으로 GPU 활용률, TensorCore 활용률, CPU 활용률, IO 평균값 등을 잘 체크하면서 선제적으로 성능 문제가 생기기 전에 아이들 잡 같은 것을 정리하는 것도 방법일 수 있습니다.


NVIDIA A100 GPU를 장착한 최신 시스템을 사용 중이라면 NVIDIA MagnumIO의 혜택을 누릴 수 있습니다. 이 기능은 NCCL, NVLink, NVSwitch, GPUDirect P2P, GPUDirect RDMA, GPUDirtect Storage, UCX, MPI 같은 기술을 활용해 IO를 가속합니다. 물론 사용자는 이들 기술을 몰라도 됩니다. 그저 이들 기술이 제공하는 가속의 혜택을 MagnumIO로 간편히 누리기만 하면 됩니다.


이 밖에도 코드 수준에서 가속하는 방법도 있습니다. NGC가 제공하는 최신 소프트웨어, 컨테이너 이미지 등을 이용하면 CUDA-X 환경에서 딥러닝 프레임워크를 손쉽게 가속할 수 있습니다.


이상으로 딥러닝 클러스터 성능 이슈를 네트워크와 스토리지 측면에서 어떻게 해결할 수 있는지 간단히 알아보았습니다. 참고로 본 포스팅은 cnvrg.io 웨비나를 참조해 작성한 것입니다. 더 자세한 내용은 유클릭에 문의 바랍니다.



조회수 220회댓글 0개
bottom of page