구글에서 선호하는 출처로 추가

엔비디아, RL 가중치 재반영 지연시간 최대 5.7배 단축

엔비디아가 강화학습용 Reshard collective와 오픈소스 참조 구현을 공개했다. 자체 시험에서 가중치 재반영 시간은 기존 방식보다 2.7~5.7배 짧았지만, 전체 RL 학습시간이 같은 비율로 줄었다는 뜻은 아니다.

토포AI로 이 기사 더 깊이 읽기

시험대에서 NVLink로 연결된 두 GPU 가속기 / TokenPost.ai

엔비디아(NVIDIA·$NVDA)가 강화학습(RL)에서 훈련 GPU의 가중치를 추론 GPU에 반영하는 지연시간을 최대 5.7배 줄이는 Reshard collective를 공개했다. 자체 NeMo RL 시험에서 가중치 재반영(refit) 시간은 기존 방식보다 2.7~5.7배 짧았다.

엔비디아는 11월 6일 기술 블로그에서 새 연산과 오픈소스 참조 구현인 NCCL M2N Reshard를 소개했다. 강화학습 후학습에서는 추론 GPU가 만든 학습 궤적을 이용해 훈련 GPU의 모델을 갱신한다.

훈련과 추론을 별도 GPU에서 돌리면 갱신된 훈련 가중치를 추론 GPU에도 주기적으로 전달해야 한다. 이 전달 과정이 가중치 재반영이며, 시간이 길어지면 모델 갱신 주기를 늦출 수 있다.

기존 전체 수집·재배포 방식(gather-and-broadcast)은 훈련 GPU에 나뉘어 저장된 가중치를 한데 모아 전체 텐서를 만든 뒤 추론 GPU에 다시 배포한다. 추론 GPU는 받은 데이터 가운데 실제로 필요한 조각만 남긴다.

Reshard는 출발지와 목적지의 분할 영역이 겹치는 부분을 계산해 필요한 데이터만 직접 전송한다. 전체 텐서를 재구성하고 같은 데이터를 중복해 보내는 단계를 줄이는 방식이다.

훈련과 추론에 쓰는 GPU 수나 병렬 처리 방식이 달라도 분할 가중치의 위치를 계산해 옮기도록 설계됐다. 엔비디아는 여러 추론 GPU가 같은 가중치를 필요로 할 때 네트워크로 한 차례 전송한 뒤 GPU 사이의 NVLink로 필요한 부분을 나누는 예시도 제시했다.

NeMo RL 시험에서 DGX H100의 큐원3(Qwen 3) 235B 모델은 재반영 시간이 6.4초에서 1.9초로 줄었다. 딥시크 v3(DeepSeek v3) 671B는 같은 장비에서 14.9초에서 2.6초로 단축됐다.

DGX GB200에서는 딥시크 v3 671B의 시간이 6.1초에서 2.3초로 줄었다. 네모트론 울트라 v3(Nemotron Ultra v3)는 8.2초에서 2.3초로 단축됐다.

비교 대상은 엔비디아가 측정한 기존 전체 수집·재배포 방식이다. 개선 폭은 가중치 재반영 지연시간에 한정되며, 전체 RL 학습시간이나 처리량이 같은 비율로 개선됐다는 의미는 아니다.

별도 재반영 전용 마이크로벤치마크에서는 BF16 형식의 큐원3.8(Qwen3.8) 2.4T 모델이 4.3초를 기록했다. 이 수치는 재반영 작업만 측정한 결과다.

엔비디아는 최신 대형언어모델에서 피드포워드 투영 가중치가 전체 파라미터의 약 95%를 차지한다고 설명했다. NeMo RL은 이 부분에 Reshard를 적용하고, QKV 투영과 Mamba 가중치 등 나머지 항목에는 기존 경로를 사용한다.

NeMo RL은 7월 22일에도 비공유 GPU 사이의 가중치 재반영 최적화를 논의했다. 이번 발표는 Reshard 참조 구현과 성능 측정 결과를 공개했다는 점에서 앞선 논의와 구분된다. (기존 최적화 논의)

NCCL M2N Reshard는 공개 저장소에서 실험적 라이브러리로 소개됐다. 저장소의 파이썬 패키지 안내는 NCCL 2.30.7을 요구하며, 다른 NCCL 버전은 검증되지 않았다고 설명한다.

vLLM 문서에는 H100 GPU 4대에서 훈련과 추론 사이에 가중치를 옮기는 M2N 예제가 실렸다. 사용 방법을 보여주는 예제이며, 엔비디아의 성능 수치를 독립적으로 재현한 결과는 아니다.

엔비디아는 11월 6일 게시한 기술 블로그에서 NeMo RL이 장애 복구 시 통신 그룹을 폐기한 뒤 다시 만드는 방식을 사용한다고 설명했다. 블로그는 이 복구 절차를 현재 구현의 일부로 소개했다.

한 사용자는 공개 이슈 #23에서 NCCL 2.30.7과 nccl-extensions 0.1.0 환경에서 상대 프로세스가 중단된 뒤 comm.abort()가 반환되지 않는 사례를 보고했다. 이슈 작성자는 NCCL 2.32-3에서도 재현했다고 덧붙였다.

오늘의 스탬프 0명이 오늘 찍었어요
오늘의 스탬프 0명이 오늘 찍었어요

0

    불러오는 중…

    토큰포스트 앱 다운로드 QR 코드 QR 코드 스캔하고
    ios, Android 앱
    다운로드 하기