Forward Deployed Engineer 로드맵

3. 고객에게 맞는 모델 고르기

가장 큰 모델이 늘 맞는 답은 아니며, 작업의 난이도·입력 형태·호출량·비용·지연에 따라 고르는 모델이 달라집니다. FDE는 이 장의 여섯 종류(작은 모델, 추론 모델, 전문가 혼합, 멀티모달, 비전-언어 모델, 라우팅)를 비교해 고객의 업무마다 어느 모델을 어디에 둘지 말로 설명하고 결정합니다.

학습 동기: 이 장을 읽으면 "가장 좋은 모델로 전부 처리하면 되지 않습니까"라는 고객의 질문에 크기·추론 시간·입력 종류·요청 분배라는 네 축으로 답할 수 있고, 모델의 총 파라미터와 활성 파라미터, 이미지 한 장의 토큰 수, 라우팅의 비용 효과를 숫자로 계산해 견적과 구성을 제안할 수 있습니다.
선행 가정: 토큰과 임베딩(1.4.4, 2.4), 컨텍스트 윈도우(2.16), 환각(2.18), 전문가 혼합의 개요(2.10)를 들어본 정도면 충분합니다. 수학은 곱셈과 나눗셈 수준의 비용 계산만 사용합니다.



3.1 소형 언어 모델(SLM)

원문: What are Small Language Models (SLMs) and When Should We Use Them?

고객 앞에서 "가장 큰 모델을 쓰면 되지 않습니까"라는 질문을 받을 때, 크기가 비용·속도·보안·배포 위치를 함께 결정한다는 점을 설명할 수 있어야 합니다. 이 절은 작은 모델이 무엇이고 어디에 쓰이며 어디서 한계에 부딪히는지를 수치와 함께 다룹니다(2026년 5월 글 기준).

3.1.1 '작다'의 기준과 대표 SLM

소형 언어 모델(Small Language Model, SLM)은 노트북이나 휴대폰에서도 싸고 빠르게 돌아갈 만큼 작으면서, 실무의 많은 작업을 해낼 만큼은 유능한 언어 모델입니다. 이름은 Small과 Language Model의 합이며, 파라미터 수가 적은 언어 모델이라는 뜻입니다.

용어 주의: "작다"는 상대적 개념입니다. 몇 년 전에는 7B 모델도 아주 작다고 했고, 몇 년 뒤에는 오늘의 1B가 중간 크기로 느껴질 수 있습니다. 기준 숫자보다 상대적 크기를 기억해야 합니다.

원문 게시 시점(2026년 5월)의 대표 SLM은 다음과 같습니다.

모델 크기 개발사 특징
Phi-4-mini 3.8B Microsoft 추론에 강함, 컨텍스트 128K
Gemma 4 E2B 유효 2B Google 휴대폰용, 128K, 텍스트·이미지·오디오 입력
Gemma 4 E4B 유효 4B Google 엣지 기기용, 128K, 오디오 입력
Llama 3.2 1B 1B Meta 모바일·엣지용, 128K
Llama 3.2 3B 3B Meta 온디바이스용 중 강한 편, 128K
Qwen 3.5 0.8B 0.8B Alibaba 쓸 만한 모델 중 가장 작은 축, 256K
Qwen 3.5 2B / 4B 2B / 4B Alibaba 멀티모달, 2B는 사고 모드 전환, 256K
Qwen 3.5 9B 9B Alibaba 소형 시리즈의 적정점, 이전 세대 30B급에 견줌, 256K
SmolLM3 3B 3B Hugging Face 공개 instruct·추론 모델, 학습 컨텍스트 64K에 YaRN 확장으로 128K

모델 이름의 숫자는 곧 배치 장소를 암시하므로, 고객이 모델을 지목하면 먼저 그 숫자가 어느 장비에 올라가는지부터 확인합니다.

3.1.2 작아도 유능한 이유

몇 년 전의 3B 모델은 쓰기 어려웠지만 지금의 3B SLM은 상당한 일을 합니다. 달라진 것은 데이터, 학습 기법, 구조 세 가지입니다.

  1. 더 좋은 학습 데이터: 인터넷 전체를 쏟아붓는 대신 걸러내고 정제한 1~15조 토큰의 고품질 데이터를 씁니다. 양보다 질이 앞섭니다.
  2. 더 좋은 학습 기법: 지식 증류(큰 "교사" 모델의 출력을 작은 "학생" 모델이 따라 배우는 기법, 11.4 참조), 개선된 옵티마이저, 더 긴 학습이 파라미터당 능력을 더 짜냅니다.
  3. 더 영리한 구조: Grouped-Query Attention, RoPE(회전 위치 임베딩) 같은 기법이 파라미터를 늘리지 않고도 모델을 빠르고 강하게 만듭니다(2.10 참조).

그래서 오늘의 3B SLM은 몇 년 전 3B와 비교가 되지 않으며, 원문은 오늘의 3B가 두 해 전 13B와 맞먹거나 앞선다고 말합니다. 반대로 말하면 파라미터 수만으로 성능을 예단하면 틀립니다.

고객이 "작은 모델은 품질이 낮을 것"이라고 단정하면, 세대와 학습 방식이 바뀌었다는 점을 짚고 실제 과업 데이터로 비교 평가해 보자고 제안합니다.

3.1.3 SLM vs LLM 크기 스펙트럼

SLM이 LLM보다 좋거나 나쁜 것이 아니라 강점이 다릅니다. 배포·비용·지연·프라이버시는 SLM이, 폭넓은 지식·추론 깊이·아주 긴 컨텍스트는 LLM이 앞섭니다.

항목 SLM LLM
파라미터 0.5B ~ 약 10B 30B ~ 400B+
필요 메모리 1 ~ 18 GB 60 ~ 800+ GB
하드웨어 휴대폰, 노트북, GPU 1장 다중 GPU 서버
첫 토큰 지연 약 50~200 ms 약 500 ms ~ 3 s
출력 100만 토큰당 비용 약 $0.10 ~ $1 약 $5 ~ $30
일반 지식 쓸 만하나 제한적 폭넓음
복잡한 추론 약함~중간 강함
긴 컨텍스트 품질 128K에서 무난 1M 이상에서도 강함
프라이버시 로컬 실행으로 쉬움 클라우드 API라 어려움
파인튜닝 쉽고 저렴 어렵고 비쌈

크기 축에서는 다섯 구간으로 나뉩니다.

flowchart LR
  A["Tiny<br/>0.5B 미만<br/>임베디드 기기"] --> B["Small (SLM)<br/>0.5B ~ 10B<br/>휴대폰 / 노트북 / GPU 1장"]
  B --> C["Mid<br/>10B ~ 30B<br/>서버 GPU 1장"]
  C --> D["Large (LLM)<br/>30B ~ 70B<br/>다중 GPU 서버"]
  D --> E["Frontier<br/>100B ~ 1T+<br/>데이터센터 클러스터"]

그림 3.1.3 — 크기 축의 다섯 구간. SLM 구간은 대부분의 운영 사례에서 쓰기 쉬운 적정점입니다.

고객에게는 "호출량 × 호출당 비용"과 "메모리 × 장비 단가"를 먼저 계산해 보여 주고, 규모가 작을 때는 성능 우위를 택하고 규모가 클 때는 크기를 줄이는 방향으로 논의를 정리합니다.

3.1.4 SLM이 빛나는 사용 사례

SLM이 효과적인 곳은 작업이 좁고, 지연에 민감하고, 데이터가 민감한 경우입니다. 먼저 SLM이 중요한 여섯 가지 이유를 짚습니다.

대표 사용 사례는 여섯 가지입니다.

  1. 온디바이스 비서: 1B~3B 모델로 오프라인 글쓰기·코드·채팅 보조를 만듭니다. 1B는 메모리 약 2 GB로 최신 휴대폰에서 초당 약 30 토큰을 내므로 실시간 채팅에 충분합니다.
  2. 분류: 지원 티켓을 billing, technical, account 중 하나로 고르는 일입니다. 작게 파인튜닝한 0.5B 모델은 CPU 한 대에서 초당 수천 건을 분류합니다. 원문은 텍스트를 생성하지 않고 한 번의 계산으로 확률이 보정된 라벨을 돌려주는 System One 계열 모델도 이 용도의 새로운 선택지로 소개합니다.
  3. 구조화 추출: 이메일에서 발신자·날짜·할 일·마감일을 뽑는 일입니다. 제약 디코딩(유효한 JSON만 생성하도록 강제)을 쓰면 SLM이 특히 잘 합니다.
  4. 에이전트의 작업 헤드: 에이전트 시스템의 작은 단계(요청 라우팅, 목록에서 도구 선택, 출력 서식화)는 추론 모델이 필요 없습니다. 어려운 추론이 필요할 때만 큰 모델을 부릅니다(6.1, 3.2 참조).
  5. 도메인 파인튜닝 모델: 특정 국가의 특정 계약서 문체처럼 좁은 분야에서 3B에 도메인 예시 1만 건을 파인튜닝하면 같은 과업에서 일반 70B를 앞서기도 합니다.
  6. 대량 파이프라인: 하루 리뷰 1,000만 건의 감성 추출을 LLM API로 하면 약 $10,000, 자체 호스팅 SLM이면 약 $100입니다. 건당으로 환산하면 $0.001 대 $0.00001입니다.

