나는 8GB VRAM으로 4,882개의 Self‑Healing AI 에이전트를 구축했다 — 여기 아키텍처

발행: (2026년 2월 21일 오전 10:21 GMT+9)
8 분 소요
원문: Dev.to

Source: Dev.to

번역할 텍스트가 제공되지 않았습니다. 번역이 필요한 본문을 알려주시면 한국어로 번역해 드리겠습니다.

대부분의 AI 에이전트는 고장 난다. 오류가 발생하면 멈추고, 인간을 기다린다. 내 에이전트는 그렇지 않다.

나는 4,882개의 자율 AI 에이전트 시스템을 구축했다. 이 에이전트들은 실패를 감지하고, 복구하며, 계속해서 작동한다 — 모두 8 GB VRAM을 가진 단일 머신에서 실행된다. 클라우드도, API 호출도, 감독도 없다.

블라인드 평가에서, 내 토론 에이전트는 96.5 % 승률(208번 중 201번 승리)과 4.68/5.0 평균 심사 점수를 기록했다. 나는 또한 $100K MedGemma Impact Challenge on Kaggle에 참여하고 있다.

다음은 내가 정확히 어떻게 구축했는지에 대한 내용이다.

문제: AI 에이전트는 취약합니다

대부분의 LLM 기반 에이전트는 다음과 같은 간단한 흐름을 따릅니다:

receive task → call model → return result

무언가 잘못될 때 — 환각, 타임아웃, OOM 오류 — 에이전트는 충돌하거나 쓰레기를 출력합니다.

표준적인 해결책? 모든 코드를 try‑catch 로 감싸고 운에 맡기는 것입니다. 이는 임시방편일 뿐, 설계가 아닙니다.

저는 자신의 실패를 감지하고, 근본 원인을 진단하며, 자동으로 복구할 수 있는 에이전트가 필요했습니다 — 대규모로, 일반 소비자용 하드웨어에서도 동작하도록.

아키텍처: 자체 치유 루프

모든 에이전트는 연속적인 자체 치유 루프 안에서 실행됩니다:

┌─────────────┐
│   EXECUTE   │ ← Agent performs its task
└──────┬──────┘

┌──────▼──────┐
│   MONITOR   │ ← Health scoring in real‑time
└──────┬──────┘

┌──────▼──────┐
│   RECOVER   │ ← Cascading recovery strategies
└──────┬──────┘

       └──────→ Back to EXECUTE

이는 단순한 재시도 루프가 아니라; 각 단계가 자체적인 로직을 가진 독립적인 서브시스템입니다.

1. 에이전트 상태 머신

각 에이전트는 명시적인 상태를 유지합니다:

from enum import Enum

class AgentState(Enum):
    IDLE = "idle"
    RUNNING = "running"
    DEGRADED = "degraded"      # Functional but impaired
    RECOVERING = "recovering"  # Actively self‑repairing
    FAILED = "failed"          # Requires external intervention

핵심 인사이트: DEGRADED ≠ FAILED. 낮은 품질의 출력을 생성하는 에이전트도 여전히 유용합니다—다만 가벼운 작업량이나 회복 사이클이 필요할 뿐입니다. 이 단일 구분 덕분에 **73 %**의 오탐지 실패를 제거할 수 있었습니다.

2. 건강 점수

각 에이전트는 매 실행 사이클 후 복합 건강 점수를 계산합니다:

def compute_health(agent_output, context):
    scores = {
        "coherence":   check_coherence(agent_output),
        "completeness": check_completeness(agent_output, context),
        "latency":     check_latency(context.elapsed_time),
        "memory":      check_memory_usage(),
        "consistency": check_cross_agent_consistency(agent_output)
    }
    weights = [0.25, 0.20, 0.15, 0.25, 0.15]
    return sum(s * w for s, w in zip(scores.values(), weights))
if health_score < THRESHOLD:
    # Choose recovery strategy based on severity
    strategy = select_strategy(health_score)
    if strategy:
        return execute_strategy(strategy, agent)
    return agent.transition(AgentState.FAILED)

대부분의 회복은 첫 두 단계에서 해결되며, **2.3 %**의 에이전트만이 FAILED 상태에 도달합니다.

8 GB VRAM에서 4,882개의 에이전트 실행

8 GB에 4,882개의 모델을 모두 로드할 수는 없습니다. 요령은 동적 에이전트 풀링—한 번에 약 12개의 에이전트만 GPU에 상주합니다:

from queue import PriorityQueue

class AgentPool:
    def __init__(self, max_concurrent=12, vram_budget_mb=7168):
        self.active   = PriorityQueue()   # Priority = urgency
        self.dormant  = {}                # Serialized to CPU/disk
        self.vram_budget = vram_budget_mb

    def activate(self, agent_id, priority):
        while self.current_vram() > self.vram_budget * 0.85:
            _, evicted = self.active.get()
            self.dormant[evicted.id] = evicted.serialize()
            evicted.release_gpu()

        agent = self.dormant.pop(agent_id).deserialize()
        self.active.put((priority, agent))
        return agent

4‑bit 양자화와 유사한 컨텍스트 윈도우를 가진 에이전트 간 KV‑캐시 공유를 결합하면 평균 활성화 지연 시간은 약 850 ms입니다.

토론 시스템: 96.5 % 승률

자기‑치유 아키텍처는 에이전트들이 상반된 입장을 논쟁하고, 심판 에이전트가 점수를 매기는 다중‑에이전트 토론 시스템을 구동합니다.

지표점수
승률96.5 % (201/208)
평균 심판 점수4.68/5.0
전체 품질93.6 %
접근성5.0/5.0
비유 품질5.0/5.0
실행 가능성4.6/5.0
안전 점수4.6/5.0
의료 정확도4.4/5.0
완전성4.5/5.0

이 수치는 독립적인 LLM 심판이 구조화된 루브릭을 사용해 블라인드 평가한 결과이며, 자체 보고가 아닙니다.

지금 만들고 있는 것: MedGemma 건강 교육

이 아키텍처를 CellRepair Health Educator를 통해 건강 교육에 적용하고 있습니다 — 의료 주제를 쉬운 언어로 설명하는 MedGemma 기반 AI입니다.

🏆 **Kaggle: MedGemma Impact Challenge**  
https://www.kaggle.com/competitions/medgemma-impact-challenge

🌐 **cellrepair.ai** – https://cellrepair.ai/

> **Currently competing in the $100K MedGemma Impact Challenge**  
> **Deadline:** February 25, 2026

핵심 요점

  • DEGRADED ≠ FAILED – 대부분의 “실패”는 조기에 감지하면 복구 가능하다.
  • Cascading recovery beats retry loops – 먼저 저비용 해결책을 시도하고, 필요할 때만 확대한다.
  • You don’t need a GPU cluster – 스마트 풀링 + 양자화를 활용하면 소비자용 하드웨어에서도 수천 개의 에이전트를 실행할 수 있다.
  • Health scoring is everything – 에이전트 상태를 측정하지 못하면 해결할 수 없다.

AI 에이전트를 구축하면서 겪은 가장 큰 신뢰성 문제는 무엇인가요? 댓글을 남겨 주세요 — 모든 댓글을 읽고 답변합니다.

팔로우하기

0 조회
Back to Blog

관련 글

더 보기 »

서브넷팅 설명

Subnetting이란 무엇인가? 큰 아파트 건물을 여러 층으로 나누는 것과 같다. 각 층 서브넷은 자체 번호가 매겨진 유닛(hosts)을 가지고, 그리고 건물…