-
AI 모델 개발 - Transformer 변형, 확장카테고리 없음 2025. 8. 23. 01:29
왜 “Transformer 변형·확장”이 필요한가?
- 시퀀스가 길어지면 계산이 폭증한다
- 기본 Transformer의 Self‑Attention은 토큰 수 n이 늘 때마다 계산·메모리가 n² 배로 늘어납니다.
- 2 K 토큰짜리 문서는 괜찮지만 100 K 토큰(긴 보고서·DNA 서열)을 넣으면 GPU VRAM이 바로 바닥납니다.
- 모델을 키울수록 파라미터가 기하급수적으로 늘어난다
- GPT‑계열처럼 “크면 클수록 잘 된다”는 사실이 밝혀졌지만, FLOPs(연산)·메모리·비용이 감당하기 힘든 수준으로 커집니다.
- 실시간 서비스 지연(latency) 문제
- 챗봇·검색 추천처럼 “1 초 안에 답해야” 하는 경우, 거대한 dense 모델을 그대로 돌리면 지연이 길어집니다.
👉 결국 목표는 두 가지
- “길게” 읽고 쓰되, 메모리·시간 낭비를 줄이기.
- “크게” 만들되, 실제로는 필요한 부분만 계산하기.
큰 그림: 두 가지 대표 축
축 핵심 질문 대표 해법(예) 직관적 비유 길이 축(Efficient Attention) “모두 서로를 볼 필요가 있을까?” Flash‑Attention, Performer, Longformer 100명이 전원과 대화(O(n²)) vs. 테이블/창구로 그룹 지어 대화(O(n)) 용량 축(Sparsely‑Activated LLM) “모델 전체가 매 토큰마다 필요할까?” Mixture‑of‑Experts(MoE) 종합병원 의사 100명에게 모두 진료받을 필요 없이, 전문 과 1‑2명만 만나면 된다
핵심 용어를 아주 쉽게 풀어 보기
용어 한글 설명 손쉬운 이미지 Attention “각 단어(토큰)가 문장 내 다른 단어를 얼마나 참고할지”를 계산하는 가중치 행렬 회의에서 사람들끼리 시선 돌려가며 의견 듣기 Efficient Attention 위 과정을 “덜 보고, 더 빨리” 하도록 변형한 모든 기법의 통칭 카메라 ‘파노라마’ 대신 초점 맞춘 스냅 여러 장으로 큰 풍경을 담기 Flash‑Attention GPU 캐시를 활용해 메모리 왕복을 최소화 → “같은 결과를 더 빠르게” 서류 더미를 들고 창구 ↔ 사무실을 계속 오가는 대신, 창구에 서류 트레이를 두고 한 번에 처리 Performer Softmax를 수학적으로 ‘근사’해 연산량을 선형으로 줄임 복잡한 곱셈 대신 주사위 굴려 평균값 추정 Longformer 창(윈도) 안에서만 집중 + 중요한 토큰만 전역으로 연결 소설을 읽을 때 한 페이지(창)만 보고, 챕터 제목만 전체 책과 연결 MoE(전문가 혼합) 모델 안에 여러 “전문가 네트워크”를 두고, 토큰마다 1–2명만 선택 병원 접수 → 과별 진료 배정 Router / Gate 어떤 전문가를 쓸지 결정하는 작은 네트워크 진료 과를 배분해 주는 접수 창구 직원 Load‑Balancing Loss 특정 전문가에게 쏠림을 막기 위한 규제 인기 과에만 환자 몰리지 않도록 순번제 도입
직관적 시나리오 두 가지
- “백과사전형 질문” — 입력이 50 K 토큰
- Dense Transformer → 메모리 초과
- Longformer: 창으로 뚝뚝 잘라 국소 문맥만 본다 + 필요한 토큰(머릿말)만 전역 연결
- 결과: 메모리·시간 둘 다 ↓, 정확도는 유지
- “멀티태스크 챗봇” — 번역·코딩·문학 질문이 섞임
- Dense 100 B 모델 → 모두 계산 → 지연 2 s
- MoE 400 B(100명의 전문가 중 2명만 활성)
- 번역 Q → “번역 전문가 + 공용 전문가”
- 코딩 Q → “코딩 전문가 + 공용 전문가”
- 연산은 2명분이라 지연은 Dense와 비슷, 파라미터 용량은 4배 → 품질↑
한 줄 정리
Efficient Attention은 “길이를 늘리는 기술”,
MoE는 “용량(파라미터)을 늘리는 기술” —
둘 다 “계산 FLOPs와 메모리를 폭발시키지 않고” 긴 시퀀스·초거대 모델을 현실적으로 돌리게 해 줍니다.
1. Efficient Attention 계열
공통 목적 – “시퀀스 길이 ↑, GPU 메모리·시간 제한 ↓” 문제를 해결해 기존 아키텍처를 그대로 더 길게·빠르게 돌리기.
모델 핵심 아이디어 갖춰야 할 직관 Flash‑Attention 1·2 ‑ QKᵀ → Softmax → V3‑스텝 계산을 GPU 캐시 한 패스로 묶어 “읽고‑쓰는 횟수”를 급감시킴. 결과는 완전 동일 (근사 X).‑ Self‑Attention 병목은 연산이 아니라 메모리 대역폭임 → 캐시 활용으로 해결. (Medium, tridao.me) Performer Softmax를 “커널 함수”로 보고 랜덤 특성(RF) 로 근사 → Attention을 선형 연산으로 변환. ‑ 정확도가 근사 오차에 좌우되므로, _기억해야 할 포인트_는 softmax ≈ φ(Q) · φ(K)ᵀ. (arXiv, research.google)Longformer 토큰마다 전 범위를 보지 않고 슬라이딩 창 + 일부 글로벌 토큰 만 집중하여 계산. ‑ “문서는 대부분 국소적 문맥” → 창 안에서만 상호작용, 꼭 필요한 토큰만 글로벌로 지정. (Medium, arXiv) 언제 어떤 걸 고르나?
- Flash‑Attn : 정확도 동일‧CUDA 가능할 때 “손‑쉽게 속도↑ 메모리↓”
- Performer : 10 k+ 토큰 등 매우 긴 입력, 근사 허용 가능
- Longformer : 긴 문서 QA/요약처럼 “창 기반 구조”가 자연스러운 작업
2. Sparsely‑Activated LLM (Mixture‑of‑Experts, MoE)
발상 – “모델 전체를 다 쓰지 말고, 토큰마다 필요한 일부 서브‑모델만 불러 쓰자”.
요소 개념 / 설계 포인트 Experts Feed‑Forward(FFN) 블록을 여러 개 두고, 각 블록이 “전문가” 역할을 수행 Router / Gating 토큰 임베딩을 보고 K개 전문가(보통 1–2개)를 선택 → _파라미터_는 폭발적으로 늘어나지만, 실제 연산은 K개만 진행 장점 ‑ 파라미터 ↑ → 표현력·용량 향상‑ FLOPs·메모리는 Dense 모델과 비슷 단점 / 해결책 ‑ 특정 전문가에 쏠리는 로드밸런싱 문제 → “Load‑Balancing Loss”‑ 다중 GPU/TPU 간 All‑to‑All 통신 ↗ → 채널 분할·토큰 스쿼딩 기법 등장 실전 사례 Switch‑Transformer, GLaM, Llama‑3 MoE (2025) 등은 “Dense ≈ 70 B FLOPs, MoE Param > 400 B” 구도로 효율을 달성. (arXiv, Hugging Face) 기억할 개념 연결고리
큰 모델 성능 ↑ → 두 가지 길 ├─ Dense (모두 계산) → 메모리‧연산 폭발 └─ Sparse (MoE 등) → “필요할 때만 전문가 호출”Efficient Attention 는 시퀀스 길이 병목을,
MoE 는 파라미터 용량 병목을 풀어 준다.
둘을 합치면 “길고 큰 LLM”도 실용 범위로 들어온다.
3. 시험‑용 체크리스트
- 질문이 “근사 or 정확” → Flash‑Attn(정확) vs. Performer(근사) 구분
- “창‑기반” 언급 → Longformer
- “토큰마다 소수 전문가” → MoE, 키워드는 Router·Load‑Balancing
- “통신량 문제” → MoE 단점으로 연결
“최신 LLM = 모두 Efficient Attention?” — 정답은 **“부분적으로 예, 완전히는 아님”입니다.
1. 두 층위의 ‘Efficient Attention’
층위 요점 예시 ① 커널 최적화 (속도·메모리 개선, 연산은 그대로 n²) 표준(Full) 어텐션 공식을 GPU 친화적으로 구현해 메모리 왕복을 줄임. Flash‑Attention 1·2·3 — Llama 3·Phi‑3·GPT‑NeoX 등 대다수가 학습·추론 때 사용. (Medium, Hugging Face, arXiv) ② 아키텍처 변경 (복잡도 자체를 완화) 슬라이딩 창·랜덤 특성·선형 변환 등으로 어텐션을 근사 or 희소화해 n² 병목 자체를 줄임. Longformer, Performer, RetNet, 구성상 “Sparse Transformer”라고 밝힌 Claude 3 등. (anthropic.com, Medium) 핵심 차이
커널 최적화는 “속도를 높여도 결과는 동일”,
아키텍처 변경은 “계산을 아예 덜 해서 근사 또는 희소 패턴”.
2. 최신 공개·상용 모델 현황
모델 주된 어텐션 처리 방식 비고 Llama 3 / Mixtral 8×22B Flash‑Attention 2 포함한 표준 Full‑Attention 아키텍처는 전통적 Decoder, 대용량 MoE·GQA로 성능 확보. (Medium, Hugging Face) Claude 3 “Sparse Transformer” 구조(세부 미공개) 발표 자료에 희소 어텐션 언급 → 커널+아키텍처 변화 혼합 추정. (Medium) Gemini 1.5 / GPT‑4o 공개 문서 X, 그러나 Flash‑Attention류 커널 사용 사실 다수 인터뷰·벤치마크에 언급 롱컨텍스트(1 M 토큰) 지원은 아키텍처·메모리 매니저까지 포함된 종합 설계. LongLLaMA, RetNet Performer / 재귀‑선형 구조 연구 모델 — 초장문 입력 특화. 결론: “대세 LLM”들은 대부분 Flash‑Attention 같은 커널 최적화는 기본 장착했지만, 모두가 Longformer·Performer 같은 구조적 변경을 가진 것은 아니다.
3. 왜 ‘전부’ 도입하지 못했을까?
- 정확도·안정성 리스크
- 근사·희소 기법은 특정 작업에서 정확도 손실이 날 수 있어 대규모 상용 모델엔 보수적으로 반영.
- 개발·하드웨어 스택 의존성
- Flash‑Attention은 CUDA 전용; TPU·CPU 친화 대안이 아직 표준화되지 않음.
- 다른 병목도 함께 존재
- 토큰 생성 속도(디코딩), KV‑캐시, 네트워크 통신이 지배적인 경우 “어텐션 복잡도”만 바꿔서는 효과 제한.
4. 정리해 두면 좋은 직관
Efficient Attention = 두 가지 층(커널 vs. 구조) 중 어디까지 적용했는가의 문제
- 커널 최적화는 사실상 “현대 LLM의 기본 옵션”.
- 구조적 변화는 모델 목적(초장문·경량기기)과 정확도/리스크 트레이드오프를 보고 선택.
따라서 “최신 LLM은 전부 Efficient Attention으로 만들어졌나?”라는 질문에는
“대부분이 커널 수준 개선은 쓰지만, 구조 자체를 바꾼 모델은 일부”라고 답하는 것이 정확합니다.
“커널”이란 무엇이고, 왜 최적화가 중요한가?
개념 쉬운 비유 핵심 포인트 커널(kernel) 공장에서 하나의 공정(ex. 재단, 용접) GPU·TPU 같은 병렬 하드웨어에서 단일 연산 작업을 수행하는 작은 프로그램 단위
예) 행렬 곱, Softmax, LayerNorm커널 최적화 공정을 그대로 유지하되 라인 배치·동선을 재설계 → 더 빠르고 자원 덜 씀 수학식은 바꾸지 않고
① 메모리 왕복 줄이기 (캐시, 공유 메모리 활용)
② 스레드·벡터 연산 배치 정비
③ 전용 연산기(Tensor Core 등) 호출로 FLOPs/초↑
1. 커널 최적화가 해결하는 병목
딥러닝 연산 = “계산”보다 “데이터 꺼내 / 넣기”가 더 느리다
- 표준 Attention은 Q × Kᵀ, Softmax, Softmax × V 3개의 커널을 따로 불러서 실행
→ 매 단계마다 GPU DRAM ↔ SM(Streaming Multiprocessor) 왕복 - Flash‑Attention은 세 단계를 한 번에 수행하도록 “융합(fusion)” 커널 작성
→ 같은 수학 결과이지만 메모리 트래픽 절반 이하, 속도 수 배 ↑
2. 대표적인 커널 최적화 예
기술 무엇을 어떻게 줄였나? 어디서 쓰이나? Flash‑Attention ‑ 슬라이딩 tile + L2 캐시 재사용
‑ Softmax 중간 결과를 레지스터에 보존GPT‑계열, Llama 3, Phi‑3 훈련·추론 Fused MLP / RMSNorm 여러 point‑wise 연산을 하나의 커널로 합침 TensorRT LLM, vLLM Tensor Core 활용 매트릭스 연산을 전용 하드웨어로 실행 모든 최신 NVIDIA A100/H100 모델 Triton / XLA JIT 파라미터 크기·배치에 맞춰 동적 코드 생성 OpenAI Triton kernels, JAX·TensorFlow XLA
그림으로 보는 차이
전통 방식 GPU DRAM <-- QKᵀ --→ 저장 GPU DRAM <-- Softmax -- 저장 GPU DRAM <-- Softmax·V -- 결과 커널 최적화 GPU DRAM <--[Flash‑Attn 한 번에]-- 결과(한 번만 왕복 → 대역폭·시간 절감)
3. 핵심이해 한 줄
커널 최적화 = “같은 수학, 더 똑똑한 실행”
모델 구조(알고리즘)는 그대로 두고, 하드웨어에 맞춘 저수준 코드를 손봐서
‑ 속도·메모리·전력 효율을 크게 끌어올린다.
따라서 최신 LLM에서 “Efficient Attention”이라고 할 때
- 커널 수준 최적화(Flash‑Attention류) 는 거의 필수 옵션
- 아키텍처 자체 변경(창 어텐션, Performer 등) 은 필요에 따라 선택
둘을 구분해 기억하면 “왜 같은 Transformer인데 속도가 이만큼 차이나지?”라는 질문에 명쾌하게 답할 수 있습니다.
- 시퀀스가 길어지면 계산이 폭증한다