작업 정의가 좁다는 것이 SLM 적합성의 첫 번째 신호이므로, 고객 요구를 "무엇을 입력받아 무엇을 내놓는가"로 먼저 좁혀 봅니다.

3.1.5 트레이드오프와 선택 기준

SLM은 마법이 아니며 한계가 분명합니다. 이 한계를 알아야 선택 기준이 나옵니다.

핵심 거래는 "추론력과 일반 지식을 덜 갖는 대신 속도와 낮은 비용을 얻는다"입니다. 이 격차는 세대마다 줄어듭니다(2026년 5월 글 기준).

선택 기준은 다음과 같습니다.

선택 조건
SLM 좁고 명확한 과업(분류·추출·라우팅), 하루 수백만 호출, 200 ms 미만 지연, 민감 데이터의 서버·기기 내 보관, 오프라인·온디바이스, 파인튜닝할 데이터 보유
LLM 다단계 심층 추론, 폭넓은 세계 지식, 1M 규모의 긴 컨텍스트, API 비용이 부담되지 않는 저호출량, 최고 품질을 위해 비용을 감수
하이브리드 대부분 단계는 단순하고 일부만 무거운 추론이 필요

하이브리드에서는 SLM이 앞단 라우터로서 라우팅·분류·추출·도구 선택을 맡고, 어려운 추론 단계에서만 LLM을 부릅니다.

flowchart TD
  I["입력"] --> R["SLM 라우터<br/>작고 빠름"]
  R -->|"단순 (예: 90%)"| S["SLM이 직접 처리"]
  R -->|"복잡 (예: 10%)"| L["LLM이 처리"]
  S --> O["출력"]
  L --> O

그림 3.1.5 — 하이브리드 구성. 트래픽의 90%가 단순하다면 LLM 비용은 10%의 요청에만 발생합니다.

FAQ에서 확인되는 사항도 같은 선상입니다. 좁은 과업에서는 파인튜닝한 SLM이 LLM을 이길 수 있고, 3B는 휴대폰에서 돌며, 긴 컨텍스트 지원 여부와 활용 품질은 별개이고, 격차는 계속 줄고, 프롬프트 문구에 민감합니다.

고객 현장에서는 먼저 하루 호출량과 지연 한도, 데이터 반출 가능 여부를 묻고, 과업별로 SLM·LLM·하이브리드 중 어디에 해당하는지 표로 판정한 뒤 소량 평가셋으로 검증합니다.


3.2 대형 추론 모델(LRM)

원문: What are Large Reasoning Models (LRMs) and How Are They Different from LLMs?

같은 LLM 계열이라도 "바로 답하는 모델"과 "먼저 생각하고 답하는 모델"은 지연·비용·정확도의 구조가 다릅니다. 이 절은 그 차이가 어디서 오는지, 어떻게 학습되는지, 언제 쓰고 언제 쓰지 말아야 하는지를 다룹니다(2026년 5월 글 기준).

3.2.1 LLM vs LRM의 차이

대형 추론 모델(Large Reasoning Model, LRM)은 답으로 곧장 뛰어들지 않고 긴 중간 추론 단계를 먼저 만든 뒤 최종 답을 내도록 학습된 LLM입니다. 이름은 Large(보통 7B~700B+ 파라미터), Reasoning(중간 단계를 길게 생성), Model(여전히 다음 토큰을 예측하는 신경망)의 합입니다. 추론 모델, 씽킹 모델도 같은 뜻입니다. 원문이 드는 예는 OpenAI GPT-5.5 Thinking, DeepSeek R1, Qwen3, Gemini 3의 Deep Think, Claude의 extended thinking, Grok 4.1의 Think 모드입니다.

차이를 보기 위해 원문이 계속 쓰는 문제 하나를 씁니다.

가게에서 펜은 2개에 5루피, 공책은 3권에 12루피입니다. 펜 6개와 공책 9권을 사면 모두 얼마입니까?

항목 일반 LLM LRM
답하는 방식 직접, 한 번에 먼저 생각하고 나중에 답
사용 토큰 적음 (100~500) 많음 (5,000~50,000)
지연 1~3초 10~120초
쿼리당 비용 낮음 10~30배
강점 단순 대화, 요약, 초안 수학, 코드, 논리, 계획
약점 어려운 다단계 문제 쉬운 일에는 느리고 비쌈
flowchart LR
  Q1["질문"] --> A1["짧은 답<br/>(빠름, 가끔 틀림)"]
  Q2["질문"] --> T["긴 사고 흔적"] --> A2["짧은 답<br/>(느림, 더 자주 맞음)"]

그림 3.2.1 — 위가 LLM, 아래가 LRM입니다. LRM은 LLM이 건너뛰는 사고 단계를 중간에 둡니다.

사고 흔적 안에서 일어나는 일은 새로운 부품이 아니라 더 많은 텍스트입니다. 모델은 문제를 쪼개고, 접근을 시도하고, 중간값을 적고, 마지막에 자기 답을 검산합니다. 시험 중 연습지에 풀이를 적는 꼼꼼한 학생과 같으며, 연습지가 추론 흔적(reasoning trace), 답안지에 쓰는 것이 최종 답입니다. 펜·공책 문제의 흔적은 <think> 안에 펜 6개 = 6 × 2.5 = 15루피, 공책 9권 = 9 × 4 = 36루피, 합계 51루피를 쓰고 "2개 묶음 3개 × 5 = 15"처럼 묶음 단위로 다시 검산합니다. 51은 직접 계산해도 맞습니다.

고객이 LRM이 다른 종류의 신경망이냐고 물으면, 같은 신경망이 학습으로 더 많은 토큰을 쓰도록 바뀐 것이라고 답합니다. 비용 협의에서는 "답이 짧아 보여도 청구는 긴 추론에 대해 나온다"를 먼저 확인합니다.

3.2.2 테스트 타임 컴퓨트: 오래 생각할수록 똑똑해진다

학습 시점 컴퓨트(train-time compute)는 더 큰 모델을 더 많은 데이터로 학습해 똑똑하게 만드는 방식이며, 학습 때 한 번 비용을 내면 이후 응답은 빠릅니다. LRM은 두 번째 손잡이인 테스트 타임 컴퓨트(test-time compute)를 더합니다. 답하는 순간 더 오래 생각해서 똑똑해지는 방식입니다.

원문이 인용한 OpenAI의 AIME 2024(어려운 고등학교 수학 경시) 공개 수치입니다.

모델과 조건 정답률
GPT-4o (일반 LLM) 약 12%
o1, 추론 1회 약 74%
o1, 병렬 64회 다수결 약 83%
o1, 1,000회 리랭킹 약 93%
그림 3.2.2 — 같은 학생이라도 연습지를 더 쓰면 답이 나아지지만, 그만큼 시간과 비용이 듭니다.
그림 3.2.2 — 같은 학생이라도 연습지를 더 쓰면 답이 나아지지만, 그만큼 시간과 비용이 듭니다.

많은 LRM API는 생각 예산(thinking budget)을 조절하게 합니다. 예산을 1,024, 8,192, 32,768 토큰 같은 값으로 두면 작은 예산은 빠르고 싼 답, 큰 예산은 느리지만 정확한 답을 냅니다. 최신 API는 질문의 복잡도에 따라 모델이 스스로 정하는 적응형 생각(adaptive thinking) 쪽으로 가고 있습니다. 토큰이 얼마나 빨리 나오느냐는 하드웨어 문제이며, 이 부분을 빠르게 만들려는 칩이 LPU입니다(12.5 참조).

고객에게는 정확도 곡선과 비용 곡선을 같이 보여 줍니다. 필요한 정확도에서 멈추는 지점이 곧 생각 예산입니다.

3.2.3 LRM의 학습 방식

일반 LLM은 인터넷 텍스트로 하는 사전학습과, 프롬프트를 따르게 하는 지시 튜닝(11.1 참조) 두 단계를 거칩니다. LRM은 그 위에 추론 과제에 대한 강화학습(1.14 참조)을 한 단계 더합니다.

  1. 정답이 알려진 어려운 문제를 줍니다.
  2. 같은 문제에 대해 긴 추론 흔적을 병렬로 여러 개(16, 32, 64개 같은 그룹) 생성하게 합니다.
  3. 어느 흔적이 정답에 도달했는지 확인합니다. 수학은 정답이 분명해서 자동으로 확인됩니다.
  4. 각 흔적을 같은 그룹의 나머지에 상대적으로 채점합니다. 그룹 평균보다 잘한 흔적은 강화하고 못한 흔적은 벌점을 줍니다.
  5. 다음에는 좋은 추론 패턴을 더 자주 따르도록 모델을 갱신합니다.

