본문으로 건너뛰기
Nebius조회 1

추측 디코딩 드래프트 헤드 대규모 훈련을 위한 엔지니어링

Streaming Cross Entropy로 로짓 메모리를, block‑sparse FlashAttention으로 어텐션 비용을 낮춰 EAGLE‑3 드래프트 헤드 학습을 가능하게 한다.

이 요약은 AI가 원문을 분석해 생성했습니다. 정확한 내용은 원문 기준으로 확인하세요.

TL;DR

추측 디코딩용 드래프트 헤드 훈련은 대형 어휘와 긴 컨텍스트에서 LM 로짓과 특이 어텐션 패턴 때문에 메모리·성능 병목이 발생한다. Streaming Cross Entropy는 로짓 텐서를 토큰 청크 단위로 물리화해 로짓 메모리 피크를 chunk_size 수준으로 제한하고 역전파에서는 청크별 그래디언트를 누적해 수치적 동등성을 유지한다. block‑sparse FlashAttention은 드래프트의 밴드형 대각선 마스크와 다른 제약의 교집합만 블록 단위로 계산해 밀집 비용을 제거하며, 두 기법을 합치면 대규모 긴 컨텍스트 드래프트 헤드 학습이 메모리와 처리량 측면에서 현실적으로 가능해진다.

빠른 이해

새로운 점

로짓 물리화를 토큰 청크 단위로 내부 분할해 완전 동치 손실을 유지하면서 로짓 메모리 피크를 직접 제한한 점과, 드래프트 대각선 패턴을 블록-스파스 마스크로 교집합해 FlashAttention 커널을 재사용한 점이 실무적 엔지니어링 기여로 돋보인다.

핵심 메커니즘

토큰 단위로 손실을 분해하고 청크별로 로짓과 그래디언트를 계산·누적해 로짓 메모리 피크를 chunk_size 수준으로 제한하는 Streaming Cross Entropy와, 드래프트 대각선·인과성·문서 패킹 제약의 교집합을 블록 단위 마스크로 표현해 유효 블록만 FlashAttention으로 계산하는 block‑sparse 어텐션이다.

핵심 수치

  • Throughput (tokens/sec, GPT‑OSS‑20B, 8 H100): 6,900 → 11,200 (측정값)- 메모리 사용량 감소로 배치/효율을 올려 처리량이 증가
  • GPU 메모리 활용률: 44% → 25%- block‑sparse FlashAttention 적용 시의 평균적인 감소

섹션별 상세

문제 개요

추측 디코딩을 위한 드래프트 헤드 대규모 훈련은 두 가지 보이지 않는 병목을 만든다. 첫째는 어휘 크기와 토큰 수에 따라 선형으로 증가하는 LM 로짓 경로의 메모리 사용이다. 둘째는 EAGLE‑style 드래프트가 만드는 밴드형 대각선 어텐션 패턴으로, 이를 밀집 방식으로 처리하면 길이의 제곱에 해당하는 메모리와 계산이 발생한다. 이 글은 로짓 메모리를 청크 단위로 처리하는 Streaming Cross Entropy와, 드래프트 대각선과 다른 마스크 제약을 블록 단위로 결합해 FlashAttention 커널을 재사용하는 block‑sparse 구현을 통해 두 병목을 각각 제거하는 방법을 다룬다.

Streaming Cross Entropy

