어릴 적 퍼즐을 맞춰 본 사람이라면 두 가지 전략을 알 것이다. 첫 번째는 왼쪽 위 모서리부터 순서대로 채워 나가는 방식이다. 앞 조각이 확정돼야 다음 조각을 놓을 수 있다. 두 번째는 전체 윤곽선을 먼저 잡아 놓고, 빈 곳들을 동시에 조금씩 채워 나가는 방식이다. 흐릿하게 완성된 전체를 반복적으로 선명하게 만들어 간다.
오늘날 대부분의 언어 AI — ChatGPT나 Gemini 같은 것들 — 는 첫 번째 방식을 쓴다. 단어를 왼쪽부터 오른쪽으로 하나씩, 앞 단어가 결정돼야 다음 단어를 고른다. 이것을 '자기회귀(autoregressive)' 방식이라고 부른다. 매우 강력하지만, 한 가지 근본적인 제약이 있다. 한 번 뱉은 단어는 되돌릴 수 없다. 앞에서 잘못된 선택을 하면 뒤에서 수습하기 어렵다.
반면 이미지를 만드는 AI — 미드저니나 DALL-E 같은 것들 — 는 두 번째 방식을 주로 쓴다. 처음엔 전체가 노이즈(흐릿한 잡음)로 가득 찬 캔버스에서 시작해, 반복적으로 잡음을 걷어 내며 그림을 완성한다. 이것이 '확산(diffusion)' 방식이다.
그렇다면 이 둘을 합칠 수는 없을까? 언어도 확산 방식으로, 이미지도 같은 방식으로, 하나의 AI가 동시에 처리할 수 없을까? LLaDA2.0-Uni 연구팀이 도전한 것이 바로 이 질문이다.

LLaDA2.0-Uni의 전체 아키텍처 개요
확산을 언어에 적용한다는 것이 어떤 의미인지 구체적으로 생각해 보자. 이미지의 경우 '잡음을 걷어 낸다'는 표현이 직관적이다. 흐릿한 사진을 점점 선명하게 만드는 장면이 눈앞에 그려지니까. 그런데 문장에서 '잡음'이란 무엇인가?
이 팀이 선택한 답은 '마스크(mask)'다. 문장에서 일부 단어를 검은 블록으로 가려 버리는 것이다. 마치 신문 기사의 특정 단어들이 보안 처리된 것처럼 — ■■■가 ■■■으로 ■■■했다 — 문장의 군데군데를 지운 채로 AI에게 건넨다. AI의 임무는 그 빈칸을 채우는 것이다. 처음엔 거의 모든 단어가 가려져 있다가, 단계를 거듭하며 점점 더 많은 단어가 복원된다. 전체 문장이 동시에 흐릿한 상태에서 시작해 조금씩 선명해지는 것이다.
이것이 확산 언어 모델(dLLM, diffusion Large Language Model)의 핵심 아이디어다. 왼쪽부터 오른쪽으로 순차적으로 쓰는 게 아니라, 빈칸 전체를 동시에 채워 간다. 장점이 두 가지다. 첫째, 앞뒤 맥락을 동시에 참조하며 빈칸을 채울 수 있다. 둘째, 여러 빈칸을 병렬로 처리하므로 속도가 빠를 수 있다.
그런데 문제가 하나 있다. 언어 AI는 본질적으로 숫자 덩어리인 '토큰(token)'을 다룬다. 단어 하나하나가 사전에 등록된 번호를 부여받고, AI는 그 번호들의 나열을 처리한다. 그런데 이미지는? 이미지는 픽셀 수백만 개로 이루어진 연속적인 숫자 배열이다. 단어처럼 딱딱 끊기는 게 아니라 부드럽게 흘러가는 정보다.
이 둘을 같은 방식으로 처리하려면, 이미지를 '이산적인(discrete)' 토큰으로 바꿔야 한다. 연속적인 색깔 스펙트럼을 '빨강', '주황', '노랑'처럼 유한한 이름표로 분류하는 것과 비슷하다. 무한한 색깔의 세계를 유한한 단어의 세계로 번역하는 작업이다.
LLaDA2.0-Uni는 이 번역을 위해 'SigLIP-VQ'라는 도구를 사용한다. 여기서 VQ는 '벡터 양자화(Vector Quantization)'의 약자다. 양자화라는 말이 어렵게 들리지만, 비유하면 이렇다. 음악 스트리밍 서비스가 음악을 압축할 때, 귀가 거의 구분하지 못하는 미세한 음색 차이는 버리고 중요한 정보만 남긴다. VQ는 이미지에서 그 작업을 한다. 비슷비슷한 시각 패턴들을 하나의 '코드워드(codeword)'로 묶어서, 이미지를 유한한 코드 번호들의 나열로 바꾼다. 이렇게 하면 이미지도 문장처럼, 번호들의 나열이 된다.
'SigLIP'가 앞에 붙은 이유는 단순히 픽셀 패턴을 코드로 바꾸는 것에 그치지 않기 때문이다. SigLIP는 이미지의 '의미'를 이해하는 훈련을 받은 모델이다. 그래서 이 번역기는 픽셀의 색깔 정보뿐 아니라 '이게 고양이다', '이게 나무다'라는 의미 정보까지 코드에 담으려 한다. 사진을 보고 번호를 매길 때 단순한 색상 번호가 아니라 '의미 번호'를 붙이는 셈이다.

