coredot.today
기술 탐색으로 돌아가기
프롬프트 최적화연구

FlowBank

버리던 후보 워크플로를 은행처럼 모아 두고 문제마다 골라 보낸다 — 커버리지로 고르고 그래프 신경망으로 짝짓는 '미리 만들어 다시 쓰기'

직접 해보기 5실측
종류
논문
언어
Python
사실 확인
2026.10.24

TRY IT

직접 해보기

OVERVIEW

개요

무엇인가

FlowBank는 에이전트 워크플로(LLM 호출과 도구를 정해진 순서로 이어 붙인 작은 프로그램)를 하나만 골라 배포하지도, 질문마다 새로 짜지도 않는 방법입니다. 서로 다른 문제를 푸는 워크플로 몇 개를 오프라인에서 미리 만들어 '은행'에 넣어 두고, 질문이 오면 그중 하나를 골라 보냅니다. 메릴랜드대·아마존 연구진이 2026년 6월 arXiv에 공개했고, 공식 저장소에 코드·중간 산출물·학습된 선택기·테스트 예측 파일까지 올라와 있습니다.

출발점은 두 가지 낭비입니다.

  • 과제 수준 최적화의 낭비. AFlow는 MATH에서 20라운드 동안 후보 20개를 찾고 1등 하나만 배포합니다. 그런데 버려진 후보들이 1등이 틀린 문제를 풀고 있었습니다. 정확도 상위 순으로 모으기만 해도 커버리지가 1개 0.622에서 8개 약 0.764로 오릅니다.
  • 질의 수준 생성의 낭비. DROP에서 ScoreFlow(질문마다 워크플로를 새로 짜는 방법)와 정적 워크플로 하나 중 문제마다 나은 쪽을 고르는 오라클은 문제의 63%를 싼 정적 워크플로로 보냈습니다. 그러고도 점수는 82.68에서 87.72로 오르고, 문제당 비용은 1.35에서 0.80(×10⁻³달러)으로 줄었습니다.

'문제마다 맞는 방법 고르기'는 1976년 라이스의 알고리즘 선택 문제와 SAT 대회의 SATzilla로 이어지는 오래된 생각입니다(논문이 이 고전들을 인용하지는 않습니다). FlowBank는 고를 후보 자체를 LLM이 탐색해 만들고, 고르는 대상이 모델이 아니라 같은 실행 모델 위의 워크플로라는 점이 다릅니다.

어떻게 동작하나

핵심 잣대는 커버리지입니다. 문제마다 집합 안에서 가장 잘한 워크플로의 점수를 가져와 평균 낸 값, 즉 정답을 아는 심판이 골라 줄 때의 상한입니다. 다른 구성원이 이미 푼 문제를 또 푸는 것은 커버리지에 아무것도 더하지 않습니다.

Coverage(Ω)=1∣D∣∑q∈Dmax⁡ω∈Ωe(ω,q)\text{Coverage}(\Omega) = \frac{1}{|D|} \sum_{q \in D} \max_{\omega \in \Omega} e(\omega, q)
1. DiverseFlow
AFlow식 트리 탐색으로 후보를 만든다. 처음 7라운드는 성능으로 부모를 뽑고, 그 뒤에는 이미 많은 워크플로가 푸는 문제일수록 가중치를 낮춰 남이 못 푸는 문제를 푸는 후보가 부모가 되게 한다. MATH에서 30라운드 + ScoreFlow 한 장 = 후보 31개.
2. CuraFlow
크기 k마다 커버리지가 가장 큰 부분집합을 전수 탐색으로 찾고, 전체 풀 커버리지의 96%(τ=0.96)에 처음 닿는 크기에서 멈춘다. 동점이면 구성원끼리 상관이 낮은 조합을 고른다. 실제 포트폴리오는 MATH 4개, AMC 5개, DROP 2개, MBPP 2개.
3. 매칭
질의–워크플로 이분 그래프에서 가려 둔 간선 값을 맞히도록 이종 GNN을 학습한다. 질의는 text-embedding-3-small 임베딩, 워크플로는 GPT-4o가 코드를 요약한 설명문의 임베딩. 새 질의는 순전파 한 번으로 예측값이 가장 큰 워크플로에 보낸다.

간선 값은 성능과 비용을 섞은 v=(1−λ) e~+λ (1−c~)v = (1 - \lambda)\,\tilde{e} + \lambda\,(1 - \tilde{c})입니다. λ\lambda가 클수록 '싸게 맞히는' 짝을 선호합니다. 분류기 대신 그래프를 쓰는 이유는 쉬운 문제에서 여러 워크플로가 동점인 경우가 흔하고, 워크플로끼리·문제끼리의 유사성을 함께 쓰기 위해서입니다.

실행 모델은 모든 방법이 GPT-4o mini(온도 0)로 같고, FlowBank의 탐색에는 Qwen3-8B를 썼습니다. 표 1에서 다섯 벤치마크(MATH·AMC·MBPP·DROP·MMLU Pro) 모두 1위였고, 평균 성능 73.40으로 AFlow(GPT-4o) 70.40보다 3.00점 높으면서 평균 비용은 1.65로 AFlow(1.95)·ScoreFlow(2.37)보다 낮았습니다.

빠른 시작

PyPI 패키지는 없습니다. README대로 저장소를 받아 환경을 만들면, 함께 배포된 학습된 선택기로 논문 수치를 API 키 없이 재현할 수 있습니다.

bash
git clone https://github.com/umd-huang-lab/FlowBank.git
cd FlowBank
conda create -n flowbank python=3.10 -y && conda activate flowbank
pip install torch==2.1.0            # GPU에 맞는 cuXXX 휠 또는 CPU 빌드
pip install -r requirements.txt

