강화 학습 환경
소개
AI 연구자와 엔지니어들이 지속적으로 관심을 갖는 활발한 분야 중 하나는 LLM을 멀티 에이전트 아키텍처로 구성된 종단 간 자율 시스템에 도입하는 것입니다. LLM 자체만으로도 인상적이지만, 진정한 가치를 이끌어내기 위해 산업계에서는 강화 학습(RL) 환경으로 눈을 돌리는 모습을 보이고 있습니다.
RL 환경은 새로운 것이 아닙니다; 그것들은 LLM보다 이전에 존재했습니다. 사실, 환경에 대해 이야기하지 않고는 에이전트를 논할 수 없습니다. 일반적으로 RL 맥락에서 환경은 에이전트가 그 환경에서 취하는 행동에 대해 보상이나 벌점을 제공합니다. 에이전트는 누적 보상을 최대화하기 위해 적응해야 합니다. 이러한 보상 최대화를 위한 적응이 강화 학습의 핵심입니다.
이제 LLM의 등장으로 에이전트 자체가 종종 모델인 경우가 많습니다. 모델의 가중치는 다양한 작업 시도에 대한 평가 점수로 업데이트되어 모델이 적응할 수 있게 됩니다. 컴퓨터 사용, 즉 컴퓨터를 탐색할 수 있는 AI 시스템은 특히 흥미로운 다중 에이전트 작업입니다. 실제로 우리는 이전 글에서 마이크로소프트가 모델 Fara-7B를 위해 다중 에이전트 파이프라인으로 컴퓨터 사용 데이터를 확장한 작업에 대해 이 주제를 탐구한 바 있습니다.
핵심 내용
- 산업계는 대형 언어 모델(LLM)로부터 진정한 가치를 얻기 위해 강화 학습(RL) 환경으로 눈을 돌리고 있습니다.
- 강화 학습(RL) 환경은 에이전트의 행동에 대해 보상이나 벌점을 제공하며, 에이전트(종종 LLM/모델)가 누적 보상을 최대화하도록 가중치를 조정하게 합니다.
- RLHF의 주관적인 보상과 달리, RLVR은 수학 및 코드 작업과 같이 객관적이고 검증 가능한 보상(예: 조작이 불가능한 보상)을 활용하여 모델이 원하는 추론 능력을 개발하도록 합니다.
- 기업들은 종종 '하니스(harnesses)' 또는 'UI 체육관(UI gyms)'이라고 불리는 RL 환경을 사용하여 자사 소프트웨어 제품 내에서 사용하기 위해 모델을 훈련시키고 있습니다(예: Cursor의 Composer, OpenAI의 Codex).
검증 가능한 보상으로부터의 강화 학습
최근 강화 학습(RL) 환경에 대한 논의와 관심의 증가는 아마도 수학이나 코드와 같이 과제를 검증할 수 있는 RLVR(Verifiable Rewards 기반 강화 학습)의 성공으로 거슬러 올라갈 수 있습니다. 우리는 Andrej Karpathy의 블로그 게시물 '2025 LLM Year in Review'가 작년에 이루어진 진전의 맥락 속에서 RLVR을 설명하는 방식을 좋아합니다. Karpathy는 RLVR이 효과적인 이유를 다음과 같이 설명합니다: 검증 가능한 보상은 조작될 수 없다. 조작될 수 없는 보상 함수란 퍼즐을 풀거나 테스트 케이스를 통과하는 것과 같이 과제의 성공적이고 검증 가능한 결과에 직접 연결된 함수로, LLM이 실제로 필요한 추론 및 문제 해결 전략을 개발하지 않고는 높은 보상을 얻기 어렵게 만듭니다(보상 조작).
제품을 위한 RL 환경
윌 브라운은 모델이 특정 제품을 위해 어떻게 훈련되는지를 설명하면서 Cursor의 Composer와 Open AI의 Codex를 예로 들었습니다. 여기서 모델은 하니스(harness)에서 훈련되는데, 이는 본질적으로 제품을 나타내는 RL 환경입니다. 이와 비슷하게, 기업들은 자신의 소프트웨어를 중심으로 환경을 구축하기 시작했으며, 우리는 이를 UI 체육관(UI gyms)이라고 부르는 것을 듣고 있습니다.
RL 환경 만들기
RL 환경을 만드는 방법에는 여러 가지가 있습니다. 먼저 목표를 고려하세요. 모델이 무엇을 달성하길 원하나요? 그런 다음 프레임워크를 선택해야 합니다. 프레임워크에 따라 환경은 다르게 정의됩니다.
잠재적인 프레임워크로는 Prime Intellect의 환경 허브, 재사용 가능한 도구가 있는 SkyRL, PyTorch의 OpenEnv, OpenAI의 Gymnasium이 있습니다. Thinking Machines도 RL 환경에 대한 문서와 요리책을 제공합니다.
프레임워크에 상관없이, 일반적으로 RL 환경의 주요 구성 요소를 고려하고 명시해야 합니다:
- 상태 공간: 에이전트가 관찰하는 정보입니다. 이는 게임 화면의 픽셀, 숫자 센서 값, 스크린샷 또는 세계에 대한 표현일 수 있습니다.
- 행동 공간: 에이전트가 취할 수 있는 모든 잠재적 행동. 행동은 버튼 누르기와 같은 이산적일 수도 있고, 모터 제어와 같은 연속적일 수도 있습니다.
- 보상 함수: 보상 함수는 어떤 행동이 나타나는지를 결정합니다. 희소 보상(작업 완료 시에만 지급)은 학습하기 어려울 수 있는 반면, 밀집 보상(자주 제공되는 피드백)은 의도하지 않은 행동을 보상할 수도 있습니다.
- 에피소드 종료 조건: 여기서는 '실험'이 언제 종료되는지를 결정합니다. 이는 목표를 달성한 후, 시간 제한을 초과한 후, 또는 실패 상태에 들어간 후가 될 수 있습니다.
이러한 구성 요소를 정의한 후에는, 행동에 따라 상태가 어떻게 전이되는지를 규정하는 규칙과 같이 환경의 동력을 구현하게 됩니다.
단계 0: 우리가 필요한 것을 고려하세요
GPU 드롭렛 설정부터 시작하세요. 필요한 GPU 수를 고려하세요. 우리는 4개의 H100을 사용할 예정입니다. 또한 Weights and Biases 계정이 필요합니다.
1단계: 리포지토리를 클론하고 환경을 설정하세요
git clone https://github.com/NovaSky-AI/SkyRL.git
cd SkyRL
uv venv .venv
source .venv/bin/activate
uv pip install -e ".[vllm]" ##or ".[sglang]" for alternative inference backends
uv pip install -r requirements.txt
# may need to:
snap install astral-uv2단계: RL 훈련을 위한 데이터셋 준비
SkyRL은 명령 및 강화 학습(RL)에 적합한 스키마를 가진 Parquet 형식의 데이터를 기대합니다(프롬프트, 완료, 보상 등).
수학 추론을 위한 GSM8K과 같은 내장 예제 중 하나를 사용할 수 있으며(SWE-Bench 스타일 작업으로 넘어가기 전에 좋은 시작점), 또는 사용자 정의 환경을 위해 직접 데이터를 준비할 수도 있습니다.
우리는 gsm8k_dataset.py를 사용하여 GSM8K 데이터(추론 + 도구 사용 스타일)를 생성할 것입니다.
cd skyrl-train
uv run examples/gsm8k/gsm8k_dataset.py --output_dir ~/data/gsm8k그래서 이렇게 하면 train.parquet와 validation.parquet이 다음과 같은 필드와 함께 생성됩니다:
prompt완료(또는 경로)보상(오프라인/하이브리드 환경용; 온라인 RL에서는 보상을 실시간으로 계산함)
더 많은 주체적 과제의 경우, 우리가 검증 가능한 과제를 살펴보는 SWE-Bench나 유사한 벤치마크를 사용할 수 있을 것입니다. SkyRL은 실제로 코드 편집 환경을 위해 OpenHands 런타임(SkyRL-OpenHands)을 통합합니다.
3단계: 학습 실행을 구성할 YAML 설정 파일 만들기
GRPO 훈련 실행을 설정하기 위해 YAML 파일을 만들어 봅시다: examples/gsm8k/gsm8k-grpo.yaml
data:
train_data: ["~/data/gsm8k/train.parquet"]
val_data: ["~/data/gsm8k/validation.parquet"]
trainer:
algorithm:
name: grpo
advantage_estimator: grpo
policy:
model:
path: Qwen/Qwen2.5-1.5B-Instruct # Start small; scale to 7B–32B
epochs: 2 # Increase for real training
strategy: fsdp2 # Or ddp for single node
placement:
colocate_all: true
policy_num_gpus_per_node: 4 # Adjust to your hardware
inference:
backend: vllm # Fast inference for rollouts
logger: wandb4단계: 훈련
단일 노드의 경우:
uv run -m skyrl_train.entrypoints.main_base \
--config examples/gsm8k/gsm8k-grpo.yaml \
trainer.epochs=5 \
data.train_data='["~/data/gsm8k/train.parquet"]'분산(여러 GPU/노드, Ray/SkyPilot 사용 시)용:
sky launch skyrl_train/examples/gsm8k/gsm8k-grpo-skypilot.yaml \
--secret WANDB_API_KEY=your_key_here단계 5: 평가하고 반복하기
from skyrl.agent import SkyRLAgent
agent = SkyRLAgent.from_checkpoint("path/to/checkpoint")
result = agent.run_task(
prompt="Fix this bug in repo X: ...",
runtime="openhands", # Stateful code env
max_turns=30
)
print(result.success_rate, result.trajectory)자주 묻는 질문
RL 환경이란 무엇인가?
강화 학습(RL)의 맥락에서, 환경은 에이전트(종종 LLM/모델)가 취한 행동에 대해 보상이나 페널티를 제공합니다. 에이전트는 누적 보상을 최대화하기 위해 행동을 조정합니다.
왜 업계는 LLM을 위해 RL 환경으로 전환하고 있나요?
업계는 LLM을 다중 에이전트 구조를 갖춘 엔드투엔드 자율 시스템에 통합하기 위해 RL 환경을 채택하고 있으며, 이는 이러한 모델에서 진정한 가치를 도출하는 방법으로 여겨지고 있습니다.
검증 가능한 보상 기반 강화 학습(RLVR)이란 무엇인가?
RLVR은 수학 및 코드 과제와 같이 객관적이고 검증 가능한 보상을 사용하는 방법입니다. 이러한 '조작 불가능한(non-gameable)' 보상은 RLHF에서 사용하는 주관적 보상과 달리 모델이 원하는 추론 및 문제 해결 전략을 개발하도록 보장합니다.
상업용 제품에서 강화 학습(RL) 환경은 어떻게 사용되나요?
기업들은 자사 소프트웨어 주변에 환경을 구축하는데, 이를 종종 '하니스(harnesses)'나 'UI 체육관(UI gyms)'이라고 부릅니다. 이러한 환경은 주로 Cursor의 Composer나 OpenAI의 Codex처럼 제품 내에서 사용하는 모델을 학습시키기 위해 설계됩니다.
RL 환경을 합성 데이터 생성에 어떻게 활용할 수 있을까?
환경은 본질적으로 실제 정답(예: 단위 테스트 통과, 올바른 스프레드시트 출력, 정확한 터미널 데이터)을 알고 있기 때문에 고품질 합성 데이터를 생성하는 데 유용하다.
마지막 생각
2026년으로 나아가면서, RL 환경 덕분에 모델이 특정 애플리케이션에 맞게 훈련될 수 있어 AI 모델이 실질적인 사용 사례에 더 잘 통합되는 모습을 보게 될 것 같습니다. Linux-Console.net은 AI를 활용한 여러분의 목표를 실현할 수 있도록 돕습니다: Gradient를 사용하여 에이전트를 학습시키고, 추론하며, 구축하세요.
참고 문헌 및 추가 자료
SemiAnalysis: 과학을 위한 RL 환경과 RL: 데이터 파운드리와 다중 에이전트 아키텍처
Epoch AI: 강화 학습 환경에 대한 FAQ
SkyRL: 새로운 환경 또는 작업 생성 — SkyRL 문서
Thinking Machines: RL 환경 – Tinker API
GPU 모드: RL 환경 미니 컨퍼런스
프라임 인텔렉트:
LLM을 위한 RLVR 환경이란 무엇인가요? | 정책 - 배포 - 평가 기준
대규모 RL 환경 – 윌 브라운, 프라임 인텔렉트
내부 살펴보기: Zapier & 프라임 인텔렉트로 RL 환경 구축하기
INTELLECT-3: 기술 보고서
그리고 RL을 기초부터 탐구하고 싶다면, 리처드 서튼의 CMPUT 609 강의 구글 드라이브가 있습니다.
Linux-Console.net 커뮤니티와 함께 학습해 주셔서 감사합니다.
