TRENDSHIFT #17 · 2026.05.23 · OPENPIPE

ART — LLM 에이전트를
강화학습으로 키우는 법

9.2k 스타. Qwen·Llama·GPT-OSS 같은 오픈 LLM을 GRPO로 훈련해서, 메일 검색·2048 게임·MCP 서버 마스터까지 "경험으로 배우는" 다중 스텝 에이전트를 만드는 오픈파이프(OpenPipe)의 오픈소스 프레임워크.

0먼저, 강화학습이란?

왜 이게 LLM 에이전트한테 필요할까.

요즘 ChatGPT나 Claude 같은 대규모 언어모델(LLM)은 텍스트를 잘 만든다. 그런데 여러 단계를 거쳐 도구를 쓰고 의사결정을 하는 "에이전트(agent)" 역할을 시키면 — 예를 들어 "이메일 100통을 뒤져서 약속 일정을 정리해 줘" 같은 — 갑자기 헛소리를 하거나, 같은 검색을 반복하거나, 중간에 포기한다.

이 문제를 해결하는 가장 강력한 방법이 강화학습(Reinforcement Learning, RL)이다. AI가 직접 행동해 보고, 결과가 좋으면 보상을 받고, 나쁘면 벌점을 받으면서 행동 패턴을 다듬는 학습 방식.

용어
RL (Reinforcement Learning, 강화학습)
모델이 정답을 외우는 게 아니라, 시행착오로 학습한다. 알파고가 바둑을 두면서 이기면 "그 수가 좋았다"를 누적해 강해진 것과 같은 방식. 라벨링된 정답 데이터셋이 없어도 된다.
용어
Agent (에이전트, 자율 작업 수행자)
단순한 챗봇이 아니라 도구(검색·코드 실행·DB 조회 등)를 골라 쓰고 여러 턴에 걸쳐 목표를 향해 행동하는 LLM 프로그램. 호텔 컨시어지가 손님 요청에 맞춰 식당 예약, 택시 호출, 안내까지 알아서 처리하는 것을 상상하면 된다.
용어
GRPO (Group Relative Policy Optimization, 그룹 상대 정책 최적화)
DeepSeek 팀이 2024년에 발표한 RL 알고리즘. 같은 문제에 대해 모델이 여러 답을 동시에 만들어내고, "그룹 안에서 누가 더 잘했는지" 상대적으로 비교해서 점수를 매긴다. 가치 함수(value function)라는 무거운 추가 모델 없이도 학습이 잘된다는 게 핵심.
비유

학원에서 같은 시험을 친 4명의 학생을 비교한다고 치자. 절대 점수(100점 만점)를 매기는 건 어렵지만 "이 넷 중 누가 가장 잘 풀었나"를 줄 세우는 건 훨씬 쉽다. GRPO는 정확히 그 직관을 학습 알고리즘으로 만들었다.

1한 줄 요약

이 프로젝트의 본질.

핵심 메시지

"학습 데이터 만들지 마.
그냥 일을 시켜보고, 잘하면 점수만 줘."

ART(Agent Reinforcement Trainer)는 LLM 에이전트가 자기 경험으로부터 배워서 점점 더 잘하게 만드는 도구다. 라벨링된 데이터셋도, 박사 학위도, 복잡한 보상함수도 필요 없다. 에이전트가 어떤 시나리오를 해결해야 하는지만 정의하면 ART가 GRPO 훈련 루프를 자동으로 돌려준다.

핵심 발명품은 RULER: 보상 함수를 직접 짜는 대신, GPT-4o 같은 모델에게 "이 네 개의 시도 중 누가 가장 잘했나" 줄 세우게 하는 LLM 심판 시스템이다. 손으로 짠 보상함수와 비슷하거나 더 나은 성능을 내면서 개발 시간은 2~3배 단축된다.

2왜 ART가 트렌딩에 올랐나

2026년 5월, GitHub에서 매일 수백 개의 새 별을 받는 이유.

2025~2026년의 가장 큰 AI 트렌드는 "에이전트(agent)"다. 그런데 막상 에이전트를 만들어 보면 신뢰성이 무너진다. 같은 질문에 답이 매번 다르고, 도구 호출을 빼먹고, 핵심 단계에서 길을 잃는다. 프로덕션에 올리기엔 너무 불안정한 상태가 대부분이다.

해법으로 두 갈래가 나왔다. 한쪽은 프롬프트 엔지니어링·시스템 디자인(예: LangGraph, AutoGen)으로 에이전트의 흐름을 조이는 방법. 다른 한쪽은 모델 자체를 학습시키는 방법. 후자가 더 근본적이지만 GPU·데이터·전문성이 필요해 진입 장벽이 높았다. ART는 그 장벽을 낮춘다.