Streaming Cross Entropy는 전체 시퀀스의 [batch, sequence, vocab] 로짓을 한꺼번에 생성하지 않고 토큰 집합을 작은 청크로 나누어 각 청크별로 로짓·교차엔트로피·그래디언트를 계산하고 합산해 최종 손실을 얻는 방식이다. 구현상 핵심은 손실을 토큰별로 분해할 수 있다는 점이며, 청크는 시퀀스 축뿐 아니라 배치·시퀀스를 평탄화한 토큰 집합으로도 나눌 수 있다. 이 방식은 로짓 메모리 피크를 chunk_size × vocab_size × dtype_size × 2 수준으로 제한하므로, 예시에서는 전체 시퀀스·대형 vocab에서 수백 GiB가 필요하던 경로가 chunk_size=1024이면 약 1 GiB 수준으로 내려간다. 수학적으로는 미니배치 손실을 각 청크 손실들의 가중합으로 재구성한다: Lminibatch=chunksLcitokenscitokensminibatchL_{minibatch}=\sum_{chunks} L_{c_i} * \frac{|tokens_{c_i}|}{|tokens_{minibatch}|}이며 각 기호는 청크와 전체 미니배치의 유효 토큰 수에 대응한다. 이 식에서 입력은 청크별 hidden states와 타깃, 출력은 청크 가중치 합산을 통해 얻는 동일한 정규화 손실이며, 실제 구현은 수치 반올림 차이를 제외하면 밀집 연산과 동등하다.
전체 시퀀스 흐름과 드래프트 헤드의 로짓 시프트를 보여주는 다이어그램.
Diagram원시 시퀀스에서 변환기 출력이 생성되고 LM 헤드가 시프트된 타깃을 위한 로짓을 만드는 전체 경로를 시각화한다. 드래프트 헤드별로 서로 다른 시프트가 필요하다는 점과 경계 토큰이 청크로 나뉠 때 발생할수 있는 정렬 문제를 직관적으로 확인할 수 있다. 이 그림은 Streaming Cross Entropy에서 타깃 정렬이 청크 분할보다 먼저 이뤄져야 하는 근거를 보완한다.

정렬과 역전파 세부

Streaming Cross Entropy가 수치적으로 동일하려면 타깃 정렬과 손실 마스크 적용이 청크 분할보다 먼저 이뤄져야 한다. 특히 드래프트 헤드마다 다른 시프트를 사용하는 경우, 시프트 연산을 청크 경계 밖에서 처리하지 않으면 예측-타깃 쌍이 잘려 잘못된 손실과 마스크가 발생한다. 역전파에서는 각 청크에 대해 로짓·손실·입력 그래디언트를 계산하고 LM‑head 가중치 그래디언트를 청크 단위로 누적하므로, 전체 체계는 호출자 관점에서 일반 손실 함수와 동일한 인터페이스를 유지한다. 최종적으로 피크 메모리는 청크 크기 수준으로 제한되며, 구현은 커스텀 backward 규칙으로 래핑되어 기존 학습 루프를 바꾸지 않는다.
청크별로 분할했을 때 naive한 타깃 처리로 인해 경계 토큰이 마스킹되는 문제를 보여주는 다이어그램.
Diagram청크 단위로 입력을 잘라 Transformer에 독립적으로 넣는 경우 각 청크의 시작 경계가 이전 토큰과의 관계를 잃어 손실이 잘못 계산될 위험이 있음을 시각화한다. 드래프트 헤드가 시프트된 타깃을 가지는 상황에서 이러한 경계 문제가 왜 정렬 우선 처리가 필요한지 근거를 제공한다. 해당 그림은 chunking 전에 타깃 시프트를 적용해야 한다는 구현 규칙을 보강한다.
청크 정렬을 올바르게 수행한 후 각 헤드에 대해 시프트된 임베딩과 최종 로짓을 계산하는 올바른 워크플로우 다이어그램.
Diagram정렬→시프트→청크 분할→청크별 손실 누적의 순서를 보여주어 Streaming CE의 정합성 조건을 한눈에 확인할 수 있다. 드래프트 헤드별 마스킹이 어떻게 적용되는지와 각 헤드가 동일한 정규화 분모를 사용해 합산되는지를 시각적으로 지원한다. 개발자가 구현 시 놓치기 쉬운 연산 순서를 검증하는 자료로 쓰인다.

청크 크기 선택과 성능 절충

