언어 모델의 구조를 절차별로 완전히 뜯어보자
요즘 AI 분야에서 가장 많이 들리는 단어 중 하나는 LLM, 즉 대규모 언어 모델이다. 하지만 모든 상황에 LLM이 필요한 건 아니다. 빠르고 가볍고 실시간 대응이 필요한 환경에서는 LLM보다 SLM, 즉 경량 언어 모델이 훨씬 적합할 수 있다.
이 글에서는 LLM과 SLM이 입력을 받아 출력을 생성하기까지 각각 어떤 절차를 밟는지, 그리고 왜 그 과정이 서로 다르게 구성되어 있는지를 단계별로 찬찬히 풀어본다.
LLM은 사용자의 텍스트 입력을 전처리 없이 그대로 수용한다. 문장의 길이, 반복 표현, 수식어 등을 별도로 정리하지 않고 원문 그대로를 처리 대상에 포함시킨다. 이는 원문 언어의 문맥과 뉘앙스를 최대한 보존하려는 접근이다. 감탄사나 말줄임표, 정서적 표현 같은 요소도 그대로 계산 대상이 된다. 이런 구조는 깊은 언어 이해를 가능케 하지만, 결과적으로 연산량과 처리 시간이 크게 증가할 수 있다.
예시 입력:
“내일 날씨가 어떨지 너무 궁금한데, 우산을 챙겨야 할까요? 아니면 그냥 가도 될까요?”
처리 방식:
이런 복잡한 문장은 압축 없이 그대로 다음 단계인 토큰화에 넘겨진다.
장점:
- 자연어의 미묘한 표현(반어법, 암시, 중의성 등)을 보존할 수 있다.
단점:
- 불필요하거나 중복된 표현도 연산 대상이 되므로 계산 낭비가 발생할 수 있다.
2) Tokenization – 서브워드 단위로 나누는 정밀한 분할
입력된 문장은 의미 단위로 분해된다. 이때 사용하는 것이 Byte Pair Encoding(BPE) 등의 서브워드 기반 토크나이저다. 예를 들어 “internationalization”이라는 단어는 [‘inter’, ‘national’, ‘ization’]처럼 나뉘게 된다. BPE의 장점은 사전에 없는 신조어나 복합어도 분해해 처리할 수 있다는 점이다. 하지만 문장이 길수록 토큰 수는 기하급수적으로 늘어나고, 이는 연산량 증가로 이어진다. 긴 대화나 복잡한 지문에서 성능 저하가 발생할 수 있는 요인이다.
예:
- BPE(Byte Pair Encoding), WordPiece
- “internationalization” → [‘inter’, ‘national’, ‘ization’]
- “챗지피티는” → [‘챗’, ‘지’, ‘피’, ‘티’, ‘는’]
장점:
- 사전에 없는 희귀 단어도 분해하여 처리 가능
- 어간, 접두사, 접미사 단위 처리로 어휘 확장성 우수
단점:
- 같은 문장도 불필요하게 많은 토큰으로 분할될 수 있음
- 긴 문장의 경우 토큰 수 증가 → 연산량 급증
토큰은 고차원의 벡터로 변환된다. 이 벡터는 단어의 의미, 문법, 문맥, 위치 정보 등을 수치로 표현한다. LLM에서는 보통 768차원 이상의 벡터를 사용하며, 이 과정은 메모리와 연산 자원을 크게 소모한다. 특히 수천 개의 토큰이 각각 거대한 벡터로 표현되고 나면, 단지 문장 하나를 처리하는 데도 상당한 GPU 메모리가 필요하다. 다만 이 임베딩 덕분에 LLM은 정교한 문맥 추론과 언어 감각을 재현할 수 있다.
차원 수: 일반적으로 768차원 ~ 4096차원
의미, 문법, 문맥, 위치 정보 등을 담은 벡터
위치 정보(Positional Encoding)는 단어 순서를 반영
GPU 사용량: 이 단계는 대부분의 메모리 사용량을 차지하며, 연산량도 많다.
예:
“dog”, “cat”, “apple”은 모두 768차원의 벡터로 바뀌며,
이 벡터 간 유사도는 언어적 유사성과 비슷하게 작용한다.
GPU 사용량:
이 단계는 대부분의 메모리 사용량을 차지하며, 연산량도 많다.
이제 임베딩된 토큰 벡터는 트랜스포머 구조를 통과한다. 이 과정에서는 각 단어가 문장 내 다른 단어와 어떤 관계를 맺고 있는지를 self-attention 메커니즘을 통해 계산한다. 문맥 이해가 깊어지는 만큼 연산량도 매우 크다. 토큰 간 상호작용이 많을수록 계산량은 제곱 단위로 증가하고, 이 구조를 수십 층 반복하면서 전체적인 모델 크기가 기하급수적으로 커진다. 반면 이렇게 복잡한 계산을 통해 LLM은 대화의 흐름, 문맥 내 대명사 참조, 추론 관계 등을 탁월하게 파악할 수 있다.
핵심 개념:
“나는 사과를 좋아한다. 그것은 빨갛다.“에서
‘그것’이 ‘사과’를 지칭하는지 판단하기 위해 앞 단어들과 연결 관계를 계산
계산량:
- 입력 길이가 n일 때 O(n²) 연산이 필요 (모든 단어쌍 계산)
- GPT-3의 경우 96-layer 트랜스포머에 수십억 개의 파라미터가 존재
장점:
- 깊은 문맥 파악, 장거리 의존성 이해
단점:
- 매우 느리고 무겁다. 수 초 이상의 응답 시간이 발생하기도 한다.
트랜스포머 연산 결과를 바탕으로 다음 토큰을 예측해 응답을 생성한다. 이는 반복적으로 이루어지며 전체 문장이 만들어진다. 다양한 생성 전략(top-k sampling, temperature 등)을 활용해 유창하고 창의적인 텍스트를 만들어낸다. 예를 들어 사용자가 질문을 하면, 모델은 토큰을 하나씩 이어붙여 답변을 구성하며, 맥락을 유지하는 동시에 새롭고 유효한 표현을 생성해낸다.
생성 방식:
다음 토큰을 하나씩 예측하면서 전체 문장을 만들어냄
예: “The weather is” → “The weather is cloudy today.”
응답 제어 기법:
- temperature, top-k sampling, beam search 등을 활용해 다양성과 일관성 조절
특징:
- 생성 텍스트는 유창하고 인간다운 표현이 가능
- 그러나 비용과 시간, 에너지 사용이 큼
SLM(Small Language Model)은 LLM과는 다른 철학으로 만들어진다.
목표는 정확도보다 속도, 경량성, 실용성이다. 특히 엣지 환경에서 실행 가능해야 한다.
이런 목적을 위해 SLM은 전처리부터 배포까지 매 단계에서 과감한 최적화를 적용한다.
SLM은 입력을 받자마자 먼저 정제한다. 중복 표현이나 군더더기 문장을 제거하고, 문장의 핵심만 추려낸다. 예컨대 “내일 날씨가 어떨지 궁금하네요. 우산을 챙겨야 할까요?”는 “내일 날씨, 비 가능성?”으로 축약된다. 불필요한 말이 줄어들수록 모델이 연산해야 할 범위가 줄어들고, 처리 속도도 빨라진다. 이 단계는 SLM의 경량성과 실시간성을 확보하는 첫 번째 관문이다.
예시:
“내일 날씨가 어떨지 너무 궁금하네요. 비가 오려나요?”
→ “내일 날씨, 비 여부?”
처리 전략:
- 목적어 추출
- 키워드 요약
- 텍스트 압축
장점:
- 토큰 수 감소 → 연산량 직접 절감
- 실시간 시스템에 적합
2) Compact Tokenization – 압축된 표현 단위로 변환
SLM은 보다 적은 수의 토큰으로 의미를 담는 토크나이저를 사용한다. 긴 구문을 하나의 토큰으로 묶거나, 불필요한 조사 등을 제거하는 방식이다. 이를 통해 전체 토큰 수가 줄어들고, 처리 속도도 빨라진다. 특정 도메인에 맞춘 커스텀 토크나이저가 자주 활용되며, 이는 모델의 성능을 크게 좌우할 수 있다. 압축된 표현은 속도는 빠르지만 맥락 표현이 줄어들 수 있으므로 목적에 맞게 조율된다.
예시:
“서울 내일 날씨” → [“서울날씨”, “내일”]
기술 방식:
- 더 긴 단위를 하나의 토큰으로 묶음
- 필요 없는 조사, 어미 생략
효과:
- 모델이 처리해야 할 토큰 수가 줄고, 각 단계의 연산이 간결해짐
SLM은 토큰을 벡터로 변환할 때 고차원이 아닌 저차원, 혹은 공유 임베딩 구조를 사용한다. 덕분에 메모리 사용량과 계산량이 줄어든다. 일부 구조는 임베딩 테이블을 입력과 출력이 함께 쓰는 방식으로 더 간소화하기도 한다. 특히 모바일 환경에선 작은 임베딩 테이블 하나가 전체 모델의 무게를 크게 줄여준다. 의미 표현이 제한되더라도, 특정 태스크 중심의 응답에는 전혀 문제가 없다.
응용:
- TinyBERT의 경우 teacher-student 구조로 학습된 임베딩 사용
- shared embedding: 입력, 출력 임베딩 테이블을 하나로
장점:
- 메모리 사용량 감소
- 추론 속도 향상
SLM은 트랜스포머 구조 자체를 경량화한다. 모든 단어쌍 간의 관계를 계산하는 대신, 중요한 토큰 관계만 선별적으로 계산하는 구조를 택한다. Linear Attention, Sparse Attention 같은 경량 트랜스포머 구조가 대표적이다. 경우에 따라 트랜스포머 대신 MLP 구조나 hybrid 방식이 사용되기도 한다. 핵심은 ‘불필요한 계산을 피하는 것’이며, 이 구조 덕분에 실시간 처리가 가능해진다.
기술 예시:
- Performer, Reformer, Longformer
- 트랜스포머 자체를 생략하고 MLP 구조 사용
연산량:, O(n²) → O(n) 또는 O(log n)으로 감소
효과:
- 빠른 처리
- 모바일/임베디드에서도 실시간 추론 가능
트랜스포머 계산 이후, SLM은 모델 파라미터를 32bit에서 8bit, 4bit 등으로 양자화해 모델을 더욱 경량화한다. 동시에 메모리 최적화를 통해 필요한 데이터만 메모리에 올려 효율을 극대화한다. 예컨대 필요한 layer만 부분 로딩하거나, inference 시점에만 weight를 불러오는 방식이 사용된다. 이로 인해 수백 MB 수준이었던 모델이 수십 MB 이하로 줄어들 수 있다.
양자화(Quantization):
- 32bit → 8bit 또는 4bit ,
- QLoRA, INT8, GPTQ 등 적용
메모리 최적화:
- lazy loading
- weight sharing
- 파라미터 일부만 로딩
결과:
- 수십 MB 수준으로 줄어든 모델
- 엣지 디바이스에서도 빠르게 실행
이 모든 최적화 덕분에 SLM은 스마트폰, IoT 디바이스, 오프라인 시스템에서도 실행 가능하다. 로컬에서 동작하므로 네트워크 연결이 없어도 되고, 개인정보 유출 걱정도 적다. 배터리 효율성도 높아 실시간 반응이 중요한 환경에서 특히 유리하다. 예컨대 현장 지원용 음성 도우미, 웨어러블 기기, 로봇 등에 활용된다.
장점:
- 네트워크 연결 없이 실행 가능
- 프라이버시 보호 우수
- 응답 속도 100~300ms 수준
마지막으로 간결한 문장을 빠르게 출력한다. 긴 문장이나 복잡한 서사보다는 핵심을 빠르게 요약해주는 형태의 응답이 많다. 대부분의 경우 토큰 생성 속도가 10배 이상 빠르며, 짧은 대화 응답이나 제어 명령에 적합하다.
예시:
입력: “서울 내일 날씨?” → 출력: “흐림, 23도”
활용 분야:
- 챗봇
- 음성비서
- 기기 내 컨트롤 명령어
LLM은 정밀한 문맥과 복잡한 표현을 다루는 데 강점이 있다. 복잡한 문서 요약, 창의적인 에세이 생성, 고차원 언어 이해가 필요한 작업에서는 여전히 LLM이 유리하다. 반면 SLM은 제한된 리소스 환경에서 빠르고 유용한 응답을 만들어낸다. 스마트폰, IoT 디바이스, 음성비서처럼 빠른 반응이 필요한 상황에서 특히 빛을 발한다.
LLM과 SLM은 단순히 크고 작은 모델의 차이가 아니다. 그것은 두 가지 상반된 철학의 구현이다. 전지전능을 지향하는 LLM, 목적 효율을 중시하는 SLM. 선택은 단순한 성능 비교가 아니라, 내가 해결하고자 하는 문제의 본질과 조건에 대한 이해에서 시작된다.
이해보다 선택이 중요한 시대. 두 모델의 흐름을 아는 것은 AI를 전략적으로 활용하는 첫걸음이자, 문제 해결을 위한 도구를 똑똑하게 고르는 힘이다.
[참고: sLLM과 SLM은 다릅니다]
sLLM은 ‘small LLM’의 약자로, 기존의 대형 언어 모델(LLM)을 크기만 줄여 경량화한 버전을 뜻합니다. 일반적으로 수십억 개의 파라미터를 유지하면서도 연산 효율을 개선한 모델들이 이에 속합니다. 예: LLaMA 2 7B, Mistral 7B, Gemma 2B 등.
반면 이 글에서 다룬 SLM은 훨씬 소규모(수백만~수천만 파라미터)의 경량 모델로, 엣지 디바이스에서의 빠른 응답과 저전력 처리를 목적으로 설계된 모델군을 말합니다. 용도와 범주가 다르므로 혼동에 유의하시기 바랍니다