경쟁 제품 대비 장점 1

"기존 코드를 거의 안 고친다"

ART는 클라이언트·서버 구조다. 당신의 에이전트 코드(openai.chat.completions.create(...) 호출)는 그대로 두고, OpenAI 호환 클라이언트를 ART 클라이언트로 바꾸는 것만으로 동작한다. 학습 서버는 별도 GPU 머신에서 돌아간다.

경쟁 제품 대비 장점 2

"라벨 데이터 없이도 학습된다"

RULER 덕분에 정답 데이터를 만들 필요가 없다. 시나리오를 정의하고 "이 결과가 좋아 보이는지" LLM 심판에게 맡기면, 그 상대 점수가 그대로 GRPO의 보상이 된다. 보상함수를 코딩으로 작성하는 전통적 RL의 가장 큰 진입장벽이 사라진다.

경쟁 제품 대비 장점 3

"노트북으로 학습 시작, GPU는 클라우드에서"

SkyPilot이라는 클라우드 자원 자동화 도구가 통합돼 있어, art CLI 한 줄로 GCP·AWS·Lambda·RunPod 등 GPU 인스턴스를 임시로 띄워 학습한 뒤 정리한다. 본인 GPU가 없어도 시작할 수 있다.

경쟁 제품 대비 장점 4

"실전 사례가 있다"

ART·E라는 메일 검색 에이전트는 Qwen 2.5 14B를 ART로 훈련해 OpenAI o3보다 좋은 성능을 냈다. 14B 모델로 o3을 이긴다는 건 작은 오픈소스 모델도 강화학습을 잘하면 클로즈드 모델을 따라잡을 수 있다는 강력한 증명이다.

함정
"RL은 무조건 좋다"는 착각

RL이 만능은 아니다. 시나리오가 명확하지 않거나, "잘했다/못했다"를 LLM도 판단하기 어려운 도메인에서는 RULER도 헤맨다. 또 학습에는 여전히 시간·GPU 비용이 든다(시간당 수십 달러). 프롬프트 엔지니어링으로 80% 잡힐 작업을 굳이 RL로 풀 필요는 없다.

해결책
RL을 쓰기 좋은 케이스

(1) 같은 종류의 작업을 반복해서 잘하게 만들고 싶을 때 (메일 검색, 특정 게임, 특정 MCP 서버 활용), (2) QA에서 발견한 구체적 실패 패턴을 고치고 싶을 때, (3) 음성 에이전트처럼 스크립트를 무조건 지키게 하고 싶을 때. ART 공식 문서에서 추천하는 시나리오들이다.

3기술 스택 전체 지도

레포 안에 어떤 도구들이 켜켜이 쌓여 있는지.

ART의 의존성을 펼쳐 보면 현대 LLM 훈련 생태계의 거의 모든 핵심 도구가 한 자리에 모여 있다. 단순히 "Python 라이브러리 하나"가 아니라 통합 플랫폼에 가깝다.

코어 의존성 (모든 사용자 공통)

코어 1
openai (≥2.14.0) — OpenAI Python SDK
ART 클라이언트는 OpenAI의 chat completions API와 호환된다. 기존 코드에서 client만 갈아끼우면 끝.
코어 2
litellm (1.71~1.82) — 멀티 프로바이더 LLM 라우터
OpenAI·Anthropic·Google·로컬 Ollama 등 100개 이상의 LLM 백엔드를 같은 인터페이스로 호출하게 해 주는 라이브러리. RULER 심판 모델로 어떤 LLM이든 쓸 수 있는 이유다.
코어 3
polars — Rust로 짠 초고속 DataFrame
학습 데이터(trajectory) 처리용. pandas보다 5~10배 빠른 후속 세대 도구. 큰 학습 로그를 분석할 때 빛난다.
코어 4
weave — W&B(Weights & Biases)의 LLM 관측 도구
모든 LLM 호출의 입력·출력·메타데이터를 자동 기록해 학습 디버깅을 돕는다. Langfuse와 비슷한 역할.

백엔드 (학습 서버 쪽, GPU 머신)

학습 엔진

Unsloth + TRL + Transformers 5.2

Unsloth는 LoRA 기반 미세조정을 2~5배 가속하는 라이브러리. TRL(Transformers Reinforcement Learning)은 HuggingFace의 RL 학습 도구. Transformers 5.2는 모델 아키텍처 표준. 셋이 합쳐져 GRPO 알고리즘을 실제로 돌린다.

추론 엔진