청크 크기 chunk_size는 로짓 메모리와 실행 효율 사이에서 균형을 정하는 파라미터이다. chunk_size를 줄이면 로짓 피크가 줄지만, 청크 수 증가로 루프 오버헤드와 작은 행렬곱 비효율이 발생한다. 실험에서 기본 LM(밀집) 처리량은 약 6100 tokens/sec/GPU였고, streaming chunk=4096(32 청크 분할)은 6200 tokens/sec/GPU로 유사한 성능을 보였으나 chunk=1024로 청크 수가 늘면 처리량이 4450→2050으로 급감했다. 따라서 목표는 가능한 한 큰 청크를 택해 LM 로짓 피크가 변환기 블록 역전파 피크보다 작거나 같게(streaming_lm_peak <= transformer_block_peak) 만드는 것이다. 이 규칙을 만족하면 더 작은 청크로 성능을 희생하지 않고도 메모리 요구를 낮출 수 있다.

블록-스파스 FlashAttention과 EAGLE 3

EAGLE 3 드래프트 헤드는 각 토큰이 제한된 이웃만 바라보는 밴드형 대각선 스패스 어텐션을 요구하므로, 전체 [N,N] 밀집 어텐션을 계산하면 길이 제곱 비용 때문에 확장 불가 상태가 된다. 해결책은 어텐션을 고정 블록(tile) 단위로 나누고 인접 제약(인과적 마스크, 도큐먼트 패킹, 드래프트 대각선 제약)의 교집합에 속하는 블록만 계산하는 것이다. 이 접근은 고성능 FlashAttention 커널(예: Triton 기반)으로 연결되어 유효 블록만 처리하므로 메모리와 시간 효율이 크게 향상된다. 벤치마크에서 8k 시퀀스, 배치 2 환경은 JAX 구현이 약 80.75 GB 피크였던 반면 Triton FlashAttention은 4.45 GB로 줄었고, 긴 시퀀스에서 JAX가 OOM이 되던 상황에서도 block‑sparse 구현은 수십 GB 수준으로 유지되었다. 결과적으로 GPT‑OSS‑20B급 구성의 전체 학습에서 GPU 메모리 활용률이 44%에서 25%로 내려가고 토큰 처리량이 6,900→11,200 tokens/sec으로 증가했다.

메모리 예시와 통합 효과

전체 파인튜닝 예시에서 밀집 Cross Entropy가 차지하던 약 31GB(로짓+그래디언트 버퍼)가 Streaming CE로는 약 1GB 수준으로 감소해 전체 피크가 대략 98GB에서 68GB로 바뀌었다. 그러나 한 파트의 피크가 사라지면 변환기 블록 역전파나 옵티마이저 상태 등 다른 피크가 새로운 병목으로 떠오를 수 있으므로 청크 크기 선택은 다음 큰 피크와의 비교로 결정해야 한다. EAGLE 3의 블록-스파스 어텐션과 Streaming CE는 서로 충돌하지 않고 합성되어, 로짓 기반 메모리와 어텐션 기반 비용을 동시에 낮춰 긴 컨텍스트와 다수 드래프트 헤드를 현실적으로 학습할 수 있게 만든다.
프로그램 순서(연산 흐름)에 따른 할당 힙 크기 변화를 보여주는 메모리 프로파일 차트.
Chart전체 학습 그래프에서 로짓 관련 구간과 어텐션 전/후의 메모리 피크가 어디에 나타나는지 시각화한다. 특정 구간에서 'unembedding' 및 attention 관련 피크가 크게 올라가는 것을 통해 어떤 연산이 메모리 병목을 만드는지 근거 자료로 활용할 수 있다. Streaming CE 적용 전후나 block‑sparse 적용 시 변화점 비교에 근거를 제공한다.
block‑sparse 적용 전후의 메모리 할당 비교를 보여주는 추가 메모리 프로파일 차트.
Chartblock‑sparse FlashAttention으로 처리할 때 특정 attention 단계의 메모리 피크가 크게 줄어드는 패턴을 보여준다. 이 차트는 block 단위 계산이 유효 블록만 물리화함으로써 메모리를 줄이는 메커니즘을 시각적으로 보강한다. 긴 컨텍스트에서 밀집 구현이 비현실적임을 직관적으로 전달한다.
짧은 구간의 메모리 변동을 강조한 프로파일과 변형된 피크를 보여주는 차트.
Chart특정 블록에서 'transformed bwd peak' 같은 레이블로 표시된 지점들이 역전파 중 어떤 연산이 높게 올라가는지 가리킨다. Streaming CE로 로짓 피크를 제거했을 때 변환기 역전파가 다음 피크로 부상하는 현상을 이해하는 데 증거로 쓸 수 있다. 이 자료는 청크 크기 선정 시 다음 큰 피크를 고려해야 한다는 실무적 결정을 뒷받침한다.

