Pinterest는 월 6억 명 이상의 사용자를 서비스하는 추천 시스템 파운데이션 모델의 분산 훈련 스케일링 문제를 다룬다. 초기 멀티 노드 확장 시 2노드에서 성능이 0.2x로 역행했고, AWS EFA 도입 후에도 4노드 기준 1.21x에 그쳤다. 5단계 최적화를 통해 4노드 3.9x, 8노드 7.5x의 거의 선형에 가까운 스케일링을 달성했다.
핵심 포인트- GPU utilization이 97.7%로 정상처럼 보였지만 SM efficiency는 54.54%로, GPU가 실제로는 절반의 시간을 네트워크 데이터 대기에 소비하고 있었다.
- 분산 embedding collective communication (all-to-all)이 병목 근본 원인이었으며, QComms로 FP32→FP8 양자화 적용 시 NCCL op 크기가 75% 이상 감소했다.
- Balanced Sharding으로 GPU 간 embedding table을 균등 분배해 최대 15.2% 추가 성능을 확보했다.
- Bandwidth-Aware Embedding으로 dimension 절반/row 2배 구조 변경을 통해 all-to-all payload를 50% 줄였다.
- 2D Parallel Topology로 all-to-all을 노드 내부로 국한하고 노드 간에는 AllReduce만 사용해 최종 8노드 7.5x를 달성했다.
상세 정리- 초기 상태: 단일 8-GPU 노드에서 정상 동작하던 모델을 멀티 노드로 확장하자 2노드에서 오히려 성능이 0.2x로 저하됐다.
- EFA 도입 후 한계: AWS Elastic Fabric Adapter 적용으로 2노드 1.13x, 4노드 1.21x로 개선됐지만 선형 스케일링과는 여전히 큰 차이였다.
- 프로파일링 진단: PyTorch 프로파일러로 분석하자 GPU utilization은 97.7%로 건강해 보였지만 SM efficiency가 54.54%로, 실제로는 절반의 GPU 시간이 네트워크 대기에 소비됐다.
- 병목 확정: 분산 embedding table의 all-to-all collective communication이 핵심 원인임을 확인했다.
- QComms 적용: NCCL 전송 전 FP32 임베딩을 FP8로 양자화해 가장 큰 NCCL op 크기를 75% 이상 감소, 스케일링 1.57x(2N)/2.3x(4N) 달성.
- Balanced Sharding: GPU별 embedding 파라미터를 균등 분배해 특정 GPU에 부하가 집중되는 문제를 해소, 추가로 5.3%(2N)/15.2%(4N) 성능 향상.
- Bandwidth-Aware Embedding: embedding dimension을 절반으로 줄이고 row 수를 2배로 늘리는 구조 변경으로 all-to-all payload 50% 감소, 1.78x(2N)/2.8x(4N) 달성.
- 2D Parallel Topology 설계: GPU 그룹을 노드 내/노드 간 2차원으로 재구성, 비용이 큰 all-to-all 통신은 동일 노드 내 GPU끼리만 수행하고 노드 간에는 AllReduce를 사용했다.
- all-to-all latency 결과: 78ms에서 13ms로 83% 감소했다.
- 최종 스케일링: 2노드 2.0x, 4노드 3.9x(이론 대비 97.5%), 8노드 7.5x(이론 대비 93.75%).
- 전체 처리량: EFA 도입 전 기준 최종 최적화까지 13x 처리량 향상.
- 프로덕션 영향: 더 큰 모델로 Homefeed와 Related Pins에서 통계적으로 유의미한 참여도 개선과 함께 빠른 훈련으로 실험 사이클이 단축됐다.
왜 읽나PyTorch 기반 대규모 추천 모델의 분산 훈련을 최적화하려는 ML/MLOps 엔지니어에게, 병목 진단부터 5단계 통신 최적화까지의 실전 수치 레퍼런스.