이미지를 이산 토큰으로 변환하는 SigLIP-VQ 구조
이미지도 토큰 번호들의 나열로 바꿨다면, 이제 언어 토큰과 이미지 토큰을 하나의 AI가 같은 방식으로 처리할 수 있다. 그런데 여기서 또 하나의 도전이 생긴다. 언어와 이미지는 성격이 매우 다른 정보다. 언어는 논리와 추론, 이미지는 공간과 색감. 한 AI가 이 모두를 잘하려면 내부가 매우 커져야 한다. 하지만 큰 AI는 느리고 비싸다.
이 팀은 'MoE(Mixture of Experts, 전문가 혼합)' 구조를 택했다. 비유하자면 이렇다. 병원에서 환자 한 명을 볼 때, 모든 의사가 동시에 달라붙지 않는다. 증상에 따라 내과 전문의가, 또는 정형외과 전문의가, 또는 신경과 전문의가 담당한다. 전체 의사 수는 많지만, 어느 한 환자를 보는 의사는 적다.
MoE도 마찬가지다. AI 내부에 여러 '전문가 모듈'이 있다. 어떤 토큰이 들어오느냐에 따라, 그 토큰을 처리하기 적합한 전문가 모듈 몇 개만 활성화된다. 이미지 관련 토큰이 들어오면 이미지에 강한 전문가가, 언어 토큰이 들어오면 언어에 강한 전문가가 나선다. 전체 모델 크기는 크지만, 실제로 어느 순간에 작동하는 부분은 작다. 성능은 크게 유지하면서 속도는 높이는 트릭이다.
이쯤에서 한 가지 질문이 생긴다. 이미지를 코드 번호로 바꿔 처리했다면, 최종 출력도 번호로 나올 텐데, 그 번호를 다시 실제 이미지로 어떻게 복원하나?
여기서 '확산 디코더(diffusion decoder)'가 등장한다. 이것을 '암실에서 인화하는 과정'에 비유할 수 있다. 필름 카메라 시대에 사진사는 촬영한 필름을 암실에 가지고 들어가 화학 약품으로 처리하며 조금씩 이미지를 인화했다. 처음엔 희뿌연 용지가 서서히 선명한 사진이 되어 나타난다. 확산 디코더도 이렇게 작동한다. AI 백본(뼈대 모델)이 만들어 낸 이미지 코드 번호들을 받아, 여러 번의 확산 단계를 거쳐 실제 고해상도 픽셀 이미지로 변환한다.
그런데 이 인화 과정이 너무 많은 단계를 거치면 시간이 오래 걸린다. 이를 해결하기 위해 연구팀은 '소수 단계 증류(few-step distillation)'를 적용했다. 증류라는 개념은 교육에서 빌려 오면 이해하기 쉽다. 대가(大家)가 20년간 배운 지식을 제자에게 전수할 때, 제자가 20년을 똑같이 반복하지 않아도 되도록 핵심만 압축해 가르치는 것이 증류다. AI에서는 많은 단계로 훈련된 '선생 모델'이 적은 단계로 작동하는 '학생 모델'을 가르친다. 학생은 선생의 최종 결과물을 모방하도록 훈련되어, 훨씬 빠른 단계로 비슷한 품질의 이미지를 만들 수 있게 된다.
사실 이미지를 이해하는 AI와 이미지를 생성하는 AI는 오랫동안 따로 발전해 왔다. 이미지를 이해하는 쪽(예: '이 사진에 고양이가 있나요?'에 답하는 AI)은 이미지의 패턴을 분류하는 방향으로 훈련됐다. 이미지를 생성하는 쪽(예: '고양이 사진을 그려 줘')은 픽셀을 복원하는 방향으로 훈련됐다.
두 일을 하나의 AI에 합치려 하면, 마치 요리사에게 음식 비평도 맡기려는 것처럼 역할이 충돌한다. 음식 비평가는 음식의 밸런스를 분석적으로 보지만, 요리사는 맛을 직관적으로 만들어 낸다. 훈련 방식이 근본적으로 다르기 때문이다.
게다가 언어 AI에 이미지를 끼워 넣는 기존의 많은 시도는 언어 토큰과 이미지 토큰을 서로 다른 공간에 두고 억지로 연결하는 방식을 썼다. 언어는 왼쪽에서 오른쪽으로 순차 처리, 이미지는 별도의 모듈로 처리하는 식이었다. 이렇게 하면 통합이 피상적이 되어, "글과 그림이 섞인 복잡한 추론"을 잘 못하는 경우가 많았다.
LLaDA2.0-Uni의 핵심 아이디어는 이 구분을 원천적으로 없애는 것이다. 언어 토큰이든 이미지 토큰이든, 모두 '번호들의 나열'로 바꿔 버리고, 같은 마스크 확산 메커니즘으로 처리한다. 벽을 세우는 대신 같은 언어를 쓰게 만드는 것이다.