이 그룹 상대 채점이 DeepSeek R1 학습에 쓰인 GRPO(Group Relative Policy Optimization)의 핵심이며, 절대 목표가 아니라 그룹과 비교하는 방식이 이 규모에서 학습을 안정시킵니다. 이 전체를 검증 가능한 보상 기반 강화학습(Reinforcement Learning with Verifiable Rewards, RLVR)이라 부릅니다. 검증 가능이란 보상이 사람의 의견이 아니라 자동 검사기에서 나온다는 뜻입니다(사람 선호에 의존하는 RLHF와 구분됩니다, 11.6 참조).

사람이 끼지 않으므로 이 루프를 수백만 번 돌릴 수 있습니다. 그 결과 모델은 문제를 먼저 쪼개기, 한 단계 풀고 단위 확인하기, 실수를 발견하면 돌아가 다른 접근을 시도하기 같은 습관을 익히며, 긴 추론 흔적에서 보이는 것이 바로 이 습관입니다.

한계도 구조에서 나옵니다. 검사기가 있는 문제(수학·코드·퍼즐)에서만 이 방식이 잘 작동하므로, 정답이 하나로 정해지지 않는 고객 업무에서는 "자동 검사기를 만들 수 있는가"가 LRM 효과를 가늠하는 질문이 됩니다.

3.2.4 학습·예측 단계별 입출력 네 가지 경우

같은 두 모델을 학습과 예측 두 단계에서 보면 입력과 출력이 네 가지로 갈립니다.

경우 입력 출력 신호
LLM 학습 다음 토큰이 가려진 텍스트 (The capital of France is) 예측한 다음 토큰 (Paris) 손실: 실제 토큰과 얼마나 가까운가
LRM 학습 정답을 아는 어려운 문제 최종 답으로 끝나는 완전한 추론 흔적 여러 개 보상: 최종 답이 맞는가
LLM 예측 사용자 프롬프트 (Write a haiku about rain.) 직접 답(하이쿠), 내부 사고 없음 없음
LRM 예측 사용자 프롬프트 <think>...</think>의 긴 흔적과 짧은 최종 답 없음

입출력 형태가 다르면 장애 양상도 다릅니다. LLM은 틀린 답을 빠르게 내고, LRM은 느리게 틀리거나 예산에 막혀 흔적 중간에 끊깁니다. 그래서 LRM 서비스에는 응답 시간 제한과 토큰 한도를 함께 설계합니다.

3.2.5 LRM과 일반 LLM의 선택 기준

LLM과 LRM 가운데 고르는 기준은 과업이 몇 단계의 신중한 사고를 요구하는지, 틀렸을 때의 비용이 얼마인지입니다.

원문 게시 시점(2026년 5월)의 대표 LRM은 다음과 같습니다.

모델 특징
OpenAI GPT-5.5 Thinking OpenAI 추론 플래그십(2026년 4월 출시), 원문은 원본 추론 흔적을 숨기고 짧은 요약과 최종 답만 제공한다고 설명합니다. 이 부분은 외부 출처로 확인하지 못했습니다
DeepSeek R1 / R1-Zero 가중치 공개, 전체 흔적 표시, RLVR이 핵심 학습 단계. R1-Zero는 사람이 쓴 예시로 하는 지도 파인튜닝(SFT) 없이 규칙 기반 보상만으로 기본 모델 위에서 학습한 가장 순수한 RLVR 사례
DeepSeek V3.1·V4 생각 모드와 비생각 모드를 한 모델에 포함
Qwen3 Alibaba의 가중치 공개 모델, 한 모델이 생각·비생각 모드를 모두 지원하고 생각 예산 손잡이 제공
Gemini 3 Deep Think Gemini 계열 안의 추론 모드, 어려운 문제에 수십 초에서 수 분의 테스트 타임 컴퓨트 사용
Claude Opus 4.7 extended thinking Anthropic 공식 문서에 따르면 Opus 4.7은 생각 예산을 수동 지정하는 방식 대신 모델이 생각량을 정하는 적응형 생각(adaptive thinking)을 지원
Grok 4.1 Think 생각 단계에 X와 웹 대상 DeepSearch를 결합

모두 "먼저 생각하고 나중에 답한다"는 같은 핵심을 공유하며 차이는 모델 크기, 학습 데이터, 추론 흔적의 공개 여부입니다. 모델명과 기능은 변하므로 고객 제안 시점에 공식 문서로 다시 확인합니다.

고객 현장에서는 업무를 "단순 응답 / 신중한 다단계 / 단일 결정"으로 분류한 뒤, 호출 비중이 높은 단순 업무에 LRM이 배정되지 않았는지부터 점검합니다.

3.2.6 LRM 사용 시 흔한 실수

LRM은 비싸고 느린 도구이므로 실수의 대부분은 비용과 사용 방식에서 나옵니다.

  1. 모든 곳에 LRM 쓰기: 문장 번역이나 문단 요약에 LRM을 쓰면 일반 LLM이 1초에 끝낼 일에 10~30배 비용과 30초 대기를 치릅니다. 어려운 작업만 LRM으로 라우팅합니다(3.6 참조).
  2. 추론 토큰 비용 무시: 흔적이 숨겨져도 과금은 됩니다. 보이는 토큰이 200개인 쿼리가 뒤에서 15,000개의 추론 토큰을 썼을 수 있습니다. 청구 모델을 먼저 확인합니다.
  3. LRM 프롬프트에 "단계별로 생각하라" 추가: 모델은 이미 단계별로 생각하도록 학습되어 있어서 추가 지시가 대개 도움이 되지 않고 때로 혼란을 줍니다. 프롬프트는 간결하게 문제만 서술합니다(CoT 프롬프팅은 4.1 참조).
  4. 운영 트래픽에 생각 예산을 두지 않기: 하나의 어려운 입력이 수만 추론 토큰을 태울 수 있어서 쿼리당 비용이 크게 출렁이고, 한 건의 나쁜 입력이 하루 청구서를 좌우합니다. 대부분 경로는 8,192 토큰, 극히 어려운 경로만 32,768 토큰 같은 식으로 한도를 둡니다. 적응형 생각이 도움이 되지만 상한을 하드하게 두는 편이 안전한 기본값입니다.
  5. 추론 흔적을 최종 답으로 취급: 흔적은 초안이며 틀린 중간 단계, 임시 값, 수정이 섞여 있습니다. 최종 사용자에게는 최종 답만 보입니다.

FAQ의 내용도 이와 같습니다. LRM은 다른 종류의 신경망이 아니며, 흔적 공개 여부는 제품에 따라 다르고, RLVR은 사람 채점이 필요 없고, Qwen3처럼 한 모델이 두 모드를 지원합니다.

고객에게 LRM 도입을 제안할 때는 월 호출 수 × 평균 추론 토큰 × 토큰 단가를 먼저 계산하고, 생각 예산 상한과 응답 시간 상한을 계약서 수준의 운영 파라미터로 확정합니다.


3.3 전문가 혼합(Mixture of Experts, MoE)

원문: What is Mixture of Experts (MoE) and How Does It Work?

모델 카탈로그에는 "총 파라미터 수천억, 활성 수백억" 같은 표기가 자주 나옵니다. 이 절은 그 표기가 가리키는 구조, 곧 모델 내부에서 전문가를 고르는 라우터와 부하 분산을 다루며, 모델 전체의 구조적 조망은 2.10에 있습니다(2026년 4월 글 기준).

3.3.1 전문가(Expert)와 라우터(Router)

전문가 혼합(Mixture of Experts, MoE)은 큰 신경망 하나를 모든 입력에 쓰는 대신, 작은 네트워크인 전문가(expert) 여러 개를 두고 입력마다 몇 개만 켜는 구조입니다. 어느 전문가를 쓸지는 라우터(router)가 정합니다. 병원에 비유하면 모든 환자를 보는 의사 한 명이 아니라 심장·피부·뇌 전문의가 있고, 접수 담당자(라우터)가 환자를 맞는 전문의에게 보내는 구조입니다. 환자는 병원의 모든 의사를 만나지 않습니다.

밀집 모델(dense)은 모든 토큰이 모든 파라미터를 쓰는 모델입니다. 1,000억 파라미터 모델이면 토큰 하나마다 1,000억 개를 전부 씁니다. 이 구조에는 두 문제가 있었습니다.

