Transcript
00:00:00구글의 행보가 최근 매우 뜨겁습니다. 지난주에는 인코더가 없는 혁신적인
00:00:05Gemma 4 모델에 관한 영상을 올렸는데, 이번 주에는 또 다른 놀라운 혁신 모델을 내놓았습니다. 바로 Diffusion
00:00:11Gemma라는 모델인데, 정말 엄청나게 빠릅니다. 초당 1,000개 이상의 토큰을
00:00:18생성할 수 있죠. 이렇게 빠른 이유는 기존의 어떤 모델과도 완전히
00:00:23다른 방식으로 텍스트를 생성하기 때문입니다. 그래서 이번 영상에서는
00:00:29Diffusion Gemma가 어떻게 작동하는지 살펴보고, 직접 테스트하는 방법도 알려드리겠습니다.
00:00:35정말 흥미로울 테니 바로 시작해 보죠.
00:00:41여러분들이 지금까지 사용해 온 모든 언어 모델은 기본적으로 같은 방식으로 작동합니다. 즉, '자기회귀적(auto-aggressive)'인데
00:00:48이는 한 번에 하나의 토큰씩 왼쪽에서 오른쪽으로 생성한다는 어려운 말이죠. 단어를 하나 작성하고
00:00:54지금까지 작성된 모든 내용을 살펴본 뒤 다음 단어를 예측하는 과정이 반복됩니다.
00:00:59Claude나 GPT 같은 대형 상업용 모델이 작동하는 방식을 보면, 서버가
00:01:06토큰을 생성할 때 대부분의 시간은 연산이 아니라 모델의 가중치를
00:01:12메모리에서 불러오는 데 소비됩니다. 단 한 명의 사용자만 서비스한다면 매우 낭비죠. 그래서 서버는 수백 명의
00:01:19사용자를 한데 묶어(배치 처리) 가중치를 한 번만 불러온 뒤 모두에게 동시에 적용합니다. 그렇게 하면
00:01:25한 번의 메모리 로딩으로 256명의 사용자를 서비스할 수 있습니다. 하지만 모델을 로컬에서 실행하면 사용자는 단 한 명뿐이라
00:01:33함께 처리할 대상이 없습니다. GPU는 방대한 가중치를 불러와 겨우 짧은
00:01:39연산을 수행해 토큰 하나를 만들고, 다시 다음 작업을 하기 전까지 유휴 상태로 머물게 됩니다. 기술적인 용어로
00:01:46이를 '메모리 바운드(memory bound)'라고 합니다. 비싼 GPU가 연산보다는 다음
00:01:52토큰을 기다리는 데 대부분의 시간을 쓰는 것이죠. 그래서 구글 딥마인드는 이 문제를 보고 영리한
00:01:58질문을 던졌습니다. 클라우드가 256명의 사용자를 한꺼번에 처리해서 유휴 시간을 채운다면, 한 명의 사용자를 위해서도
00:02:07그 유휴 시간을 채우면 어떨까? 즉, 256명에게 토큰 하나씩을 주는 대신, 한 사람에게 256개의 토큰을
00:02:16한꺼번에 생성하면 어떨까? 이것이 Diffusion Gemma의 핵심 아이디어입니다. 단어 단위로 작성하는 대신,
00:02:23모델은 256개의 무작위 플레이스홀더 토큰으로 이루어진 '캔버스'에서 시작합니다. 그냥
00:02:31노이즈인 셈이죠. 모델의 임무는 캔버스의 모든 위치를 한꺼번에 수정하여 실제 텍스트로 바꾸는 것입니다. 이렇게 모든
00:02:38256개의 토큰을 한 번에 예측함으로써 GPU가 유휴 상태로 있지 않고 실제 작업을 하도록 만드는 것이죠. 이런 방식으로
00:02:46모델을 메모리 바운드에서 '컴퓨트 바운드(compute bound)'로 전환해, 낭비되던 연산 능력을 최대한 활용합니다.
00:02:53하지만 말처럼 쉽지는 않습니다. 256개의 토큰을 한꺼번에 예측하는 건 정말 어렵기 때문입니다.
00:03:01모델이 1번부터 253번 토큰이 무엇인지 전혀 모르는 상태에서 어떻게 254번 토큰을
00:03:09추측할 수 있을까요? 실제로도 그렇습니다. 처음 몇 개의 토큰은 잘 나오지만, 뒤로 갈수록
00:03:15엉망이 되어버리죠. 하지만 한 번만 통과시키는 게 아니라 여러 번 반복한다면 어떨까요?
00:03:21이게 바로 핵심 비결입니다. 모델은 캔버스를 반복해서 통과하는데, 이제는
00:03:28이전에 자신이 예측했던 결과를 볼 수 있습니다. 자신 있게 예측한 토큰들은 혼란스러운 토큰들을
00:03:35수정하는 데 도움이 되는 힌트가 됩니다. 가장 멋진 점은 몇 번의 통과만으로 충분하다는 것입니다. 총 토큰 수인 256번보다
00:03:42훨씬 적은 횟수만 통과하면 되죠. 이것이 바로 모델 속도의 원천입니다. 이 방식은 아마
00:03:49이전에도 보셨을 겁니다. '확산(diffusion)'이라고 불리죠. 노이즈에서 시작해 단계별로 정제해 나가는
00:03:55것입니다. AI 이미지 생성기를 움직이는 것과 정확히 같은 아이디어죠. 모델이 이를 학습하는 방법은
00:04:01학습 과정에서 실제 이미지에 고의적으로 노이즈를 추가하고, 그 노이즈를 예측하고
00:04:07제거하는 법을 배우는 식입니다. 하지만 텍스트에는 어떻게 적용할까요? 그게 까다로운 부분입니다. 이미지의 경우,
00:04:14노이즈는 쉽습니다. 픽셀을 약간 더 빨간색이나 파란색으로 바꾸면 되죠. 하지만 텍스트의 경우, 'the'라는 단어를
00:04:19'the'가 아닌 것처럼 조금 바꾸는 건 대체 무슨 의미일까요? 딥마인드는
00:04:27'균일 상태 확산(uniform state diffusion)'이라는 개념을 생각해 냈습니다. 글자를 수정하는 대신, 무작위로
00:04:32바뀐 단어를 노이즈로 취급하는 것입니다. 학습 텍스트를 오염시키기 위해 실제 단어를 무작위로
00:04:38바꾸고, 모델은 어떤 단어가 잘못된 것인지 파악하여 여러 번의 통과를 통해 결국 고쳐놓는 식이죠.
00:04:45이를 위한 더 간단한 '마스크 확산(mask diffusion)' 방식도 있지만, 그냥 토큰을 지우는 방식이라
00:04:51치명적인 단점이 있습니다. 모델이 단어를 결정하면 영원히 고정되어 버리거든요. 자동 회귀 모델들이 가진
00:04:57똑같은 문제를 가집니다. 하지만 균일 상태 확산은 모든 위치에 항상 무언가 토큰을 유지함으로써 이를 해결합니다.
00:05:04그래서 모델은 3단계 전에 승인했던 단어를 살펴보고, 더 이상 맞지 않는다고
00:05:10판단하면 바꿀 수 있습니다. 즉, 과정을 거치며 계속해서 스스로 수정할 수 있는 거죠. 하지만 이 솔루션에도
00:05:15단점이 있습니다. 확산 모델은 프롬프트를 이해할 인코더와 캔버스를 정리할 디노이저가 필요하죠.
00:05:23그래서 딥마인드는 인코더-디노이저 패치를 개발했습니다. 기존의 260억 파라미터
00:05:30GEMMA4 모델을 기반으로 하며, 응답을 생성할 때 두 모드를 전환합니다. 인코더 모드에서
00:05:36모델은 프롬프트를 읽고, 컨텍스트와 가이드를 추출하려고 시도합니다. 그 모든 내용을
00:05:42KV 캐시에 수집한 뒤 디노이저에게 직접 전달합니다. 디노이저의 임무는 본질적으로
00:05:49캔버스를 정리하는 것입니다. 두 가지 일을 수행함으로써 가능합니다. 먼저, 일반적인 LLM이 모든
00:05:56위치에 대해 신뢰도 점수나 로짓을 생성하지만 마지막 하나를 제외하고는 모두 버린다는 것을 기억하시나요? 참고로,
00:06:02혹시 헷갈리신다면, 제가 예전에 LLM의 작동 방식을 더 자세히
00:06:07설명한 영상이 있으니 관심 있으시면 확인해 보세요. 요컨대 Diffusion GEMMA는
00:06:13점수를 버리지 않습니다. 모든 캔버스 위치마다 자체 예측이 필요하므로 신뢰도 점수를 전부 보관합니다.
00:06:19둘째, 이 디노이저는 자동 회귀 모델의 규칙인, 단어가 뒤만 볼 수 있다는 '인과적 어텐션(causal attention)'을
00:06:25사용하지 않습니다. 대신 '양방향 어텐션(bi-directional attention)'으로 교체했습니다.
00:06:31그래서 이제 모든 토큰이 모든 방향에서 다른 토큰을 볼 수 있게 되었습니다. 따라서 모든 위치에 대해
00:06:38신뢰도 점수를 적용하고, 다른 토큰을 확인하며, 단계별로 천천히 캔버스를 정리해 나가는 것이죠.
00:06:44이것이 바로 Diffusion GEMMA가 H100 GPU에서 초당 1,000개 이상의 토큰이라는 엄청난 속도를
00:06:51달성할 수 있는 비결입니다. 솔직히 말씀드리면, 이건 만능은 아닙니다. 이러한 새로운 전략을 통해,
00:06:58Diffusion GEMMA는 기본적으로 품질과 속도를 맞바꾼 것입니다. 최고의 품질이 필요한 작업에는 여전히 표준 GEMMA 4가
00:07:05더 나은 선택입니다. 이 모델은 인라인 편집이나 코드
00:07:13채우기, 빠른 반복 작업 같은 중요한 로컬 작업을 위해 만들어졌습니다. 특히 코드 블록
00:07:19사이를 채우거나, 일반적인 왼쪽에서 오른쪽으로 가는 모델들이 매우 취약한 스도쿠 퍼즐을
00:07:26푸는 것 같은 비선형 작업에 특히 강점이 있습니다. 모든 게 흥미롭게 들리는데, 직접 테스트해 보며 작동하는지 확인해 보죠.
00:07:33구글은 허깅페이스에 아파치 2.0 라이선스로 가중치를 오픈소스로 공개했습니다.
00:07:38그러니 RTX 5090 같은 강력한 GPU가 있다면 로컬에서 직접 실행해 볼 수 있습니다. 또한 Docker에서
00:07:44실행하여 과정을 간소화할 수 있는 VLLM용 특별 레시피도 있습니다. 저는 이 모델이 정말로
00:07:51초당 1,000개 이상의 토큰을 생성할 수 있는지 궁금합니다. 그래서 이번 테스트에서는 실제로
00:07:58RunPod 컨테이너를 사용하여 H100 GPU에서 실행해 보고 결과가 어떤지 보겠습니다. 참고로,
00:08:04RunPod에서 Diffusion GEMMA를 실행할 수 있는 템플릿도 게시해 두었습니다. 이 테스트를
00:08:10재현하고 싶다면 새 팟을 만들 때 그 템플릿을 사용하시면 됩니다. RunPod에서 테스트하려면
00:08:15H100 컨테이너를 선택하겠습니다. 앞서 말씀드렸듯이 제가 만든 Diffusion GEMMA
00:08:22템플릿을 재사용할 수 있습니다. 볼륨 디스크를 클릭한 다음 '배포'를 누르기만 하면 됩니다.
00:08:28컨테이너를 다운로드하고 모든 것을 시작하는 데 몇 분 정도 걸립니다.
00:08:34로그를 확인했을 때 'Application startup complete'가 표시되면 VLLM이 준비
00:08:40되어 8000번 포트로 접근할 수 있다는 의미입니다. 열어보면 'Detail not found'가 뜨지만,
00:08:46걱정하지 마세요. 작동하고 있다는 뜻이니까요. URL을 복사하면 됩니다. 자,
00:08:52Diffusion GEMMA를 AI 에이전트 터미널(OpenCode 같은)에서 실행하려면
00:08:58원격 서버에 접근하도록 OpenCode 설정을 구성해야 합니다. 간단한
00:09:04명령어로 구성 파일을 열 수 있습니다. 여기에서 RunPod 서버를 지정하고
00:09:11Diffusion GEMMA 모델을 선택했습니다. 파일을 저장하고 OpenCode를 시작합니다.
00:09:17이번 테스트에서는 'Ledger'라는 개인 금융 추적 대시보드를 생성해 보라고 하겠습니다.
00:09:24얼마나 빨리 생성되는지 보세요. 보셨나요? 즉시 스트리밍이 시작됩니다.
00:09:34얼마나 빠른지 정말 놀랍지 않나요? 세상에. 와, 말도 안 돼요.
00:09:43로그를 보면 초당 평균 700개의 토큰을 생성하고 있습니다. 출력 단계에서는 조금
00:09:50줄어들었지만, 추론 단계에서는 초당 700개까지 치솟았습니다. 정말 대단합니다. 그럼 한번
00:09:58열어볼까요? 대시보드처럼 보이네요. 좋네요. 범주도
00:10:06나와 있고요. 여기 내용을 추가하면? 오, 비용으로 추가되네요. 그런데
00:10:13지출 데이터가 업데이트되지는 않네요. 완전히 기능하지는 않지만, 그래도 일부는 상호작용이 됩니다.
00:10:20다음 작업으로, 아케이드 스타일 게임을 만들 수 있는지 보겠습니다.
00:10:26다시 시작해 보죠. 역시 속도가 엄청납니다. 오, 이건 시간이 좀 걸리네요.
00:10:36파일 두 개가 나왔습니다. 흥미롭군요. 오타를 발견하고
00:10:44HTML 파일을 다시 처리했네요. 꽤 훌륭합니다. 자, 이걸 열어봅시다. 재시작,
00:10:52오, 보세요. 작동합니다. 우와, 정말 멋지네요. 인상적입니다. 게임이
00:11:03완벽하게 작동하며, 생성하는 데 14초 걸렸습니다. 이런 게임을 만드는 데 14초라니요.
00:11:11마케팅 페이지에서는 H100에서 초당 1,000개 이상의 토큰을 예상할 수 있다고 했지만,
00:11:18제가 관찰한 것과는 달랐습니다. 뭐, 템플릿이나 프롬프트를 수정하면 달라질지 모르겠지만,
00:11:26그럼에도 불구하고 정말 감명받았습니다. 엄청난 괴물 모델이네요. 자, 여러분,
00:11:33Diffusion Gemma는 여기까지입니다. 저는 이게 올해 나온 가장 흥미로운
00:11:38출시 중 하나라고 생각합니다. 이미지 세계의 완전히 다른 생성 패러다임을 가져와,
00:11:44이미 훈련된 모델에 적용해서 단일 로컬 사용자 설정에서도 엄청난 속도 향상을 이끌어낼 수 있다는 걸 증명했으니까요.
00:11:51그리고 이는 하드웨어의 잠재력을 최대한 활용하여 유휴 상태를 없애는,
00:11:58새롭고 빠른 대화형 로컬 모델군의 문을 열었다고 생각합니다. 여러분은
00:12:04Diffusion Gemma에 대해 어떻게 생각하시나요? 써보셨나요? 사용하실 계획인가요? 아래 댓글란에 알려주세요.
00:12:09이런 기술적인 분석이 도움이 되셨다면, 영상 아래에 있는
00:12:14좋아요 버튼을 눌러주세요. 채널 구독도 잊지 마시고요. Betterstack의 Andrus였으며,
00:12:19다음 영상에서 뵙겠습니다.
Community Posts
No posts yet. Be the first to write about this video!
Write about this video