9.2k 스타. Qwen·Llama·GPT-OSS 같은 오픈 LLM을 GRPO로 훈련해서, 메일 검색·2048 게임·MCP 서버 마스터까지 "경험으로 배우는" 다중 스텝 에이전트를 만드는 오픈파이프(OpenPipe)의 오픈소스 프레임워크.
왜 이게 LLM 에이전트한테 필요할까.
요즘 ChatGPT나 Claude 같은 대규모 언어모델(LLM)은 텍스트를 잘 만든다. 그런데 여러 단계를 거쳐 도구를 쓰고 의사결정을 하는 "에이전트(agent)" 역할을 시키면 — 예를 들어 "이메일 100통을 뒤져서 약속 일정을 정리해 줘" 같은 — 갑자기 헛소리를 하거나, 같은 검색을 반복하거나, 중간에 포기한다.
이 문제를 해결하는 가장 강력한 방법이 강화학습(Reinforcement Learning, RL)이다. AI가 직접 행동해 보고, 결과가 좋으면 보상을 받고, 나쁘면 벌점을 받으면서 행동 패턴을 다듬는 학습 방식.
학원에서 같은 시험을 친 4명의 학생을 비교한다고 치자. 절대 점수(100점 만점)를 매기는 건 어렵지만 "이 넷 중 누가 가장 잘 풀었나"를 줄 세우는 건 훨씬 쉽다. GRPO는 정확히 그 직관을 학습 알고리즘으로 만들었다.
이 프로젝트의 본질.
ART(Agent Reinforcement Trainer)는 LLM 에이전트가 자기 경험으로부터 배워서 점점 더 잘하게 만드는 도구다. 라벨링된 데이터셋도, 박사 학위도, 복잡한 보상함수도 필요 없다. 에이전트가 어떤 시나리오를 해결해야 하는지만 정의하면 ART가 GRPO 훈련 루프를 자동으로 돌려준다.
핵심 발명품은 RULER: 보상 함수를 직접 짜는 대신, GPT-4o 같은 모델에게 "이 네 개의 시도 중 누가 가장 잘했나" 줄 세우게 하는 LLM 심판 시스템이다. 손으로 짠 보상함수와 비슷하거나 더 나은 성능을 내면서 개발 시간은 2~3배 단축된다.
2026년 5월, GitHub에서 매일 수백 개의 새 별을 받는 이유.
2025~2026년의 가장 큰 AI 트렌드는 "에이전트(agent)"다. 그런데 막상 에이전트를 만들어 보면 신뢰성이 무너진다. 같은 질문에 답이 매번 다르고, 도구 호출을 빼먹고, 핵심 단계에서 길을 잃는다. 프로덕션에 올리기엔 너무 불안정한 상태가 대부분이다.
해법으로 두 갈래가 나왔다. 한쪽은 프롬프트 엔지니어링·시스템 디자인(예: LangGraph, AutoGen)으로 에이전트의 흐름을 조이는 방법. 다른 한쪽은 모델 자체를 학습시키는 방법. 후자가 더 근본적이지만 GPU·데이터·전문성이 필요해 진입 장벽이 높았다. ART는 그 장벽을 낮춘다.
ART는 클라이언트·서버 구조다. 당신의 에이전트 코드(openai.chat.completions.create(...) 호출)는 그대로 두고, OpenAI 호환 클라이언트를 ART 클라이언트로 바꾸는 것만으로 동작한다. 학습 서버는 별도 GPU 머신에서 돌아간다.
RULER 덕분에 정답 데이터를 만들 필요가 없다. 시나리오를 정의하고 "이 결과가 좋아 보이는지" LLM 심판에게 맡기면, 그 상대 점수가 그대로 GRPO의 보상이 된다. 보상함수를 코딩으로 작성하는 전통적 RL의 가장 큰 진입장벽이 사라진다.
SkyPilot이라는 클라우드 자원 자동화 도구가 통합돼 있어, art CLI 한 줄로 GCP·AWS·Lambda·RunPod 등 GPU 인스턴스를 임시로 띄워 학습한 뒤 정리한다. 본인 GPU가 없어도 시작할 수 있다.
ART·E라는 메일 검색 에이전트는 Qwen 2.5 14B를 ART로 훈련해 OpenAI o3보다 좋은 성능을 냈다. 14B 모델로 o3을 이긴다는 건 작은 오픈소스 모델도 강화학습을 잘하면 클로즈드 모델을 따라잡을 수 있다는 강력한 증명이다.
RL이 만능은 아니다. 시나리오가 명확하지 않거나, "잘했다/못했다"를 LLM도 판단하기 어려운 도메인에서는 RULER도 헤맨다. 또 학습에는 여전히 시간·GPU 비용이 든다(시간당 수십 달러). 프롬프트 엔지니어링으로 80% 잡힐 작업을 굳이 RL로 풀 필요는 없다.
(1) 같은 종류의 작업을 반복해서 잘하게 만들고 싶을 때 (메일 검색, 특정 게임, 특정 MCP 서버 활용), (2) QA에서 발견한 구체적 실패 패턴을 고치고 싶을 때, (3) 음성 에이전트처럼 스크립트를 무조건 지키게 하고 싶을 때. ART 공식 문서에서 추천하는 시나리오들이다.
레포 안에 어떤 도구들이 켜켜이 쌓여 있는지.
ART의 의존성을 펼쳐 보면 현대 LLM 훈련 생태계의 거의 모든 핵심 도구가 한 자리에 모여 있다. 단순히 "Python 라이브러리 하나"가 아니라 통합 플랫폼에 가깝다.
Unsloth는 LoRA 기반 미세조정을 2~5배 가속하는 라이브러리. TRL(Transformers Reinforcement Learning)은 HuggingFace의 RL 학습 도구. Transformers 5.2는 모델 아키텍처 표준. 셋이 합쳐져 GRPO 알고리즘을 실제로 돌린다.
학습 도중 모델의 새 체크포인트를 즉시 로드해서 다음 라운드의 롤아웃(rollout)에 사용하는 추론 서버. PagedAttention이라는 메모리 효율 기법으로 LLM을 GPU에서 매우 빠르게 돌린다.
각각 PyTorch 본체, 양자화(quantization) 최적화, 4/8비트 메모리 절약, 추론 커널 최적화 라이브러리. 24GB 같은 작은 GPU에서도 14B 모델을 학습할 수 있게 해 주는 기술 묶음.
NVIDIA의 초대규모 모델 분산 학습 스택. 30B 이상 모델을 여러 GPU에 쪼개서 학습할 때 활성화한다. 일반 사용자는 건드릴 일 없다.
skypilot-config.yaml)을 기본 제공해서 클라우드 자원 신청·종료를 자동화한다.langgraph로 분리.tinker 의존성 그룹.클라이언트-서버 모델과 GRPO 훈련 루프.
ART의 가장 중요한 설계 결정은 "학습 서버"와 "에이전트 코드"를 완전히 분리한 것이다. 기존 RL 프레임워크는 학습 코드와 환경(environment) 코드가 한 프로세스에 묶여 있어 진입 장벽이 높았는데, ART는 둘을 클라이언트·서버로 쪼개서 일반 개발자가 GPU 코드를 한 줄도 안 보고도 RL을 돌릴 수 있게 만들었다.
한 번의 학습 사이클(iteration)은 다음 흐름으로 돈다:
당신의 에이전트 코드가 N개의 시나리오를 ART 클라이언트로 동시에 실행한다. 매 LLM 호출은 ART 서버의 vLLM에 라우팅되고, 서버는 현재 학습 중인 LoRA를 적용해 응답을 돌려준다. 시스템·유저·어시스턴트 메시지가 차곡차곡 Trajectory라는 객체에 저장된다.
롤아웃이 끝나면 각 Trajectory에 reward(0~1 사이의 점수)를 붙인다. 두 가지 방법:
(a) 손으로 짠 보상함수: 게임 점수, 정답 일치 여부 등 명확한 메트릭이 있을 때.
(b) RULER: 같은 시나리오에 대해 4~8개 트라젝토리를 생성하고, LLM 심판에게 "이 중 누가 잘했는지" 줄 세우게 한다. 절대 점수보다 상대 순위가 더 신뢰성 있다는 GRPO의 직관과 정확히 맞물린다.
점수가 매겨진 Trajectory들을 그룹으로 묶어 ART 서버로 보낸다. 서버는 GRPO 알고리즘으로 LoRA 가중치를 업데이트한다. 학습이 끝나면 새 LoRA를 디스크에 저장하고 vLLM에 즉시 로드. 추론이 다시 열리고 단계 1로 돌아간다.
축구팀 훈련을 떠올려 보자. 매일 같은 연습 경기를 4번 한다(롤아웃). 각 경기를 비디오로 찍고 코치가 "이 경기는 7점, 저 경기는 3점" 평가한다(보상). 그 평가를 바탕으로 다음날 전술을 살짝 수정한다(LoRA 업데이트). 다시 4번 연습. 이 사이클을 100번 돌리면 팀이 강해진다 — 정확히 ART가 하는 일이다.
14B 모델을 통째로 저장·로드하면 한 사이클에 수 분이 걸린다. ART는 LoRA(Low-Rank Adaptation, 모델의 일부 행렬만 작게 추가 학습하는 기법)만 갈아끼우기 때문에 사이클이 초 단위로 짧아진다.
전통 RL은 (상태, 행동, 보상) 튜플을 다룬다. LLM 에이전트는 한 번의 작업이 수십 턴의 대화이므로, ART는 대화 전체를 하나의 Trajectory로 본다. 보상도 마지막에 한 번만 주면 GRPO가 알아서 모든 토큰에 영향을 미친다.
에이전트 코드 입장에서는 그냥 OpenAI API를 호출하는 것처럼 보인다. "학습 중인지/추론만 하는지" 신경 쓸 필요 없다. 이 추상화 덕분에 ART를 기존 프로젝트에 끼워 넣는 비용이 거의 0이다.
레포 폴더를 한 줄씩 살펴본다.
RULER의 실제 코드. ruler_score_group()이 어떻게 LLM에게 프롬프트를 던지고, 어떻게 JSON 응답을 파싱해서 점수를 만드는지 200줄 정도면 다 읽힌다. 자신만의 LLM 심판을 만들고 싶을 때 그대로 참고할 만한 패턴.
Qwen 2.5 14B를 ART로 학습해 OpenAI o3보다 좋은 메일 검색 에이전트를 만든 실제 코드. 시나리오 정의 → 롤아웃 함수 → 보상 함수 → 학습 루프까지 한 패키지 안에 다 있다. ART를 자기 프로젝트에 도입할 때 가장 좋은 출발점.
이 레포에서 어떤 기술을 어떤 깊이로 배울 수 있는가.
강화학습 이론을 깊이 모르고도 "왜 그룹 안에서 줄을 세우면 학습이 되는가"를 ART 코드와 docs를 통해 익힐 수 있다. DeepSeek R1이 이 알고리즘으로 추론 능력을 폭발시킨 사건 이후 GRPO는 사실상 LLM RL의 표준이 됐다.
실습 아이디어: tic_tac_toe 예제부터 시작해서 보상이 어떻게 LoRA에 반영되는지 W&B 로그를 보며 추적해 보자.
전체 모델 가중치를 업데이트하지 않고 작은 추가 행렬만 학습하는 LoRA(Low-Rank Adaptation)는 LLM 시대의 가장 중요한 기법 중 하나. ART는 LoRA 학습·저장·로드 사이클을 자동화해 주므로 개념을 직접 코드로 체험할 수 있다.
실습 아이디어: 같은 시나리오를 LoRA rank를 4 → 16 → 64로 바꿔 학습해서 성능 차이를 비교.
"LLM에게 결과를 평가시킨다"는 패턴은 자동 평가·합성 데이터 생성·RAG 품질 검증 등 다양한 곳에 쓰인다. RULER 구현체를 읽으면 프롬프트 설계, JSON 강제, 캐시 처리, prefix 중복 제거 같은 실전 노하우를 한 번에 익힐 수 있다.
실습 아이디어: RULER의 기본 루브릭을 자기 도메인(예: 코드 리뷰, 카피라이팅)에 맞게 커스터마이즈해 보기.
운영 중인 추론 서버에 새 어댑터를 무중단으로 교체하는 기법. ART 서버 코드는 vLLM의 LoRA API를 어떻게 호출하는지 좋은 예제다.
실습 아이디어: vLLM을 따로 띄우고 ART와 똑같이 LoRA 두 개를 번갈아 적용해 응답 차이를 관찰.
YAML 한 장으로 "어느 클라우드든 가장 싼 H100을 빌려 30분 쓰고 끄기"가 가능해진다. ML 운영의 미래로 거론되는 기술.
실습 아이디어: SkyPilot 공식 튜토리얼로 간단한 Python 스크립트를 클라우드에서 돌려 보고, ART의 skypilot-config.yaml을 비교 분석.
ART의 pyproject.toml은 [tool.uv] 섹션에 GPU 의존성을 override하는 기법, 빌드 격리(no-build-isolation-package) 등 uv의 고급 기능을 잘 보여주는 실전 예시다.
실습 아이디어: 자기 프로젝트의 requirements.txt를 uv로 마이그레이션해 보고 락 파일 생성 속도 차이 체감.
LangGraph로 짠 그래프형 에이전트도 ART로 학습할 수 있다. 워크플로우 에이전트와 학습 가능한 에이전트의 두 세계가 만나는 흥미로운 지점.
실습 아이디어: LangGraph로 짠 간단한 ReAct 에이전트를 ART에 연결해 보기.
실제로 돌리려면 뭐가 필요한가.
ART는 "클라이언트"와 "서버" 요구사항이 매우 다르다. 클라이언트는 노트북, 서버는 GPU 머신.
Python ≥ 3.12, 메모리 8GB 이상이면 충분. 에이전트 코드가 도는 환경이라 GPU가 필요 없다. pip install openpipe-art로 끝.
3B~7B 모델 학습용. 2048, tic-tac-toe, codenames 같은 작은 예제는 이 정도면 돌아간다. Google Colab Pro의 A100 40GB도 OK — 실제로 공식 노트북이 Colab에서 동작하도록 설계됐다.
14B 모델(ART·E 사이즈) 학습을 합리적인 시간에 끝내려면 필요. ART·E의 메일 검색 학습은 H100 1장에서 약 6시간 걸린 것으로 보고됨.
30B~70B 모델은 GPU 4~8장에 텐서 병렬화가 필요하다. ART의 megatron 의존성 그룹이 이 케이스를 지원하지만 설정이 복잡해 일반 사용자에겐 비추천.
본인 GPU 안 사고도 OpenPipe의 관리형 인프라에서 학습. 시간당 토큰 단위 과금. 인프라 관리 0, 즉시 W&B Inference로 배포 가능. "40% 더 싸고 28% 더 빠르다"는 공식 마케팅 문구의 의미.
RunPod·Lambda·CoreWeave 등 GPU 전문 클라우드에서 H100을 시간당 2~3달러에 쓸 수 있다. SkyPilot이 가장 싼 곳을 자동으로 골라준다.
Unsloth가 NVIDIA CUDA를 요구하므로 Mac에서는 학습 서버를 돌릴 수 없다. 추론(클라이언트)만 가능. Apple Silicon 사용자는 Colab이나 클라우드로 우회해야 한다.
난이도별 5단계.
공식 노트북 링크를 열고 "Run All"을 누르면 W&B Serverless 백엔드로 Qwen 3.6 27B가 2048을 학습하는 과정을 본다. 코드 한 줄도 안 짜고 GRPO 루프가 실제로 도는 걸 체험하는 게 목적.
핵심 학습: Trajectory가 어떻게 생기고, reward가 어떻게 매겨지는지 W&B 대시보드로 시각화해서 본다.
학습 없이 RULER만 떼서 쓴다. 자기가 가진 시스템 프롬프트로 GPT 4o-mini 답변 5개를 만들고, RULER로 줄 세우게 한다. 보상 함수 없이도 어떤 답이 좋은지 자동 판별되는 걸 확인.
핵심 학습: LLM-as-Judge 패턴이 어떻게 동작하는지, 어떤 종류의 작업에서 잘 통하고 어떤 작업에서 흔들리는지.
Connect Four(사목)나 Othello(오델로) 같은 비슷한 보드게임을 새 예제로 추가한다. 시나리오·롤아웃·보상함수 세 가지를 직접 작성해 보면 ART의 API가 한눈에 들어온다.
핵심 학습: Trajectory 데이터 구조, 보상 부여 시점, 학습 하이퍼파라미터(group_size, learning_rate)의 영향.
예를 들어 "특정 사내 위키를 검색해서 답하는 챗봇"이나 "코드 리뷰 코멘트를 생성하는 에이전트"를 정의하고 RULER로 학습. RunPod 같은 GPU 클라우드에서 H100 한 장 빌려서 8시간 정도 돌린다.
핵심 학습: 실전 시나리오 설계, 데이터 수집(스크래핑·로그 활용), 비용 예측, 학습 전후 성능 측정 방법.
National Weather Service 같은 외부 MCP 서버를 골라, Qwen 2.5 3B에게 그 서버의 모든 도구를 능숙하게 쓰도록 학습시키는 프로젝트. ART의 examples/mcp-rl이 레퍼런스. "MCP만 정의돼 있으면 어떤 도구든 자동 마스터링"이라는 강력한 패러다임의 진면목을 본다.
핵심 학습: MCP 프로토콜 깊이 이해, 도구 호출 시퀀스 학습, 보상 설계, 작은 모델로도 큰 모델 능가가 가능한 RL의 위력.
ART를 깊이 이해하려면 어떤 길을 걸어야 하나. 8주 플랜.
Andrej Karpathy의 "Let's build GPT" 영상과 nanoGPT 코드를 따라 GPT 구조를 처음부터 짜본다. 어텐션이 어떻게 동작하고 토큰이 어떻게 생성되는지 손으로 만져 본 사람만이 LLM 학습을 디버그할 수 있다.
Hugging Face의 TRL 라이브러리로 작은 모델을 자기 데이터셋에 파인튜닝해 본다. SFT(Supervised Fine-Tuning, 지도 미세조정)와 LoRA의 차이를 코드로 체감.
OpenAI Spinning Up이나 한국어로는 "팡요랩" 강의로 PPO(Proximal Policy Optimization, 근위 정책 최적화)를 익힌다. 이어서 GRPO 논문(DeepSeek-Math, DeepSeek-R1)을 읽고 PPO에서 무엇이 빠졌는지 확인.
2048, tic-tac-toe, art-e, mcp-rl, temporal_clue, codenames를 차례로 Colab에서 실행. 각 예제의 시나리오·롤아웃·보상이 어떻게 다른지 직접 비교 노트를 적는다.
vLLM 공식 문서를 읽고 PagedAttention, continuous batching, LoRA serving이 어떻게 작동하는지 학습. 로컬에서 vLLM 서버를 띄워 보고 ART 서버가 어떻게 vLLM을 부리는지 코드 추적.
학습 가능한 모델을 가졌다고 끝이 아니다. 어떤 에이전트 패턴으로 그 모델을 쓸지가 중요. LangGraph·AutoGen·CrewAI의 공식 튜토리얼로 패턴별 차이를 익힌다.
Anthropic의 MCP(Model Context Protocol, 모델 컨텍스트 프로토콜) 사양을 읽고 자기 MCP 서버를 하나 짠다. 이걸 ART의 mcp-rl 예제와 연결해 학습 사이클을 돌려 본다.
학습보다 어려운 게 "학습된 모델이 정말 좋아졌는가" 평가다. W&B Weave로 트레이싱을 켜고, 정량 메트릭(성공률, latency)과 정성 메트릭(LLM 평가)을 함께 보는 파이프라인을 구축한다. 마지막으로 W&B Inference나 자체 vLLM으로 배포.
ART 문서·코드에 자주 나오는 용어 한 번에 정리.
더 깊이 파고들 자료들.
• GitHub: github.com/OpenPipe/ART
• 공식 문서: art.openpipe.ai
• Discord 커뮤니티: 레포 README에 초대 링크
• Colab 노트북 모음: github.com/openpipe/art-notebooks
• "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
• DeepSeekMath (2024) — GRPO를 처음 제안한 논문
• DeepSeek-R1 (2025) — GRPO만으로 추론 능력을 끌어낸 결정적 사례
• arXiv에서 "Group Relative Policy Optimization" 검색
• Unsloth — 빠른 LoRA 학습
• vLLM — 고성능 LLM 추론
• TRL — HuggingFace RL 도구
• torchtune — PyTorch 공식 파인튜닝
• SkyPilot — 멀티 클라우드 GPU
pip install openpipe-art 후 from art.rewards import ruler_score_group으로 본인이 가진 LLM 답변 4~5개를 줄 세우는 코드를 짜본다. 학습 없이도 "LLM 심판" 패턴이 얼마나 쓸 만한지 즉시 체감.