LLaDA2.0-Uni와 다른 모델들의 성능 벤치마크 비교
이 통합의 가장 흥미로운 결과 중 하나가 '인터리브드 생성(interleaved generation)'이다. 어려운 말처럼 들리지만, 일상에서 자주 접하는 형식이다. 요리 레시피 블로그를 생각해 보라. 1단계 설명 → 완성 사진 → 2단계 설명 → 완성 사진 → 3단계 설명 → 완성 사진. 글과 이미지가 번갈아 등장하며 서로를 보완한다.
기존의 AI들은 이 형식에 취약했다. 텍스트 AI는 텍스트만, 이미지 AI는 이미지만 만들었기 때문에, 두 가지가 유기적으로 연결된 콘텐츠를 만들려면 두 AI를 외부에서 이어 주는 복잡한 파이프라인이 필요했다. 마치 작가와 사진작가가 따로 작업하고 편집자가 나중에 붙이는 방식이었다.
LLaDA2.0-Uni는 같은 모델 안에서 글 토큰과 이미지 토큰을 번갈아 생성할 수 있다. 문장을 쓰다가 자연스럽게 그림을 그리고, 다시 문장으로 돌아오는 것이 가능하다. 작가와 사진작가가 한 사람인 셈이다.

글과 이미지가 번갈아 등장하는 인터리브드 생성 결과 예시
지금 우리가 AI 도구를 쓰는 방식을 생각해 보자. 글을 쓰려면 텍스트 AI를, 이미지를 만들려면 이미지 AI를, 이미지를 설명하려면 또 다른 AI를 쓴다. 각 도구는 독립적이고, 연결은 사람이 한다.
LLaDA2.0-Uni 같은 통합 모델이 성숙해지면, 이 경계가 희미해진다. "이 제품 사용 설명서를 단계별로 글과 그림으로 만들어 줘"라고 하면, 하나의 AI가 설명 문장과 단계별 일러스트를 함께 만들어 낸다. "이 사진 속 상황을 이어받아 이야기를 써 줘"라고 하면, 이미지를 이해하고 텍스트로 계속 이야기를 전개하며, 필요한 장면은 다시 이미지로 삽입할 수 있다. 의사가 환자의 MRI를 보며 설명 보고서와 시각화 자료를 동시에 생성하는 것도 가능해질 수 있다.

LLaDA2.0-Uni의 이미지 편집 및 생성 결과물
솔직히 말하면, 아직 이 기술이 '완성됐다'고 말하기는 이르다. 몇 가지 질문이 남는다.
이미지를 유한한 코드 번호로 바꾸는 과정에서 얼마나 많은 정보가 손실되는가? 무한한 색깔 스펙트럼을 유한한 이름표로 분류하면 필연적으로 세부 정보가 사라진다. 사진 속 피부 톤의 미묘한 차이, 자연광의 복잡한 그라데이션 — 이런 것들이 코드로 환원될 때 얼마나 보존되는지는 여전히 중요한 연구 과제다.
또한 이미지와 언어가 같은 '언어'를 쓰게 됐다고 해서, AI가 진정으로 두 양식을 연결해 '추론'하는가? "이 그림이 슬퍼 보인다"처럼, 이미지의 시각적 요소와 감정이라는 언어적 개념을 연결하는 깊은 추론이 가능한지는 더 많은 검증이 필요하다.
속도 문제도 있다. 마스크를 반복해서 채워 나가는 확산 방식은 본질적으로 여러 단계를 요구한다. 소수 단계 증류로 개선했다고 하지만, 왼쪽에서 오른쪽으로 단번에 쓰는 기존 방식보다 여전히 느릴 수 있다.
하지만 이런 질문들이 이 연구의 의미를 줄이지는 않는다. 오히려 이것이 왜 흥미로운 연구인지를 보여 준다. "언어와 이미지는 근본적으로 다른 종류의 정보"라는 오래된 가정에 도전하며, 흐릿한 빈칸을 채워 나가는 방식으로 두 세계를 하나로 묶으려 한 시도. 퍼즐의 테두리를 먼저 잡고 동시에 채워 나가는 방식으로, AI가 세상을 이해하는 방법이 조금씩 바뀌고 있다.
태그: 확산모델, 멀티모달AI, 이미지생성, 언어모델
📄 원문: https://arxiv.org/abs/2604.20796
🌐 English version on Dev.to: https://dev.to/xoqhdgh1002/the-swiss-army-knife-that-actually-works-how-ai-learned-to-think-and-draw-at-the-same-time-879