결론

드래프트 헤드 학습의 두 핵심 병목인 로짓 메모리와 특이한 어텐션 패턴을 각각 Streaming Cross Entropy와 block‑sparse FlashAttention으로 타깃팅하면 대규모 긴 컨텍스트 추측 디코딩 훈련이 가능해진다. Streaming Cross Entropy는 손실의 토큰별 분해 가능성을 이용해 로짓 물리화를 청크 수준으로 제한하고, block‑sparse 어텐션은 밴드형 드래프트 마스크를 블록 단위로 결합해 고성능 커널을 재사용한다. 이 두 기법을 합치면 대형 어휘, 긴 시퀀스, 다중 드래프트 헤드를 가진 설정에서 메모리와 처리량 요구를 동시에 만족시킬 수 있다.

용어 해설

로짓 병목(logits bottleneck)
최종 LM 헤드가 만들어내는 [batch, sequence, vocab] 형태의 로짓 텐서는 토큰 수와 어휘 크기에 비례해 메모리를 급증시킨다. 긴 컨텍스트와 대형 vocab에서는 수백 GiB로 도달해 GPU 메모리를 지배할 수 있다.
추측 디코딩(speculative decoding)
기본 모델 대신 경량 드래프트 모델이 미래 토큰을 빠르게 예측해 후보를 생성하고, 기본 모델로 검증해 응답 지연을 줄이는 기법이다. 드래프트의 다중 헤드는 추가적 손실과 마스킹을 요구한다.
드래프트 헤드(draft head)
기본 LM에 추가되는 토큰 예측 헤드로서 서로 다른 시점의 미래 토큰을 예측한다. 각 헤드는 다른 시프트를 가진 타깃과 마스크를 필요로 하므로 정렬과 손실 계산이 복잡해진다.
스트리밍 교차엔트로피(Streaming Cross Entropy)
전체 토큰 로짓을 한꺼번에 물리화하지 않고 토큰 단위 청크로 나눠 손실과 그래디언트를 누적하는 방식이다. 로짓 메모리 피크를 chunk_size × vocab_size 수준으로 제한한다.
블록-스파스 주의(block-sparse attention)
어텐션 행렬을 고정 크기 블록 단위로 표현해 유효 영역으로 교차하는 블록만 계산하는 기법이다. 대각선 밴드형 제약을 적용하면 길이 제곱 비용을 크게 낮출 수 있다.

기술

  • Streaming Cross Entropy
  • Block-sparse FlashAttention
  • EAGLE 3
  • FlashAttention
  • Llama 3.1
  • H100
  • Triton

언급된 리소스

AI 분석 전체 내용 보기

AI 요약 · 북마크 · 개인 피드 설정 — 무료

출처 · 인용 안내

수집 2026. 08. 07.출처 타입 WEB

인용 시 "요약 출처: AI Trends (aitrends.kr)"를 표기하고, 사실 확인은 원문 보기 기준으로 진행해 주세요. 자세한 기준은 운영 정책을 참고해 주세요.