Skip to content

Latest commit

 

History

History
81 lines (58 loc) · 4.45 KB

File metadata and controls

81 lines (58 loc) · 4.45 KB

Ray를 활용한 분산처리 및 모델 학습 튜토리얼

이 디렉토리는 Ray를 활용한 데이터 분산처리 및 간단한 모델 학습 실험 예제를 다룹니다. Ray의 Task/Actor 기반 분산처리와 PyTorch/Ray를 활용한 이미지 분류 모델 학습 실험을 포함합니다.

본 실습은 M3 MacBook Air 로컬 머신에서 진행되었습니다. Ray는 본래 분산 환경(멀티 노드/클러스터)에서의 대규모 데이터 처리 및 학습에 최적화된 프레임워크이지만, 여기서는 간단한 벤치마크 및 실험을 위해 로컬 환경에서 실행하였습니다. 실제 대규모 분산 환경과는 성능 특성이 다를 수 있으니 참고 바랍니다.

디렉토리 구조

  • ray_core_bench/ : Ray의 Task/Actor를 활용한 분산처리 벤치마크 실험
  • ray_training/ : PyTorch vs Ray 분산 학습 실험

1. ray_core_bench

  • 이미지 처리 벤치마크: 무작위로 생성한 이미지를 여러 번 리사이즈 및 가우시안 블러(옵션) 처리 후, 해시값을 계산하는 작업을 수행합니다. 이 과정을
    • (1) 순수 파이썬(로컬) 방식
    • (2) Ray Task(배치 분산)
    • (3) Ray Actor(여러 워커에 라운드로빈 분산) 방식 으로 각각 실행하여 처리 속도를 비교합니다.
  • 행렬 곱셈 벤치마크: 대형 행렬 곱셈 연산을 여러 번 반복하여,
    • (1) 로컬 방식
    • (2) Ray Task 분산 방식 으로 각각 실행해 처리 속도를 비교합니다.

실험 파라미터

  • 이미지 1000장, 크기 512x512, 반복 3회, batch 64, actor 8개, CPU 8개

실험 결과

작업 종류 Local (s) Ray Task (s) Ray Actor (s)
이미지 처리 29.11 5.92 7.50
행렬 곱셈 0.98 0.78 -
  • Ray Task/Actor를 활용하면 이미지 처리에서 큰 속도 향상을 확인할 수 있습니다.

간단 예제: simple_ray_example.py

Ray의 Task/Actor 개념과 분산 실행 구조를 빠르게 이해할 수 있도록 아주 간단한 예제(simple_ray_example.py)를 제공합니다.

  • 입력값의 제곱을 계산하는 함수를 Task/Actor 방식으로 병렬 실행하는 코드입니다.
  • Ray를 처음 접할 때, 이 예제를 먼저 실행해보면 Task/Actor의 차이와 사용법을 쉽게 익힐 수 있습니다.

2. ray_training

PyTorch도 최적화가 잘 되어 있기 때문에 로컬 환경에서의 간단한 학습에서는 Ray의 분산처리 오버헤드가 오히려 불리하게 작용할 수 있습니다. 따라서 본 실험에서는 데이터 로딩 과정에서 CPU 바운드가 강한 전처리를 추가하고, 학습 이미지 크기를 점진적으로 키워가며 실험을 진행했습니다. (자세한 구현은 ray_training/rayfull_backend.py, ray_training/torch_backend.py 참고)

실험 환경

  • 다양한 image_size에 대해 PyTorch(싱글) vs Ray(분산) 학습 시간 비교

실험 결과

Image Size PyTorch Time (s) Ray Time (s) PyTorch Samples/sec Ray Samples/sec
30 68.67 89.54 2609.56 668.61
50 91.83 99.10 1714.40 587.74
100 204.57 138.98 647.33 391.83
150 409.47 244.31 302.90 217.85
200 673.48 442.16 186.12 123.52
225 1040.74 691.76 111.08 75.19
250 1130.38 830.04 107.34 61.43
  • 이미지 크기가 작을 때는 큰 차이가 없지만, 이미지 크기가 커질수록 Ray의 분산처리 이점이 점차 나타나며 학습 시간이 조금씩 단축됨

학습 시간 - 이미지 크기 그래프

학습시간 그래프


3. 실험 코드 실행 방법

1) core_bench 벤치마크

python ray_core_bench/run_benchmarks.py

2) 분산 학습 실험

python ray_training/train.py --backend pytorch  # PyTorch 단일 학습
python ray_training/train.py --backend ray      # Ray 분산 학습