MoE는 총 파라미터는 크게 두되 입력마다 일부만 쓰게 해서, 거대 모델의 이점을 전체 연산 비용을 내지 않고 얻는 방식입니다.

전문가의 정체: 현대 LLM에서 전문가는 작은 피드포워드 네트워크(feed-forward network)입니다. 트랜스포머에 이미 있는 그 피드포워드 층(2.8 참조)이며, 한 층에 8개, 64개, 128개가 나란히 놓입니다. 전문가가 수학이나 물리처럼 주제별로 특화된다는 것은 오해입니다.

용어 주의: "전문가"라는 이름은 오해를 부릅니다. 수학 전문가, 물리 전문가를 따로 학습시키지 않으며 수동 라벨링도 없습니다. 어떤 전문가가 어떤 입력을 맡을지는 학습 중 모델이 스스로 정하고, 실제로는 구두점, 단어 유형, 토큰 형태 같은 낮은 수준의 패턴으로 특화되는 경우가 많습니다.

라우터의 정체: 라우터는 토큰마다 어느 전문가가 처리할지 정하는 아주 작은 신경망이며, 실제로는 깊은 네트워크가 아니라 선형 층 하나와 Softmax입니다(1.10, 1.11 참조). 동작은 세 단계입니다.

  1. 입력 토큰에 대해 전문가마다 점수를 냅니다. 전문가가 8개면 점수 8개이며, 식은 Router(x) = Softmax(x · W_router)입니다. x는 입력 토큰, W_router는 라우터가 학습한 가중치 행렬이고, Softmax는 원점수를 합이 1인 확률로 바꿉니다.
  2. 점수가 가장 높은 top-k 전문가를 고릅니다. 대부분의 MoE 모델은 k = 2이고, Switch Transformer 같은 일부는 k = 1입니다.
  3. 토큰은 선택된 top-k 전문가에게만 가고 나머지는 이 토큰에 대해 완전히 건너뜁니다.
flowchart TD
  T["토큰"] --> R["라우터"]
  R -.-> E1["E1"]
  R -.-> E2["E2"]
  R ==> E3["E3 선택"]
  R -.-> E4["E4"]
  R ==> E5["E5 선택"]
  R -.-> E8["... E8"]
  E3 --> O3["Out_3"]
  E5 --> O5["Out_5"]
  O3 --> W["가중합"]
  O5 --> W
  W --> O["출력"]

그림 3.3.1 — 라우터가 E3와 E5를 고른 예. 선택되지 않은 전문가는 이 토큰에서 쉽니다.

트랜스포머 안의 위치: 트랜스포머 층은 멀티헤드 어텐션(2.9 참조)과 피드포워드 두 하위 층으로 이루어집니다. MoE 트랜스포머는 피드포워드 하위 층만 MoE로 교체하고, 어텐션은 그대로 둡니다. 모든 층이 MoE일 필요도 없어서, 밀집 층과 MoE 층을 번갈아 두는 모델도 있으며 이는 설계 선택입니다.

고객 질문에 "MoE는 모델 여러 개를 합친 앙상블입니까"가 나오면 아니라고 답합니다. 한 모델 안의 피드포워드 층만 여러 갈래로 나눈 구조입니다.

3.3.2 희소 활성화와 활성 vs 전체 파라미터

토큰당 몇 개의 전문가만 실행되므로 희소 활성화(sparse activation)된 모델이라고 부릅니다. 층마다 전문가가 8개이고 top-2를 고르면 토큰마다 8개 중 2개만 실행되고 6개는 쉽니다. 전체 파라미터는 8개 전문가를 모두 포함하지만 토큰당 연산은 2개 분량입니다.

예 전체 활성 활성 비율
전문가 8개, 각 10B, top-2 80B 20B 25%
Mixtral 8x7B 약 47B 약 13B 약 28%
그림 3.3.2 — 전문가 8개 중 2개만 켜집니다. 메모리에는 8개가 모두 올라가 있고 연산은 켜진 2개만 합니다.
그림 3.3.2 — 전문가 8개 중 2개만 켜집니다. 메모리에는 8개가 모두 올라가 있고 연산은 켜진 2개만 합니다.

고객과 모델을 비교할 때 "총 파라미터"는 메모리, "활성 파라미터"는 토큰당 연산과 지연을 가늠하는 숫자라고 구분해서 읽습니다.

3.3.3 부하 분산(Load Balancing)

라우터가 매 토큰마다 같은 전문가 두 개만 고르면 나머지 6개는 아무것도 배우지 못하고 모델의 용량이 낭비됩니다. 이것이 부하 불균형(load imbalance) 문제이며 MoE 학습의 실제 난제입니다.

운영하는 쪽에서는 요청이 특정 전문가에 쏠리면 해당 GPU가 병목이 되므로, 자체 호스팅 MoE의 성능 문제를 진단할 때 전문가별 토큰 분포를 가장 먼저 봅니다.

3.3.4 출력 결합 방식

라우터는 top-k를 고를 뿐 아니라 각 전문가를 얼마나 신뢰할지를 가리키는 가중치도 냅니다. 최종 출력은 선택된 전문가 출력들의 가중합이며, top-2라면 최종 출력 = w1 × Expert_1(입력) + w2 × Expert_2(입력)입니다. 가중치는 전체 전문가가 아니라 선택된 전문가들의 점수에만 Softmax를 적용해 얻으므로 합이 1입니다.

토큰 하나가 전문가 8개짜리 MoE 층에 들어오는 예입니다.

  1. 점수: 라우터가 8개 전문가에 점수를 매기고 상위 2개가 전문가 3(0.7)과 전문가 5(0.3)입니다.
  2. 실행: 전문가 3과 5만 실행되어 각각 출력 벡터 Out_3, Out_5를 만듭니다.
  3. 결합: 최종 출력 = 0.7 × Out_3 + 0.3 × Out_5. 가중치 합은 0.7 + 0.3 = 1.0입니다.
  4. 전달: 결과가 다음 트랜스포머 층으로 넘어갑니다.

점수가 높은 전문가 3의 출력이 더 신뢰받고, 모델은 한 전문가의 거친 답이 아니라 상위 전문가들이 섞인 부드러운 답을 얻습니다.

top-1 모델(Switch Transformer)에서는 이 섞는 단계가 없고 선택된 전문가 하나의 출력이 그대로 나갑니다. 이 점이 top-k의 k가 품질과 연산을 맞바꾸는 손잡이가 되는 이유입니다.

3.3.5 장점과 도전 과제

MoE가 널리 쓰이는 이유는 비용 대비 규모이고, 치르는 값은 메모리·통신·학습 난이도입니다.

장점

도전 과제

현대 LLM과의 관계: 원문은 Mixtral, DeepSeek-V2, DeepSeek-V3와 몇몇 프런티어 모델이 MoE 기반이며, 상위 비공개 모델 다수도 내부적으로 MoE를 쓴다는 강한 추측이 있다고 적습니다. 밀집 모델은 수천억 파라미터에서 학습과 서빙 비용이 극단적으로 커져 벽에 부딪히고, MoE는 토큰당 연산을 같은 속도로 늘리지 않고 총 크기를 키워 이 벽을 우회합니다(2026년 4월 글 기준, 비공개 모델의 내부 구조는 추측입니다).

고객 현장에서는 "이 MoE 모델이 빠르다"는 말을 곧바로 "메모리도 적게 든다"로 이어 받지 않습니다. 배치할 GPU의 총 메모리와 노드 간 통신 대역폭을 먼저 확인합니다.


3.4 멀티모달 AI(Multimodal AI)

원문: What is Multimodal AI? How It Works and Where It Is Used

고객의 실제 업무 자료는 PDF 속 표, 스크린샷, 통화 녹음, 현장 사진처럼 텍스트 밖에 있는 경우가 많습니다. 이 절은 하나의 모델이 여러 종류의 데이터를 어떻게 함께 다루는지, 어떤 유형이 있고 어디서 실패하는지를 설명합니다(2026년 5월 글 기준).

3.4.1 모달리티와 유니모달 vs 멀티모달

멀티모달 AI(Multimodal AI)는 두 종류 이상의 데이터를 동시에 이해하고 생성하는 AI입니다. Multi(여럿)와 Modal(모달리티에서 온 말)의 합이며, 하나의 모델이 텍스트를 읽고, 이미지를 보고, 오디오를 듣고, 영상을 보고, 이 가운데 어느 형태로든 응답할 수 있습니다. 오랫동안 AI는 텍스트 모델, 이미지 모델, 오디오 모델이 각자의 세계에 살며 서로 대화하지 못했는데 멀티모달이 이 벽을 허뭅니다. 새 콘텐츠를 만드는 이 능력은 생성형 AI의 영역입니다(2.1 참조).