# 공개된 선택기 4개(drop·math·amc·mbpp)로 테스트 점수 재계산
python inference.py --all --assert

# 실제 MATH 후보 31개로 크기 k 커버리지 선택 (오프라인)
python CuraFlow/k_coverage_selection.py --dataset-name MATH \
    --sources CuraFlow/examples/math_single_sources.json \
    --output-dir runs/curaflow_math --max-k 6

1단계(DiverseFlow)부터 전체를 돌리려면 별도 환경(DiverseFlow/requirements.txt)과 LLM API가 필요합니다. 저장소를 쓰지 않아도 생각은 바로 가져갈 수 있습니다. 프롬프트·체인 변형을 실험할 때 평균 점수만 남기지 말고 문항별 점수와 비용을 표로 남기고, 문항마다 최고점의 평균(커버리지)과 단일 최선의 차이를 먼저 재 보는 것입니다.

코어닷투데이 실측

코어닷투데이는 공식 저장소의 실제 데이터(CuraFlow/examples의 MATH 후보 31개 × 학습 문제 119개, experiments/example/*/test_predictions.json·training_log.csv)를 받아 문제 단위로 다시 계산했습니다.

확인한 것결과
선택기 정확도 vs 표 1소수점 둘째 자리까지 일치 — MATH 69.34, AMC 67.94, MBPP 84.26, DROP 83.49
오라클 vs 표 2일치 — MATH 83.74, DROP 90.47
MATH 후보 31개개인 정확도 57.1~62.2%에 몰려 있는데 전체 커버리지 86.6%. 하위권 F11+F21 조합(73.9%)이 k=2 전수 최적
탐욕 vs 전수 (k=4)79.0% 대 81.5% — 최적의 약 97%
메운 격차 (단일 최선→오라클)MATH 24.7%, DROP 16.6%, AMC 17.9%, MBPP 18.6%
체크포인트 선택공개 설정 4개 모두 split_ratio: [0.2, 0.0, 0.8] — 검증 세트 없이 테스트 점수로 저장. MBPP는 0에폭이 저장됨
ScoreFlow로 간 비율DROP 72.1%, MBPP 96.2%(341문제 중 328)

저장된 체크포인트의 테스트 결합 점수는 마지막 100에폭 중앙값보다 0.017~0.026 높았습니다. 정확도로 정확히 환산할 수는 없지만 대략 1~3점의 낙관 편향이 들어갔을 수 있습니다. 반면 커버리지 곡선과 오라클 상한은 체크포인트 선택과 무관하게 성립합니다.

언제 쓰고, 언제 피하나

상황FlowBank식 접근이 맞는다다른 방법을 먼저 본다
채점코드 테스트·수치 답·분류처럼 문항별 점수를 자동으로 매길 수 있다요약·고객 응대처럼 정답이 애매하다 — LLM 채점기의 편향이 은행 구성까지 왜곡한다
후보들평균은 비슷한데 맞히는 문제가 서로 다른 변형이 여럿커버리지와 단일 최선의 차이가 1~2점 — 라우팅할 가치가 없다
처리량같은 유형의 질문이 많아 오프라인 고정비를 회수할 수 있다처리량이 적어 탐색·선별·학습 비용이 문제당 절감액을 압도한다
분포질문 유형과 실행 모델이 한동안 안정적이다유형이 자주 바뀌거나 실행 모델을 곧 바꾼다 — 은행을 다시 만들어야 한다

에이전트 스킬 라이브러리에도 같은 잣대를 쓸 수 있습니다. 새 스킬이 기존 스킬이 못 하던 무엇을 덮는지(커버리지), 비슷한 스킬이 늘어 고르는 쪽이 헷갈리지 않는지를 재는 것입니다.

한계와 주의

  • DROP·MBPP의 1위는 유보한다. 체크포인트를 테스트 점수로 골랐으므로 DROP(+1.39점)·MBPP(+0.49점)의 우위는 추정 편향 범위 안에 있다. MATH(+4.32)·AMC(+4.17)의 우위는 그보다 크다.
  • 고르는 일은 아직 어렵다. 선택기는 오라클까지 격차의 17~25%만 메웠다. 후보 전체(31개)를 넣으면 오라클은 92.04로 오르지만 실제 성능은 68.11로 떨어진다 — 선택지가 많으면 선택기가 헷갈린다.
  • '즉석 생성 없이'와 실제는 다르다. DROP·AMC·MBPP 포트폴리오에 ScoreFlow가 들어 있고, MBPP에서는 사실상 ScoreFlow에 가끔 우회로를 붙인 꼴이다.
  • 표 1 비용은 추론 시점만이다. DiverseFlow 30라운드, ScoreFlow 생성기 학습, 설명문 생성, 임베딩 같은 오프라인 비용은 빠져 있다. 질의 임베딩에 외부 API 호출이 한 번 들어간다.
  • 실험 범위가 좁다. 실행 모델은 GPT-4o mini 하나, 학습 문제는 86~260개, 벤치마크는 모두 정답이 분명한 과제다. 절제 실험 차이(GNN 대 MLP 0.6점 ≈ MATH 3문제)에 반복 실행·신뢰구간이 없다.
  • 은행은 고정이다. 문제 분포가 바뀌거나 새 워크플로가 나와도 자동으로 반영되지 않는다.
  • 2026-10-24 기준 저장소에 라이선스 파일이 없다. 코드를 가져다 쓰기 전에 저자에게 확인한다.

DEEP DIVE

더 깊이 읽기