LLM 맥락 이해 과정

KURTY·2025년 9월 18일
0

LLM

목록 보기
1/8

LLM 맥락 이해 과정

LLM 맥락 이해의 다층적 구조

대규모 언어 모델(LLM)이 인간의 자연어를 이해하고 맥락에 맞는 응답을 생성하는 능력은 텍스트 패턴을 인식하는 것을 넘어서 복잡하고 다층적인 구조이다. 이는 단일한 기술이나 단일한 단계로 이뤄지는 것이 아니라, 여러 계층의 기술이 유기적으로 결합되어 작동하는 시스템이다.

LLM의 맥락 이해 과정은 크게 네 가지 주요 단계로 구분할 수 있다. 첫째, 자연어를 기계가 이해할 수 있는 수치적 형태로 변환하는 기초적 변환 단계이다. 둘째, 변환된 데이터를 바탕으로 토큰 간의 복잡한 관계를 학습하는 핵심 엔진 단계이다. 셋째, 모델의 단기적 한계를 극복하고 장기적인 맥락을 유지하기 위한 맥락 확장 및 관리 단계이다. 마지막으로, 내부 지식의 한계를 넘어 외부 정보와 인간의 의도를 결합하는 외부 지식 통합 및 모델 유도 단계이다.

기초적 맥락 이해: 자연어를 기계어로 변환하는 과정

토큰화: 자연어의 해체와 재구성

LLM이 사용자의 자연어 입력을 처리하는 첫 단계는 토큰화(tokenization)이다. 이 과정은 연속된 텍스트를 LLM이 처리할 수 있는 작은 단위인 토큰(token)으로 분해하는 작업이다. LLM의 전체 워크플로우에서 가장 기본적인 단계인 토큰화는 모델의 성능, 효율성, 그리고 비용에 직접적인 영향을 미친다.

토큰화의 방식은 크게 세 가지고 나뉜다.

  • 단어 토큰화(Word tokenization): 공백이나 구두점을 기준으로 텍스트를 개별 단어로 분리하는 가장 간단한 방법이다.
  • 문자 토큰화(Character tokenization): 텍스트를 개별 문자로 분리하는 방식으로, 언어적 장벽이 적어 음성 인식이나 저자원 언어에 유용하지만, 시퀀스 길이가 크게 늘어나 처리 속도가 느려지는 단점이 있다.
  • 서브워드 토큰화(Subword tokenization): 단어의 일부나 문자 집합을 토큰으로 삼는 방식으로, GPT-4, Mistral 등 최신 LLM에서 가장 널리 사용되는 기법이다. 이는 희귀하거나 새로운 단어, 오타 등을 효과적으로 처리할 수 있으며, 어휘 크기(vocabulary size)를 줄여 메모리 자원을 절약하는 동시에 모델이 처리해야 하는 토큰 수를 줄여 컴퓨팅 비용을 절감한다.

특히, 서브워드 토큰화의 대표적인 알고리즘인 바이트-쌍 인코딩(BPE, Byte-Pare Encoding)은 데이터 압축을 위해 고안되었던 기술을 언어 모델에 맞게 변형하여 사용한다. BPE는 훈련 코퍼스에서 가장 빈번하게 등장하는 인접한 문자 쌍을 찾아내 새로운 토큰으로 병합하는 과정을 반복한다.

예를 들어, the가 가장 자주 함께 나타나는 쌍이라면 이를 the라는 새로운 토큰으로 병합하고, 모든 th + e 조합을 새로운 the 토큰으로 대체한다. 이 과정은 미리 정해진 어휘 크기에 도달할 때까지 계속된다. 바이트 레벨(Byte-level BPE)는 모든 UTF-8 텍스트를 바이트 스트림으로 변환한 뒤 BPE를 적용하여, 어떠한 언어나 문자가 포함된 텍스트도 [UNK](unknown) 토큰 없이 완벽하게 인코딩할 수 있도록 한다.

