Gemini

DiffusionGemma 완전 분석: Gemma 4랑 뭐가 다른 거예요?

cell-devlog 2026. 6. 11. 17:02
반응형

한줄요약: DiffusionGemma는 Gemma 4 베이스에 텍스트 diffusion 기술을 붙여 속도를 최대 4배 높인 실험적 모델인데, 품질은 낮습니다.


어제 구글이 조용히 하나 올렸는데 꽤 신기합니다. 이름은 DiffusionGemma. Gemma 4랑 같은 26B MoE 구조인데, 텍스트 생성 방식 자체를 갈아엎었습니다.

→ 출시일: 2026년 6월 10일
→ 라이선스: Apache 2.0
→ 공개 위치: Hugging Face (google/diffusiongemma-26B-A4B-it)
→ 성격: 실험적(Experimental) 오픈 모델
→ 개발: Google DeepMind
→ 기반: Gemma 4 아키텍처 + Gemini Diffusion 연구
→ 총 파라미터: 26B (추론 시 활성 파라미터: 3.8B)
→ 속도: H100 기준 1,000 tokens/sec 이상, RTX 5090 기준 700 tokens/sec 이상
→ VRAM: 양자화 시 18GB 이내 (RTX 4090, 5090에서 로컬 실행 가능)
→ 컨텍스트: 256K 토큰
→ 지원 도구: vLLM, Hugging Face Transformers, MLX, Unsloth, NVIDIA NeMo


핵심 차이: 텍스트 생성 방식이 완전히 다릅니다

기존 Gemma 4 (Autoregressive)

일반 LLM은 전부 이 방식입니다. 토큰 1개 생성 → 다음 토큰 생성 → 반복. 왼쪽에서 오른쪽으로, 무조건 순서대로. 로컬 단일 유저 환경에서는 GPU가 매번 다음 "키스트로크"를 기다리느라 절반 이상을 놀고 있습니다.

DiffusionGemma (Discrete Diffusion)

이미지 생성 AI(Stable Diffusion 같은 것들)가 노이즈에서 이미지를 뽑아내는 방식을 텍스트에 그대로 적용했습니다.

Step 1. 256개짜리 랜덤 placeholder 토큰 블록(캔버스)에서 시작
Step 2. 여러 번 pass를 돌면서 확신도 높은 토큰부터 확정
Step 3. 확정된 토큰이 주변 토큰 결정에 맥락 역할
Step 4. 최종적으로 블록 전체가 수렴 → 텍스트 완성

한 번의 forward pass에서 약 15~20개 토큰을 확정하면서 256토큰 블록을 병렬 처리합니다. GPU가 "타자기"가 아니라 "인쇄기"처럼 동작하는 겁니다.

개념 정리

  • 캔버스(Canvas): 한 번에 생성하는 256토큰 블록 단위
  • 디노이징(Denoising): 랜덤한 토큰을 점점 의미 있는 텍스트로 정제하는 과정
  • Uniform State Diffusion: Google이 이 모델에 적용한 핵심 diffusion 메커니즘 이름

아키텍처 차이

항목 Gemma 4 26B A4B DiffusionGemma

생성 방식 Autoregressive (순차) Discrete Diffusion (병렬 블록)
Attention Causal (단방향) Bidirectional (양방향)
구조 Decoder-only Encoder-Decoder
추론 파라미터 3.8B (same) 3.8B
Canvas 없음 256 토큰
속도 (H100) 기준값 4배 이상 빠름

양방향 어텐션이 중요한 이유가 있는데, 기존 autoregressive 모델은 아직 생성되지 않은 오른쪽 토큰을 볼 수 없습니다. 반면 DiffusionGemma는 블록 전체를 동시에 보면서 생성하기 때문에, 미래 맥락까지 참조해서 더 나은 선택이 가능합니다. 특히 코드 infilling(중간 채우기), 인라인 편집, 마크다운 자동 닫기 같은 비선형 태스크에서 이점이 큽니다.


실제 속도 비교 (공식 수치)

하드웨어 속도

