RL 알고리즘은 고르지 않는데, SIA 피드백 루프가 대신한다

발행: (2026년 6월 18일 PM 07:37 GMT+9)
9 분 소요
원문: Dev.to

출처: Dev.to

SIA(Self Improving AI)는 Hexo Labs가 2026년 5월 26일에 출시한, 에이전트의 스캐폴드와 모델 가중치를 단일 반복 루프 안에서 동시에 진화시키는 최초의 오픈소스 프레임워크입니다. MIT 라이선스를 받은 코드는 github.com/hexo-ai/sia 에 있습니다. 이 튜토리얼은 피드백 루프 로직, 사전 요구 사항, 그리고 실행 가능한 5세대 LawBench 실험을 안내합니다.

피드백 루프가 PPO, GRPO, 또는 EAW를 결정한다

SIA의 Feedback-Agent는 각 생성 단계에서 전체 실행 트래jectory(트레일), 보상 메트릭, 작업 설명을 읽고, 다음 단계가 스캐폴드 수정, LoRA 가중치 업데이트, 아니면 둘 다인지 판단하고 — 현재 과제의 보상 형태에 따라 자동으로 RL 알고리즘을 선택합니다. SIA 이전에는 하니스 업데이트 시스템(Darwin Gödel Machine, Hyperagents)과 테스트 시간 훈련 시스템(TTRL, Discover-TTT)이 각각 별도 연구 방향으로 존재했습니다. SIA는 SIA 논문 (arXiv:2605.27276)를 기준으로, 두 가지 레버를 단일 자기 개선 루프에 결합한 최초의 프레임워크입니다.

빠른 답변: SIA (arXiv:2605.27276, MIT 라이선스, 2026년 5월) 은 단일 루프 내에서 에이전트 스캐폴드와 LoRA 가중치를 공동 진화시킵니다. sia --task lawbench --max_gen 5 를 실행하면 피드백-에이전트가 보상 형태에 따라 PPO+GAE, GRPO, 또는 Entropic Advantage Weighting 중 하나를 선택합니다 — RL 알고리즘 선택이 필요 없습니다. LawBench에서 결합된 하니스+가중치 변수는 70.1% 정확도를 기록했으며, 이전 SOTA 대비 25.1% 포인트 상승했습니다.

세 가지 에이전트 루프: Meta-Agent는 작업 설명과 레퍼런스 구현에서 초기 스캐폴드를 생성합니다; Task-Specific Agent는 샌드박스 내에서 eval 데이터셋에 대해 모든 단계를 로깅하면서 트래jectory로 실행됩니다; Feedback-Agent(Claude Sonnet 4.6)는 소스 코드, 트래jectory, 메트릭, 샘플 작업 설명을 받고 improvement.md와 다음 세대 에이전트를 출력합니다.

RL 알고리즘 선택은 보상 형태에 의해 구동됩니다:

PPO+GAE — 단계별 밀도 높은 보상, 훈련 안정성은 핵심 제약 사항 (LawBench)

GRPO — 저비용 롤아웃, 에피소드 종료 검증 (RNA 덴오이징)

Entropic Advantage Weighting (EAW) — 오른쪽 편향된 보상 및 희귀한 정답 솔루션 (GPU 커널)

  • 사용 가능: REINFORCE+KL-to-base, DPO, Best-of-N 행동 복제

SIA 벤치마크 결과, 2026년 5월

Task
Baseline
Prior SOTA
SIA-H (harness only)
SIA-W+H (harness + weights)

LawBench (191-클래스 정확도)
13.5%
45.0%
50.0%

70.1% (+25.1 pp over SOTA)

TriMul CUDA 커널 (μs, 낮을수록 좋음) ~13,500 μs 1,161 μs 1,017 μs 1,017 μs (−12.4% vs SOTA)

MAGIC scRNA-seq 덴오이징 (mse_norm, 높을수록 좋음) 0.048 0.240 0.241 0.289 (+20.4% vs SOTA)

하니스 변경과 가중치 업데이트는 효과 공간에서 겹치지 않습니다: 하니스 반복은 외부 인프라 개선 (더 나은 파싱, 도구, 재시도 로직)을 제공하고, 가중치 업데이트는 프롬프트 엔지니어링만으로는 도달할 수 없는 내부화된 도메인 지식을 인코딩합니다.” — Hexo Labs 연구팀, SIA: Self Improving AI (arXiv:2605.27276v2)

필요한 것: venv, 인증 정보, Modal

Claude 백엔드는 완전히 CPU에서 실행되며 로컬 GPU가 필요 없습니다. 패키지를 설치하고 API 키를 내보내면 네 번의 번들 작업이 즉시 작동합니다. LoRA 가중치 업데이트(rank 32, 학습률 4×10⁻⁵, gpt-oss-120b에 적용)를 Modal H100s 온디맨드로 실행합니다. Modal을 완전히 건너뛰면 루프는 하니스 전용 반복을 수행하며 — 저렴하고 초기 세대에서 의미 있는 평가 향상을 볼 수 있습니다.

