[DeepTecTok #1] AI LLM 구조와 트랜스포머 활용
- TecAce Software
- Mar 18, 2024
- 6 min read

목차
들어가며
생성형 인공지능 (Generative AI; GenAI) 중의 한가지인 거대언어모델 (Large language model; LLM)은 트랜스포머 구조가 발표되면서 많은 발전이 있어 왔다[1]. 트랜스포머 구조는 2017년 구글이 발표한 "Attention is All You Need" 논문에서 처음 소개되었다. 이 구조는 이전의 시퀀스-투-시퀀스(Sequence-to-Sequence) 모델들과는 다르게, 전체 시퀀스를 한 번에 처리할 수 있는 '어텐션(Attention)' 메커니즘을 중심으로 설계되어 있다 [1, 2, 3]. 이후 GPT가 기본 트랜스포머의 구조에서 인코더를 없앤 디코더만 사용하는 구조를 채택하면서 질의응답과 택스트 생성에 한차원 더 우수한 성능을 보여주었다. 이런 특징에 힘입어 디코드만 사용하는 LLM들이 다수 출현하고 있다[4]. 그렇지만 인코드만 사용하는 구조와 인코드 및 디코더를 동시에 사용하는 전통적인 트랜스포머 구조로 된 방식들도 꾸준히 나오고 있어 이 방식들간 장단점을 이해하는 것은 LLM 기술의 동향을 파악하는데 중요한 요소로 자리 잡고 있다. 본 글에서는 대부분의 LLM이 채택하고 있는 트랜스포머 구조를 알아보고 이를 활용하는 방식들에 대해서도 소개하고자 한다.
트랜스포머 구조와 동작 원리
트랜스포머 논문에서 제안한 이 방식의 구조는 그림 1에 나와 있다. 트랜스포머의 전체 동작은 다음과 같은 절차로 진행된다. 먼저, 입력 정보는 왼편의 인코더를 각 인코더 개별 블록 단위로 통과하여 최종 인코등 정보로 바뀌게 된다. 최종 인코딩 정보는 모든 개별 디코더 블럭에 들어가게 된다. 다음으로 디코더는 입력된 인코딩 정보와 현재까지 디코딩 된 정보를 이용해 출력 토근별로 디코딩을 수행하게 된다. N개의 디코더에서 출력된 결과는 선형 계층과 소프트맥스 처리 이후에 출력 토큰으로 변환되면서 트랜스포머 동작이 완료되게 된다. 이 연산은 각 출력 신호를 생성하고 자동 회귀 방식 (autoregressive approach)으로 재귀적으로 피드백합니다.

그림 1. The Architecture of the Transformer Network
그림 출처 [3]
인코더 동작
인코더 부분은 크게 3가지 기능 부분으로 구현되어 있다. 여기서 3가지 기능은 토큰 임베딩 부분, 위치 인코딩 부분 그리고 n개의 인코딩 처리 부분들로 입력 정보가 순차적으로 통과하면서 인코딩 정보로 변환된다. 인코더는 n개의 인코딩 처리가 모두 끝난 후 최종 결과를 각 디코더에 동일하게 보내게 된다.
토큰 임베딩
토큰 임베딩 부분은 각 토큰의 입력을 토큰 들간의 관계를 고려한 벡터 단위로 변환하는 과정이다. 예를들면 ‘아들’이란 토큰의 벡터는 ‘공주’보다는 ‘왕자’ 토큰의 벡터와 유사하게 생성이 된다. 엠베딩은 이처럼 토큰들간의 상호 관계를 고려한 벡터로 변환하므로 단순한 순서로 만들어진 토큰 인덱스 보다는 더 의미 정보를 잘 전달할 수 있도록 벡터로 된 정보를 변환하도록 동작한다.
위치 인코딩
트랜스포머의 구조는 입력 토큰간 순서를 고려지 못하기 때문에 토큰 간 순서가 가지는 정보를 잃어버리게된다. 이를 방지하기 위해 위치 정보를 입력 정보에 추가하는 위치별 인코딩 정보가 더해지는 과정을 임베딩 벡터 변환 이후에 수행하게 된다. 이 때 각 토큰은 임베딩 벡터의 차원만큼 벡터로 만들어지기 때문에 위치는 임베딩 차원의 인덱스인 pos와 토큰의 순서 인덱스인 i로 2차원 튜플 형태 즉, (pos, i)로 구성된다. 이 2차원 위치 값을 고려해 수식 1에 의해 구해진 값이 각 위치마다 더해지게 된다.

수식 1. 위치 인코딩 값을 구하는 수식 - pos: 토큰 인덱스, i: 임베딩 차원 인덱스
인코딩 처리
인코딩 처리 부분은 4 단계로 구성된다. 정보가 처리되는 순서로 나열하면, 멀티 헤드 어텐션, 1차 합산 및 정규화, 위치별 순방향 뉴럴넷 그리고 2차 합산 및 정규화 단계로 구성된다.
인코더 멀티 헤드 어텐션
멀티 헤드 어텐션은 같은 입력에 대해 복수 개의 어텐션 단계를 병렬로 수행하고 그 결과를 합산하여 출력하는 처리 방식이다. 특히, 인코더 방식에서는 어텐션은 입력 토큰 벡터들이 질문, 키 그리고 가치 벡터로 사용된다.
셀프 어텐션은 주변 토큰별 벡터들과 상관도를 고려해 인코딩 또는 디코딩이 효과적으로 일어날 수 있도록 만드는 방식이다. 먼저, 입력 토큰별 벡터를 각각 3가지의 매트릭스 변환을 통해 입력을 질의, 키 그리고 가치 벡터 셋으로 바꾼다. 다음으로 입력 토큰별 출력은 주변 토큰과의 유사도에 해당하는 어텐션 가중치 벡터를 구한 후 해당 토큰을 포함해 모든 토큰들의 가치 벡터에 가중치를 고려해 합친 형태가 되도록 만든다.
셀프 어텐션은 트랜스포머의 주요 기능에 해당하는 부분이며 성능 차별화에 가장 많이 기여하지만 기존 CNN, RNN 등의 처리 방식에 비해 계산 복잡도가 높은 문제가 있다.
각 헤드에서 언텐션 처리가 완료되면 멀티 헤드 어텐션은 각 결과들을 인자별로 산술적으로 더해서 출력하게 된다.
합산 및 정규화
인코더 및 디코더에 있는 합산 및 정규화 단계는 동일한 방식으로 동작한다. 이기서는 전단계에서 생성된 결과만 출력하는 것이 아니라 전단계의 입력에 생성된 값이 더해지는 형태로 출력되도록 레지듀얼 합산 과정이 추가된다. 그리고 그 결과는 적절히 정규화되어 크기가 제어된다. 이 방법은 ResNet에서 사용된 개념으로 학습을 위한 그라디언트를 구하는데 효과적이다.
위치별 순방향 뉴럴넷
위치별 순방향 뉴럴넷은 각 토큰별 벡터에 각각 가중치가 처리되는 형태의 뉴럴넷 방식이다. 각 위치별 뉴럴넷의 가중치는 위치에 상관없이 동일하게 적용된다.
디코더 동작
디코더 부분도 인코드와 유사하게 엠베딩과 위치 인코딩이 진행되고 이후 디코딩 처리가 시작된다. 이 때 엠베딩에 들어가는 토큰 정보는 이전에 출력된 토큰 정보이다. 다만, 학습이 진행되는 경우는 타겟 토큰 정보가 들어가게 된다.
디코딩 처리
디코딩 처리 부분은 6 단계로 구성된다. 정보처리 순서대로 마스크 멀티 헤드 어텐션, 1차 합산 및 정규화, 멀티 헤드 어텐션, 2차 합산 및 정규화, 위치별 순방향 뉴럴넷, 그리고 3차 합산 및 정규화 단계로 구성된다.
마스크 멀티 헤드 어텐션
마스크 멀티 헤드 어텐션은 마스크를 통해 입력 토큰 벡터들 중에 현재 시점보다 미래에 해당되는 벡터들은 어텐션 과정에 들어가지 않는 형태로 어텐션 처리를 수행하게 된다. 따라서 현재 시점보다 이전에 생성된 출력 토큰들의 벡터들만 어텐션 처리가 진행된다.
디코더 멀티 헤드 어텐션
기능적으로 인코더 멀티 헤드 어텐션과 동일하게 동작한다. 차이점은 입력의 일부인 키와 가치 벡터는 인코더 최종 출력의 결과가 사용되고 질의 벡터만 해당 단계의 디코팅 처리 블럭에 있는 1차 합산 및 정규화 단계의 출력을 사용하는 부분이다.
합산 및 정규화
디코더 멀티 헤드 어텐션 다음에 있는 2차 합산 및 정규화 단계는 디코더 멀티 헤드 어텐션의 결과와 그 단계에서 질문 입력으로 사용된 내용을 이용해 동작하게 된다. 동작하는 내용은 인코더 부분 2개와 디코더 부분 3개 모두 동일하다.
트랜스포머 방식의 종류와 활용
트랜스포머 방식은 원래 형태인 encoder와 decoder를 모두 가지고 있는 형태, enconder만 가진 형태, decoder만 가진 형태로 개발이 되고 있다. 최근 이슈가 되고 있는 GPT 방식, Llama 계열 등이 decoder 단독 방식이다. 이 3 방식에 대한 특징 및 장단점 그리고 활용되고 있는 모델을 살펴보고자 한다.
Encoder 단독 방식
Encoding 처리를 통해 입력 정보를 이해해서 판단하는데 주로 사용된다. 따라서 정보 분류, 명명된 객체 인식, 및 품사 인식하는데 효율적이다. 사전 학습은 입력 문장의 일부를 제거하고 판단 결과를 예측하는 형태로 진행한다. BERT, DistilBERT 등이 대표적인 모델이다.
장점: 입력 정보의 맥락을 이해하는데 능숙하다.
단점: 디코딩 부분의 부재로 생성하는 태스크에 적용하기는 효율적이지 않다.
Decoder 단독 방식
입력 받은 정보를 기반으로 원하는 형태의 출력을 생성하는데 사용된다. 따라서 텍스트 생성, 스토리 창조, 그리고 대화 시스템에 적합하다. Encoder-decoder에 비해 학습이 용이하고 복잡도가 상대적으로 낮다는 특성을 이용해 다양한 분야에 대해 학습함으로 다른 방식에서 유리한 테스크들도 최근에는 잘 수행하는 형태로 발전하고 있다. 사전 학습은 다음 단어나 문장을 예측하는 형태로 진행한다. GPT 시리즈가 대표적인 모델이다.
장점: 일관성있고 맥락에 맞는 텍스트를 생성하는데 적합하다.
단점: 입력 정보의 미묘한 차이를 이해하는데는 효율적이지 않다.
Encoder-Decoder 방식
인코더와 디코더가 모두 있어 둘의 특징을 모두 포함하고 있다. 적용 분야는 번역, 요약, 질의응답 등 다양하다. 사전 학습은 일부 문장을 제거하거나 다음 문구를 예측하는 두가지 형태 모두 사용된다. BART, T5등이 대표적인 이 방식의 모델이다.
장점: 입력 데이터에 대한 이해와 그에 따라 원하는 형태의 생성물을 만드는데 효과적이다.
단점: 특성이 다른 두 부분이 모두 존재하여 복잡도가 높고 계산량이 많다. 다양한 태스크가 수행 가능하지만 이를 위해서는 다양한 분야를 고려해야 하기 때문에 학습이 난이하고 오랜 시간이 걸리는 단점이 있다.
최신 방식들
기존에는 Transformer의 변형 등을 통해 높은 언어 처리 능력을 보유하기 위한 경쟁이 진행되었다. 알고리즘을 개선하기도 했지만 인코딩과 디코딩 처리 단계의 갯수를 늘리거나 사전 학습에 필요한 데이터 수를 늘리는 형태로 성능을 증가시켜 왔다. 사전 학습한 모델이 원하는 태스크를 잘 수행할 수 있고 이상한 답변을 하지 않도록 파인튜닝 방식도 발전되어 왔다. 이때는 지도 학습뿐 아니라 강화학습을 사용해 성능 향상을 시켰다.
최근에는 성능 향상을 위해 늘어나는 복잡도를 줄이기 위한 노력도 진행되고 있다. 계산 속도 향상을 위해 어텐션 처리의 구현 방법을 개선하여 대부분의 계산이 GPU와 HBM 사이에서 일어나게 만드는 FlashAttention 방법도 사용되고 있다. 또한 성능 희생을 최소화하면서 어텐션 처리의 복잡도를 줄이는 그룹 쿼리 어텐션(GQA)과 슬라이딩 윈도우 어텐션(SWA) 알고리즘도 사용되기 시작했다. GQA는 토큰을 그룹 단위로 묶어서 어텐션 벡터를 계산하여 복잡도를 줄인다. 그리고 SWA는 전체 토큰이 아닌 각 토큰 주변의 윈도우 영역 안에서의 토큰 들에 대해서만 어텐션 처리를 진행함으로 전체적인 계산량을 줄이게 된다.
시사점
인공지능은 CNN과 LSTM으로 대표되는 딥러닝 기술들이 나오면서 새로운 전환기를 맞이하기 시작했다. 여기에 한단계 더 발전한 트랜스포머 구조와 어텐션 알고리즘이 나오면서 거대 언어 모델의 성능이 급격하게 향상되기 시작했다. 초기 트랜스포머는 인코더와 디코더를 모두 가지고 있는 형태로 복잡도가 높고 학습이 쉽지 않은 부분이 있었는데 이후 인코더 단독 또는 디코더 단독 방식이 나오면서 학습도 다소간 용이해지고 활용 분야도 점차 확대되기 시작했다. 최근에는 어텐션 알고리즘의 구현이나 처리 방법등을 개선하면서 기존의 복잡도를 줄이면서도 좋은 성능을 유지하는 모델들이 나오기 시작했다. 향후에는 더 나은 성능 뿐 아니라 계산 복잡도도 최적화한 방법들이 계속 나오게 될 것으로 예상해 본다.
테크에이스(TecAce)는 거대 언어 모델을 활용하는데 도움을 주는 어플리케이션 솔루션으로 AssistAce Suite를 개발하고 있으며, 새로운 파운데이션 모델을 만들거나 오픈소스 모델에 기반해 원하는 태스크를 효율적으로 파인튜닝 하거나 활용하는데 효과적이 될 수 있는 최신 GPU 머쉰 솔루션 도 함께 공급하고 있다. 이런 소프트웨어와 하드웨어 솔루션을 통해 고객 기업들이 더 나은 인공지능 비지니스를 할 수 있도록 테크에이스는 원천 기술 개발과 협업 지원에 계속 전심 전력을 다해 나갈 예정이다.
참고 자료
[2] The Illustrated Transformer – Jay Alammar – Visualizing machine learning one concept at a time. (jalammar.github.io), https://jalammar.github.io/illustrated-transformer/
[3] Neural machine translation with a Transformer and Keras | Text | TensorFlow, https://www.tensorflow.org/text/tutorials/transformer
[4] Comparing the Performance of LLMs: A Deep Dive into Roberta, Llama 2, and Mistral for Disaster Tweets Analysis with Lora (huggingface.co)

Comments