
핵심요약
이 글은 LLM이 사용자의 질문을 받아 답변을 생성하기까지의 내부 동작 과정을 토큰화부터 최종 텍스트 디코딩까지 6단계로 상세히 설명하며, 각 단계의 기술적 원리와 구현 세부사항을 백엔드 개발자의 관점에서 분석합니다.
LLM 내부 동작 원리 6단계 해설
1. 입력 처리: 토큰화 및 임베딩
- 토큰화(Tokenization): 사용자 프롬프트를 LLM이 이해할 수 있는 최소 단위인 **토큰(Token)**으로 분리하고 고유 정수 ID를 매핑합니다.
SentencePiece와 같은 토크나이저가 언어 중립적 서브워드 기반으로 동작하며, 훈련 및 추론 단계가 명확히 분리됩니다. - 임베딩(Embedding): 토큰화된 정수 ID를 의미를 가진 다차원 벡터로 변환합니다.
Embedding Table에 각 토큰 ID와 그에 대응하는 임베딩 벡터가 저장되며,PCA를 통해 고차원 벡터의 의미적 근접성을 시각화할 수 있습니다. - 위치 인코딩(Positional Encoding): 단어의 순서 정보를 담은 고유한 벡터를 생성하여 임베딩 벡터에 더합니다.
sin/cos 함수를 활용하여 각 단어의 위치와 차원에 따라 다른 값을 부여, 문장 내 단어의 순서를 인식하게 합니다.
2. 문맥 이해 및 예측: Transformer와 Attention 메커니즘
- Transformer & Attention: LLM의 핵심 기술로,
Transformer신경망 구조와Attention메커니즘을 통해 문장 전체 단어 간의 관계를 파악하고 문맥을 정교하게 이해합니다. - 인코더 레이어: 입력 텍스트를 모델이 이해할 수 있는 내부 표현으로 변환하며,
Multi-Head Self-Attention으로 단어 간 관계를 계산하고Feed-Forward Neural Network로 특징을 강화합니다. - 디코더 레이어: 인코더 정보를 바탕으로 새로운 텍스트를 생성합니다.
Masked Multi-Head Self-Attention으로 미래 단어 참조를 방지하며,Linear레이어를 통해 모든 어휘에 대한Logits를 생성하고Softmax로 확률을 변환합니다.
3. 출력 생성: 예측 및 디코딩 루프
- 예측(Prediction): 문맥을 파악한 최종 벡터를 바탕으로 다음에 올 가장 확률 높은 토큰을 예측합니다.
Temperature매개변수로 확률 분포를 조절하고,Greedy Search,Top-K Sampling,Top-P Sampling등의 샘플링 전략을 활용해 최적의 토큰을 선택합니다. - 루프 & 디코딩(Loop & Decoding): 예측된 토큰을 다시 입력값에 추가하고
Predict-Append-Loop과정을 반복하여 문장을 완성합니다.EOS(End-Of-Sentence) 토큰이 생성되거나 최대 길이에 도달할 때까지 자동 회귀(Autoregressive) 방식으로 다음 단어를 계속 생성합니다. - 최종 디코딩: 최종적으로 생성된 정수 ID 배열을 사람이 읽을 수 있는 완성된 텍스트로 변환하여 사용자에게 반환합니다.
4. LLM 활용 전략
- 구체적 콘텍스트 제공:
Attention메커니즘이 문제의 핵심에 더 잘 집중하도록 상세한 정보를 제공합니다. - 역할 및 형식 지정:
Prediction단계에서 모델이 선택할 단어의 범위를 좁히도록 명확한 역할과 출력 형식을 지시합니다. - 단계별 작업 분해: 복잡한 작업은 여러 프롬프트로 나누어 요청하여
Loop과정의 효율성을 높입니다.