토크나이저 기술은 현재 단순한 분리 기능을 넘어섰다. Mistral AI의 토크나이저는 `와 같은 특수 제어 토큰(control tokens)을 활용해, 이를 일반 문자열로 취급하지 않고 코드에 직접 추가하는 방식으로 프롬프트 인젝션 공격을 효과적으로 방지한다. 또한, SentencePiece와 같은 도구는 공백(whitespace)을 `(U+2581)와 같은 명시적 기호로 처리하여, 토큰화된 텍스트를 원래 문장으로 완벽하게 복원할 수 있는 역토큰화(detokenization) 기능을 제공한다. 이러한 발전은 토큰화가 모델의 효율성뿐만 아니라 보안과 언어적 온전성을 보장하는 핵심적인 역할을 한다는 것을 보여준다.

임베딩과 위치 인코딩: 의미와 순서를 담는 벡터

토큰화가 완료되면, LLM은 각 토큰을 기계가 계산할 수 있는 수치적 형태로 변환한다. 이 과정은 임베딩(embeddings)을 통해 이루어진다. 임베딩은 각 토큰에 고유한 ID를 할당하고, 이 ID를 수천 차원의 고밀도 벡터(dense vector)로 변환하여 토큰의 의미적 및 문법적 속성을 숫자로 표현한다. 이 벡터는 훈련 과정에서 학습되며, 의미적으로 유사한 단어들은 벡터 공간에서 서로 가까운 위치에 배치되어 모델이 단어 간의 관계를 수학적으로 계산할 수 있게 된다.

임베딩만으로는 문장 내 단어의 순서 정보를 담을 수 없다. 트랜스포머 아키텍처는 데이터 전체를 병렬로 처리하기 때문에, "나는 개를 산책시켰다"와 "개는 나를 산책시켰다"와 같은 문장의 의미 차이를 파악할 수 있는 순서 정보가 없다면 문맥을 제대로 이해할 수 없다. 이러한 구조적 한계를 극복하기 위해 위치 인코딩(positional encoding)이라는 기술이 사용된다. 위치 인코딩은 각 토큰의 임베딩에서 그 토큰의 위치를 나타내는 정보를 담은 또 다른 벡터를 추가하는 방식이다.

초기에 제안된 위치 인코딩은 사인(sin(x)sin(x)) 및 코사인(cos(x)cos(x)) 함수를 사용하여 각 위치에 고유하고 결정적인 패턴을 생성했다. 이는 병렬 처리의 이점을 유지하면서도 모델이 단어의 순서를 학습할 수 있도록 했다. 최근에는 이런 전통적인 방식을 넘어 학습 가능한 위치 인코딩이나 상대적 위치 인코딩과 같은 유연한 방법을 도입했다. 이러한 발전은 특히 긴 시퀀스 데이터를 처리할 때 모델의 시간적 관계 파악 능력을 향상시키며, 트랜스포머 아키텍처의 근본적인 한계를 지속적으로 보완하고 있다.

핵심 엔진: 트랜스포머 아키텍처와 Self-attention

Self-attention 매커니즘의 작동 원리

토큰이 임베딩과 위치 정보로 변환된 후, LLM의 핵심 연산은 트랜스포머(Transformer) 아키텍처 내부의 Self-attention 메커니즘을 통해 이뤄진다. 이 메커니즘은 입력 시퀀스 내의 모든 토큰에 대해 그 중요도와 관계를 동시에 계산함으로써 문맥적 의미를 파악한다. 이는 문장을 순차적으로 처리하는 과거의 순환 신경망(RNN) 모델의 한계를 극복하고, 병렬 연산을 가능하게 하여 훈련 속도를 획기적으로 향상시켰다.

Self-attention의 핵심은 쿼리(Query, Q), 키(Key, K), 값(Value, V)이라는 세 가지 벡터이다. 각 토큰의 임베딩은 이 세 가지 벡터로 선형 변환된다.

  • 쿼리(Q) 벡터: 현재 토큰이 다른 토큰들로부터 어떤 정보를 '찾고 있는지'를 나타낸다.
  • 키(K) 벡터: 각 토큰이 다른 토큰들에게 자신의 정보를 얼마나 '제공할 수 있는지'를 나타낸다.
  • 값(V) 벡터: 토큰의 '실제 내용' 정보를 담고 있다.

