대규모 AI 모델의 학습과 추론 속도는 GPU 간 통신 효율에 크게 좌우됩니다. 특히 AMD Instinct MI300/X 같은 최신 가속기에서 최대 성능을 끌어내기 위해서는 통신 라이브러리의 최적화가 필수적이죠. 메타(Meta)가 최근 오픈소스로 공개한 RCCLX는 바로 이 문제를 해결하기 위해 개발된, AMD 플랫폼 전용 고성능 통신 라이브러리입니다. 이 라이브러리의 핵심은 Torchcomms와의 완전한 통합으로, 연구자와 개발자가 백엔드에 구애받지 않고 혁신을 가속할 수 있도록 설계되었습니다. 자세한 내용은 메타 엔지니어링 블로그의 공식 발표를 참고하세요.
![]()
핵심 기능 1: Direct Data Access (DDA)
LLM 추론의 디코딩 단계는 메모리 대역폭에 제한을 받는 작업입니다. 기존의 AllReduce 연산은 이 단계에서 최대 30%의 지연 시간을 차지할 수 있어요. RCCLX의 DDA는 이 병목 현상을 해결하는 두 가지 알고리즘을 제공합니다.
- DDA Flat 알고리즘: 작은 메시지 크기의 AllReduce 지연 시간을 개선합니다. 각 랭크(rank)가 다른 랭크의 메모리를 직접 읽어 로컬 리듀스 연산을 수행함으로써 지연 시간을 O(N)에서 O(1)로 줄입니다.
- DDA Tree 알고리즘: AllReduce를 Reduce-Scatter와 All-Gather 두 단계로 나누고, 각 단계에서 직접 데이터 접근을 사용합니다. 링 알고리즘과 동일한 양의 데이터를 이동시키지만, 약간 큰 메시지 크기에 대해 지연 시간을 상수因子 수준으로 낮춥니다.
AMD MI300X GPU에서의 성능 향상은 특히 인상적입니다. 디코딩(작은 메시지)에서는 RCCL 기준 대비 10-50% 성능 향상, 프리필 단계에서는 10-30% 속도 향상을 보였으며, 이는 최종 사용자 체감 지표인 TTIT(Time-To-Incremental-Token)를 약 10% 줄이는 결과로 이어졌습니다.

핵심 기능 2: 저정밀도 콜렉티브 (Low-Precision Collectives)
대용량 메시지(≥16MB) 통신의 오버헤드를 줄이기 위해 RCCLX는 저정밀도 콜렉티브를 도입했습니다. FP32/BF16 데이터를 FP8로 최대 4:1 압축하여 통신량을 획기적으로 줄이죠.
| 특징 | 설명 |
|---|---|
| 지원 연산 | AllReduce, AllGather, AlltoAll, ReduceScatter |
| 타겟 하드웨어 | AMD Instinct MI300/MI350 GPU |
| 데이터 타입 | FP32, BF16 (FP8 양자화 활용) |
| 통신 패턴 | 병렬 P2P 메시 통신 (AMD Infinity Fabric 활용) |
| 계산 정밀도 | 고정밀도(FP32) 유지로 수치적 안정성 확보 |
| 활성화 방법 | 환경변수 RCCL_LOW_PRECISION_ENABLE=1 설정 |
내부 평가에서 저정밀도 콜렉티브를 선택적 활성화 시, GSM8K 평가에서 약 0.3%의 정확도 변화만 발생했음에도 ~9-10%의 지연 시간 감소와 ~7%의 처리량 증가를 확인했습니다. 이는 수용 가능한 수치 정확도 범위 내에서 처리량을 극대화할 수 있는 유연한 접근법입니다.

실무 적용 가이드 및 전망
RCCLX는 Torchcomms API의 커스텀 백엔드로 통합되어 있어, 사용자는 익숙한 API를 변경하지 않고도 AMD 플랫폼으로 애플리케이션을 쉽게 포팅할 수 있습니다. NVIDIA용 NCCLX 백엔드와의 기능 동등성을 목표로 개발 중이며, CTran의 새로운 기능들도 점차 통합될 예정입니다.
시작하는 방법은 간단합니다. Torchcomms 저장소의 설치 가이드를 따라 RCCLX 백엔드가 포함된 Torchcomms를 설치한 후, 아래와 같이 통신자를 초기화하고 사용하면 됩니다.
import torchcomms
import torch
# torchrun으로 제공되는 환경 변수를 사용하여 통신자 초기화
comm = torchcomms.new_comm("rcclx", torch.device("hip"), name="my_comm")
print(f"현재 랭크: {comm.get_rank()} / 전체: {comm.get_size()}")
# 예제 텐서 생성 및 AllReduce 수행
t = torch.full((10, 20), value=comm.rank, dtype=torch.float)
comm.allreduce(t, torchcomms.ReduceOp.SUM, async_op=False)
메타의 이번 공개는 AMD AI 가속기 생태계의 성능과 접근성을 한 단계 높이는 중요한 이정표입니다. DDA와 저정밀도 콜렉티브 같은 최적화 기법이 오픈소스 커뮤니티에 공개됨으로써, 더 많은 연구자와 개발자가 고성능 AI 시스템을 구축하는 데 도움을 받을 수 있을 것으로 기대됩니다.