vLLM (백그라운드)

학습 도중 모델의 새 체크포인트를 즉시 로드해서 다음 라운드의 롤아웃(rollout)에 사용하는 추론 서버. PagedAttention이라는 메모리 효율 기법으로 LLM을 GPU에서 매우 빠르게 돌린다.

GPU 최적화

torch 2.11 + torchao + bitsandbytes + flashinfer

각각 PyTorch 본체, 양자화(quantization) 최적화, 4/8비트 메모리 절약, 추론 커널 최적화 라이브러리. 24GB 같은 작은 GPU에서도 14B 모델을 학습할 수 있게 해 주는 기술 묶음.

분산 학습 (옵션)

Megatron-Core + Transformer Engine + DeepEP

NVIDIA의 초대규모 모델 분산 학습 스택. 30B 이상 모델을 여러 GPU에 쪼개서 학습할 때 활성화한다. 일반 사용자는 건드릴 일 없다.

클라이언트 / 인프라

CLI 인프라
SkyPilot — 멀티 클라우드 GPU 오케스트레이션
"이 코드 GCP H100에서 30분 돌려줘"를 한 줄로 표현하게 해 주는 도구. ART는 SkyPilot 설정파일(skypilot-config.yaml)을 기본 제공해서 클라우드 자원 신청·종료를 자동화한다.
패키지 관리
uv (≥0.11.7) — Rust로 짠 초고속 Python 패키지 매니저
pip보다 10~100배 빠른 차세대 도구. ART는 복잡한 GPU 의존성을 uv로 락(lock)해 재현 가능한 환경을 보장한다.
통합 옵션
LangGraph 통합
LangGraph로 짠 다중 노드 에이전트 그래프를 ART로 학습할 수 있다. 별도 의존성 그룹 langgraph로 분리.
통합 옵션
Tinker 통합
Thinking Machines(미라 무라티의 새 회사)의 학습 인프라와도 연결된다. tinker 의존성 그룹.

4아키텍처 심화 분석

클라이언트-서버 모델과 GRPO 훈련 루프.

ART의 가장 중요한 설계 결정은 "학습 서버"와 "에이전트 코드"를 완전히 분리한 것이다. 기존 RL 프레임워크는 학습 코드와 환경(environment) 코드가 한 프로세스에 묶여 있어 진입 장벽이 높았는데, ART는 둘을 클라이언트·서버로 쪼개서 일반 개발자가 GPU 코드를 한 줄도 안 보고도 RL을 돌릴 수 있게 만들었다.

┌──────────────────────────┐ ┌────────────────────────┐ │ ART CLIENT (당신 코드) │ │ ART SERVER (GPU 머신) │ │ │ │ │ │ ┌──────────────────┐ │ HTTP │ ┌──────────────────┐ │ │ │ 에이전트 로직 │ │ ──────▶ │ │ vLLM 추론 엔진 │ │ │ │ openai.chat... │ │ │ │ (LoRA 핫스왑) │ │ │ └────────┬─────────┘ │ ◀────── │ └─────────┬────────┘ │ │ ▼ │ 응답 │ ▼ │ │ ┌──────────────────┐ │ │ ┌──────────────────┐ │ │ │ Trajectory 수집 │ │ │ │ GRPO 학습 루프 │ │ │ │ (메시지+보상) │ │ 배치 │ │ (Unsloth+TRL) │ │ │ └────────┬─────────┘ │ ──────▶ │ └─────────┬────────┘ │ │ ▼ │ │ ▼ │ │ ┌──────────────────┐ │ │ ┌──────────────────┐ │ │ │ RULER (LLM 심판) │ │ │ │ 새 LoRA 체크포인트 │ │ │ └──────────────────┘ │ │ │ vLLM에 즉시 로드 │ │ │ │ │ └──────────────────┘ │ └──────────────────────────┘ └────────────────────────┘ 노트북·서버 GPU 인스턴스

훈련 루프의 한 사이클

한 번의 학습 사이클(iteration)은 다음 흐름으로 돈다:

단계 1 — Inference (롤아웃)

여러 시나리오를 병렬로 풀어본다

당신의 에이전트 코드가 N개의 시나리오를 ART 클라이언트로 동시에 실행한다. 매 LLM 호출은 ART 서버의 vLLM에 라우팅되고, 서버는 현재 학습 중인 LoRA를 적용해 응답을 돌려준다. 시스템·유저·어시스턴트 메시지가 차곡차곡 Trajectory라는 객체에 저장된다.

단계 2 — Reward (보상 부여)

잘했는지 점수를 매긴다