Self-attention은 현재 토큰의 Q 벡터와 문장 내 모든 토큰의 K 벡터를 내적하여 어텐션 점수(attention scores)를 계산한다. 이 점수는 현재 토큰과 문장 내 다른 모든 토큰 간의 관련성을 나타내며, 이 점수에 소프트맥스(softmax) 함수를 적용하여 정규화된 가중치를 얻는다. 마지막으로, 이 가중치를 각 토큰의 V 벡터에 곱한 뒤 모두 더하여 최종적으로 문맥이 반영된 출력 벡터를 생성한다. 이 과정을 통해 모델은 "I drove across the road to get to the other bank"라는 문장에서 'bank'라는 단어가 'road'와 관련된 맥락(강둑)인지, 아니면 '돈'과 관련된 맥락(은행)인지 주변 단어들의 가중치를 통해 정확히 파악할 수 있다.

Self-attention 메커니즘은 인간의 인지 과정과 유사하다는 평가를 받는다. 인간이 어떤 정보를 처리할 때 관련성 높은 세부 사항에 선택적으로 주의를 기울이고 덜 중요한 부분을 무시하는 것 처럼, 어텐션 메커니즘은 입력 데이터의 가장 중요한 부분에 집중하여 효율적이고 정확한 정보 처리를 가능하게 한다.

멀티 헤드 어텐션: 다각적 맥락 포착

단일 Self-attention 메커니즘의 한계는 모든 관계를 하나의 관점에서만 계산한다는 점이다. 이를 해결하기 위해 트랜스포머는 멀티 헤드 어텐션(Multi-head attention)을 사용한다. 이는 여러 개의 독립적인 Self-attention 메커니즘을 병렬로 실행하여, 각 '헤드'가 입력 시퀀스 내의 다른 관계에 집중하도록 한다.

예를 들어, 한 어텐션 헤드는 문장 내에서 주어와 동사 같은 문법적 관계를 학습하는 데 특화될 수 있다. 다른 헤드는 '개'와 '강아지'같은 의미론적 유사성을 파악하는 데 집중할 수 있으며, 또 다른 헤드는 '새로운'이라는 형용사와 '기술'이라는 명사 간의 속성 관계를 인식할 수 있다. 이처럼 여러 관점에서 맥락적 연결을 동시에 파악하고 통합함으로써, 모델은 단일 헤드로는 놓칠 수 있는 풍부하고 미묘한 언어적 뉘앙스를 포착할 수 있다.

초기 Self-attention 연구는 맥락 정보를 충분히 고려하지 않는다는 비판을 받았다. 예를 들어, 'Sharon'과 'talk'라는 단어의 관련성을 계산할 때 문장 전체의 맥락을 놓칠 수 있다. 최근 연구는 내부적 표현을 컨텍스트 벡터로 활용하는 컨텍스트화된 변환(contextualized transformations)을 제안하는 등, 외부 자원에 의존하지 않고도 어텐션 메커니즘 자체를 정교하게 만들어 모델의 맥락 이해 능력을 근본적으로 향상시키는 방향으로 진화하고 있다.

맥락 확장 및 관리: 윈도우 한계를 넘어서

컨텍스트 윈도우의 진화와 기술적 한계

LLM이 맥락을 이해하는 능력은 모델이 한 번에 처리할 수 있는 토큰의 최대 길이인 컨텍스트 윈도우(context window)의 크기와 직결된다. 현재 주요 LLM들은 이전 세대 모델들의 컨텍스트 윈도우를 훨씬 뛰어넘는 발전을 보여주고 있다. GPT-5는 40만 토큰, Gemini 2.0 Pro는 200만 토큰에 달하는 컨텍스트 윈도우를 지원하여, 대용량 문서 분석이나 장기 대화와 같은 복잡한 작업을 가능하게 한다.