NVIDIA H100 (FP8) 1,000+ tokens/sec
NVIDIA RTX 5090 700+ tokens/sec
Apple Silicon (M 시리즈) 속도 이점 없음 (메모리 대역폭 병목 구조라 해당 없음)

주의: Apple Silicon에서는 속도 이점이 없습니다. 구글이 공식 블로그에서 직접 명시했습니다.


벤치마크: 솔직히 품질은 낮습니다

DiffusionGemma는 같은 Gemma 4 26B A4B 대비 대부분의 벤치마크에서 낮은 점수를 기록했습니다.

 

벤치마크 DiffusionGemma Gemma 4 26B
MMLU Pro 77.6% 82.6%
AIME 2026 69.1% 88.3%
LiveCodeBench v6 69.1% 77.1%
GPQA Diamond 73.2% 82.3%
HLE no tools 11.0% 8.7% ← 유일하게 우세
MMMU Pro (비전) 54.3% 73.8%

구글 스스로도 "프로덕션 품질이 필요한 애플리케이션에는 표준 Gemma 4를 권장한다"고 명시했습니다.


어디에 쓰면 좋은가

이런 곳엔 적합합니다

  • 실시간 인라인 편집, 코드 자동완성 (IDE 플러그인)
  • 코드 infilling (중간 빈 자리 채우기)
  • 마크다운/코드 블록 자동 닫기
  • 로컬 단일 유저 환경의 저지연 애플리케이션
  • Sudoku 풀기처럼 autoregressive 모델이 구조적으로 못하는 비선형 태스크 (fine-tuning 후)

이런 곳엔 비추입니다

  • 최고 품질의 텍스트 생성이 필요한 프로덕션
  • 클라우드 고QPS(다중 유저) 서빙 — 오히려 비용이 더 들 수 있음
  • Apple Silicon 로컬 환경

배경: Gemini Diffusion 연구의 오픈웨이트 버전

Gemini Diffusion은 2025년 5월 Google I/O에서 클로즈드 실험으로 공개됐던 것으로, 웨이트리스트로만 접근 가능했습니다. DiffusionGemma는 그 연구를 Gemma 4 베이스 위에 오픈웨이트로 가져온 것입니다. 누구든 로컬에서 돌릴 수 있게.

또한 이 모델은 첫 번째 diffusion 언어 모델은 아닙니다. 앞서 2025년 초 LLaDA(8B)같은 연구 모델이 있었지만, vLLM 같은 프로덕션 인프라에서 네이티브 지원을 받은 건 DiffusionGemma가 처음입니다.


빠르게 시작하기

pip install -U transformers torch accelerate
from transformers import DiffusionGemmaForBlockDiffusion, AutoProcessor

MODEL_ID = "google/diffusiongemma-26B-A4B-it"

processor = AutoProcessor.from_pretrained(MODEL_ID)
model = DiffusionGemmaForBlockDiffusion.from_pretrained(
    MODEL_ID,
    dtype="auto",
    device_map="auto",
)

message = [{"role": "user", "content": "왜 하늘은 파란가요?"}]

input_ids = processor.apply_chat_template(
    message,
    tokenize=True,
    add_generation_prompt=True,
    return_dict=True,
    return_tensors="pt"
).to(model.device)

output = model.generate(**input_ids, max_new_tokens=512)
print(processor.decode(output[0], skip_special_tokens=False))

클래스 이름 주의: 기존 Gemma 4처럼 AutoModelForCausalLM이 아니라 DiffusionGemmaForBlockDiffusion을 씁니다.


결론

  • 속도가 생명인 로컬 인터랙티브 앱 개발자에게 실험해볼 만한 모델
  • 품질 우선이면 여전히 Gemma 4가 정답
  • Gemini Diffusion 연구의 오픈웨이트 버전이라는 의미가 더 큼
  • vLLM, Unsloth, NeMo까지 day-1 지원이라 실전 연결이 빠름
  • Apple Silicon 유저는 이 모델로 속도 이점 없으니 굳이 안 써도 됨

 

반응형