왜 이 기술이 주목받는가
AI 모델이 점점 거대해지면서 단일 GPU로는 감당이 안 되는 시대가 왔습니다. 자연스럽게 텐서 병렬화(Tensor Parallelism)가 필수가 되었고, GPU 간 통신(AllReduce 등)이 전체 레이턴시의 30%를 차지하는 병목 지점으로 떠올랐죠.
이 문제를 해결하기 위해 Meta는 자체적으로 개발한 RCCLX(RCCL eXtended)를 오픈소스로 풀었습니다. 기존 RCCL(RCCL: AMD GPU용 NVIDIA NCCL 대응 라이브러리)을 확장한 버전으로, 특히 AMD MI300X/MI350 시리즈에 최적화되어 있습니다.
이 글은 Meta Engineering 블로그(2026년 2월 24일)의 발표를 기반으로, 실무에 바로 적용할 수 있는 인사이트를 중심으로 재구성했습니다. 원문 보기
RCCLX의 두 가지 핵심 기술
1. Direct Data Access (DDA) — 인트라노드 올리듀스 혁신
기존 AllReduce는 링(Ring) 알고리즘을 사용해 데이터를 순차적으로 전달합니다. 이 방식은 GPU 개수(N)에 비례해 레이턴시가 증가하는 구조적인 한계가 있습니다.
DDA는 이 패러다임을 뒤집습니다.
- DDA Flat 알고리즘: 각 GPU가 다른 모든 GPU의 메모리에 직접 접근(Direct Load)해서 로컬에서 Reduce 연산을 수행합니다. 레이턴시는 O(N) → O(1)로 줄지만, 데이터 교환량은 O(n) → O(n²)로 늘어나 작은 메시지 크기에 적합합니다.
- DDA Tree 알고리즘: Reduce-Scatter와 All-Gather 두 단계로 나누고, 각 단계에서 직접 메모리 접근을 사용합니다. Ring 알고리즘과 동일한 데이터 이동량을 유지하면서 레이턴시는 상수(constant)로 고정됩니다.
실제 성능 측정 결과:
- Decode 단계(작은 메시지): RCCL 대비 10~50% 성능 향상
- Prefill 단계: 10~30% 속도 향상
- 최종 TTIT(Time-To-Incremental-Token): 약 10% 감소
이 수치는 AMD MI300X 기준이며, 사용자 체감 품질(특히 실시간 채팅형 AI)에 직접적인 영향을 줍니다.
2. 저정밀 컬렉티브 (Low-Precision Collectives)
두 번째 혁신은 통신 데이터 자체를 압축하는 접근법입니다. FP32나 BF16 데이터를 통신 시점에 FP8(4:1 압축)으로 양자화하여 보내고, 수신 측에서 다시 고정밀(FP32)로 복원합니다.
# RCCLX 저정밀 컬렉티브 활성화 예시 (환경 변수 하나면 끝)
# 훈련/추론 스크립트 실행 전에 설정
import os
os.environ["RCCL_LOW_PRECISION_ENABLE"] = "1"
# 이후 기존 통신 코드는 전혀 변경할 필요 없음
# Torchcomms API를 통해 자동으로 저정밀 컬렉티브가 적용됨
핵심 특징:
- 지원 연산: AllReduce, AllGather, AlltoAll, ReduceScatter
- 지원 데이터 타입: FP32, BF16 (입력 기준)
- 압축 방식: FP8 양자화 (4:1 압축)
- 통신: AMD Infinity Fabric 기반 P2P 메시
- 정밀도 유지: 연산은 FP32로 수행하여 수치 안정성 확보
실제 추론 워크로드 평가 결과:
- GSM8K 정확도 변화: 약 -0.3% (거의 손실 없음)
- 레이턴시 감소: 9~10%
- 처리량(Throughput) 증가: 약 7%
💡 주의사항: 현재 단일 노드(Single-Node) 환경에 최적화되어 있습니다. 멀티 노드 환경에서의 성능은 추가 검증이 필요합니다.
![]()
RCCLX를 실제로 써보자: Torchcomms 연동 가이드
RCCLX는 Torchcomms API를 통해 사용할 수 있습니다. 기존에 Torchcomms를 사용 중이라면 백엔드 이름만 "rcclx"로 바꾸면 끝입니다.
설치
# Torchcomms 저장소의 설치 가이드 참고
git clone https://github.com/pytorch/torchcomms
cd torchcomms
pip install -e .
기본 사용 예제
import torch
import torchcomms
# torchrun으로 실행 시 MASTER_PORT/MASTER_ADDR/RANK/WORLD_SIZE 환경변수 자동 사용
# RCCLX 백엔드로 communicator 생성
comm = torchcomms.new_comm("rcclx", torch.device("hip"), name="my_comm")
print(f"나는 rank {comm.get_rank()} / 총 {comm.get_size()}개 GPU")
# 테스트 텐서 생성
t = torch.full((10, 20), value=comm.get_rank(), dtype=torch.float32)
# AllReduce 실행 (현재 스트림에서 동기)
comm.allreduce(t, torchcomms.ReduceOp.SUM, async_op=False)
print(f"AllReduce 결과: {t}")
저정밀 컬렉티브 활성화
# 환경 변수만 설정하면 자동 적용
export RCCL_LOW_PRECISION_ENABLE=1
python your_training_script.py
🧠 팁: 저정밀 컬렉티브는 모든 상황에 적합하지 않습니다. 특히 수치 정밀도가 중요한 학습 초기 단계나 일부 fine-tuning 작업에서는 비활성화하는 것이 좋습니다. 내부 실험 기준, 16MB 이상의 큰 메시지 크기에서 효과가 가장 큽니다.

