Slime: RL Scaling Infrastructure

마지막 수정:

slimesglangmegatronrl-infrarollout

Slime은 알고리즘 모음이라기보다 LLM RL scaling framework다.

README의 핵심 문장은 두 가지다.

Megatron으로 high-performance training
SGLang으로 rollout/data generation

이 둘을 Data Buffer로 연결한다.

Slime의 큰 구조

training side
  Megatron
  optimizer step
  checkpoint / weight update

rollout side
  SGLang
  prompt serving
  custom generation
  reward/verifier/environment feedback

Data Buffer
  rollout samples를 training으로 넘기는 bridge

작은 RL 코드는 for step in train 안에서 generate와 update를 같이 할 수 있다. 대규모 RL은 generate와 train이 서로 다른 시스템이 된다.

Slime이 강조하는 문제

고성능 rollout
training/rollout weight synchronization
custom data generation
verifier feedback
fault tolerance
trace/profiling/debug
rollout-only / train-only replay

RL 버그는 조용히 발생한다. script가 돈다는 사실만으로는 충분하지 않다. reward가 잘못 붙거나, mask가 틀리거나, stale weight로 rollout을 만들면 학습은 진행되는 것처럼 보이지만 엉뚱한 방향으로 간다.

왜 SGLang native인가

Slime은 여러 inference backend의 공통분모 abstraction을 만들기보다 SGLang을 rollout backend로 깊게 사용한다.

SGLang routing
KV/cache behavior
PD disaggregation
weight update endpoint
serving-specific arguments

이 덕분에 RL rollout serving의 성능 기능을 직접 사용할 수 있다.

TRL과 비교

TRL:
  trainer abstraction으로 post-training 실험을 빠르게 시작

Slime:
  large-scale rollout/training system을 명시적으로 운영

둘은 경쟁이라기보다 층이 다르다. TRL은 알고리즘을 배우고 실험하기 좋고, Slime은 rollout이 병목이 되는 대규모 RL loop를 이해하기 좋다.

참고 자료

확인

  • Slime에서 training side와 rollout side는 각각 무엇을 담당하는가?
  • Data Buffer는 왜 필요한가?
  • Slime을 단순 trainer library로 보면 놓치는 점은 무엇인가?