Murakkab: agentic workflow 를 declarative 로 받아, model·knob·GPU 를 SLO 에 맞춰 cloud 가 직접 고르게 하기
papers/Murakkab_2508.18298v2.pdf (18쪽, 본문 12쪽 + 부록) · §3.3 p.6 = 논문이 그렇게 쓴 절·쪽 · 해석 = 논문 내용에서 요약자가 끌어낸 설명 · 논문에 없음 = 배경지식·예시 · 용어는 1 절 용어표의 뜻으로만 쓴다 · 그림은 누르면 크게 열린다0한눈에 보기
agentic workflow 는 여러 model 과 tool 을 DAG 로 엮은 application 인데, 지금은 개발자가 코드 안에 model·parameter·GPU 를 직접 박아 넣고 cloud 는 그 안을 볼 수 없다 §1 p.1 §2.5 p.3.
Murakkab 은 개발자에게 task 와 data flow 만 받고, profile 과 MILP 로 SLO 를 지키는 가장 싼(또는 energy 가 적은) 설정을 system 이 고른다. 24 시간 Azure trace 에서 hand-crafted static 설정 대비 GPU 2.8×·energy 3.7×·cost 4.3× 를 줄였다 Abstract p.1 §4.3 p.9.
1배경: agentic workflow 와 설정 knob
agent 는 model·지시문·tool 로 스스로 판단하고 행동하는 단위이고, 여러 agent 가 역할을 나눠 협업하는 과정이 agentic workflow 다 §2.1 p.2.
workflow 는 DAG 로 나타내며, 같은 DAG 라도 model·frame 수·GPU 같은 knob 을 어떻게 고르냐에 따라 accuracy·latency·energy·cost 가 크게 달라진다 §2.2 p.2 §2.5 p.3–4.
1.1용어표
| 용어 | 정확한 뜻 (이 요약에서) | 기호 | 논문 원문 표기 |
|---|---|---|---|
| 1.1.1.1agent | model(LLM 등)·지시문·tool 로 스스로 판단하고 tool 을 호출하는 단위. workflow 안에서 한 역할을 맡는다 | – | "agent" (§2.1 p.2) |
| 1.1.1.2agentic workflow | 여러 agent 가 협업해 한 요청에 답하는 과정. DAG 로 표현한다 | $w \in \mathcal{W}$ | "agentic workflow", "workflow" |
| 1.1.1.3DAG node | workflow DAG 의 원소 하나. edge 는 data flow·실행 의존 | – | §2.2 p.2 는 node = agent, §3.2 p.6 은 node = executor 로 쓴다. 이 요약은 개발 전은 task, 배정 뒤는 executor 로 부른다 |
| 1.1.1.4task (sub-task) | 개발자가 자연어로 적는 할 일 한 칸. 아직 model 이 정해지지 않았다 | – | "tasks", "sub-tasks" (§3.2 p.6) |
| 1.1.1.5executor | library 에 있는 실행 단위. LLM / structured composition(LLM Debate 등) / tool 세 종류. 전통 ML model 은 tool 로 분류 | – | "executor" (§3.2 p.5) |
| 1.1.1.6knob | 바꿀 수 있는 설정값 하나. workflow-level · agent-level · hardware-level 로 나눈다 | – | "knobs", "configurations" (§2.4 p.3). agent-level 을 §3.3 은 "executor-level" 이라 쓴다 |
| 1.1.1.7workflow configuration | workflow·agent-level knob 을 모두 정한 한 조합 (예: Gemma-3-27B, frame 10, STT 켬) | $c \in C_w$ | "workflow configurations for $w$" (§A.5 p.17) |
| 1.1.1.8model profile | model × GPU 종류 × parallelism 한 조합과 그 측정값(TTFT·TPOT·throughput·energy·cost). MILP 의 instance 단위 | $m \in \mathcal{M}$ | "model profiles" (§3.3 p.6, §A.5 p.17). 원문은 측정 기록과 그 조합 자체를 모두 "model profile" 이라 부른다 |
| 1.1.1.9workflow profile | workflow configuration 별 accuracy 와 executor 가 받는 load(prompt·completion token 수) 기록 | $a_c$, $t_c$ | "workflow profiles" (§3.3 p.6) |
| 1.1.1.10logical workflow | task 마다 executor 만 정한 DAG. model·hardware·요청 정보(query·SLO)는 없다 | – | "logical workflow" (§3.2 p.6) |
| 1.1.1.11executable workflow | logical workflow 에 knob·model·hardware·parallelism 까지 정한 실행 계획. SLO tier 마다 하나 | – | "executable workflow" (§3.3 p.6–7) |
| 1.1.1.12imperative / declarative | 무엇을·어떻게(설정 포함) 다 적는 방식 / 무엇을 할지만 적고 어떻게는 system 에 맡기는 방식 | – | §2.3 p.2–3, §3.2 p.5–6 |
| 1.1.1.13SLO · SLO tier | 요청마다 붙는 accuracy·latency·cost 목표. tier 는 best / good / fair / basic 네 단계 | $s \in \mathcal{S}$, $\tau_{w,s}$ | "SLO tiers" (§3.4 p.7). 원문은 SLO 종류(accuracy/latency)와 tier 를 모두 SLO 라 쓴다 |
| 1.1.1.14optimization epoch | optimizer 가 MILP 를 다시 푸는 주기. 실험 설정 60 분 | – | "optimization epoch" (§3.4 p.7, §4.1 p.8) |
| 1.1.1.15MILP | 일부 변수가 정수인 선형계획. 여기서는 instance 수 $n_m$ 이 정수다 | – | "Mixed Integer Linear Programming" (§3.3 p.7) |
| 1.1.1.16multiplexing · colocation | workflow–SLO 조합 여러 개의 요청을 같은 model instance 에 함께 태우는 것 | $\mu_m$ | "multiplexing", "colocation", "sharing of model instances" (§4.1 p.8) |
| 1.1.1.17TTFT · TPOT · TP | 첫 output token 까지 시간 · 그 뒤 token 하나당 시간 · tensor parallelism(model 하나를 GPU 몇 장에 나누나) | $\ell^{TTFT}_m$, $\ell^{TPOT}_m$, $g_m$ | §2.5 p.4, §A.5 p.17 |
| 1.1.1.18Static · Mrkb Opt · Mrkb Opt+Mult | 평가의 세 policy. 손으로 고정한 설정 / 조합마다 따로 최적화 / 모든 조합을 함께 최적화 + multiplexing | – | §4.1 p.8 |
1.2agentic workflow 는 DAG 다
1.3knob 은 세 층에 있다
"Configuration complexity of each workflow grows combinatorially with the number of agents and their parameters at each level: (O(#WorkflowKnobs × #AgentKnobs × #HardwareKnobs))."Insight 3 · §2.5 p.4
1.4나머지 용어
imperative · declarative
imperative 는 "Whisper 를 OpenAI key 로, PTU 50 으로 호출하라" 처럼 방법까지 적고, declarative 는 "scene 의 음성을 글로 바꿔라" 처럼 할 일만 적는다 §2.3 p.3 §3.2 p.6. SQL 이 대표적인 declarative 언어다 논문에 없음.TTFT · TPOT · tensor parallelism
LLM 은 prompt 를 한 번에 처리한 뒤(TTFT 까지) token 을 하나씩 만든다(한 개당 TPOT). 그래서 output token $t$ 개의 대략적 latency 는 $\ell^{TTFT} + t\,\ell^{TPOT}$ 이다 논문에 없음. Murakkab 의 latency filter(Eq.5)가 바로 이 식이다 §A.5 p.18. TP 는 model 하나를 GPU 여러 장에 나눠 싣는 방법이다 논문에 없음.Pareto frontier
accuracy 를 올리려면 latency·cost 를 희생해야만 하는 설정들의 경계선이다. 경계 안쪽 점은 어떤 경계 점보다 모든 면에서 못하므로 고를 이유가 없다 논문에 없음. 논문은 Fig.5 에서 video Q/A·code gen 의 설정 공간과 이 경계를 보인다 §2.5 p.4.statistical multiplexing
부하가 서로 다른 시각에 몰리는 요청들을 한 자원에 합치면, 합친 것의 peak 이 각 peak 의 합보다 작아 자원이 덜 든다 논문에 없음. MILP 의 Eq.3 은 model 마다 multiplexing factor $\mu_m$ 을 곱한다 §A.5 p.18.EWMA
다음 값을 $\hat{y}_{k+1} = \alpha y_k + (1-\alpha)\hat{y}_k$ 로 예측하는 지수 가중 이동평균이다 논문에 없음. 논문은 epoch 마다 수요를 $\alpha = 0.5$ 인 EWMA 로 예측한다 §4.6 p.10.PTU
Azure OpenAI 같은 managed service 에서 미리 사 두는 처리량 단위(provisioned throughput unit)다 §2.3 p.3. Listing 1 에서 Whisper 에"PTUs": 50 을 적는 것이 그 예다.2문제: 설정이 코드에 묶여 있고, 설정 공간은 너무 크다
개발자는 framework 코드 안에 model·parameter·자원을 직접 적어 넣는다. cloud 는 그 안을 볼 수 없어 설정을 바꿔 자원을 아낄 수 없고, 바꾸려면 개발자가 코드를 고쳐 다시 배포해야 한다 §2.3 p.3 §2.5 p.3.
게다가 knob 마다 accuracy·token 수·latency·energy 가 크게 달라지고 조합 수가 곱으로 늘어, 사람이 요청마다 알맞은 설정을 고를 수 없다 §2.5 p.3–4.
"Cloud platforms lack visibility into workflow internals (e.g., tasks, requirements), preventing end-to-end optimization. Meanwhile, developers lack control or insight into system-level resource behavior."Insight 1 · §2.5 p.3
2.1knob 하나가 accuracy 와 token 수를 크게 바꾼다
Fig.4 — 같은 model 도 GPU·TP 에 따라 latency·energy 효율이 다르다
3기법: 선언 → 배정 → 최적화 → 실행
개발자는 task 문장과 data flow 만 쓰고, orchestrator(LLM)가 task 마다 executor 를 골라 logical workflow 를 만든다 §3.2 p.5–6.
optimizer 는 workflow profile(accuracy·token 수)과 model profile(TTFT·TPOT·energy·cost)을 MILP 에 넣어 SLO tier 마다 knob·model·GPU·instance 수를 정하고, runtime 은 60 분 epoch 마다 다시 푼다 §3.3 p.6–7 §3.4 p.7.
3.1① Development: declarative spec 과 executor library
slo=LOW_LATENCY 같은 SLO 만 붙인다 §3.2 p.6. 개발자가 특정 LLM 이나 hardware 를 원하면 적을 수 있고, 그것은 optimizer 의 제약조건이 된다 §3.2 p.6.| executor 종류 | 예 | 노출 knob 예 |
|---|---|---|
| 3.1.2.1LLM | fine-tuning·few-shot·domain prompt 로 특화한 LLM 설정 | model |
| 3.1.2.2structured composition | self-reflection, LLM Debate 처럼 여러 LLM 을 엮은 것 | LLM Debate: D(debater 수), R(round 수), model |
| 3.1.2.3tool | OpenCV frame extractor, web-search, MCP tool. 전통 ML model(CNN 분류기 등)도 여기에 | frame extractor: F(frame 수), cores(CPU core 수) |
executor 마다 설명문·interface·설정 가능한 knob 목록 세 가지를 공개하고, orchestrator 는 설명과 interface 로 executor 를 고른 뒤 knob 값은 다음 단계로 미룬다 §3.2 p.5. orchestrator 의 중심은 tool-calling 이 되는 LLM 이며, DAG 의 앞 node 출력 type 과 뒤 node 입력 type 이 맞는지 검사해 어긋나면 오류를 LLM 에 돌려 다시 만들게 한다 §3.2 p.6. library 에 맞는 executor 가 없으면 개발자에게 추가를 요청한다 §3.2 p.5.
3.2② Optimization: profile 두 층 + MILP
논문의 video Q/A 예시는 세 단계다. accuracy SLO 에 못 미치는 설정을 먼저 버리고, token 분포와 model profile 로 latency·cost 를 추정한 뒤, 모든 SLO 를 만족하는 설정을 고른다. 없으면 infeasibility error 를 돌려준다 §3.3 p.7. 또 GPU 는 peak 수요에 맞춰 할당하고, 평균 부하는 비용 효율적 사용을 안내하는 데 쓴다는 것을 논문은 "A key insight" 라 부른다 §3.3 p.7.
3.3MILP 식 (부록 A.5)
3.4③ Execution: SLO tier, 60 분 epoch, auto-scaler
- 3.4.2
- 3.4.2.1요청에는 workflow ID·입력·SLO 가 들어 있고, runtime 은 registry 에서 해당 executable workflow 를 꺼내 실행한다. workflow 를 지정하지 않은 자연어 요청은 orchestrator 가 기존 executor·workflow 로 그 자리에서 조립한다 §3.4 p.7.
- 3.4.2.2optimizer 는 매 epoch(실험 설정 60 분) 이전 epoch 상태로 다음 부하를 예측해 다시 풀고, registry 의 executable workflow 를 바꾼다 §3.4 p.7.
- 3.4.2.3auto-scaler 는 초~분 단위로 model instance 부하를 보고 빠르게 scale-out 한다. 논문은 이것이 순간 최적성보다 SLO 위반 방지를 우선하며, 여분 자원을 두고 큰 변화가 오면 재최적화를 앞당긴다고 쓴다 §3.4 p.7–8. 예로 Llava-OneVision-7B·frame 10·STT 는 요청당 token 이 p50 600, p99 1,200 개로 변동이 크다 §3.4 p.7.
4구현
논문에 별도 구현 절은 없다. 평가 절에서 LLM 은 vLLM v0.9, speech-to-text 는 speaches-ai v0.7, object detection 은 OmDet 으로 serving 했고 §4.1 p.8, MILP 는 Gurobi(300 초 time limit)로 푼다 §A.5 p.18.
코드 규모, orchestrator 가 쓰는 LLM 종류, profiling 에 걸린 시간은 원문에 명시 없음 해석.
구현·실험 환경 세부
| 항목 | 값 | 근거 |
|---|---|---|
| 4.1.1A100 VM | A100 80 GB × 8, AMD EPYC 7V12 64-core | §4.1 p.8 |
| 4.1.2H100 VM | H100 80 GB × 8, Intel Xeon (Sapphire Rapids) | §4.1 p.8 |
| 4.1.3workflow profile 용 benchmark | VideoMME, HumanEval, MATH | §3.3 p.6 |
| 4.1.4model profile 항목 | TTFT·TPOT, energy, cost. TP·prefill/decode 분리·GPU 종류·clock 별로, 부하 수준을 바꿔 측정 | §3.3 p.6 |
| 4.1.5MILP | Gurobi, time limit 300 s, buffer $\alpha$ 1.15, Eq.13 의 $\epsilon$ 0.001 | §A.5 p.17–18 |
| 4.1.6endpoint | 배포된 workflow 는 REST endpoint 로 공개, 요청마다 SLO 를 붙일 수 있음 | §3.2 p.6 |
5평가
Azure LLM inference trace 24 시간(2024-05)의 chat 요청을 video Q/A 로, coding 요청을 code gen 으로 대응시켰다. 공개된 agentic workflow trace 가 없어서 택한 근사라고 논문이 밝힌다 §4.1 p.8.
baseline Static 은 Gemma-3-27B·A100 으로 고정한 hand-crafted 설정이고, 논문은 이것이 LangGraph 같은 기존 system 을 대표한다고 쓴다. LangGraph 를 직접 돌린 비교는 아니다 §4.1 p.8 해석.
Fig.18 — 사용한 Azure trace
5.15.1 workflow 하나: SLO tier 와 목적함수에 따라 무엇을 고르나
Fig.9 · 부록 Table 4·5 — code gen 과 고른 설정 목록
| workflow · SLO | tier 를 풀 때 바뀐 것 (가장 많이 고른 설정) | 근거 |
|---|---|---|
| 5.1.3.1video Q/A · accuracy | Gemma-3-27B F=10 → Gemma F=5 → NVLM-D-72B F=5 → Llava-OV-7B F=5. 모두 TP4, cost 는 A100·energy 는 H100 | Table 4 p.16 |
| 5.1.3.2video Q/A · latency | 모두 Llava-OV-7B F=1. GPU 종류와 instance 당 허용 부하(TPS)만 바꿔 batching 을 늘림 | §A.2 p.16 |
| 5.1.3.3code gen · accuracy | DeepSeek-Qwen-32B D4 R4 → Gemma D4 R4 → Gemma D2 R4 → Phi-4 D2 R4 | Table 5 p.17 |
| 5.1.3.4code gen · latency | best 는 NVLM-D-72B H100 TP8, 나머지는 Phi-4 D2 R2. 같은 Phi-4 도 cost 최소화는 TP2, energy 최소화는 TP1 | §A.3 p.17 |
5.25.2 workflow 여러 개: multiplexing
5.35.3 가용 GPU 가 바뀔 때
Fig.11 — 24 시간 동안 instance 와 GPU 를 어떻게 바꿨나
5.45.4 DAG 를 알고 CPU·GPU 에 나눠 싣기
Fig.13 — optimization epoch 을 몇 분으로 할까
부록 A.1 — Math Q/A + code gen (Fig.14–17, Table 3)
| Policy (Table 3, p.16) | GPU 수 | Energy (MWh) | Cost (×1000 $) |
|---|---|---|---|
| 5.4.7.1Static | 4448 | 169.87 | 367.2 |
| 5.4.7.2Mrkb Opt | 1875 | 62.88 | 123.0 |
| 5.4.7.3Mrkb Opt+Mult | 1660 | 52.66 | 104.6 |
6결론과 한계
논문의 결론은 declarative programming model 과 adaptive runtime 으로 workflow 논리와 실행 설정을 분리하고 orchestration 과 cluster 관리를 통합해, 다양한 SLO 를 지키면서 GPU·energy·cost 를 줄였다는 것이다 §6 p.11–12. 향후 과제로 더 큰 cluster, 더 다양한 가속기, 새 agentic application 에 맞춘 특화를 든다 §6 p.12.
논문에 limitation 절은 없다. 아래는 요약자가 정리한 한계다 논문에 없음.
| 한계 | 근거 |
|---|---|
| 6.1.1workload 가 실제 agentic trace 가 아니다. LLM chat·coding trace 의 도착 시각만 빌려 workflow 에 대응시켰다 | §4.1 p.8 ("no publicly available traces") |
| 6.1.2baseline 이 한 가지 hand-crafted 고정 설정이다. 시간대별로 설정을 바꾸는 heuristic 이나 LangGraph 실제 배포와의 비교는 없다 | §4.1 p.8, §4.3 p.9 |
| 6.1.3orchestrator(LLM)가 task 를 executor 에 얼마나 정확히 배정하는지, 실패하면 품질이 어떻게 되는지 평가가 없다 | §3.2 p.6 에 설계만 제시 |
| 6.1.4accuracy 를 공개 benchmark 로 잰 workflow profile 에 의존한다. 실제 요청 분포가 benchmark 와 다르면 tier 가 맞지 않을 수 있다 | §3.3 p.6 (피드백으로 갱신한다고만 씀) |
| 6.1.5profiling 을 "lightweight" 라 하지만 비용·시간 수치가 없고, $\mu_m$·$e_m$ 의 실제 값과 단위가 원문에 없다 | §3.3 p.6, §A.5 p.17–18 |
| 6.1.6latency 추정 $\ell^{TTFT} + t_c \ell^{TPOT}$ 는 DAG 의 병렬 갈래·tool 시간·queueing 을 직접 담지 않는다. Fig.12 같은 CPU/GPU 배치 결정이 MILP 안에서 어떻게 나오는지 원문에 명시가 없다 | Eq.5 (§A.5 p.18), §4.5 p.10 |
| 6.1.7auto-scaler 의 효과는 따로 측정되지 않았다. Fig.13b 는 auto-scaler 가 없을 때의 worst-case 다 | §4.6 p.11 |
| 6.1.8MILP 를 Gurobi 300 초 제한으로 푸는데, workflow·model 수가 늘 때 푸는 시간과 해 품질이 보고되지 않았다 | §A.5 p.18 |
7관련 연구
논문은 기존 연구를 workflow 개발 framework, workflow 자동 생성, system 최적화 세 갈래로 나눈다 §5 p.11.
논문의 주장은 기존 framework 는 설정과 논리가 섞여 자원 관리를 개발자에게 떠넘기고, 기존 serving system 은 단일 model 이나 LLM 호출 scheduling 에 머문다는 것이다 §5 p.11. 논문에 비교표 figure 는 없어 아래 표는 요약자가 §5 를 정리한 것이다 논문에 없음.
| 갈래 | 연구 | 한 일 | Murakkab 과 차이 (논문 서술) |
|---|---|---|---|
| 7.1.1workflow 개발 | LangGraph · LangChain · AutoGen | model·tool 호출을 imperative 로 엮는다 | 설정과 논리가 섞여 있고 자원 관리를 개발자가 맡는다 |
| 7.1.2workflow 개발 | DSPy · Palimpzest | declarative 접근, prompt·query 최적화 | 역시 설정과 논리가 섞여 있고 큰 설정 공간으로 확장이 어렵다 |
| 7.1.3자동 생성 | AFlow · AutoFlow · Flow 등 | 응답 품질을 높이도록 workflow 를 자동 생성 | 상호 보완적이며 orchestrator 에 통합할 수 있다 |
| 7.1.4system 최적화 | Alto · Teola / Parrot · Autellix | data flow 관리 / agentic application 의 LLM 호출 scheduling | – |
| 7.1.5system 최적화 | SpotServe · Loki | 자원·부하 변동 대응 | 단일 model serving 에 머문다 |
| 7.1.6system 최적화 | model 선택·RouteLLM, test-time compute energy 연구 | 품질·energy trade-off 분석 | Murakkab 은 이 trade-off 를 agentic workflow 에서 자동으로 탐색하는 system 이다 |