모달리티(modality)는 정보가 우리에게 닿는 특정한 형태나 통로이며, 쉽게 말해 데이터의 종류입니다.

사람은 보고, 듣고, 읽고, 만지고, 냄새 맡은 신호를 하나의 이해로 섞는 자연스러운 멀티모달 시스템입니다. 환자를 진료하는 의사가 매일 이렇게 합니다.

유니모달 AI(Unimodal AI)는 한 종류의 데이터만 다룹니다. 텍스트만 읽는 스팸 분류기, 이미지만 보는 얼굴 검출기, 고양이/개를 판정하는 이미지 분류기가 예입니다.

용어 주의: 라벨이나 숫자는 모달리티가 아닙니다. 모달리티는 텍스트·이미지·오디오·영상 네 가지입니다. 스팸 분류기가 "spam"이라는 단어를 출력해도 언어를 생성한 것이 아니라 입력에 태그를 붙였을 뿐이므로 여전히 유니모달입니다.

멀티모달 AI는 두 종류 이상을 동시에 다룹니다. 사진과 질문을 받아 답하는 모델, 영상을 보고 텍스트로 요약하는 모델, 노래를 듣고 앨범 표지 이미지를 만드는 모델이 예입니다.

flowchart LR
  subgraph U["유니모달"]
    U1["텍스트 또는 이미지 또는 오디오<br/>(한 번에 하나)"] --> UM["모델"] --> UO["출력"]
  end
  subgraph M["멀티모달"]
    M1["텍스트"] --> MM["모델"]
    M2["이미지"] --> MM
    M3["오디오"] --> MM
    MM --> MO["출력"]
  end

그림 3.4.1 — 유니모달 모델은 한 번에 한 종류의 입력을, 멀티모달 모델은 여러 종류를 함께 받아 하나의 출력을 냅니다.

항목 유니모달 멀티모달
입력 한 종류 두 종류 이상 동시
이해 한 감각에 제한 감각을 가로질러 결합
용도 좁은 과업 풍부한 실제 과업
예 트윗 감성 분석 "이 이미지를 설명해 줘" 비서
비용 낮음 높음

멀티모달이 필요한 까닭은 현실이 멀티모달이기 때문입니다. 의사는 병력(텍스트)을 읽고, X-ray(이미지)를 보고, 심장 소리(오디오)를 듣고, 걸음걸이(영상)를 보고 하나의 진단으로 합칩니다. 텍스트만 읽는 모델은 오류 화면 스크린샷을 붙여도 도울 수 없고, 이미지만 보는 모델은 그 이미지에 대한 질문에 답할 수 없으며, 오디오만 듣는 모델은 녹음과 함께 온 회의 메모를 읽지 못합니다.

고객 업무를 볼 때 입력이 몇 종류인지, 출력이 어떤 종류여야 하는지를 먼저 적어 보면 멀티모달이 필요한 곳과 유니모달로 충분한 곳이 갈립니다.

3.4.2 멀티모달의 작동 방식

모든 멀티모달 시스템의 핵심 발상은 하나입니다. 모든 종류의 입력을 모델이 이해하는 공통 숫자 형태로 바꾼 뒤 함께 처리합니다. 순서는 인코딩 → 정렬 → 추론 → 생성입니다.

flowchart TD
  T["텍스트"] --> TE["텍스트 인코더"]
  I["이미지"] --> IE["이미지 인코더"]
  A["오디오"] --> AE["오디오 인코더"]
  TE --> S["공유 임베딩 공간"]
  IE --> S
  AE --> S
  S --> MM["멀티모달 모델"]
  MM --> O["출력 (텍스트 / 이미지 / 오디오)"]

그림 3.4.2 — 인코더가 각 입력을 벡터로 바꾸고 공유 공간에서 만나 하나의 모델이 처리합니다.

  1. 모달리티별 인코더: 모델은 날것의 텍스트, 픽셀, 음파를 이해하지 못하고 숫자만 이해합니다. 인코더(encoder)는 원본 데이터를 벡터(숫자 목록)로 바꾸는 작은 모델입니다. 의사가 X-ray는 눈으로, 심장 소리는 귀로, 기록은 독해로 보듯 종류마다 인코더가 다릅니다. 텍스트 인코더는 단어를, 이미지 인코더는 픽셀을(흔히 Vision Transformer 사용), 오디오 인코더는 음파를 벡터로 만듭니다. 이 벡터가 임베딩이며 입력의 의미를 모델이 쓸 수 있게 담은 벡터입니다(2.6 참조).
  2. 공유 임베딩 공간: 멀티모달의 핵심 요령입니다. 인코더들을 함께 학습해서 출력이 같은 벡터 공간에 놓이게 합니다. 학습은 맞는 짝(고양이 사진과 단어 "cat")을 가깝게 당기고 틀린 짝(고양이 사진과 단어 "car")을 멀리 밉니다. 그 결과 픽셀에서 나온 사진과 글자에서 나온 단어가 이 공간에서 가까워지고, 개 사진과 "dog"도 마찬가지입니다. 이 공간 덕분에 모델이 사진과 문장을 비교하거나 소리를 영상 프레임에 맞출 수 있습니다.
  3. 멀티모달 모델: 공유 임베딩이 하나의 모델, 대개 트랜스포머(2.8 참조)로 들어가서 모든 입력을 한꺼번에 가로질러 추론합니다. 부엌 사진과 "의자가 몇 개입니까?"를 주면 이미지 임베딩과 텍스트 임베딩을 함께 보고 답합니다.
  4. 출력: 모델과 과업에 따라 텍스트, 이미지, 오디오, 영상이 될 수 있습니다.

끝에서 끝까지 예를 들면 다음 순서입니다.

이 구조에서 실패는 대개 정렬에서 시작합니다. 공유 공간이 부실하면 사진과 문장이 연결되지 않으므로, 고객의 도메인(공장 도면, 의료 영상 등)이 학습 분포에서 먼 경우 소량 샘플로 먼저 확인합니다.

3.4.3 세 가지 대표 유형

현실의 멀티모달 시스템은 입출력 모달리티의 관계에 따라 세 유형으로 나뉩니다.

유형 입력 → 출력 예
멀티모달 이해 여러 모달리티 → 한 모달리티(대개 텍스트) GPT-4V, Gemini, 비전 기능이 있는 Claude
교차 모달 생성 한 모달리티 → 다른 모달리티 텍스트→이미지(DALL-E, Midjourney), 텍스트→영상(Sora, Veo), 오디오→텍스트(Whisper)
교차 모달 정렬 둘 이상 모달리티를 같은 공유 공간에 배치 CLIP: 텍스트로 이미지 검색

원문이 드는 실제 모델은 다음과 같습니다(2026년 5월 글 기준).

고객이 "이미지를 다루는 AI"를 요청하면 위 표에서 입력은 이미지이고 출력은 텍스트인지(이해), 이미지인지(생성), 검색 결과인지(정렬)를 먼저 확정해야 모델 후보가 정해집니다.

3.4.4 사용 사례와 흔한 실수

멀티모달은 현실의 풍부한 과업에서 쓰이며, 실수는 대부분 필요 이상으로 쓰거나 정렬·평가를 소홀히 하는 데서 나옵니다.

사용 사례

흔한 실수

실수 설명
"텍스트 + 이미지"로만 이해 오디오, 영상, 센서 데이터, 3D 형상도 모달리티입니다. 자율주행차는 카메라·레이더·LIDAR를 섞습니다.
한 모델이 모든 일에 맞다고 가정 어떤 과업에는 집중된 유니모달 모델이 맞습니다. 멀티모달이 항상 낫지는 않습니다.
데이터 품질 무시 모달리티 사이의 정렬이 모델 품질의 상한입니다. 사진에 잘못된 캡션 같은 나쁜 짝은 나쁜 결과로 이어집니다.
비용 망각 멀티모달 모델은 유니모달보다 무겁고 느립니다. 추가 신호가 값을 하는 곳에 씁니다.
모달리티별 평가 생략 텍스트에 강하고 오디오에 약할 수 있어서 각각과 결합을 따로 시험해야 합니다.
너무 많은 모달리티를 한꺼번에 새 모달리티는 잡음, 지연, 위험을 더합니다. 과업에 분명한 가치가 있을 때만 더합니다.
편향 간과 각 모달리티와 학습 짝에서 편향이 들어올 수 있으므로 유니모달과 마찬가지로 출력의 불공정한 패턴을 점검합니다.

FAQ에서 확인되는 내용도 같습니다. 스팸 분류기는 멀티모달이 아니고, 멀티모달이 항상 낫지 않고, Whisper는 오디오 입력과 텍스트 출력이므로 교차 모달 생성의 예이며, 고양이 사진과 단어 "cat"의 의미가 같다는 것은 공유 공간에서의 근접으로 알아냅니다.