롤아웃이 끝나면 각 Trajectory에 reward(0~1 사이의 점수)를 붙인다. 두 가지 방법:

(a) 손으로 짠 보상함수: 게임 점수, 정답 일치 여부 등 명확한 메트릭이 있을 때.
(b) RULER: 같은 시나리오에 대해 4~8개 트라젝토리를 생성하고, LLM 심판에게 "이 중 누가 잘했는지" 줄 세우게 한다. 절대 점수보다 상대 순위가 더 신뢰성 있다는 GRPO의 직관과 정확히 맞물린다.

단계 3 — Train (학습)

새 LoRA를 굽는다

점수가 매겨진 Trajectory들을 그룹으로 묶어 ART 서버로 보낸다. 서버는 GRPO 알고리즘으로 LoRA 가중치를 업데이트한다. 학습이 끝나면 새 LoRA를 디스크에 저장하고 vLLM에 즉시 로드. 추론이 다시 열리고 단계 1로 돌아간다.

비유

축구팀 훈련을 떠올려 보자. 매일 같은 연습 경기를 4번 한다(롤아웃). 각 경기를 비디오로 찍고 코치가 "이 경기는 7점, 저 경기는 3점" 평가한다(보상). 그 평가를 바탕으로 다음날 전술을 살짝 수정한다(LoRA 업데이트). 다시 4번 연습. 이 사이클을 100번 돌리면 팀이 강해진다 — 정확히 ART가 하는 일이다.

핵심 설계 패턴

패턴 1 — LoRA 핫스왑

전체 모델 가중치를 매번 안 바꾼다

14B 모델을 통째로 저장·로드하면 한 사이클에 수 분이 걸린다. ART는 LoRA(Low-Rank Adaptation, 모델의 일부 행렬만 작게 추가 학습하는 기법)만 갈아끼우기 때문에 사이클이 초 단위로 짧아진다.

패턴 2 — Trajectory를 1급 객체로

대화 전체가 학습 단위

전통 RL은 (상태, 행동, 보상) 튜플을 다룬다. LLM 에이전트는 한 번의 작업이 수십 턴의 대화이므로, ART는 대화 전체를 하나의 Trajectory로 본다. 보상도 마지막에 한 번만 주면 GRPO가 알아서 모든 토큰에 영향을 미친다.

패턴 3 — Stateless 클라이언트

당신 코드는 학습을 모른다

에이전트 코드 입장에서는 그냥 OpenAI API를 호출하는 것처럼 보인다. "학습 중인지/추론만 하는지" 신경 쓸 필요 없다. 이 추상화 덕분에 ART를 기존 프로젝트에 끼워 넣는 비용이 거의 0이다.

5디렉토리 구조 해부

레포 폴더를 한 줄씩 살펴본다.

ART/ ├── src/ │ ├── art/ ← 메인 패키지 │ │ ├── trajectories.py ← Trajectory · TrajectoryGroup 데이터 모델 │ │ ├── rewards/ ← RULER 구현체 (LLM 심판) │ │ ├── serverless/ ← W&B Serverless RL 백엔드 │ │ ├── local/ ← 로컬 GPU 학습 백엔드 │ │ ├── unsloth/ ← Unsloth 통합 (GRPO 학습) │ │ ├── vllm_runtime.py ← vLLM 추론 서버 래퍼 │ │ ├── langgraph/ ← LangGraph 통합 어댑터 │ │ ├── tinker/ ← Thinking Machines 통합 │ │ └── cli.py ← `art` CLI 명령어 │ └── mp_actors/ ← 멀티프로세스 액터(병렬 롤아웃) │ ├── examples/ ← 핵심: 실제 학습 예제 모음 │ ├── 2048/ ← 2048 게임 마스터 │ ├── mcp-rl/ ← 임의 MCP 서버 마스터 │ ├── temporal_clue/ ← 시간 추론 퍼즐 │ ├── tic_tac_toe/ ← 틱택토 │ ├── tic_tac_toe_self_play/← 틱택토 셀프플레이 │ ├── codenames/ ← 코드네임 보드게임 │ ├── roflbot/ ← roflbot 예제 │ └── hn_title_generator/ ← HN 제목 생성 예제 │ (langgraph·auto_rl·sft 노트북은 별도 레포 OpenPipe/art-notebooks에 있음) │ ├── docs/ ← art.openpipe.ai 문서 소스 ├── scripts/ ← 학습 시작·정지 헬퍼 셸 스크립트 ├── tests/ ← pytest 테스트 ├── dev/ ← 내부 개발용(art-e 벤치마크 등) ├── requirements/ ← Python 환경 추가 명세 ├── licenses/ ← Apache-2.0 + 서드파티 라이선스 │ ├── .agents/skills/ ← Claude/Cursor용 Agent Skill 정의 ├── .claude/ ← Claude Code 설정 (이 레포가 AI 친화적이라는 신호) ├── .github/workflows/ ← GitHub Actions CI │ ├── pyproject.toml ← uv·hatch 패키지 설정, 의존성 트리 ├── skypilot-config.yaml ← 클라우드 GPU 자동화 설정 ├── AGENT.md / CLAUDE.md ← AI 코딩 에이전트용 컨텍스트 ├── README.md ← 메인 설명 └── uv.lock ← 의존성 락 파일

