동적 대규모 모델 병렬화를 위한 새로운 프리미티브
초록
본 논문은 빅 모델 학습을 위해 모델 변수의 파티셔닝과 업데이트 스케줄링을 제어하는 세 가지 기본 연산인 schedule, push, pull (및 자동 sync)을 제공하는 STRADS 프레임워크를 제안한다. 데이터 병렬 방식이 메모리와 수렴 속도에 한계를 보이는 상황에서, STRADS는 토픽 모델링(LDA), 행렬 분해(MF), 라쏘 회귀 등 세 가지 대표적인 ML 알고리즘에 적용되어 메모리 사용량을 크게 감소시키고, 동적 변수 우선순위 지정으로 수렴 속도를 향상시킨다.
상세 분석
STRADS가 제시하는 핵심 프리미티브는 기존 MapReduce·GraphLab과 유사한 함수형 인터페이스를 유지하면서도 모델 변수 수준의 미세 제어를 가능하게 한다. schedule는 전역 모델 변수 집합 x 중에서 이번 라운드에 동시에 업데이트할 U 개의 변수 집합을 선택한다. 여기서는 정적 라운드‑로빈, 무작위 샘플링, 혹은 변수의 현재 수렴 정도·잔차·우선순위 등을 기반으로 동적으로 변수를 선택하는 전략을 구현할 수 있다. push는 선택된 변수들을 각 워커에 전송하고, 워커는 자신이 보유한 데이터 파티션을 이용해 부분 업데이트 z (예: Gibbs 샘플링 결과, 좌표 하강법의 그라디언트 등)를 계산한다. pull은 모든 워커로부터 수집된 z 를 집계해 전역 변수 x 를 실제로 갱신한다. 이 과정이 끝나면 sync가 자동으로 실행돼 워커들이 최신 변수 값을 읽을 수 있도록 키‑밸류 스토어를 동기화한다. 논문에서는 BSP 방식을 기본 동기화 모델로 채택했으며, SSP·AP와 같은 보다 진보된 일관성 모델도 적용 가능함을 언급한다.
모델 병렬화의 장점은 두 가지로 요약된다. 첫째, 변수 공간을 명시적으로 파티셔닝함으로써 각 머신이 필요로 하는 메모리 양이 O(|x|/M) 으로 감소한다. 실험에서 STRADS‑LDA는 10 K 토픽·21.8 M 어휘(≈200 B 변수) 모델을 64대 머신에 분산시 메모리 사용량을 수십 배 절감했으며, Yahoo! LDA와 달리 가장 작은 머신의 메모리 한계에 얽매이지 않았다. 둘째, 변수 간 의존성을 고려한 스케줄링이 가능해 알고리즘 발산을 방지한다. LDA의 경우 단어별 zᵢⱼ 변수를 서로 겹치지 않게 할당함으로써 거의 조건부 독립성을 확보했고, 컬럼 합 s 의 동기화 오차(Δₜ)가 0.002 이하로 매우 작아 수렴 품질에 영향을 주지 않음을 실증하였다.
세 가지 사례 연구에서 STRADS는 각각 다른 모델‑특화 전략을 적용한다. LDA에서는 단어 집합을 워커에 라운드‑로빈 방식으로 할당해 토픽‑단어 매트릭스 B 와 문서‑토픽 매트릭스 D 를 부분적으로 업데이트한다. MF에서는 사용자·아이템 행렬을 블록‑분할하고, 각 워커가 담당 블록에 대해 좌표 하강법을 수행하도록 스케줄링한다. 라쏘에서는 변수의 현재 절댓값·잔차를 기반으로 “가장 큰” 계수를 우선 업데이트하는 동적 우선순위 스케줄링을 구현해, 100 M 차원의 회귀 문제에서도 수렴 속도를 크게 가속화했다.
전체적으로 STRADS는 “프리미티브 + 사용자 정의 스케줄링”이라는 설계 패턴을 통해 복잡한 모델 병렬화를 간단한 API 수준에서 구현하도록 돕는다. 이는 기존 시스템이 제공하는 자동 스케줄링이 지나치게 강제적이거나, 변수 간 미묘한 상호작용을 무시해 발산을 초래하는 문제를 해결한다. 또한, 메모리 효율성·수렴 가속·프로그래밍 생산성이라는 세 축을 동시에 만족시키는 실용적인 프레임워크로 평가된다.
댓글 및 학술 토론
Loading comments...
의견 남기기