์ธ๊ณต์ง๋ฅ
๋์ฝ๋ ๊ธฐ๋ฐ ๋๊ท๋ชจ ์ธ์ด ๋ชจ๋ธ: ์์ ํ ๊ฐ์ด๋
대규모 언어 모델(LLM)은 자연어 처리 분야에서 인간과 같은 텍스트 생성, 질문 응답, 다양한 언어 관련 작업에서卓越한 능력을 보여주면서 혁신을 가져왔습니다. 이러한 강력한 모델의核心에는 디코더 전용 트랜스포머 아키텍처가 있습니다. 이는 원래 트랜스포머 아키텍처의 변형으로, Vaswani 등이提出한 “Attention is All You Need“라는 의미 있는 논문에서 제안되었습니다.
이 모든 내용을 포함하는 가이드에서, 우리는 디코더 기반 LLM의 내부 작동을 탐구할 것입니다. 기본 빌딩 블록, 아키텍처 혁신, 구현 세부 사항을 연구하여 이러한 모델이 자연어 처리 연구와 응용 분야의 최전선에 도달하게 된 배경을 hiểu보겠습니다.
트랜스포머 아키텍처: 리프레셔
디코더 기반 LLM의 특정 사항에 뛰어들기 전에, 트랜스포머 아키텍처를 다시 방문하는 것이 필수적입니다. 트랜스포머는 시퀀스 모델링에 새로운 접근 방식을 도입하여, 재귀적 또는 컨볼루셔널 레이어가 필요 없도록 데이터의 장거리 의존성을 캡처하는 데 주로 주의 메커니즘을 사용했습니다.
원래 트랜스포머 아키텍처는 두 가지 주요 구성 요소로 구성됩니다: 인코더와 디코더. 인코더는 입력 시퀀스를 처리하여 컨텍스트화된 표현을 생성하고, 디코더는 출력 시퀀스를 생성하기 위해 이 표현을 사용합니다. 이 아키텍처는 초기에 기계 번역 작업을 위해 설계되었으며, 인코더는 소스 언어의 입력 문장을 처리하고 디코더는 대상 언어의 해당 문장을 생성합니다.
셀프 어텐션: 트랜스포머의 핵심
트랜스포머의 핵심에는 셀프 어텐션 메커니즘이 있습니다. 이는 강력한 기술로 모델이 입력 시퀀스의 다른 위치에서 정보를 가중하고 집계할 수 있도록 합니다. 전통적인 시퀀스 모델과 달리, 셀프 어텐션은 모델이 입력 토큰의 순서에 관계없이任意의 토큰 쌍 사이의 의존성을 캡처할 수 있도록 합니다.
셀프 어텐션 작업은 세 가지 주요 단계로 나눌 수 있습니다.
- 쿼리, 키, 밸류 프로젝션: 입력 시퀀스는 세 가지 별도의 표현으로 프로젝션됩니다: 쿼리(Q), 키(K), 밸류(V). 이러한 프로젝션은 입력과 학습된 가중 행렬의 곱으로 얻어집니다.
- 어텐션 스코어 계산: 입력 시퀀스의 각 위치에 대해, 어텐션 스코어는 해당 쿼리 벡터와 모든 키 벡터의 도트 프로덕트를 통해 계산됩니다. 이러한 스코어는 각 위치의 관련성을 나타냅니다.
- 밸류의 가중 합: 어텐션 스코어는 소프트맥스 함수를 통해 정규화되고, 결과 어텐션 가중치는 밸류 벡터의 가중 합을 계산하여 현재 위치의 출력 표현을 생성합니다.
멀티 헤드 어텐션은 셀프 어텐션 메커니즘의 변형으로, 모델이 여러 “헤드”를 통해 어텐션 스코어를 계산하여 다양한 관계를 캡처할 수 있도록 합니다.
아키텍처 변형과 구성
디코더 기반 LLM의 핵심 원리는 일관성을 유지하지만, 연구자들은 성능, 효율성, 일반화 능력을 개선하기 위해 다양한 아키텍처 변형과 구성들을 탐구했습니다. 이 섹션에서는 이러한 아키텍처 선택과 그들의 의미를 살펴보겠습니다.
아키텍처 유형
디코더 기반 LLM은 세 가지 주요 유형으로 분류될 수 있습니다: 인코더-디코더, 캐주얼 디코더, 프리픽스 디코더. 각 아키텍처 유형은 고유한 어텐션 패턴을 나타냅니다.
인코더-디코더 아키텍처
바니라 트랜스포머 모델을 기반으로 하는 인코더-디코더 아키텍처는 두 가지 스택으로 구성됩니다: 인코더와 디코더. 인코더는 입력 시퀀스를 처리하여 잠재적 표현을 생성하고, 디코더는 이 표현을 사용하여 대상 시퀀스를 생성합니다. 몇몇 LLM, 예를 들어 Flan-T5,는 이 아키텍처를 채택합니다.
캐주얼 디코더 아키텍처
캐주얼 디코더 아키텍처는 유니디렉셔널 어텐션 마스크를 통합하여, 각 입력 토큰이 과거 토큰과 자신만을 어텐션할 수 있도록 합니다. 입력과 출력 토큰은 동일한 디코더에서 처리됩니다. 주목할 만한 모델들, 예를 들어 GPT-1, GPT-2, GPT-3,는 이 아키텍처를 기반으로 합니다. GPT-3는 컨텍스트 학습 능력에서卓越한 성능을 보여주었습니다. 많은 LLM, 포함하여 OPT, BLOOM, Gopher,는 캐주얼 디코더를 광범위하게 채택했습니다.
프리픽스 디코더 아키텍처
프리픽스 디코더 아키텍처는 캐주얼 디코더의 마스킹 메커니즘을 수정하여, 프리픽스 토큰에 대한 양방향 어텐션과 생성된 토큰에 대한 유니디렉셔널 어텐션을 가능하게 합니다. 인코더-디코더 아키텍처와 마찬가지로, 프리픽스 디코더는 프리픽스 시퀀스를 양방향으로 인코딩하고, 공유 매개변수를 사용하여 출력 토큰을 자율적으로 생성할 수 있습니다. LLM, 예를 들어 GLM130B와 U-PaLM,는 프리픽스 디코더를 기반으로 합니다.
모든 세 가지 아키텍처 유형은 전문가 混合 (MoE) 스케일링 기술을 사용하여 확장될 수 있습니다. 이 접근법은 입력에 따라 신경망 가중치의 하위 집합을 선택적으로 활성화하여, 성능을 개선하는 동시에 계산 요구 사항을 줄입니다.
디코더 전용 트랜스포머: 자율적 성질을 수용
원래 트랜스포머 아키텍처는 시퀀스-시퀀스 작업을 위해 설계되었지만, 많은 자연어 처리 작업, 예를 들어 언어 모델링과 텍스트 생성,는 자율적 문제로 프레임할 수 있습니다. 여기서 모델은 한 번에 하나의 토큰을 생성하며, 이전에 생성된 토큰에 조건을 둡니다.
디코더 전용 트랜스포머는 트랜스포머 아키텍처의 단순화된 변형으로, 디코더 구성 요소만을 유지합니다. 이 아키텍처는 자율적 작업에 특히 적합합니다. 디코더 전용 트랜스포머와 원래 트랜스포머 디코더 사이의 핵심 차이점은 셀프 어텐션 메커니즘에 있습니다. 디코더 전용 설정에서, 셀프 어텐션 작업은 미래 토큰에 대한 어텐션을 방지하는 카스컬리티라는 속성을 갖습니다.
디코더 기반 LLM의 아키텍처 구성 요소
디코더 기반 LLM의 핵심 원리는 셀프 어텐션과 마스킹된 셀프 어텐션을 포함하지만, 현대의 디코더 기반 LLM은 성능, 효율성, 일반화 능력을 개선하기 위해 여러 아키텍처 혁신을 도입했습니다. 주요 구성 요소와 기술을 살펴보겠습니다.
입력 표현
입력 시퀀스를 처리하기 전에, 디코더 기반 LLM은 토큰화와 임베딩 기술을 사용하여 원시 텍스트를 모델에 적합한 수치 표현으로 변환합니다.
토큰화: 토큰화 과정은 입력 텍스트를 토큰 시퀀스로 변환합니다. 이는 단어, 서브워드, 또는 개별 문자일 수 있습니다. 인기 있는 토큰화 기술에는 바이트 페어 인코딩(BPE), SentencePiece, WordPiece가 있습니다. 이러한 방법은 어휘 크기와 표현 세부 사항 사이의 균형을 찾는 것을 목표로 합니다.
토큰 임베딩: 토큰화 후, 각 토큰은 密集한 벡터 표현인 토큰 임베딩으로 매핑됩니다. 이러한 임베딩은 학습 과정에서 학습되며, 토큰 사이의 의미적 및 구문적 관계를 캡처합니다.
위치 임베딩: 트랜스포머 모델은 입력 시퀀스를 동시에 처리하므로, 재귀 모델에서처럼 토큰 위치에 대한 내재된 개념이 없습니다. 위치 정보를 포함시키기 위해, 위치 임베딩이 토큰 임베딩에 추가됩니다. 초기 LLM은 사인 함수를 기반으로 固定된 위치 임베딩을 사용했지만, 최근 모델은 학습 가능한 위치 임베딩 또는 로테리 위치 임베딩과 같은 대체 위치 인코딩 기술을 탐구했습니다.
멀티 헤드 어텐션 블록
디코더 기반 LLM의 핵심 빌딩 블록은 멀티 헤드 어텐션 레이어입니다. 이는 마스킹된 셀프 어텐션 작업을 수행합니다. 이러한 레이어는 여러 번 스택되며, 각 레이어는 이전 레이어의 출력에 어텐션을 적용하여, 모델이 점점 더 복잡한 의존성과 표현을 캡처할 수 있도록 합니다.
어텐션 헤드: 각 멀티 헤드 어텐션 레이어는 여러 “어텐션 헤드”로 구성되며, 각 헤드에는独自의 쿼리, 키, 밸류 프로젝션이 있습니다. 이는 모델이 입력에서 다양한 관계와 패턴을 동시에 캡처할 수 있도록 합니다.
잔차 연결과 레이어 정규화: 깊은 네트워크를 훈련하고, 소실된 그래디언트 문제를 완화하기 위해, 디코더 기반 LLM은 잔차 연결과 레이어 정규화를 사용합니다. 잔차 연결은 레이어의 입력을 출력에 추가하여, 역전파 과정에서 그래디언트가 더 쉽게 흐를 수 있도록 합니다. 레이어 정규화는 활성화와 그래디언트를 안정화하여, 훈련 안정성과 성능을 개선합니다.
피드 포워드 레이어
멀티 헤드 어텐션 레이어 외에도, 디코더 기반 LLM은 피드 포워드 레이어를 포함합니다. 이는 각 위치에서 간단한 피드 포워드 신경망을 적용하여, 모델이 더 복잡한 표현을 학습할 수 있도록 합니다.
활성화 함수: 피드 포워드 레이어의 활성화 함수 선택은 모델의 성능에 크게 영향을 줄 수 있습니다. 초기 LLM은 널리 사용되는 ReLU 활성화를 사용했지만, 최근 모델은 더 발전된 활성화 함수, 예를 들어 GELU 또는 SwiGLU,를 채택하여 성능을 개선했습니다.
스파스 어텐션과 효율적인 트랜스포머
셀프 어텐션 메커니즘은 강력하지만, 시퀀스 길이에 대해 二乗的 계산 복잡성을 가지므로, 긴 시퀀스에서 계산적으로 비싼 편입니다. 이를 해결하기 위해, 셀프 어텐션의 계산과 메모리 요구 사항을 줄이는 여러 기술이 제안되었습니다.
스파스 어텐션: 스파스 어텐션 기술, 예를 들어 GPT-3 모델에서 사용된 기술,는 입력 시퀀스의 일부 위치만을 어텐션하도록 허용하여, 계산 복잡성을 크게 줄일 수 있습니다.
슬라이딩 윈도우 어텐션: Mistral 7B 모델에서 도입된 슬라이딩 윈도우 어텐션(SWA)은 각 토큰의 어텐션 범위를 固定된 윈도우 크기로 제한합니다. 이는 트랜스포머 레이어가 여러 레이어를 통해 정보를 전달하는 능력을 활용하여, 어텐션 범위를 증가시키는 동시에 二乗적 계산 복잡성을 피합니다.
롤링 버퍼 캐시: 긴 시퀀스에서 메모리 요구 사항을 줄이기 위해, Mistral 7B 모델은 롤링 버퍼 캐시를 사용합니다. 이는 固정된 윈도우 크기에서 계산된 키와 밸류 벡터를 저장하고 재사용하여, 중복 계산을 피하고 메모리 사용량을 최소화합니다.
그룹화된 쿼리 어텐션: LLaMA 2 모델에서 도입된 그룹화된 쿼리 어텐션(GQA)은 어텐션 헤드를 그룹으로 나누어, 각 그룹이 공유 키와 밸류 행렬을 사용하도록 합니다. 이는 멀티 쿼리 어텐션의 효율성과 표준 셀프 어텐션의 성능 사이에서 균형을 제공합니다.
















