학습과 응답 생성을 겹쳐 수행하는 구조
허깅페이스는9월10일 LoRA를 이용한 비동기GRPO 실험을 공개했다. 학습기와 두 개의 vLLM 생성 서버를 서로 다른 Jobs에 놓고 공유 Storage Bucket과 프록시로 연결한 구성이다. 학습기는 새 어댑터를 파일로 공개하고 서버는 해당 경로에서 읽는다. 큰 전체 모델 대신 작은 어댑터를 옮기는 것이 이 사례의 핵심이다.
TRL 공식 문서는 비동기 방식이 GRPO의 학습과 생성 단계를 분리한다고 설명한다. 백그라운드 작업은 응답을 생성해 점수를 매긴 뒤 큐에 넣고 학습 루프는 이를 꺼내 가중치를 바꾼다. 생성이 앞서 진행하므로 실제 학습 때의 최신 정책과 샘플을 만든 정책이 다를 수 있다. 허용하는 버전 차이와 버릴 샘플의 기준이 필요하다.
작은 어댑터에도 버전의 동일성이 필요하다
공개 사례는 새 정책을 버전별 디렉터리 이름으로 저장하고 준비된 디렉터리를 원자적으로 공개한다. vLLM의 프리픽스 캐시는 어댑터 이름을 구분하므로 같은 이름을 계속 재사용하면 이전 가중치로 계산한 캐시와 새 가중치의 생성이 섞일 수 있다는 원문의 설명이다. 버전 이름은 단순한 파일 정리 이상의 역할을 한다.
프록시는 필요한 인증을 붙이고 어댑터를 모든 생성 서버에 불러오도록 요청한다. 한 서버만 성공한 상태를 남기지 않게 실패한 불러오기를 처리하는 구조도 제시했다. 원문의 NCCL을 쓰지 않는다는 표현은 이 어댑터의 작업 간 공유 경로를 뜻한다. 학습기 내부의 분산 학습까지 모든 통신이나 동기화를 없앴다는 의미로 확대하지 않았다.
속도를 읽을 때 모델과 처리 구성을 함께 본다
저자들은 Qwen2.5-Math-1.5B에 랭크1 LoRA를 쓰는500스텝 실험들을 비교했다. 패킹과 메모리·동시 요청 설정, 생성 서버 구성을 조정하며 총 시간을3시간27분에서53분으로 줄였다고 보고했다. 여러 변경을 거친 그 레시피의 결과이며 LoRA를 켜는 한 가지 선택만으로 모든 학습이 같은 비율로 빨라진다는 수치는 아니다.
원문은 DoRA나 별도로 저장할 모듈, 허용 랭크를 넘는 설정 등 서버가 직접 처리하지 못하는 구성이 병합된 전체 가중치의 동기화로 돌아갈 수 있다고 명시한다. 공식 TRL 문서도 비동기 학습기를 실험적 기능으로 소개하며 지원 매개변수를 확인하도록 한다. 글의 특정 어댑터 전송 경로를 모든 LoRA 구성에 자동 적용되는 약속으로 읽어서는 안 된다.
큐가 가득 찼는지와 비었는지를 다르게 해석
ARCH.B는 이 사례를 작은 전송량과 GPU 수만의 이야기가 아니라 전체 흐름을 살핀 사례로 읽는다. 생성 결과가 큐에 많이 쌓여 있는데 학습기가 기다리지 않는다면 생성 서버를 더 늘리는 선택이 바로 도움을 주지 않을 수 있다. 반대로 학습기가 결과를 기다리며 멈추면 생성 단계나 그 앞의 작업이 지연되는지 살필 필요가 있다.
공식 측정 문서도 샘플이 큐에 머문 시간과 학습기가 응답을 기다린 시간을 다른 지표로 둔다. 같은 대기라는 말 아래 합치면 원인을 놓치기 쉽다. 연산 중의 이용률과 전체 스텝을 기준으로 계산한 이용률 역시 의미가 다르다. 한 부분의 최대 처리량을 높이는 것과 전체 학습 시간을 줄이는 일이 언제 같은 방향인지 확인하는 데 이 구분이 쓰인다.
올바른 정책으로 만든 샘플인지 남기는 관측
비동기 흐름에서는 작업이 끝났다는 성공 표시만으로 결과의 일관성을 판단하기 어렵다. 어느 정책이 응답을 만들었고 어떤 정책으로 학습에 사용됐는지 기록이 있어야 한다. 캐시가 오래된 가중치를 섞거나 일부 서버가 새 버전을 놓치는 문제는 오류 응답 없이도 발생할 수 있으므로 속도와 함께 버전의 정합성을 보아야 한다.
이 접근은 생성과 학습을 분리해 각 단계를 조절할 여지를 만들지만 검증할 연결도 늘린다. 버킷에 남은 어댑터와 체크포인트, 큐의 샘플은 서로 다른 상태이므로 재개할 때 무엇을 이어받는지 구별해야 한다. 이번 공개는 한 모델·데이터·구성의 실험과 측정 방법을 제공한 것이다. 이 기사에서 학습을 재실행하거나 다른 모델의 정확도와 비용을 검증하지는 않았으며, 수치를 적용하기 전 대표 작업에서 같은 조건을 확인할 필요가 있다.
출처
Hugging Face의 원출처와 본문에 표시한 참고자료를 바탕으로 한국어로 재구성했습니다. ‘ARCH.B 분석’은 자료를 읽고 덧붙인 편집 해석입니다.
Async GRPO with LoRA across HF Jobs: a bucket, a proxy, and no NCCL (새 창)