고객 현장에서는 "이 업무에 실제로 추가 모달리티가 필요한가"를 모달리티별로 정확도 향상, 지연 증가, 비용 증가를 놓고 한 표에 적어 판단합니다.


3.5 비전-언어 모델(VLM)

원문: How does a Vision-Language Model (VLM) work?

고객이 영수증, 스크린샷, 차트 이미지를 모델에 넣겠다고 할 때 비용과 정확도를 가늠하려면 이미지가 모델 안에서 어떤 모양의 입력이 되는지 알아야 합니다. 이 절은 3.4의 시각-언어 유형을 구성 요소 단위로 분해합니다(2026년 10월 글 기준).

3.5.1 컴퓨터가 이미지를 보는 방식

비전-언어 모델(Vision-Language Model, VLM)은 이미지와 텍스트를 함께 입력받아 같이 이해하고 텍스트로 답하는 AI 모델입니다. 부엌 사진과 "이 테이블 위 재료로 뭘 요리할 수 있나요?"를 주면 달걀·토마토·양파를 보고 "토마토와 양파를 넣은 오믈렛을 만들 수 있습니다"라고 답합니다. ChatGPT, Claude, Gemini에 사진을 올려 질문할 때 일하는 것이 VLM입니다. 대표 과업은 사진 설명, 이미지 질의응답, 스크린샷·영수증·문서의 글자 읽기, 차트·도표 이해입니다.

컴퓨터는 고양이나 나무를 보지 못하고 숫자만 봅니다. 이미지는 픽셀(pixel)이라는 작은 색 점의 격자이고, 픽셀마다 빨강(R)·초록(G)·파랑(B)의 세기를 0~255 숫자 세 개로 갖습니다. 순수한 빨강은 [255, 0, 0], 흰색은 [255, 255, 255]입니다.

LLM이 다루는 대상은 토큰의 임베딩 열(2.4, 2.6 참조)이고 이미지는 픽셀 격자이므로, 둘은 전혀 다른 형태의 데이터입니다. 영어만 읽는 작가에게 그림을 보여 주고 이야기를 부탁하는 비유로 풀 수 있습니다. 작가는 그림을 볼 수 없으므로 두 조력자를 둡니다. 그림의 세부를 자기만의 메모로 적는 그림 전문가와, 그 메모를 작가가 읽을 영어 문장으로 바꾸는 번역가입니다. 작가는 영어 메모와 질문을 읽고 이야기를 씁니다. 이 구조가 VLM의 세 부분이며 전문가는 비전 인코더, 번역가는 프로젝터, 작가는 언어 모델입니다.

flowchart TD
  IMG["이미지"] --> VE["비전 인코더<br/>(그림 전문가)"] --> PV["패치 벡터"] --> PR["프로젝터<br/>(번역가)"] --> VT["시각 토큰"]
  Q["텍스트 질문"] --> TT["텍스트 토큰"]
  VT --> LM["언어 모델<br/>(작가)"]
  TT --> LM
  LM --> A["텍스트 답"]

그림 3.5.1 — 인기 있는 VLM의 세 부분. 이미지는 시각 토큰으로 바뀌어 텍스트 토큰과 한 열로 합쳐집니다.

고객 문서가 이미지로만 들어온다면 먼저 이 숫자 격자가 모델에 얼마나 큰 입력이 되는지(토큰 수 계산은 3.5.4 참조)를 확인합니다.

3.5.2 비전 인코더와 CLIP

비전 인코더(vision encoder)는 이미지를 이해해서 벡터(숫자 목록)로 바꾸는 부분입니다. 가장 흔한 것이 Vision Transformer(ViT)이며 LLM 안에 쓰이는 트랜스포머 구조를 이미지에 적용한 것입니다. 단계는 네 가지입니다.

  1. 패치로 자르기: 이미지를 패치(patch)라는 작은 정사각형으로 자릅니다. 336 × 336 이미지를 14 × 14 픽셀 패치로 자르면 한 변에 24개, 24 × 24 = 576개입니다. 패치는 문장 속 단어처럼 행 순서로 읽습니다.
  2. 패치를 벡터로: 14 × 14 패치는 14 × 14 × 3 = 588개의 숫자입니다. 이를 한 줄로 펴서 학습된 층에 통과시켜 벡터로 만듭니다. 이제 패치 하나가 이미지의 "단어" 하나입니다.
  3. 위치 임베딩 추가: 패치가 이미지의 어디 있었는지 알려 줍니다. 없으면 하늘 패치가 위인지 아래인지 모릅니다.
  4. 트랜스포머 층 통과: 어텐션(2.9 참조)으로 모든 패치가 다른 모든 패치를 봅니다. 귀 패치가 눈 패치와 털 패치를 보며 "고양이 얼굴"이라고 함께 이해합니다.

결과는 패치당 벡터 하나이고, 이 벡터는 날것의 색이 아니라 의미를 담습니다. 그림 전문가의 사적인 메모에 해당합니다.

그렇다면 인코더는 사물이 무엇인지 어떻게 배웠을까요. 많은 VLM이 2021년 OpenAI가 공개한 CLIP(Contrastive Language-Image Pre-training)의 비전 인코더를 가져옵니다.

비전 인코더가 이미 언어와 맞닿아 있다는 점은, 고객 도메인(예: 공정 사진)이 CLIP이 본 인터넷 이미지 분포와 멀 때 성능이 떨어질 수 있다는 판단 근거가 됩니다.

3.5.3 프로젝터

비전 인코더가 낸 패치 벡터는 인코더만의 사적인 언어이며 LLM이 읽을 수 없습니다. 예를 들어 비전 인코더는 크기 1,024 벡터를 내고 LLM은 크기 4,096 임베딩을 기대합니다. 크기만이 아니라 숫자 하나하나의 의미도 다릅니다.

프로젝터(projector)는 각 패치 벡터를 LLM이 단어 임베딩으로 읽을 수 있는 벡터로 바꾸는 작은 신경망입니다.

patch_vectors = np.random.rand(576, 1024)     # 비전 인코더 출력 (패치당 1,024)
projector = np.random.rand(1024, 4096)        # 학습으로 정해지는 표
visual_tokens = patch_vectors @ projector     # (576, 4096)

원문의 NumPy 예제는 난수로 데이터 모양의 흐름만 보여 줍니다. 곱셈 뒤 시각 토큰의 모양이 (576, 4096)이 되어 LLM의 임베딩 크기와 같아졌다는 점이 핵심입니다.

대안 설계도 있으며 프로젝터 방식이 가장 흔할 뿐 유일하지는 않습니다.

설계 이미지를 잇는 방식 예
프로젝터 모든 패치를 시각 토큰으로 바꿔 텍스트 앞에 놓음 LLaVA
쿼리 기반 커넥터 학습된 소수의 쿼리가 이미지에서 중요한 정보를 끌어와 토큰이 적음 BLIP-2 (Q-Former)
크로스 어텐션 이미지를 토큰으로 넣지 않고, LLM 내부 추가 층이 글을 읽으며 이미지를 봄 Flamingo
네이티브 멀티모달 처음부터 이미지와 텍스트 토큰을 함께 학습 Chameleon

고객이 쓰려는 상용 VLM이 어떤 연결 방식인지는 대개 공개되지 않지만, 이미지 한 장당 과금되는 토큰 수가 공개되어 있다면 이 설계 차이가 비용으로 나타난 것입니다.

3.5.4 언어 모델

언어 모델은 시각 토큰과 텍스트 토큰이 이어진 긴 열 하나를 받습니다.

[시각 토큰 1] [시각 토큰 2] ... [시각 토큰 576] [What] [is] [in] [this] [image] [?]

LLM은 이 열을 일반 텍스트와 똑같이 읽습니다. 어텐션을 통해 텍스트 토큰이 시각 토큰을 봅니다. "this"가 시각 토큰을 보고 고양이 패치를 찾습니다. 그런 다음 한 번에 한 토큰씩 답을 만듭니다. 예를 들면 "This is an orange cat sleeping on a blue sofa."입니다. LLM은 픽셀을 보지 않고 토큰만 보며, 어떤 토큰은 단어에서 왔고 어떤 토큰은 이미지에서 왔습니다.

원문 코드의 출력은 다음과 같습니다.

Patches: 576
Visual tokens: (576, 4096)
LLM input: (584, 4096)
그림 3.5.4 — 이미지 한 장은 576토큰으로, 8토큰짜리 질문보다 72배 긴 줄을 만듭니다.
그림 3.5.4 — 이미지 한 장은 576토큰으로, 8토큰짜리 질문보다 72배 긴 줄을 만듭니다.

FAQ의 질문인 "LLM이 픽셀을 보는가"의 답은 아니오입니다. 비전 인코더가 패치를 벡터로, 프로젝터가 그 벡터를 시각 토큰으로 바꾸고, 언어 모델은 시각 토큰과 텍스트 토큰을 한 열로 읽습니다.

