본문 바로가기

16. 1차 자료에서 시스템 구성도 재구성하기 — 두 수준, explicit·inferred·unknown

이 장의 핵심 질문
  • 배포 보고서의 텍스트를 어떻게 구성도(diagram) 로 재구성하는가?
  • data path·control path·trust boundary·failure domain을 왜 그림에서 나눠 표시해야 하는가?
  • explicit·inferred·unknown을 색·라벨로 구분하면 그림이 어떻게 정직해지는가?

앞 장과의 연결 — 13장에서 배포 사례를 explicit/inferred/unknown으로 갈랐다. 15장에서 정량 주장의 조건을 고정했다. 이 장은 그 재료로 구성도를 그린다. 12장의 control/data path, 08장의 trust boundary(외부 KV 계층), 07장의 failure domain(P/D 분리)이 그림의 요소가 된다. 이 그림은 17장 브리프의 시각 근거가 된다.

먼저: 왜 구성도를 "재구성"하는가

배포 보고서는 대개 텍스트로 쓰여 있다: "PD 분리를 채택했고, prefill은 4노드 단위로, EP를 이렇게…". 이 텍스트를 구성도로 옮기면 두 가지를 얻는다.

  1. 빈칸이 드러난다 — 텍스트는 빠진 부분을 숨기기 쉽지만, 그림으로 그리면 "여기서 이건 어디로 가지?"라는 unknown이 눈에 보인다. 그림은 정직을 강제한다.
  2. 경로가 분리된다 — 무엇이 제어(결정)이고 무엇이 데이터(KV)인지, 신뢰 경계가 어디인지, 한 번에 죽는 범위가 어디인지가 시각적으로 나뉜다.

핵심 규율: 그림도 13장의 세 라벨(explicit·inferred·unknown)을 색으로 지킨다. 자료가 말한 것만 실선·명시색으로, 추론한 것은 점선·추론색으로, 모르는 것은 명시적 unknown 블록으로 그린다. 빈칸을 그럴듯한 선으로 메우지 않는다.

구성도의 네 요소

재구성할 때 반드시 나눠 표시하는 네 요소.

1) data path — 무거운 데이터가 흐르는 길

KV 캐시 전송 같은 대용량 데이터의 경로(07·08·12장). 대역폭·지연이 성능을 좌우하므로 별도 표시(예: 굵은 화살표).

2) control path — 결정·메타데이터가 흐르는 길

라우팅 결정·스케줄링·스케일링 신호(09·12장). data path와 다른 선(예: 얇은/점선 화살표)으로 그려 섞이지 않게 한다.

3) trust boundary — 신뢰 경계

서로 다른 신뢰 수준·소유·격리 영역의 경계. 예: 외부 KV 계층(08장)이 엔진 밖 공유 풀에 있으면 그 경계, 사용자↔서비스 경계, 노드↔노드 경계. 경계를 넘는 데이터·제어가 보안·격리 관심사가 되므로 표시한다. (자료가 밝히지 않은 신뢰 경계는 unknown이다 — 지어내지 않는다.)

4) failure domain — 실패 도메인

한 번에 함께 죽는 범위. 예: 한 노드가 죽으면 그 노드의 모든 GPU·전문가가 함께 사라진다(05장 EP·02장 노드). PD 분리(07장)에서 P 풀 전체 장애 vs D 풀 전체 장애는 다른 failure domain. 자료가 실패 경로를 밝히지 않았으면 failure domain 경계도 unknown이다.

📌 핵심 — 네 요소는 서로 다른 색·선으로 — data(굵은 주황), control(얇은 청록 점선), trust boundary(경계 상자), failure domain(경계 상자, 다른 스타일)을 시각적으로 구분한다. 이 안내서의 팔레트: 요청/데이터=노랑, 연산=파랑, 메모리/KV=보라, 통신/data path=주황, 서빙/control=청록, 지표=초록, 병목/unknown/함정=빨강.

두 수준 구성도 — 상위 개요 + 하위 상세

한 장의 그림에 모든 것을 담으면 읽을 수 없다. 두 수준으로 나눈다.

  • 상위 개요(high-level) — "요청이 큰 덩어리들을 어떻게 지나가는가". P 풀·D 풀·서빙 층·KV 계층 같은 블록 단위. 전체 흐름과 경계.
  • 하위 상세(low-level) — 한 블록 안을 확대. 예: P 풀 안의 노드·GPU·전문가 배치(05장 EP), 또는 KV 전송의 data path 세부.

