병렬 실행 — 3초와 8초의 차이가 시스템 전체를 바꾼다
한줄 요약
서로 독립적인 태스크는 동시에 실행할 수 있다. 4개 검사를 하나씩 기다리지 않고 한 번에 보내는 것처럼.
본문
회진 전 검사 오더를 생각해보면
아침 회진 전에 환자의 데이터를 준비해야 한다. 필요한 것:
- EMR에서 최근 기록 가져오기 — 2초
- 최신 Lab 결과 가져오기 — 3초
- 영상 판독 결과 가져오기 — 2초
- 현재 복용 약물 목록 가져오기 — 1초
이 네 가지를 하나씩 순서대로 기다리면 합계 8초다.
실제로는 어떻게 할까? 네 개를 동시에 요청한다. 그러면 가장 오래 걸리는 것(3초)이 끝나면 전부 준비된다. 총 3초.
AI 오케스트레이션도 같은 논리다. 서로 의존성이 없는 태스크는 동시에 실행하면 된다.
담당 환자가 10명이라면 효과는 더 극적이다. 환자 한 명당 3초씩 순차 처리하면 30초. 10명을 동시에 처리하면 3초.
병렬 실행이 가능한 조건
핵심 조건은 하나다: 태스크 A의 결과가 태스크 B의 실행에 필요하지 않아야 한다.
병렬 가능:
- 여러 환자 데이터를 각각 독립적으로 처리
- 같은 환자의 Lab, 활력징후, 투약 기록 수집 (서로 관계없음)
- 같은 질문을 여러 AI에게 동시에 물어보는 투표 방식
병렬 불가능:
- 데이터 수집 → 분석 (분석은 데이터가 있어야 가능)
- 감별진단 → 치료 계획 (치료 계획은 진단 결과가 있어야 가능)
- AI 제안 → 의사 검토 → 처치 실행 (순서가 의미 있음)
팬아웃 / 팬인 패턴
병렬 실행의 기본 구조다.
[입력]
↓
[분배: Fan-out]
├→ [태스크 A] ─┐
├→ [태스크 B] ─┤
└→ [태스크 C] ─┘
↓
[수집: Fan-in]
↓
[결과 통합]
Fan-out에서 태스크들을 동시에 시작하고, Fan-in에서 모두 완료될 때까지 기다렸다가 결과를 합친다.
의료 AI에서 전형적인 케이스: 병동 환자 10명의 요약을 동시에 생성하고, 모두 완료되면 우선순위 순으로 정렬해서 주치의에게 전달.
투표 병렬화: 속도가 아닌 신뢰도
같은 흉부 X-ray 판독을 3개의 AI에게 동시에 맡기면 무슨 이점이 있을까?
AI 1 → "오른쪽 하엽 폐렴 의심"
AI 2 → "오른쪽 하엽 폐렴 의심"
AI 3 → "정상"
↓
2:1 다수결 → "폐렴 의심" 채택
하나의 AI가 틀렸어도 잡아낼 수 있다. 이 방식은 속도 향상보다 신뢰도 향상이 목적이다. 중요한 임상 결정일수록, 복수의 독립적 판단으로 확인하는 것이 안전하다.
병렬 실행에서 조심해야 할 것
공유 자원 충돌
두 에이전트가 동시에 같은 데이터를 수정하려 하면 문제가 생긴다. 원칙: 각 에이전트는 자신이 담당하는 독립적인 필드만 쓰고, 다른 에이전트의 결과를 읽기만 한다.
느린 하나가 전체를 기다리게 한다
9개 태스크가 1초에 끝났는데 1개가 10초 걸리면 전체가 10초다. 각 태스크에 시간 제한을 설정하고, 기한 내 완료되지 않은 태스크는 타임아웃 처리하는 것이 좋다.
부분 실패 처리
병렬로 실행된 여러 태스크 중 하나가 실패했을 때 나머지 성공한 결과로 진행할 것인지, 전체를 실패로 처리할 것인지 사전에 정해야 한다. 의료 AI에서 “일부 데이터 누락 시 계속 진행 허용 여부”는 시스템 설계 단계에서 결정할 사항이다.
API 요청 한도
동시에 실행하는 LLM 호출이 많아지면 API 서비스의 요청 한도(Rate Limit)에 걸릴 수 있다. 동시 호출 수에 상한을 두는 것이 실용적이다.
병렬화로 얼마나 빨라지는가
회진 준비 시스템을 예로 들면:
| 단계 | 소요 시간 | 병렬 가능? |
|---|---|---|
| EMR 조회 | 2초 | ✓ |
| Lab 조회 | 3초 | ✓ |
| 약물 목록 조회 | 1초 | ✓ |
| 가이드라인 검색 | 2초 | ✓ |
| 감별진단 AI | 4초 | ✗ (위 4개 완료 후) |
| 치료 계획 AI | 3초 | ✗ (진단 후) |
| 요약 생성 | 2초 | ✗ (계획 후) |
최적 실행:
[동시] EMR + Lab + 약물 + 가이드라인 = 3초
[순차] 진단 4초 → 계획 3초 → 요약 2초
총: 3 + 4 + 3 + 2 = 12초 (vs 순차 17초)
30% 단축. 환자 수가 많아지면 효과는 더 커진다.
더 알고 싶다면
🔗 관련 글
- 태스크 분해 — 병렬 실행을 위해 태스크를 나누는 방법
- 상태 관리 — 병렬로 실행할 때 상태 충돌을 막는 설계
- AI 워크플로우 패턴 5가지 — 팬아웃/팬인이 포함된 패턴 전체 지도
- 비용 최적화 — 병렬화가 비용에 미치는 영향