RoCEv2 GPU 클러스터 프로젝트는 NVIDIA의 Infiniband가 아닌, 이더넷 카드 기반의 GPU 클러스터를 만들기 위해 1) RoCEv2 기술에 대해 연구하고, 2) H200 서버 8대로 학습용 GPU 클러스터를 만드는 프로젝트 입니다.
일반적인 CPU에 비해 GPU는 병렬 연산에 큰 강점이 있습니다. GPU를 활용하면 대량의 데이터나 복잡한 계산을 빠르게 처리할 수 있습니다. 이러한 GPU의 특성을 이용해서 많은 양의 연산이 필요한 딥러닝 분야에 GPU가 활용됩니다.

출처 : https://docs.nvidia.com/cuda/pdf/CUDA_C_Programming_Guide.pdf
딥러닝 학습(Training)은 데이터셋(문제와 정답지 라벨)을 갖고 모델을 만드는 과정으로, 훈련이 주로 GPU에서 이루어집니다. 딥러닝 추론(Inference)은 학습된 모델을 사용하여 실시간으로 입력값에 해당하는 답을 계산해서 응답하는 과정입니다.

출처 : https://harfanglab.io/insidethelab/normalisation-batch-data/
딥러닝에서 학습은 “특정한 문제를 해결할 수 있는 모델을 만드는 과정”이라고 할 수 있습니다. 설계한 **신경망(모델)**을 통해, 미리 준비한 **문제의 정답(데이터셋, 라벨)**을 맞추는 과정을 반복하면서 적절한 신경망(모델)의 **가중치(벡터 연산에 사용되는 값)**를 찾는 과정입니다. 간단하게 이야기하면 텍스트, 사진 등의 데이터를 벡터(행렬)화하고 신경망을 통해 이를 연산하여 답을 찾는 과정을 반복해서 신경망의 정확도를 높이는 것이 학습입니다.

출처 : https://wikidocs.net/36033

[https://playground.tensorflow.org/](https://prod-files-secure.s3.us-west-2.amazonaws.com/3652eab8-ad57-4239-a327-d0547340b353/fa6776ac-fe2c-4404-b929-d8ec930b429b/iShot_2024-11-21_10.48.09-ezgif.com-video-subtitles.mp4)
https://playground.tensorflow.org/
딥러닝 모델이 점차 복잡해짐에 따라, 분산 학습 기술이 필요해지고 나아가 고속 네트워크의 필요성도 크게 증가하였습니다. 대규모 데이터셋과 복잡한 신경망 구조를 효율적으로 처리하기 위해서는 여러 대의 GPU를 활용한 분산 학습이 필수적입니다. 특히, 여러 GPU를 연결하여 병렬로 작업을 수행할 때, 각 GPU 간에 데이터를 빠르게 전송할 수 있는 고속 네트워크가 핵심적인 역할을 합니다.
예를 들어, 대규모 신경망을 훈련시키거나 대규모 데이터셋을 사용할 경우, 하나의 GPU로는 시간이 지나치게 오래 걸리고, 메모리 용량에도 한계가 있기 때문에, 여러 GPU가 병렬로 작업을 해야 합니다.

출처 : https://developer.nvidia.com/blog/fast-multi-gpu-collectives-nccl/

출처 : https://developer.nvidia.com/blog/doubling-all2all-performance-with-nvidia-collective-communication-library-2-12/
그런데, 여러 GPU가 서로 협력하여 학습하는 분산 학습 환경에서는 GPU 간에 데이터 이동이 필수적입니다. 예를 들어, 모델의 파라미터와 가중치는 각 GPU 간에 주고받으며 업데이트되며 동기화가 필요합니다. 이 과정에서 GPU 간 데이터 전송의 속도가 학습 성능에 큰 영향을 미칩니다. 빠른 데이터 이동이 가능하면, 여러 GPU가 동시에 작업을 처리하고 훈련 속도를 크게 향상시킬 수 있습니다.

출처 : https://developer.nvidia.com/blog/doubling-all2all-performance-with-nvidia-collective-communication-library-2-12/