국내 AI 인프라 생태계에서의 적용 맥락
국내 클라우드 및 AI 인프라 시장에서 AMD GPU의 비중이 점차 늘어나고 있습니다. 특히 네이버, 카카오, KT 등 대형 테크 기업들이 NVIDIA 외 대안을 적극 검토 중인 상황에서 RCCLX는 중요한 선택지가 될 수 있습니다.
주의사항
- 성능 프로파일링 필수: RCCLX의 DDA와 저정밀 컬렉티브는 특정 워크로드(특히 추론)에 최적화되어 있습니다. 훈련(Training) 워크로드에서는 오히려 성능이 떨어질 수 있으니 반드시 자체 벤치마크를 수행하세요.
- ROCm 버전 의존성: MI300X는 ROCm 6.4, MI350은 ROCm 7.0 기반으로 테스트되었습니다. 구버전 ROCm에서는 일부 기능이 동작하지 않을 수 있습니다.
- CTran 기능 일부 미포함: 현재 오픈소스 버전에는 CTran의 모든 기능이 포함되지 않았습니다. AllToAllvDynamic 같은 고급 기능은 향후 업데이트를 기다려야 합니다.
다음 단계 학습 방향
- RCCLX의 내부 동작을 더 깊이 이해하려면 AMD RCCL 공식 문서를 참고하세요.
- Torchcomms API의 전체 기능을 파악하려면 PyTorch Torchcomms 저장소의 examples 디렉토리를 살펴보는 것을 추천합니다.

결론: AMD GPU 생태계의 전환점
Meta가 RCCLX를 오픈소스로 공개한 것은 단순한 라이브러리 릴리스를 넘어, AI 가속기 시장의 다양성을 확보하겠다는 전략적 신호로 읽힙니다. NVIDIA의 독점 체제에 도전할 수 있는 실질적인 대안이 등장한 셈이죠.
DDA와 저정밀 컬렉티브는 각각 '통신 패턴의 근본적 재설계'와 '데이터 압축을 통한 효율화'라는 서로 다른 접근법으로 같은 문제를 해결합니다. 두 기술의 조합은 AMD GPU에서 최대 30%에 달하는 성능 향상을 가져왔고, 이는 실시간 AI 서비스의 사용자 경험을 직접적으로 개선합니다.
앞으로 AMD GPU를 도입할 계획이 있다면, RCCLX는 반드시 검토해야 할 핵심 소프트웨어 스택입니다. 단, '모든 워크로드에 만능'이라는 환상은 버리고, 자신의 사용 사례에 맞게 선택적으로 적용하는 전략이 필요합니다.
함께 보면 좋은 글
- Netflix가 JDK 벡터 API로 추천 시스템을 최적화한 실제 사례 — GPU 통신 최적화와 유사한 맥락에서 CPU 레벨의 벡터화 최적화 사례를 다룹니다.
- 리액트의 미래가 바뀐다: 독립 재단 출범과 새로운 기술 거버넌스 — 오픈소스 생태계의 거버넌스 변화가 기술 발전에 미치는 영향을 분석합니다.