고객 견적에서는 이미지 한 장의 토큰 수에 월 이미지 수를 곱한 값을 텍스트 입력 비용에 더해서 계산합니다.

3.5.5 VLM 학습 방식

VLM은 이미 잘하는 부품을 재사용해서 싸게 학습합니다. LLaVA의 레시피가 단순해서 좋은 예입니다. 출발점은 이미 학습된 두 부분, 곧 CLIP의 비전 인코더와 언어를 이미 아는 LLM이며, 새로 만드는 것은 프로젝터뿐입니다.

  1. 번역가 가르치기: 비전 인코더와 LLM을 동결(frozen)(파라미터를 갱신하지 않음)하고 프로젝터만 대규모 이미지-캡션 쌍으로 학습합니다. 과업은 이미지를 보고 캡션을 만드는 것이며, 이미지 벡터를 LLM의 언어로 바꾸는 법을 프로젝터가 익힙니다.
  2. 지시 따르기 가르치기: 이미지와 질문, 좋은 답이 있는 예시로 학습합니다. 거리 사진과 "건너도 안전한가요?"라는 질문에 유용한 답이 짝지어진 식이며, 이 단계에서는 프로젝터와 LLM을 함께 학습합니다. 비전 인코더는 보통 동결 상태로 둡니다. VLM이 이미지에 대해 유용한 대화를 하도록 배웁니다.
부분 1단계 2단계
비전 인코더 동결 동결
프로젝터 학습 학습
LLM 동결 학습

파인튜닝(11.1 참조)으로 VLM을 고객 도메인에 맞출 때도 어느 부분을 동결하고 어느 부분을 학습할지가 비용을 정합니다. 프로젝터만 손보면 싸지만 표현력이 제한됩니다.

3.5.6 잘 되는 곳과 실패하는 곳

VLM은 일반적인 시각 이해에 강하고, 정확한 수치·위치·작은 글자에는 약합니다.

잘 되는 곳

실패하는 곳

실패 원인과 양상
환각 이미지에 없는 것을 묘사합니다. 탁자에 컵이 없는데 있다고 말하는 식입니다. 큰 원인은 LLM이 텍스트에서 얻은 강한 습관이며, 컵은 보통 부엌 탁자에 있으므로 빈 곳을 "보통 있는 것"으로 채웁니다(2.18 참조).
개수·정확한 위치 "하늘에 새가 몇 마리?", "열쇠가 휴대폰 왼쪽에 있나?" 같은 질문에 자주 틀립니다.
작은 세부 큰 이미지를 비전 인코더 크기에 맞춰 줄이면 작은 글자와 작은 물체가 뭉개집니다. 최신 VLM 다수는 큰 이미지를 여러 타일로 잘라 각각 인코딩해 고치지만 토큰이 더 듭니다.
비용 이미지 한 장이 수백~수천 토큰을 더해 느리고 비싸집니다.

고객 현장에서는 문서의 글자 크기와 해상도, 개수·위치 질문의 비중을 먼저 확인합니다. 작은 글자의 표나 개수 세기가 핵심이라면 단일 VLM 호출만으로 약속하지 말고 해상도 분할과 검증 단계를 계획에 포함합니다.


3.6 LLM 라우팅(LLM Routing)

원문: What is LLM Routing? How to Send Each Query to the Right LLM

고객은 비용을 줄이면서 품질은 유지하길 원하고, 모델 풀에는 크기와 가격이 다른 모델이 여럿 있습니다. 이 절은 모델 안의 전문가 선택(3.3)과 달리 모델과 모델 사이에서 요청을 나누는 애플리케이션 계층의 장치를 다룹니다(2026년 5월 글 기준).

3.6.1 라우터의 구조

LLM 라우팅(LLM Routing)은 모든 쿼리를 같은 LLM에 보내지 않고 비용·지연·품질을 기준으로 쿼리마다 알맞은 LLM을 고르는 일입니다. 여러 LLM 앞에 놓인 계층이 쿼리를 보고 어느 LLM이 답할지 정합니다. 쉬운 쿼리는 작고 싸고 빠른 LLM에, 어려운 쿼리는 크고 똑똑하고 비싼 LLM에 보내서 품질을 잃지 않고 비용을 아낍니다. 병원 접수 담당자가 감기는 일반의에게, 심장 문제는 심장내과에, 뇌 문제는 신경과에 보내는 것과 같습니다. 접수 담당자가 라우터이고 의사가 LLM이며 환자가 쿼리입니다.

라우팅이 필요한 이유는 모델들이 세 가지에서 다르기 때문입니다.

원문의 수치로 프런티어 LLM이 출력 100만 토큰당 약 $15, 작은 LLM이 약 $0.50이면 격차는 15 ÷ 0.5 = 30배입니다. "2 + 2는?", "이 이메일 요약해 줘", "프랑스의 수도는?" 같은 대부분의 쿼리는 쉬우므로, 전부를 프런티어 LLM에 보내는 것은 비용과 시간의 낭비입니다. 가격 수치는 시점에 따라 달라지므로 2026년 5월 글의 예시로 읽습니다.

라우터는 네 부분으로 구성됩니다.

flowchart TD
  Q["사용자 쿼리"] --> R["LLM 라우터"]
  R --> S["작은 LLM"]
  R --> M["중간 LLM"]
  R --> F["프런티어 LLM"]
  R --> C["코드 전문 LLM"]
  S --> A["응답"]
  M --> A
  F --> A
  C --> A

그림 3.6.1 — 쿼리가 라우터를 거쳐 LLM 풀의 한 모델로 전달되고 응답이 사용자에게 돌아갑니다.

  1. 쿼리: 사용자의 원래 입력이며 라우터가 보는 유일한 정보입니다.
  2. 라우터: 어느 LLM이 처리할지 정하는 작고 빠른 구성 요소입니다. 규칙 집합, 작은 분류기, 임베딩 조회, 심지어 작은 LLM이 될 수 있습니다.
  3. LLM 풀: 강점·비용·속도가 다른 LLM의 집합입니다. 작은 LLM, 중간 LLM, 프런티어 LLM, 코드 전문 LLM이 함께 있을 수 있습니다.
  4. 선택된 LLM: 라우터가 이 쿼리에 고른 하나의 LLM이며 쿼리가 전달되고 응답이 사용자에게 반환됩니다.

라우터 자신은 빨라야 합니다. 경험칙으로 라우터 자체의 지연을 선택된 LLM 지연의 10% 아래로 둡니다. 선택된 LLM이 1초 걸리면 라우터는 많아야 100 ms를 더해야 합니다.

LLM 풀을 구성하는 고객 현장에서는 풀의 모델 목록, 모델별 단가·지연, 그리고 라우터가 볼 수 있는 입력(쿼리뿐인지 대화 이력도 포함하는지)부터 확정합니다.

3.6.2 규칙 기반 라우팅

규칙 기반 라우팅은 가장 단순한 전략으로, 쿼리의 키워드, 길이, 패턴을 보고 LLM을 고릅니다. 원문의 함수는 이렇게 동작합니다.

def route(query: str) -> str:
    q = query.lower()
    if "code" in q or "function" in q or "bug" in q:
        return "code-llm"
    if len(q) < 50:
        return "small-llm"
    if len(q) < 200:
        return "mid-llm"
    return "frontier-llm"

규칙은 쿼리 유형이 몇 개로 뚜렷하고 변하지 않는 소규모 시스템에서는 충분합니다. 유형이 늘면 예외가 규칙보다 빨리 늘어납니다.

3.6.3 분류기 기반 라우팅

분류기 기반 라우팅은 과거 (쿼리, 최적 LLM) 쌍의 데이터로 작은 분류기를 학습시킨 뒤, 실행 시 분류기가 쿼리를 받아 알맞은 LLM을 예측하게 합니다.

"쿼리별 최적 LLM"이라는 라벨은 누가 정하는가가 이 방식의 실질적 난관입니다. 고객 데이터에 모델별 응답 품질 평가가 없다면 먼저 그 라벨을 만드는 평가 작업이 필요합니다(8.1 참조).

3.6.4 임베딩 기반 라우팅

임베딩 기반 라우팅은 각 쿼리를 의미를 담은 벡터인 임베딩으로 바꾸고(2.6 참조), LLM마다 하나씩 그 LLM이 잘하는 쿼리 유형을 대표하는 소수의 기준 임베딩(reference embedding)을 둡니다. 새 쿼리가 오면 가장 가까운 기준 임베딩을 찾고, 그 기준을 소유한 LLM이 쿼리를 처리합니다. 가까움은 코사인 유사도로 잴 수 있습니다(2.7 참조).