가장 중요한 폴더 두 개

필독
src/art/rewards/

RULER의 실제 코드. ruler_score_group()이 어떻게 LLM에게 프롬프트를 던지고, 어떻게 JSON 응답을 파싱해서 점수를 만드는지 200줄 정도면 다 읽힌다. 자신만의 LLM 심판을 만들고 싶을 때 그대로 참고할 만한 패턴.

필독
examples/art-e/ — "메일 검색 o3 격파" 사례

Qwen 2.5 14B를 ART로 학습해 OpenAI o3보다 좋은 메일 검색 에이전트를 만든 실제 코드. 시나리오 정의 → 롤아웃 함수 → 보상 함수 → 학습 루프까지 한 패키지 안에 다 있다. ART를 자기 프로젝트에 도입할 때 가장 좋은 출발점.

6학습 포인트 (기술별)

이 레포에서 어떤 기술을 어떤 깊이로 배울 수 있는가.

기술 1

GRPO 알고리즘의 직관

강화학습 이론을 깊이 모르고도 "왜 그룹 안에서 줄을 세우면 학습이 되는가"를 ART 코드와 docs를 통해 익힐 수 있다. DeepSeek R1이 이 알고리즘으로 추론 능력을 폭발시킨 사건 이후 GRPO는 사실상 LLM RL의 표준이 됐다.

실습 아이디어: tic_tac_toe 예제부터 시작해서 보상이 어떻게 LoRA에 반영되는지 W&B 로그를 보며 추적해 보자.

기술 2

LoRA 기반 파인튜닝의 실전

전체 모델 가중치를 업데이트하지 않고 작은 추가 행렬만 학습하는 LoRA(Low-Rank Adaptation)는 LLM 시대의 가장 중요한 기법 중 하나. ART는 LoRA 학습·저장·로드 사이클을 자동화해 주므로 개념을 직접 코드로 체험할 수 있다.

실습 아이디어: 같은 시나리오를 LoRA rank를 4 → 16 → 64로 바꿔 학습해서 성능 차이를 비교.

기술 3

LLM-as-Judge 패턴 (RULER)

"LLM에게 결과를 평가시킨다"는 패턴은 자동 평가·합성 데이터 생성·RAG 품질 검증 등 다양한 곳에 쓰인다. RULER 구현체를 읽으면 프롬프트 설계, JSON 강제, 캐시 처리, prefix 중복 제거 같은 실전 노하우를 한 번에 익힐 수 있다.

실습 아이디어: RULER의 기본 루브릭을 자기 도메인(예: 코드 리뷰, 카피라이팅)에 맞게 커스터마이즈해 보기.

기술 4

vLLM의 LoRA 핫스왑

운영 중인 추론 서버에 새 어댑터를 무중단으로 교체하는 기법. ART 서버 코드는 vLLM의 LoRA API를 어떻게 호출하는지 좋은 예제다.

실습 아이디어: vLLM을 따로 띄우고 ART와 똑같이 LoRA 두 개를 번갈아 적용해 응답 차이를 관찰.

기술 5

SkyPilot으로 멀티 클라우드 GPU 관리

YAML 한 장으로 "어느 클라우드든 가장 싼 H100을 빌려 30분 쓰고 끄기"가 가능해진다. ML 운영의 미래로 거론되는 기술.

실습 아이디어: SkyPilot 공식 튜토리얼로 간단한 Python 스크립트를 클라우드에서 돌려 보고, ART의 skypilot-config.yaml을 비교 분석.

기술 6

uv 기반 현대적 Python 패키징

ART의 pyproject.toml은 [tool.uv] 섹션에 GPU 의존성을 override하는 기법, 빌드 격리(no-build-isolation-package) 등 uv의 고급 기능을 잘 보여주는 실전 예시다.

실습 아이디어: 자기 프로젝트의 requirements.txt를 uv로 마이그레이션해 보고 락 파일 생성 속도 차이 체감.

기술 7