하지만 이러한 거대한 컨텍스트 윈도우는 새로운 기술적 난제를 낳았다. LLM이 텍스트를 생성할 때 추론과정에서 이전 토큰들의 키-값 캐시(Key-Value Cache, KV cache)를 메모리에 저장하여 재계산을 피한다. 이 KV 캐시의 크기는 컨텍스트 윈도우의 길이에 비례하여 선형적으로 증가하며, 이로 인해 GPU 메모리(VRAM)는 심각한 메모리 병목 현상에 직면하게 된다.

LLMContext Window(tokens)Character
Gemini 2.0 Pro2,000,000장기 문서 분석에 최적화된 대규모 컨텍스트 윈도우
GPT-5400,000멀티모달 및 추론 중심의 'o' 시리즈 최신 모델
Gemini 1.5 Pro2,000,000대규모 데이터 처리 및 다중 모드 지원
DeepSeek R1131,072수학 및 코딩에 강점을 가진 추론 모델
Claude 3.7 Sonnet200,000안정적인 성능과 긴 컨텍스트 지원

추론 단계의 맥락 관리: KV 캐시 최적화

LLM은 단순히 모델의 크기나 컨텍스트 윈도우의 길이를 넘어, 거대 컨텍스트를 얼마나 효율적으로 관리하는지에 달려있다. KV 캐시의 메모리 문제를 해결하기 위해 다양한 기술적 혁신이 등장했다.

  • PagedAttention: 이 기술은 운영체제의 가상 메모리 관리에서 영감을 받았다. KV 캐시를 고정된 크기의 페이지(page) 또는 블록(block)으로 분할하고, 이를 물리적으로는 비연속적인 메모리 공간에 저장한다. 이는 메모리 낭비를 최소화하고 GPU 활용률을 극대화하여, 동일한 하드웨어에서 더 많은 요청을 동시에 처리할 수 있게 한다.
  • KV 캐시 오프로딩(KV Cache Offloading): GPU 메모리의 압박을 완화하기 위해 사용되지 않는 KV 캐시를 더 크고 저렴한 CPU 메모리나 디스크로 옮기는 기술이다. 이는 메모리 병목을 해소하지만, GPU와 CPU 간의 잦은 데이터 통신으로 인해 추론 지연 시간이 증가할 수 있다는 단점이 있다.
  • 다계층 캐싱(Multi-tier Caching): LMCache와 같은 시스템은 GPU, CPU, 디스크 등 여러 계층의 저장소를 활용하여 KV 캐시를 지능적으로 관리한다. 이는 특히 여러 라운드에 걸쳐 진행되는 질의응답이나 RAG(검색 증강 생성)와 같이 텍스트의 재사용이 빈번한 시나리오에서 추론 지연 및 GPU 비용을 획기적으로 줄여준다.
  • 투기적 KV 캐시(Speculative KV Caching): SpeCache와 같은 기술은 다음에 어떤 KV 쌍이 필요할지 미리 예측하여 캐시를 미리 가져오고(prefetch) 계산을 병렬로 진행함으로써, 오프로딩으로 인한 지연 시간 증가 없이 메모리 효율성을 높인다.

영구적 맥락 관리: 장기 기억 솔루션

컨텍스트 윈도우의 크기 경쟁과 별개로, LLM이 무한한 맥락을 가질 수 있도록 하는 연구 또한 활발히 진행되고 있다. MemGPT는 운영체제의 가상 메모리 시스템을 모방한 가상 컨텍스트 관리(virtual context management) 기법을 제안한다. 이는 LLM이 대용량 문서 전체를 분석하거나, 여러 세션에 걸친 장기 대화를 기억할 수 있도록 하여, 컨텍스트 윈도우의 물리적 한계를 넘어선 '영구적 컨텍스트(perpetual context)'를 제공한다.

이러한 기술적 진보는 단순히 컨텍스트 윈도우 크기를 늘리는 것을 넘어, 추론 인프라와 메모리 관리의 혁신을 촉발하는 선순환 구조를 형성하고 있다.

외부 지식과 인간의 개입

검색 증강 생성(RAG): 외부 맥락의 통합

