“분산된 사고를 통한 추론 확장” 이벤트 기반 다중 에이전트의 이해
컨텐츠 정보
- 조회 744
본문
LLM은 챗봇, Q&A 시스템, 번역 및 기타 언어 작업에 유용하지만, 진정한 힘은 인사이트 기반의 조치를 수행하면서 광범위한 문제를 자동화할 수 있을 때 발휘된다. 즉, LLM이 가진 가장 큰 잠재력은 추론 기능을 활용할 때 얻을 수 있다.
추론 에이전트는 AI 연구에서 역사가 오래된 분야로, 이전에 본 것을 일반화해서 본 적이 없는 상황에 적용할 수 있는 소프트웨어를 의미한다. 주변에서 일어나는 상황에 적응할 수 있는 의사 결정 로봇과 같다고 보면 된다.
여기서 정말 흥미로운 부분은 다중 에이전트 시스템에서 여러 추론 에이전트가 함께 작동하는 형태다.
다중 에이전트 시스템이 가진 힘
각기 고유한 기술을 보유한 멤버들이 공통된 목표를 달성하기 향해 협업하는 드림 팀을 구성한다고 상상해 보자. 다중 에이전트 시스템은 상호 커뮤니케이션하고 컨텍스트를 공유하고 작업을 조율할 수 있는 여러 에이전트의 네트워크를 기반으로 이와 같은 종류의 팀워크를 실현한다. 이 시스템은 단일 에이전트 또는 사람이 해결하기에는 너무 크고 복잡한 과제를 해결하는 데 탁월하다.
물론 강력한 만큼 복잡성도 따른다.
그룹 프로젝트에서 일을 해봤다면 여러 에이전트를 조율할 때 직면하는 어려움에 익숙할 것이다. 커뮤니케이션 문제, 책임의 중복, 공통 목표를 향한 정렬의 어려움 등이 있다. 각기 독립적으로 작동하지만 동기화를 유지해야 하는 수십, 또는 수백 개의 자율 에이전트로 이 어려움을 확장해 보면 어느 정도인지 감이 잡힐 것이다.
여기서는 마이크로서비스에서 검증된 접근 방식인 이벤트 기반 설계를 통해 혼란을 해소하고 확장 가능하고 효율적인 다중 에이전트 시스템을 만드는 방법을 살펴본다. AI의 미래를 향해 팀을 이끌고 있다면 이러한 패턴을 이해하는 것이 중요하다.
자세히 살펴보자.
다중 에이전트 협업의 과제
다중 에이전트 시스템 관리에는 다음과 같은 특유의 어려움이 수반된다.
- 컨텍스트와 데이터 공유 : 에이전트는 정보를 정확히, 효율적으로 교환해서 중복과 손실 또는 잘못된 해석을 방지해야 한다.
- 확장성과 내결함성 : 에이전트의 수가 증가함에 따라 시스템은 복잡한 상호작용을 처리하는 동시에 장애를 원활하게 복구해야 한다.
- 통합 복잡성 : 에이전트는 다양한 시스템 및 툴과 함께 작동하므로 매끄러운 상호운용성이 필요한 경우가 많다.
- 적시의 정확한 의사 결정 : 에이전트는 응답성을 보장하고 잘못된 결과를 방지하기 위해 신선한 최신 데이터를 기반으로 실시간 의사 결정을 내려야 한다.
- 안전과 검증 : 의도하지 않은 동작을 방지하기 위한 안전 장치가 필수적이며, 확률적 결과에는 엄격함 품질 보증이 필요하다.
이런 과제를 극복하기 위해서는 세밀한 조율 외에도 다중 에이전트 시스템에 맞는 검증된 설계 패턴도 필요하다. 다음 섹션에서는 이런 패턴에 대해 자세히 알아보고, 이벤트 기반 설계를 사용해 이 패턴을 구현해서 확장 가능하고 안정적이고 효율적인 다중 에이전트 아키텍처를 구축하는 방법을 살펴본다.
다중 에이전트 설계 패턴
다중 에이전트 설계 패턴은 에이전트가 문제를 해결하기 위해 커뮤니케이션, 협업 또는 경쟁할 수 있게 해주는 상호작용 구조를 정의한다. 이런 패턴은 문제 도메인과 에이전트 상호작용의 속성에 초점을 맞춰 다양한 시나리오에서 자율적인 여러 엔티티를 조율하기 위한 솔루션을 제안한다.
여기서는 4가지 주요 패턴인 오케스트레이터-작업자, 계층적 에이전트, 블랙보드, 그리고 시장 기반 패턴을 알아본다. 이런 일반적인 다중 에이전트 패턴이 어떻게 이벤트 기반 분산 시스템으로 변환돼 데이터 스트리밍 애플리케이션의 운영상의 이점을 얻고 에이전트 오케스트레이션을 위한 특수한 커뮤니케이션 경로의 필요성을 없애는가를 살펴본다. 여기서는 아파치 카프카의 개념적 모델을 사용해서 이들 패턴의 이벤트 기반 버전을 설명할 것이다. 카프카에 익숙하지 않다면 컨플루언트 디벨로퍼 사이트에서 기초적인 내용을 둘러볼 수 있다.
오케스트레이터-작업자 패턴
이 패턴에서는 중앙 오케스트레이터가 작업자 에이전트에 작업을 할당하고 실행을 관리한다. 분산 컴퓨팅의 마스터-작업자 패턴과 비슷하며, 작업자가 독립적인 특정 작업에 집중할 수 있도록 하는 동시에 효율적인 작업 위임과 중앙 조율을 보장한다.
데이터 스트리밍을 사용하면 이 패턴을 조정해서 에이전트를 이벤트 기반으로 만들 수 있다. 아파치 카프카와 같은 데이터 스트리밍 기술은 키 기반 파티셔닝 전략을 제공하므로 오케스트레이터는 키를 사용해 단일 주제 내의 여러 파티션에 걸쳐 명령 메시지를 분산할 수 있다. 그러면 작업자 에이전트는 소비자 그룹 역할을 하면서 하나 이상의 할당된 파티션에서 이벤트를 가져와 작업을 완료할 수 있다. 이후 각 작업자 에이전트가 두 번째 주제로 출력 메시지를 전송하면 다운스트림 시스템이 소비할 수 있다.
이제 패턴은 다음과 같다.
이 다이어그램은 복잡해 보이지만 사실 시스템 동작을 대폭 간소화해서 표현한 것이다.
오케스트레이터는 더 이상 작업자 에이전트에 대한 연결을 관리할 필요가 없다. 여기에는 작업자 에이전트 하나가 죽는 경우의 상황을 관리하거나 처리하는 에이전트의 수를 늘리거나 줄이는 등의 작업이 포함된다. 대신 오케스트레이터는 여러 파티션에 걸쳐 작업을 분산하는 키잉(keying) 전략을 사용한다. 상태 유지(stateful) 작업자 에이전트에서 이전 메시지로 처리해야 하는 이벤트의 경우 시퀀스의 각 이벤트에 동일한 키를 사용할 수 있다. 작업자 에이전트는 소비자 그룹의 혜택을 얻는다.
작업자 에이전트는 하나 이상의 파티션에서 가져오고, 카프카 리밸런싱 프로토콜은 작업자 에이전트가 추가되거나 제거되더라도 각 작업자가 비슷한 워크로드를 갖도록 보장한다. 작업자가 실패하는 경우 저장된 오프셋에 대해 주어진 파티션에서 로그를 재생할 수 있다. 오케스트레이터에는 작업자를 관리하기 위한 맞춤형 논리가 더 이상 필요 없다. 대신 단순히 작업을 지정하고 적절한 키잉 전략을 사용하여 분배한다. 마찬가지로 작업자 에이전트는 카프카 소비자 그룹의 기능을 상속하므로 조율, 확장 및 장애 복구에 공통 시스템을 사용할 수 있다.
계층적 에이전트 패턴
이 패턴에서 에이전트는 상위 에이전트가 하위 에이전트를 감독하거나 작업을 위임하는 계층(layer)으로 구성된다. 문제를 관리하기 쉬운 작은 조각으로 나누므로 크고 복잡한 문제를 관리하는 데 특히 효과적이다.
계층적 패턴을 이벤트 기반 패턴으로 만들기 위해서는 에이전트 계층에서 오케스트레이터-작업자 패턴의 작업을 재귀적으로 분해하는 기술을 똑같이 적용해서 리프가 아닌(non-leaf) 각 노드가 각 하위 트리의 오케스트레이터가 되도록 한다.
위의 예에서 중간 수준 에이전트 #1은 그 자체가 리프 에이전트의 오케스트레이터이다. 에이전트 #1의 전체 워크플로우는 최상위 에이전트에 의해 오케스트레이션되는 작업자 역할에 기능적으로 캡슐화된다.
이전 다이어그램에 나온 계층적 토폴로지는 이제 아래 이미지와 같은 형태가 된다.
이벤트 모델의 경우 주제는 에이전트별 기능적 워크로드를 위한 논리적인 수영장 레인과 같으므로 구조에서 형제는 위에 표시된 것과 동일한 주제를 처리하는 소비자 그룹을 형성한다. 계층적 조직을 이벤트 기반으로 만들면 시스템이 비동기적이 되고 데이터 흐름에 대한 개념 모델이 대폭 간소화된다. 토포그래피가 더 이상 하드 코딩되지 않으므로 운영의 탄력성이 높아진다. 형제 그룹에 에이전트를 추가하거나 제거할 수 있으며 이때 개별 에이전트가 커뮤니케이션 경로의 이 같은 변경이나 장애를 관리할 필요가 없다.
블랙보드 패턴
블랙보드 패턴은 에이전트가 정보를 게시하고 불러오는 데 사용하는 공유 지식 기반인 “블랙보드”를 제공한다. 이 패턴은 에이전트가 직접적인 커뮤니케이션 없이 비동기적으로 협업할 수 있게 해주며, 여러 에이전트의 점증적인 기여가 필요한 복잡한 문제를 해결하는 데 특히 유용하다.
이 패턴을 이벤트 기반 패턴으로 수정하는 방법은 간단하다.
블랙보드는 작업자 에이전트가 생성하고 소비하는 메시지로 구성된 데이터 스트리밍 주제가 된다. 필요한 경우 키잉 전략 또는 페이로드 필드를 사용해서 이벤트의 진원지가 된 에이전트에 주석을 표시할 수 있다.
이벤트 기반 버전은 다음과 같다.
여기서도 마찬가지로 운영이 대폭 간소화되고, 인프라의 외부에서 생성해야 하는 맞춤형 논리의 양이 줄어든다. 각 작업자 에이전트는 나머지 그룹과 협업하기 위해 이벤트를 생성하고 소비한다.
시장 기반 패턴
이 패턴은 에이전트가 작업 또는 리소스를 할당하기 위해 협상하고 경쟁하는 분산 마켓플레이스를 모델링한다.
예를 들어 해결(solver) 또는 입찰(bidding) 에이전트는 상호 응답을 교환해서 응답을 개선할 수 있다. 이 프로세스는 고정된 횟수의 라운드에 걸쳐 반복되며, 집계 에이전트가 모든 에이전트의 최종 응답을 기반으로 최종적인 답변을 작성한다.
금융 서비스 분야에서는 세계 최대 규모의 여러 증권 거래소를 위한 기록 시스템으로 오랫동안 데이터 스트리밍 플랫폼이 사용되고 있다. 카프카, 컨플루언트와 같은 데이터 스트리밍 시스템은 처리량이 많은 다수의 장외거래 증권 시장도 실행한다. 일반적인 구현은 매수 주문을 위한 주제 하나, 그리고 각 해결 에이전트가 이벤트를 게시하는 매도 주문에 대한 주제 하나의 형태를 갖는다. 간단한 시장 조성자 서비스는 매수 주문과 매도 주문이 매칭되는 거래를 생성하고, 이러한 이벤트에 대한 알림을 해결 에이전트가 소비하는 세 번째 주제에 게시한다.
이 단순화는 해결 에이전트 간에 발생하는 이차 연결을 없애 준다는 측면에서 중요하다. 이차 연결은 에이전트가 많은 상황 또는 에이전트가 추가 또는 손실되는 상황에서 관리하기가 어렵다.
이제 패턴은 다음과 같다.
지금까지 에이전트가 이벤트에 의해 구동된다는 전제하에 이런 각 패턴을 이벤트 기반으로 만들었다. 이 부분을 더 자세히 살펴보자.
조율과 커뮤니케이션을 위한 공통 운영 모델
위에 기술된 설계 패턴은 마이크로서비스와 비슷한, 원활한 에이전트 조율을 위한 공유 운영 모델에 의존한다.
이 모델의 핵심은 에이전트가 정보를 교환하고 정렬된 상태를 유지하고 효율적으로 협업하기 위한 수단인 공유 언어다. 이벤트는 바로 이 언어로 동작하면서 에이전트가 지침을 해석하고 컨텍스트를 공유하고 작업을 조율할 수 있게 해주는 구조화된 업데이트 역할을 한다. 각 에이전트가 동기화된 상태를 유지하고 새로운 에이전트를 원활하게 통합하는, 시스템의 그룹 채팅이라고 생각하면 된다.
에이전트는 이 공유 언어를 통해 다음과 같은 작업을 수행할 수 있다.
- 명령 해석 : 에이전트는 JSON 페이로드와 같은 명확하고 표준화된 지침을 수신해 작업의 안내 지표로 사용한다.
- 컨텍스트 공유 : 에이전트는 지속적으로 업데이트를 브로드캐스팅해서 중복을 방지하고 상호 이해를 보장한다.
- 작업 조율 : 에이전트는 동적인 환경 또는 예측할 수 없는 환경에서도 공유된 목표 달성을 지향하는 독립적인 작업을 수행한다.
이 부분에서 인터페이스가 중요한 역할을 한다. 에이전트는 고립적으로 동작하는 것이 아니라 이벤트와 명령에 반응하도록 설계되어 더 큰 이벤트 기반 생태계에 원활하게 통합돼야 한다.
에이전트를 위한 인터페이스 지정
여기서 간소화 전제 역할을 하는 중요한 인사이트는 이러한 에이전트가 창조적인 자율성에 따라 행동하는 것이 아니라 업스트림의 이벤트 또는 명령에 반응한다는 것이다. 동적이고 상호 연결된 환경에서 다음 세 가지 구성요소를 사용해 에이전트를 모델링할 수 있다.
- 입력 : 이벤트 또는 명령 소비.
- 처리 : 추론을 적용하거나 부가적인 데이터 수집
- 출력 : 다운스트림 소비자를 위한 동작 실행
이 반응형 설계는 마이크로서비스를 닮았으며, 확장 가능하고 효율적인 시스템 개발을 위한 검증된 설계 패턴을 사용할 수 있게 해준다.
요청/응답에서 이벤트 기반으로의 전환
이벤트 기반 마이크로서비스와의 연결을 다시 상기해 보자. 전통적으로 시스템의 일부는 요청/응답 모델을 통해 상호작용한다. 이 접근 방식은 간편한 대신 확장성과 실시간 응답성이 떨어지고 시스템 규모가 성장함에 따라 지연과 병목 현상을 유발한다. 모든 작업에 권한이 필요한 것과 비슷해서, 작업 속도 저하의 원인이 된다.
이벤트 기반 아키텍처로의 진화는 중요한 전환점이다.
이 모델에서 에이전트는 자율적으로 이벤트를 방출하고 수신하도록 설계된다. 이벤트는 어떤 일이 발생했음을 알리는 신호 역할을 하므로 오케스트레이션된 직접적 요청이 없어도 에이전트가 응답할 수 있다. 이 접근 방식은 민첩성, 확장성, 그리고 더 동적인 시스템을 보장한다.
이벤트 기반 시스템의 에이전트 인터페이스는 이들이 방출하고 소비하는 이벤트에 의해 정의되고 JSON 페이로드와 같은 표준화된 단순한 메시지로 캡슐화된다. 이 구조화된 설계의 특징은 다음과 같다.
- 에이전트가 이벤트를 이해하고 대응하는 방법을 간소화한다.
- 다양한 워크플로우와 시스템에 걸쳐 에이전트의 재사용성을 높여준다.
- 동적이고 계속 발전하는 환경에 매끄럽게 통합할 수 있게 해준다.
예를 들어, 상태 모니터링 에이전트는 임계값 초과 시 경고를 내보내고 맞춤형 종속성 없이 손쉽게 워크플로우 통합될 수 있다.
일관성과 조율 보장
분산 시스템의 조화로운 작동을 위해서는 모든 에이전트에 걸쳐 일관적인 상태를 유지하는 것이 중요하다. 여기에 적용되는 것이 불변성 로그 개념이다. 에이전트가 처리하는 모든 이벤트 또는 명령은 영구적이고 변경 불가능한 로그에 기록된다. 단일 진실 공급원 역할을 하는 이 로그는 모든 에이전트가 동일한 컨텍스트에서 작동하도록 보장해 다음을 실현한다.
- 신뢰할 수 있는 조율과 동기화
- 재생 가능한 이벤트를 통한 회복탄력성으로 장애로부터 복구 가능
- 여러 에이전트가 혼란 또는 중복 없이 동일한 이벤트에 대응할 수 있는 정교한 소비자 모델
이 접근 방식은 시스템 안정성을 대폭 개선해서 복잡하거나 예측 불가능한 환경에서도 에이전트가 응집력 있게 작업해서 공유된 목표를 달성할 수 있게 해준다.
핵심 요약
다중 에이전트 시스템은 AI로 무엇이 가능한지를 새롭게 규정하고 있다. 그러나 그 잠재력을 최대한 실현하기 위해서는 확장성, 내결함성, 실시간 의사 결정과 같은 과제를 극복해야 한다. 이벤트 기반 설계는 앞으로 나아갈 명확한 길을 제시한다.
AI 애플리케이션이 점점 더 정교해짐에 따라 이벤트 기반 다중 에이전트 시스템은 실제 세계의 복잡성을 해결하는 데 있어 중요한 역할을 하게 될 것이다. 이 모델을 채택하고 에이전트 간 커뮤니케이션을 표준화하면 탄력적, 효율적이며 변화하는 요구사항에 적응할 수 있는 기반을 마련해 이런 아키텍처의 잠재력을 최대한 활용할 수 있다.
*Sean Falconer는 컨플루언트(Confluent)의 AI 전략 고문이며, AndrewSellers는 컨플루언트의 기술 전략 책임자다.
dl-itworldkorea@foundryco.com
관련자료
-
링크
-
이전
-
다음