LangGraph 에이전트 학습 통합

LangGraph로 짠 그래프형 에이전트도 ART로 학습할 수 있다. 워크플로우 에이전트와 학습 가능한 에이전트의 두 세계가 만나는 흥미로운 지점.

실습 아이디어: LangGraph로 짠 간단한 ReAct 에이전트를 ART에 연결해 보기.

7하드웨어 / 시스템 요구사항

실제로 돌리려면 뭐가 필요한가.

ART는 "클라이언트"와 "서버" 요구사항이 매우 다르다. 클라이언트는 노트북, 서버는 GPU 머신.

클라이언트 측

일반 노트북 (CPU만 있어도 OK)

Python ≥ 3.12, 메모리 8GB 이상이면 충분. 에이전트 코드가 도는 환경이라 GPU가 필요 없다. pip install openpipe-art로 끝.

서버 측 (최소)

GPU 24GB VRAM (RTX 4090 / L4 / A5000 급)

3B~7B 모델 학습용. 2048, tic-tac-toe, codenames 같은 작은 예제는 이 정도면 돌아간다. Google Colab Pro의 A100 40GB도 OK — 실제로 공식 노트북이 Colab에서 동작하도록 설계됐다.

서버 측 (권장)

GPU 80GB VRAM (A100 / H100 / H200)

14B 모델(ART·E 사이즈) 학습을 합리적인 시간에 끝내려면 필요. ART·E의 메일 검색 학습은 H100 1장에서 약 6시간 걸린 것으로 보고됨.

서버 측 (대규모)

다중 GPU + Megatron 옵션

30B~70B 모델은 GPU 4~8장에 텐서 병렬화가 필요하다. ART의 megatron 의존성 그룹이 이 케이스를 지원하지만 설정이 복잡해 일반 사용자에겐 비추천.

클라우드 옵션 1

W&B Training (Serverless RL)

본인 GPU 안 사고도 OpenPipe의 관리형 인프라에서 학습. 시간당 토큰 단위 과금. 인프라 관리 0, 즉시 W&B Inference로 배포 가능. "40% 더 싸고 28% 더 빠르다"는 공식 마케팅 문구의 의미.

클라우드 옵션 2

SkyPilot으로 spot 인스턴스 활용

RunPod·Lambda·CoreWeave 등 GPU 전문 클라우드에서 H100을 시간당 2~3달러에 쓸 수 있다. SkyPilot이 가장 싼 곳을 자동으로 골라준다.

함정
Mac에서 직접 학습은 불가

Unsloth가 NVIDIA CUDA를 요구하므로 Mac에서는 학습 서버를 돌릴 수 없다. 추론(클라이언트)만 가능. Apple Silicon 사용자는 Colab이나 클라우드로 우회해야 한다.

8직접 해볼 수 있는 실습 과제

난이도별 5단계.

레벨 1 — 입문 (1시간)

Colab에서 2048 에이전트 학습

공식 노트북 링크를 열고 "Run All"을 누르면 W&B Serverless 백엔드로 Qwen 3.6 27B가 2048을 학습하는 과정을 본다. 코드 한 줄도 안 짜고 GRPO 루프가 실제로 도는 걸 체험하는 게 목적.

핵심 학습: Trajectory가 어떻게 생기고, reward가 어떻게 매겨지는지 W&B 대시보드로 시각화해서 본다.

레벨 2 — 초급 (반나절)

RULER 단독 사용 — 자기 LLM 결과 자동 평가

학습 없이 RULER만 떼서 쓴다. 자기가 가진 시스템 프롬프트로 GPT 4o-mini 답변 5개를 만들고, RULER로 줄 세우게 한다. 보상 함수 없이도 어떤 답이 좋은지 자동 판별되는 걸 확인.

핵심 학습: LLM-as-Judge 패턴이 어떻게 동작하는지, 어떤 종류의 작업에서 잘 통하고 어떤 작업에서 흔들리는지.

레벨 3 — 중급 (하루)

tic-tac-toe 예제를 fork해서 자기 보드게임 추가

Connect Four(사목)나 Othello(오델로) 같은 비슷한 보드게임을 새 예제로 추가한다. 시나리오·롤아웃·보상함수 세 가지를 직접 작성해 보면 ART의 API가 한눈에 들어온다.

핵심 학습: Trajectory 데이터 구조, 보상 부여 시점, 학습 하이퍼파라미터(group_size, learning_rate)의 영향.

레벨 4 — 중상급 (3~5일)

자기 도메인의 작은 에이전트 학습