두 수준을 나누면, 상위에서 전체 구조를, 하위에서 특정 부분의 explicit/unknown을 정밀하게 표시할 수 있다.

실습 — 가상 배포 "D-예시"의 재구성

실제 사업자를 특정하지 않기 위해, 13장에서 배운 패턴(PD 분리 + 대규모 EP)을 조건을 명시한 가상 배포 D-예시로 재구성한다. (이는 특정 배포의 주장이 아니라 재구성 방법의 실습이다.)

자료 가정 (명시적으로 조건을 못박음)

  • explicit로 주어졌다고 가정: PD 분리 채택, prefill 풀과 decode 풀 분리, 노드 내 NVLink·노드 간 IB, KV를 P→D로 전송, 대규모 EP.
  • 자료가 밝히지 않았다고 가정(unknown): 정확한 라우팅 임계값, 실패 복구 절차, 외부 KV 계층 유무, trust boundary 세부, 단가.

상위 개요 구성도

flowchart LR
    U["사용자 요청"]:::req
    subgraph TB1["trust boundary: 서비스 경계 (explicit)"]
        FE["Frontend / Router<br/>(control)"]:::ctrl
        subgraph FD_P["failure domain: Prefill 풀"]
            P["Prefill 풀<br/>대규모 EP · compute-bound"]:::comp
        end
        subgraph FD_D["failure domain: Decode 풀"]
            D["Decode 풀<br/>memory-bound"]:::comp
        end
    end
    UNK["외부 KV 계층?<br/>(unknown — 자료 미언급)"]:::unknown

    U -->|"control"| FE
    FE -.->|"control: 워커 선택"| P
    FE -.->|"control: 워커 선택"| D
    P ==>|"data: KV 전송 P→D<br/>(explicit)"| D
    D -->|"토큰 스트림"| U
    D -.->|"멀티턴 KV 재사용?"| UNK

    classDef req fill:#fff3c4,stroke:#d4a017,color:#000
    classDef ctrl fill:#c4f1f4,stroke:#0891b2,color:#000
    classDef comp fill:#cfe2ff,stroke:#2563eb,color:#000
    classDef unknown fill:#ffd6d6,stroke:#dc2626,color:#000,stroke-dasharray: 5 5

읽는 법:

  • 굵은 화살표(==>) = data path(KV 전송, explicit).
  • 점선 화살표(-.->) = control path 또는 unknown 연결.
  • 빨강 점선 블록 = unknown(외부 KV 계층 유무는 자료가 안 밝힘 — 상상으로 실선을 긋지 않는다).
  • 경계 상자 = trust boundary(서비스 경계, explicit)와 failure domain(P 풀·D 풀 각각).

하위 상세 구성도 — Prefill 풀 확대

flowchart TB
    subgraph P["Prefill 풀 (하위 상세)"]
        subgraph N1["노드 1 (failure domain: 노드)"]
            G1["GPU들<br/>전문가 샤드 (EP)"]:::comp
        end
        subgraph N2["노드 2 (failure domain: 노드)"]
            G2["GPU들<br/>전문가 샤드 (EP)"]:::comp
        end
        G1 <==>|"all-to-all<br/>(data, explicit: 대규모 EP)"| G2
    end
    THRESH["EP 부하 분산 임계값<br/>(unknown — 자료 미언급)"]:::unknown
    THRESH -.-> G1
    THRESH -.-> G2

    classDef comp fill:#cfe2ff,stroke:#2563eb,color:#000
    classDef unknown fill:#ffd6d6,stroke:#dc2626,color:#000,stroke-dasharray: 5 5

읽는 법:

  • 노드 경계 = failure domain(한 노드가 죽으면 그 전문가 샤드가 함께 사라짐).
  • all-to-all(05장)이 노드 사이를 오감 = explicit(대규모 cross-node EP). 이것이 topology에 민감함은 inferred(05·02장 원리).
  • EP 부하 분산 임계값 = unknown(자료 미언급) → 빨강 점선.
⚠️ 경계 혼동 주의 — 그림이 상상을 부추긴다 — 구성도를 그리다 보면 "여기 화살표 하나 있어야 그림이 완성되는데" 하며 없는 연결을 긋고 싶어진다. 이 유혹이 정확히 13장에서 경고한 "빈칸을 상상으로 메우기"다. 그림의 미완성은 자료의 미완성을 정직하게 반영한 것이다. unknown 블록을 비워두거나 명시적으로 표시하는 것이 옳다. 예쁜 완결보다 정직한 빈칸.