Claude 백엔드 (모든 번들 작업, GPU 필요 없음):

pip install 'sia-agent[claude]'
export ANTHROPIC_API_KEY="sk-ant-..."

Enter fullscreen mode
Exit fullscreen mode

OpenHands 백엔드 (다중 제공업체 작업 실행):

pip install 'sia-agent[openhands]'
export ANTHROPIC_API_KEY="..."
export GEMINI_API_KEY="..."
export OPENAI_API_KEY="..."

Enter fullscreen mode
Exit fullscreen mode

요구 사항 한눈에:

Anthropic API 키 — 두 백엔드 모두에서 필요하며 하니스와 Feedback-Agent를 실행합니다
Gemini + OpenAI 키--backend openhands 옵션만 필요합니다
Modal 계정 (H100 크레딧) — LoRA 가중치 업데이트에만 필요하며, 하니스 전용 실행은 GPU 시간이 필요하지 않습니다

LawBench 생성 실행 단계별 가이드:

세 가지 명령만으로 깨끗한 환경에서 번들 LawBench 작업에 대한 5세대 자기 개선 루프까지 바로 이동할 수 있습니다.

가상 환경 생성 및 활성화:

   python3  -m venv  .venv  && source  .venv/bin/activate

Enter fullscreen mode
Exit fullscreen mode

Claude 백엔드로 SIA 설치:

   pip install 'sia-agent[claude]'

Enter fullscreen mode
Exit fullscreen mode

LawBench에서 5세대 실행:

   sia --task lawbench --max_gen 5 --run_id 1

Enter fullscreen mode
Exit fullscreen mode

각 생성 단계는 runs/run_1/gen_N/ 에 출력을 씁니다:

target_agent.py — 이 세대에서 진화된 스캐폴드
agent_execution.json — 전체 실행 로그 및 단계별 트래jectory
improvement.md — 생성 2 이후부터 다음 변경에 대한 Feedback-Agent의 근거 (appears from generation 2 onward)

모든 번들 작업은 --task 옵션으로 gpqa, lawbench, longcot-chess, spaceship-titanic 중 하나를 실행합니다. 주요 플래그를 확인하세요:

--max_gen — 자기 개선 생성 횟수(기본값: 3)

  • --backend claude|openhands
    --meta_model — Feedback/ Meta 에이전트용 모델 (기본값: haiku)
    --task_model — 작업 전용 에이전트용 모델 (기본값: claude-haiku-4-5-20251001)

아래 코드는 핵심 메커니즘을 보여주는 실행 가능한 예시이다 — 각 algoritmo에 대한 실시간 보상 신호를 유지하고, 한 개가 더 좋은 신호를 축적하면 전환하는 피드백 루프. 이 코드는 정상 종료( exit 0 )를 달성했습니다:

import random
def epsilon_greedy(scores, pulls, t):
    return max(scores, key=scores.get) if t % 3 else random.randrange(3)
def ucb(scores, pulls, t):
    return max(scores, key=lambda a: scores[a] + (2 * (t + 1) / (pulls[a] + 1)) ** 0.5)
algorithms = {"epsilon_greedy": epsilon_greedy, "ucb": ucb}
scores = {0: 0.0, 1: 0.0, 2: 0.0}
pulls = {0: 0, 1: 0, 2: 0}
feedback = {name: 0.0 for name in algorithms}
random.seed(7)
for t in range(12):
     chosen_algo = max(feedback, key=feedback.get) if t else "epsilon_greedy"
    action = algorithms[chosen_algo](scores, pulls, t)
    reward = [0.15, 0.55, 0.8][action] + random.uniform(-0.08, 0.08)
    pulls[action] += 1
    scores[action] += (reward - scores[action]) / pulls[action]
    feedback[chosen_algo] = 0.7 * feedback[chosen_algo] + 0.3 * reward

    if t == 5:
        feedback["ucb"] += 0.5   # new feedback changes the controller's choice

    print(f"step={t:02d} sia_selected={chosen_algo:15s} action={action} reward={reward:.2f}")

print("Takeaway: you provide feedback; SIA's loop chooses the RL algorithm.")

Enter fullscreen mode
Exit fullscreen mode

Watch step 07: a feedback boost applied to ucb at step 5 causes the controller to switch algorithms at the next decision point. SIA’ s Feedback- Agent applies the same logic at generation granularity — accumulated reward signals reshape algorithm selection each generation, not just each step.

Enter fullscreen mode
Exit fullscreen mode

0 조회
Back to Blog

관련 글

더 보기 »

코드 리뷰가 잘못됐다

!Cover image for Code Review Gone Wronghttps://media2.dev.to/dynamic/image/width=1000,height=420,fit=cover,gravity=auto,format=auto/https%3A%2F%2Flavkesh.com%2F...