예를 들어 "특정 사내 위키를 검색해서 답하는 챗봇"이나 "코드 리뷰 코멘트를 생성하는 에이전트"를 정의하고 RULER로 학습. RunPod 같은 GPU 클라우드에서 H100 한 장 빌려서 8시간 정도 돌린다.

핵심 학습: 실전 시나리오 설계, 데이터 수집(스크래핑·로그 활용), 비용 예측, 학습 전후 성능 측정 방법.

레벨 5 — 고급 (1~2주)

MCP·RL 따라 하기 — 임의 MCP 서버 마스터링

National Weather Service 같은 외부 MCP 서버를 골라, Qwen 2.5 3B에게 그 서버의 모든 도구를 능숙하게 쓰도록 학습시키는 프로젝트. ART의 examples/mcp-rl이 레퍼런스. "MCP만 정의돼 있으면 어떤 도구든 자동 마스터링"이라는 강력한 패러다임의 진면목을 본다.

핵심 학습: MCP 프로토콜 깊이 이해, 도구 호출 시퀀스 학습, 보상 설계, 작은 모델로도 큰 모델 능가가 가능한 RL의 위력.

9관련 기술 심화 학습 로드맵

ART를 깊이 이해하려면 어떤 길을 걸어야 하나. 8주 플랜.

1주차

LLM 기초 다지기 — Transformer와 자기회귀 생성

Andrej Karpathy의 "Let's build GPT" 영상과 nanoGPT 코드를 따라 GPT 구조를 처음부터 짜본다. 어텐션이 어떻게 동작하고 토큰이 어떻게 생성되는지 손으로 만져 본 사람만이 LLM 학습을 디버그할 수 있다.

2주차

파인튜닝 입문 — SFT와 LoRA

Hugging Face의 TRL 라이브러리로 작은 모델을 자기 데이터셋에 파인튜닝해 본다. SFT(Supervised Fine-Tuning, 지도 미세조정)와 LoRA의 차이를 코드로 체감.

3주차

강화학습 기초 — PPO부터 GRPO까지

OpenAI Spinning Up이나 한국어로는 "팡요랩" 강의로 PPO(Proximal Policy Optimization, 근위 정책 최적화)를 익힌다. 이어서 GRPO 논문(DeepSeek-Math, DeepSeek-R1)을 읽고 PPO에서 무엇이 빠졌는지 확인.

4주차

ART 공식 노트북 전부 돌리기

2048, tic-tac-toe, art-e, mcp-rl, temporal_clue, codenames를 차례로 Colab에서 실행. 각 예제의 시나리오·롤아웃·보상이 어떻게 다른지 직접 비교 노트를 적는다.

5주차

vLLM과 추론 최적화

vLLM 공식 문서를 읽고 PagedAttention, continuous batching, LoRA serving이 어떻게 작동하는지 학습. 로컬에서 vLLM 서버를 띄워 보고 ART 서버가 어떻게 vLLM을 부리는지 코드 추적.

6주차

Agent 아키텍처 — ReAct, Plan-and-Solve, Tool-Use

학습 가능한 모델을 가졌다고 끝이 아니다. 어떤 에이전트 패턴으로 그 모델을 쓸지가 중요. LangGraph·AutoGen·CrewAI의 공식 튜토리얼로 패턴별 차이를 익힌다.

7주차

MCP와 도구 통합

Anthropic의 MCP(Model Context Protocol, 모델 컨텍스트 프로토콜) 사양을 읽고 자기 MCP 서버를 하나 짠다. 이걸 ART의 mcp-rl 예제와 연결해 학습 사이클을 돌려 본다.

8주차

프로덕션 RL — 평가·관측·배포

학습보다 어려운 게 "학습된 모델이 정말 좋아졌는가" 평가다. W&B Weave로 트레이싱을 켜고, 정량 메트릭(성공률, latency)과 정성 메트릭(LLM 평가)을 함께 보는 파이프라인을 구축한다. 마지막으로 W&B Inference나 자체 vLLM으로 배포.

10핵심 키워드 사전

ART 문서·코드에 자주 나오는 용어 한 번에 정리.