LLM의 내부에 동결된 지식은 훈련 데이터의 지식 단절로 인해 항상 최신 정보를 반영할 수 없다는 한계를 가진다. 이러한 문제와 환각(hallucination) 문제를 해결하기 위해 등장한 것이 바로 검색 증강 생성(RAG, Retrieval-Augmented Generation) 아키텍처이다. RAG는 LLM을 외부 지식 기반에 연결하여 최신성과 정확성을 보장하는 기술이다.

RAG의 작동 방식은 두 단계로 이어진다.

  1. 검색(Retrieval): 사용자의 질의가 입력되면, 검색기(retriever)는 내부 문서 저장소(주로 벡터 데이터베이스)에서 질의와 의미적으로 가장 유사한 문서를 찾아낸다. 벡터 데이터베이스는 문서를 고차원 벡터인 임베딩으로 변환하여 저장하고, 이를 통해 의미적 유사성을 기반으로 빠르고 정확한 검색을 가능하게 한다.
  2. 생성(Generation): 검색된 정보는 원래 사용자의 질의와 함께 LLM의 입력(augmented prompt)으로 들어간다. LLM은 이 증강된 맥락(augmented context)을 기반으로 답변을 생성하며, 이는 단순히 내부 지식에 의존하는 것보다 훨씬 더 정확하고 최신성이 보장된다.

RAG는 단순한 벡터 검색을 넘어 진화하고 있다. GraphRAG(Knowledge Graphs)는 벡터 검색에 구조화된 지식 그래프를 결합하여 데이터 간의 관계를 명시적으로 파악하고, 이를 통해 검색 정확도를 99%까지 향상시킨다. 또한, LLM-Agnostic 아키텍처가 기업 AI 솔루션의 핵심 트렌드로 부상하며, 특정 LLM 공급자에 종속되지 않고 여러 모델을 유연하게 전환하거나 조합할 수 있게 한다. 이는 기업이 벤더 종속을 피하고, 비용을 최적화하며, 최신 모델을 신속하게 도입할 수 있는 전략적 유연성을 제공한다.

모델 유도: 프롬프트 엔지니어링과 파인 튜닝

LLM의 맥락 이해를 완성하는 것은 결국 모델을 인간의 의도에 맞게 유도하는 과정이다. 이를 위한 두 가지 주요 기법은 프롬프트 엔지니어링(Prompt Engineering)과 파인 튜닝(Fine-Tuning)이다.

  • 프롬프트 엔지니어링: 모델의 가중치를 변경하지 않고, 입력 프롬프트의 내용, 구조, 예시를 정교하게 조작하여 원하는 출력을 얻어내는 기술이다. 특히 복잡한 추론 작업에서 모델의 성능을 향상시키는 사고의 사슬(Chain-of-Thought, CoT) 프롬프트가 대표적인 사례이다. "단계별로 생각해보자"와 같은 지시를 추가하면, 모델은 최종 답변을 내놓기 전에 중간 과정을 명시적으로 생성하고 이를 통해 추론 오류를 줄일 수 있다.
  • 파인 튜닝(Fine-Tuning): 특정 작업이나 도메인에 특화된 소규모 데이터셋을 사용하여 모델의 매개변수를 조정하는 과정이다. 이는 모델이 특정 분야의 용어나 맥락을 깊이 이해하고, 독점 데이터에 대해 높은 정확도를 달성하게 한다. 파인 튜닝은 상당한 계산 자원과 시간을 요구하지만, LoRA(Low-Rank Adaptation)와 같은 효율적인 경량화 기법이 등장하며 진입 장벽이 낮아졌다. LoRA는 전체 모델 가중치를 업데이트 하는 대신, 낮은 랭크(rank)의 작은 두 개의 행렬을 추가하여 학습함으로써 메모리 부담을 크게 줄인다.

이 세 가지 기법은 상호 배타적인 관계가 아니다. 기업은 일반적인 작업은 프롬프트 엔지니어링으로 처리하고, 최신 정보가 필요한 작업에는 RAG를, 그리고 특정 도메인에 대한 깊은 지식이 요구되는 핵심 업무에는 파인 튜닝을 적용하는 하이브리드 전략을 채택하고 있다.

profile
진짜 공부하자

0개의 댓글