Diffusion 언어 모델 만드는 법: Masked Diffusion부터 Block Diffusion까지
How to build a diffusion language model
TL;DR Highlight
토큰을 한 번에 채우고 다듬는 Diffusion LLM의 구성 요소를 정리한 글
Who Should Read
autoregressive LLM의 속도·오류 수정 한계가 고민이라 Diffusion LLM의 원리를 알고 싶은 LLM API 개발자
Core Mechanics
- Autoregressive LLM은 세 가지가 한계다
- 토큰을 한 번 내면 고칠 수 없어 초반 실수가 누적된다.
- 토큰 수만큼 스텝이 필요해 병렬 생성이 어렵다.
- causal attention이라 뒤쪽 문맥을 보지 못한다.
- Diffusion LLM은 초안을 통째로 다듬는다
- 전체 길이의 초안에서 시작해 여러 스텝에 걸쳐 모든 위치를 병렬로 고쳐 쓴다.
- 스텝 수로 속도와 품질을 맞바꿀 수 있고, 매 스텝 양방향 문맥을 본다.
- 2026년 기준 Mercury 2(Inception Labs), Gemma Diffusion(Google), Nemotron Diffusion(NVIDIA)이 나왔다고 한다.
- Masked diffusion은 생성형 BERT다
- 토큰 일부를 랜덤 비율로 가리고 양방향 transformer가 빈칸을 채우게 학습한다.
- 생성은 전부 가린 문장에서 시작해 채우기와 다시 가리기를 반복한다.
- BERT와 달리 마스킹 비율을 랜덤하게 바꾸며, 이 방식이 대부분 오픈소스 diffusion LM의 기반이라고 한다.
- Masked diffusion 손실은 BERT 손실의 평균이다
- 학습 손실은 모든 마스킹 비율에 걸친 BERT cross-entropy를 t로 나눠 평균낸 형태다.
- 이 ELBO(우도의 하한) 덕분에 perplexity로 autoregressive와 직접 비교할 수 있다.
Community Reactions
- GPU에서 diffusion Gemma를 써 봤더니 초당 출력 토큰이 매우 빠르고 로컬 모델로 쓸 만하다는 경험
- whitepaper에서 시간과 컴퓨팅이 더 있었다면 더 잘할 수 있었다고 밝힌다는 언급도 있었다.
- diffusiongemma를 재구현해 보니 약점이 있었다는 경험
- 두 위치의 토큰이 서로 맞아야 하는데 둘 다 두 상태 사이에서 흔들리면 짝이 맞게 수렴하지 않을 수 있다.
- 텍스트를 이미지로 렌더링해 이미지 diffusion으로 생성한 뒤 OCR하는 접근을 궁금해하는 의견
- 단일 monospace 폰트면 OCR이 템플릿 매칭에 가까워 효율적일 것이라는 생각이었다.
- 대학 프로젝트에서 ELBO 유도를 공부했다는 경험
- 수학 구조에 이름을 붙이면 단순해지며, ChatGPT로 이해의 빈틈을 메우는 데 도움을 받았다고 한다.
How to Apply
- 이 글을 LLM에 넣고 우리 서비스 적합성 따져 보기
- 오늘 아래 프롬프트에 서비스의 지연·오류 수정 요구사항을 넣어 돌려 보라.
- 병렬 생성과 반복 수정이 이득인 지점과 아닌 지점을 구분해 받아라.
- Diffusion Gemma를 로컬 GPU에서 속도 측정하기
- 현재 쓰는 autoregressive 모델과 같은 프롬프트로 초당 출력 토큰을 비교하라.
- 짝을 맞춰야 하는 출력(괄호, 키-값 쌍)에서 일관성이 깨지는지 따로 확인하라.
- 긴 출력에는 블록 크기 개념으로 지연 설계하기
- 길이가 가변인 생성 작업은 block diffusion 계열 모델을 후보에 넣어라.
- 블록 크기를 GPU 활용률 기준으로 조정해 처리량을 비교하라.
Try It
# Claude나 ChatGPT에 붙여넣기 (논문 방법의 간이 버전: 초안 → 전체 재작성 반복)
아래 작업을 diffusion 방식처럼 처리해 줘. 왼쪽에서 오른쪽으로 한 번에 쓰지 말고, 전체 초안을 먼저 만든 뒤 여러 라운드에 걸쳐 모든 부분을 동시에 고쳐 써 줘.
작업: {{작성할 문서 또는 코드 설명}}
1) 라운드 0: 전체 길이의 거친 초안을 만들고, 확신이 낮은 부분은 [MASK]로 남겨.
2) 라운드 1~3: 매 라운드마다 앞뒤 문맥을 모두 보고 [MASK]를 채우고, 서로 어긋나는 부분(짝이 안 맞는 이름, 괄호, 수치)을 찾아 고쳐.
3) 마지막에 최종본과 라운드별로 바뀐 점을 요약해 줘.
이어서 해 볼 것: 같은 작업을 한 번에 쓰게 한 결과와 비교해 오류 수를 세어 보세요.Terminology
관련 논문
Mercury 3: 규모를 키운 diffusion LLM, 초당 1,000토큰 이상
Diffusion LLM을 40배 키웠더니 속도 4~8배, 품질은 속도 특화 모델 수준
Timestral: Mistral의 시계열 파운데이션 모델
209M 파라미터 시계열 모델이 3대 벤치마크 1위, CPU에서도 돌아간다
DeepSeek V4.1 Flash 1017 (Max) 성능·속도·가격 분석
DeepSeek V4.1 Flash 1017 Max는 지능 지수 45에 211 tok/s, 입력 $0.30
LLM 프록시를 직접 안 돌리면 무슨 일이 벌어지는지 어떻게 아나
자체 LLM 프록시를 세웠더니 키·모델·캐시 미스를 직접 볼 수 있다
DeepSeek V4.1 Flash 1017: 싼 가격에 1M 컨텍스트를 주는 에이전트용 모델
DeepSeek V4.1 Flash 1017은 입력 $0.05/M, 1M 컨텍스트의 에이전트용 모델
DeepSeek-V4.1-Flash-1017 공개: 더 짧게 생각하고 더 빠르게 일하는 에이전트용 모델
DeepSeek V4.1 Flash 마이너 업데이트로 코딩·에이전트 벤치 점수↑, 실행 시간·출력 길이↓
Llmspeed: 로컬 LLM 속도를 하드웨어 구매 전에 체감해 보는 시뮬레이터
GPU·모델을 고르면 로컬 LLM 속도를 미리 체감하게 해 주는 시뮬레이터