키워드 1
Trajectory (트라젝토리, 궤적)
에이전트가 한 시나리오를 푸는 동안 주고받은 모든 메시지의 순서. 시작 시스템 프롬프트부터 마지막 어시스턴트 응답까지. 학습의 기본 단위.
키워드 2
TrajectoryGroup (트라젝토리 그룹)
같은 시나리오에 대해 N번 시도해서 나온 N개의 Trajectory 묶음. RULER가 줄 세우는 단위이고, GRPO가 상대 점수를 계산하는 단위.
키워드 3
Rollout (롤아웃)
한 번의 에이전트 실행. "시나리오 100개를 4 트라젝토리씩 만든다 = 400 롤아웃"처럼 쓴다.
키워드 4
Rubric (루브릭, 평가 기준)
RULER가 LLM 심판에게 줄 평가 기준 문장. "정확성을 우선시한다", "이모지를 쓰면 감점" 같은 자유 텍스트로 작성. 기본 루브릭이 잘 만들어져 있어 대부분 그대로 써도 된다.
키워드 5
AutoRL (오토RL)
ART의 야심 찬 기능. 시나리오 입력만 주면 RULER가 자동으로 학습 데이터를 만들고 GRPO를 돌려 모델을 개선한다. 진정한 "데이터 없는 학습".
키워드 6
MCP·RL
임의의 MCP 서버를 골라 모델에게 그 서버의 모든 도구를 숙달시키는 학습 모드. "API만 던져주면 알아서 마스터하는 모델"의 청사진.
키워드 7
Distillation (디스틸레이션, 증류)
큰 모델의 출력을 작은 모델이 모방하도록 학습시키는 기법. ART의 sft 예제는 Qwen 3 235B의 text-to-SQL 출력을 Qwen 3.6 27B 모델에 증류하는 코드를 보여준다.
키워드 8
SFT (Supervised Fine-Tuning, 지도 미세조정)
정답이 명확한 (입력, 출력) 쌍으로 모델을 학습시키는 전통적 방식. ART는 RL뿐만 아니라 SFT 워밍업 → RL 본학습 같은 콤보도 지원한다.
키워드 9
vLLM의 LoRA hot-swap
vLLM이 추론 중에 LoRA 어댑터를 메모리에 동적으로 갈아끼우는 기능. ART가 학습 사이클을 빠르게 도는 핵심 기술.
키워드 10
W&B Weave / W&B Training
Weights & Biases가 만든 LLM 전용 관측 도구(Weave)와 서버리스 RL 학습 서비스(Training). ART의 공식 관측·학습 파트너.

11참고 링크

더 깊이 파고들 자료들.

공식

ART 본가

• GitHub: github.com/OpenPipe/ART
• 공식 문서: art.openpipe.ai
• Discord 커뮤니티: 레포 README에 초대 링크
• Colab 노트북 모음: github.com/openpipe/art-notebooks

블로그

OpenPipe 블로그 (필독)

• "RULER: Easy Mode for RL Rewards" — RULER 발표 글
• "ART·E: How We Built an Email Research Agent That Beats o3" — 14B로 o3 격파 사례
• "ART Trainer: A New RL Trainer for Agents" — ART 자체 소개
openpipe.ai/blog

논문

GRPO 원전

• DeepSeekMath (2024) — GRPO를 처음 제안한 논문
• DeepSeek-R1 (2025) — GRPO만으로 추론 능력을 끌어낸 결정적 사례
• arXiv에서 "Group Relative Policy Optimization" 검색

생태계

ART가 의지하는 라이브러리들

Unsloth — 빠른 LoRA 학습
vLLM — 고성능 LLM 추론
TRL — HuggingFace RL 도구
torchtune — PyTorch 공식 파인튜닝
SkyPilot — 멀티 클라우드 GPU

실용 가이드

지금 당장 ART를 만져볼 수 있는 4가지 길

  1. 2048 노트북부터 열기. 공식 Colab 링크를 누르고 "Run All"을 실행. W&B Serverless 백엔드로 GRPO 학습이 도는 걸 본다. 첫 진입 장벽이 가장 낮다.
  2. RULER만 떼서 쓰기. pip install openpipe-artfrom art.rewards import ruler_score_group으로 본인이 가진 LLM 답변 4~5개를 줄 세우는 코드를 짜본다. 학습 없이도 "LLM 심판" 패턴이 얼마나 쓸 만한지 즉시 체감.
  3. art-e 예제 코드 정독. examples/art-e/ 안의 시나리오 정의·롤아웃·보상 코드를 한 줄씩 읽으면서 자기 도메인이라면 어떻게 바꿀지 머릿속에 그려본다. 비용 들이지 않고 RL 시스템 설계 감각을 키우는 가장 빠른 방법.
  4. GRPO 논문 한 번 통독. DeepSeek-R1 논문은 30분이면 핵심을 잡을 수 있다. ART의 코드와 논문이 어떻게 1:1 대응되는지 보면 RL 알고리즘이 더 이상 신비롭지 않다.
원문 · OpenPipe ART GitHub Repository · github.com/OpenPipe/ART · 공식 문서 art.openpipe.ai · TrendShift 2026.05.23 #17위