재구성 워크시트 (부록에 표로)

구성도를 재구성하는 절차:

  1. 텍스트에서 컴포넌트 추출 — 자료에 등장한 블록(P 풀·D 풀·라우터·KV 계층 등)을 나열. 각각 explicit인지 표시.
  2. 경로 분류 — 각 연결이 control인지 data인지 표시. 자료가 명시 안 한 연결은 inferred 또는 unknown.
  3. 경계 표시 — trust boundary·failure domain을 자료 근거로 그린다. 근거 없으면 unknown 경계.
  4. 색·선 적용 — explicit=실선/명시색, inferred=점선/추론 라벨, unknown=빨강 점선 블록.
  5. 두 수준 분리 — 상위 개요와 (필요한 블록의) 하위 상세로 나눔.
  6. unknown 목록화 — 그림에서 unknown인 항목을 별도 목록으로. 이것이 17장 브리프의 "추가 검증 항목"이 된다.
⚖️ 절충 — 상세함 vs 정직함 — 구성도를 더 상세히 그릴수록 정보가 풍부해 보이지만, 상세를 채우려다 inferred·unknown을 explicit처럼 그리기 쉽다. 상세함과 정직함이 충돌하면 정직함을 택한다. unknown이 많은 그림은 "부실한 그림"이 아니라 "자료의 한계를 정확히 반영한 그림"이다.

이 장에서 배운 것

  • 배포 보고서 텍스트를 구성도로 재구성하면 빈칸(unknown)이 드러나고 경로가 분리된다. 그림은 정직을 강제한다.
  • 네 요소를 나눠 표시한다: data path(KV 등 무거운 데이터), control path(결정·메타데이터), trust boundary(신뢰 경계), failure domain(함께 죽는 범위). 각각 다른 색·선.
  • 두 수준으로 나눈다: 상위 개요(블록 단위 흐름·경계) + 하위 상세(한 블록 확대).
  • explicit·inferred·unknown을 색·라벨로 구분한다. explicit=실선/명시색, inferred=점선, unknown=빨강 점선 블록. 빈칸을 상상으로 메우지 않는다.
  • 그림의 미완성은 자료의 미완성을 반영한 것. 상세함과 정직함이 충돌하면 정직함을 택한다. 그림의 unknown 목록이 17장 브리프의 추가 검증 항목이 된다.

🔎 이 장의 '지지하지 않는 결론' + 'unknown으로 남겨야 할 것'

  • 지지하지 않는 결론 — "구성도가 상세할수록 좋다"는 지지되지 않는다. 상세를 채우려 unknown을 explicit처럼 그리면 그림이 거짓이 된다.
  • unknown으로 남길 것 — 자료가 밝히지 않은 연결·경계·임계값은 그림에서도 unknown(빨강 점선)으로 남긴다. 재구성의 목적은 완결이 아니라 explicit/unknown의 정직한 시각화다.

✍️ 확인 문제

  1. 어떤 배포 보고서가 "PD 분리를 쓴다"고만 밝히고 KV 전송 방식·라우팅 세부는 언급하지 않았다. 이를 상위 개요 구성도로 그릴 때, data path·control path·unknown을 각각 어떻게 표시해야 하는가? 무엇을 실선으로, 무엇을 빨강 점선으로 그려야 하는가?
  1. (정직성 유형) 구성도를 그리다 "여기 화살표 하나만 더 있으면 완성인데" 하는 상황이 왔다. 자료엔 그 연결이 없다. 어떻게 해야 하는가? "예쁜 완결 vs 정직한 빈칸"의 원칙으로 답하라.
  1. (경계 유형) failure domain과 trust boundary는 어떻게 다른가? PD 분리 배포에서 각각의 예를 들고, 자료가 실패 경로·신뢰 경계를 밝히지 않았을 때 이 경계들을 어떻게 처리해야 하는지 말하라.
다음 장에서 마지막으로, 지금까지의 모든 도구(개념 어휘·조건·증거 라벨·구성도)를 하나로 묶어 근거 기반 기술 브리프를 완성한다. 하나의 주장에 근거표·조건표·적용 경계·추가 검증을 결합하는 종합이 이 과정의 최종 산출물이다.
다음17. 근거 기반 기술 브리프 — 하나의 주장을 정직하게 종합하기