기준 임베딩이 곧 "이 모델이 잘하는 쿼리"의 정의입니다. 고객의 실제 쿼리 로그에서 대표 예시를 뽑아 기준으로 삼아야 라우팅이 현장 분포에 맞습니다.

3.6.5 LLM-as-Router

LLM-as-Router는 작고 싼 LLM을 라우터로 씁니다. 라우터 LLM은 대상 LLM과 별개이며 쿼리를 읽고 어느 대상 LLM이 답할지 고르는 일만 합니다. 쿼리와 같은 언어를 쓰므로 고정 규칙보다 의도와 난이도를 훨씬 잘 이해합니다.

def route_with_llm(query: str) -> str:
    prompt = f"""Pick the best LLM for this query.
Options: small-llm, mid-llm, frontier-llm, code-llm.
Query: {query}
Answer with one word from the options:"""
    return router_llm(prompt).strip()

프롬프트로 정책을 바꿀 수 있다는 유연함은 곧 변경 관리의 부담이기도 합니다. 라우터 프롬프트도 코드처럼 버전을 남기고 평가셋으로 회귀 시험을 합니다(8.1 참조).

3.6.6 캐스케이드 라우팅

캐스케이드(cascade) 라우팅은 비용 절감이 가장 큰 전략으로, 가장 싼 LLM에 먼저 보내고 답이 확신이 낮거나 틀려 보이면 더 큰 LLM으로 올립니다.

flowchart LR
  Q["쿼리"] --> S["작은 LLM"] --> C1{"확신?"}
  C1 -->|예| R1["답 반환"]
  C1 -->|아니오| M["중간 LLM"] --> C2{"확신?"}
  C2 -->|예| R2["답 반환"]
  C2 -->|아니오| F["프런티어 LLM"] --> R3["답 반환"]

그림 3.6.6 — 각 LLM은 답하거나 한 단계 큰 LLM에 넘깁니다.

def cascade(query: str) -> str:
    answer = small_llm(query)
    if is_confident(answer):
        return answer
    answer = mid_llm(query)
    if is_confident(answer):
        return answer
    return frontier_llm(query)

전략별 비교는 다음과 같습니다.

전략 속도 비용 유연성 학습 필요
규칙 기반 가장 빠름 가장 낮음 낮음 아니오
분류기 기반 빠름 낮음 중간 예
임베딩 기반 빠름 낮음 중간 아니오
LLM-as-Router 중간 중간 높음 아니오
캐스케이드 어려운 쿼리에서 느림 평균적으로 최저 높음 아니오

단연 최선인 전략은 없습니다. 뚜렷한 유형이 몇 개뿐인 작은 시스템에는 규칙 기반이 충분하고, 쿼리가 섞여 있는 큰 제품에는 캐스케이드나 LLM-as-Router가 낫습니다.

3.6.7 흔한 실수와 수정

라우팅은 공학 비용이 있어서 이득이 날 때만 도입하며, 도입한 뒤에는 아래 여섯 가지 실수를 점검합니다.

도입이 값을 하는 신호

LLM 라우팅과 MoE의 구분

항목 LLM 라우팅 MoE (3.3 참조)
위치 LLM 바깥, 애플리케이션 계층 하나의 LLM 안, 모델 계층
라우팅 대상 사용자 쿼리 전체 토큰 하나씩
고르는 것 완전한 LLM 하나 소수의 전문가 하위 네트워크
제어 주체 애플리케이션 개발자 모델 아키텍처

둘 다 라우터를 쓰고 연산의 부분집합을 고르지만, LLM 라우팅은 시스템 수준에서, MoE는 한 모델 안에서 일합니다.

여섯 가지 실수와 수정

실수 수정
라우터가 너무 무거움: 프런티어 LLM을 라우터로 쓰면 라우터 비용이 절감액보다 커질 수 있음 아주 작은 LLM, 분류기, 단순 규칙을 라우터로 사용
폴백 경로 없음: 선택된 LLM이 실패하거나 타임아웃되거나 나쁜 답을 낼 수 있음 항상 폴백 LLM을 두고, 작은 LLM이 실패하면 중간으로 내려받는 식으로 이어감
라우터가 지연을 너무 더함: 본 호출 앞에 500 ms가 붙으면 사용자 경험이 무너짐 규칙은 마이크로초, 분류기는 수 ms, 작은 LLM은 200 ms 이하로 유지
라우팅과 오케스트레이션의 혼동: 라우팅은 한 쿼리에 LLM 하나를 고르고, 오케스트레이션은 여러 단계에 걸쳐 여러 LLM을 조율함(6.15 참조) 라우터를 하나의 집중된 구성 요소로 만듦
관측성 부재 어느 LLM이 어느 쿼리를 처리했는지, 비용·지연·품질을 로그로 남겨 라우터를 조정하고 잘못된 결정을 잡음(8.4 참조)
잘못된 신호로 라우팅: "Prove the Riemann hypothesis"는 짧지만 어렵고, "Please summarize this email for me, thanks"는 길지만 쉬움 길이만이 아니라 의도와 난이도 신호를 사용

FAQ의 질문, 즉 라우팅과 오케스트레이션이 같은지, 라우터가 얼마나 빨라야 하는지, 프런티어를 라우터로 써도 되는지, 길이가 좋은 신호인지, 어느 전략이 가장 아끼는지에 대한 답은 위 표와 항목에 모두 반영되어 있습니다. 길이 신호만으로는 부족하고 캐스케이드가 가장 아끼되 어려운 쿼리가 느려집니다.

고객 현장에서는 호출량, 쿼리 난이도 분포, 단가를 가지고 위 신호 네 가지를 점검해 라우팅이 값을 하는지 먼저 판정하고, 도입한다면 폴백과 로그를 처음부터 포함시켜 설계합니다.


3.7 고객이 내일 묻는다면

각 질문에 소리 내어 답해보고, 막히면 표시된 절로 돌아가십시오. 로드맵이 제시한 통과 기준은 "내일 고객이 물어도 설명하고 결정할 수 있는가"입니다.

  1. "가장 큰 모델 하나로 전부 처리하면 안 되나요?" 작은 모델이 맞는 작업과 맞지 않는 작업을 어떻게 가릅니까? (3.1.4, 3.1.5)
  2. "개인정보라 데이터를 밖으로 못 보냅니다. 모델을 우리 서버나 노트북에 올릴 수 있나요?" 무엇을 보고 가능 여부를 정합니까? (3.1.1, 3.1.3)
  3. "추론 모델이 일반 모델보다 훨씬 비싸다는데 왜 그렇습니까?" 어떤 토큰에 비용이 붙고 무엇으로 상한을 둡니까? (3.2.2, 3.2.6)
  4. "요약 업무에 추론 모델을 쓰라고 팀에서 제안했습니다." 어떤 기준으로 쓸지 말지 결정합니까? (3.2.5)
  5. "추론 모델 프롬프트에 '단계별로 생각하라'를 넣어야 하죠?" 무엇이라고 답합니까? (3.2.3, 3.2.6)
  6. "이 모델은 700억 파라미터인데 80억짜리처럼 빠르다고 합니다. 사실인가요?" 총 파라미터와 활성 파라미터로 설명해 보십시오. (3.3.2)
  7. "MoE는 모델 여러 개를 합친 앙상블 아닙니까?" 무엇이 다른지 말해 보십시오. (3.3.1, 3.3.4)
  8. "MoE 모델에서 일부 전문가만 계속 쓰이면 무슨 문제가 있나요?" 학습에서는 어떻게 막습니까? (3.3.3, 3.3.5)
  9. "영수증 사진과 음성 메모를 한 번에 분석하고 싶습니다." 멀티모달 모델은 서로 다른 입력을 어떻게 한 모델이 받습니까? (3.4.2, 3.4.3)
  10. "스캔한 문서 이미지를 하루 수만 장 넣을 예정인데 비용이 얼마나 나올까요?" 이미지 한 장을 어떤 단위로 환산해 견적합니까? (3.5.1, 3.5.4)
  11. "비전 모델이 사진에 없는 물건을 있다고 하고, 개수도 자주 틀립니다." 왜 그렇고 어떻게 대응합니까? (3.5.6, 3.4.4)
  12. "요청마다 모델을 다르게 쓰고 싶은데 언제 라우팅이 값을 합니까?" 어떤 조건에서 도입을 정당화합니까? (3.6.7)
  13. "라우터를 만들었는데 짧은 어려운 질문이 작은 모델로 갑니다." 어떤 방식이 있고 무엇을 고칩니까? (3.6.2, 3.6.3, 3.6.7)
  14. "라우팅과 MoE는 같은 것 아닙니까? 캐스케이드는 또 뭔가요?" 위치와 단위로 구분해 설명해 보십시오. (3.3.1, 3.6.6, 3.6.7)