DFlash 2 공개 — 병렬 초안의 정확도를 높인 추론 가속

대규모 언어 모델의 체감 속도를 높이는 방법은 모델을 작게 만드는 것만이 아닙니다. 같은 모델과 같은 출력 분포를 유지하면서 한 번의 계산으로 더 많은 토큰을 확정하는 방법도 있습니다. 2026년 8월 18일 Inco AI가 공개한 DFlash 2는 이 문제를 정면으로 다룹니다. 기존 DFlash가 초안 토큰 블록 전체를 한 번에 예측해 초안 작성의 순차 병목을 줄였다면, DFlash 2는 병렬 구조를 버리지 않은 채 초안 선택의 일관성과 블록 뒤쪽의 정확도를 높였습니다.
공식 발표가 제시한 핵심 수치는 검증 패스마다 확정되는 출력이 20% 이상 늘고, 그 대가로 추가되는 초안·검증 사이클 지연은 약 1%라는 것입니다. 벤치마크별 이득은 16~25% 범위였고, 새로 공개된 Qwen3.8-27B용 초안 모델은 배치 크기 1의 SGLang 환경에서 일반 자기회귀 디코딩 대비 2.7~3.4배 처리량을 기록했다고 설명합니다. 다만 이 숫자는 모든 하드웨어와 모든 서비스 부하에서 보장되는 고정 배수가 아닙니다. 이 글은 발표 수치를 그대로 과장하기보다, 어떤 병목을 없앴는지와 운영 환경에서 무엇을 다시 측정해야 하는지를 중심으로 살펴봅니다.
왜 에이전트 시대에는 디코딩 비용이 더 중요해졌나
대화형 챗봇은 사용자가 질문하고 모델이 한 번 답하는 짧은 흐름이 중심이었습니다. 에이전트는 다릅니다. 문서를 읽고, 계획을 만들고, 도구를 호출하고, 실패를 해석하고, 다시 시도하는 과정을 수십 분 또는 수 시간 반복합니다. 한 번의 요청에서 만들어지는 토큰 수가 커지고 동시에 여러 에이전트가 실행되면, 모델의 학습비보다 서비스 단계의 추론비가 제품 원가를 좌우하기 시작합니다.
자기회귀 언어 모델은 기본적으로 앞 토큰이 확정되어야 다음 토큰을 계산할 수 있습니다. 긴 답변 하나를 만들 때 수백 번 또는 수천 번의 순차 디코딩 단계가 필요합니다. GPU는 대규모 병렬 계산에 강하지만 토큰을 하나씩 만드는 과정에서는 메모리에서 가중치를 반복해 읽고, 작은 단위의 작업을 연속 실행하게 됩니다. 배치를 키우면 처리량은 개선되지만 첫 토큰 이후의 응답 지연과 사용자별 대기시간이 늘 수 있습니다. 낮은 동시성에서 빠르게 답해야 하는 코딩 에이전트나 로컬 모델에서는 특히 까다로운 문제입니다.
추측 디코딩은 작은 초안 모델이 앞으로 나올 토큰 여러 개를 먼저 제안하고 큰 목표 모델이 한 번에 검증하는 방식입니다. 제안이 맞으면 한 번의 목표 모델 패스로 여러 토큰을 확정합니다. 틀린 지점부터는 버리고 목표 모델의 분포에 따라 다시 진행합니다. 검증과 거절 샘플링을 정확히 구현하면 최종 출력 분포는 목표 모델을 원래 방식으로 실행했을 때와 같게 유지할 수 있습니다. 속도를 위해 답의 규칙을 바꾸는 양자화나 증류와 달리, 계산 경로를 재배치하는 최적화라는 점이 중요합니다.
기존 추측 디코딩의 숨은 순차 병목
초기 추측 디코딩은 작은 모델이 빠르게 초안을 만든다는 아이디어에 기대었습니다. 그러나 초안 모델도 자기회귀 방식이라면 토큰 여덟 개를 제안하기 위해 초안 모델을 여덟 번 순차 실행해야 합니다. 목표 모델보다 훨씬 작더라도 초안 길이에 비례해 지연이 늘어납니다. 초안 모델을 더 깊고 정확하게 만들면 승인되는 토큰 수는 늘지만 초안 작성 시간이 증가합니다. 반대로 지나치게 작게 만들면 제안이 자주 거절되어 검증 한 번당 확정되는 토큰 수가 줄어듭니다.
결국 추측 디코딩의 지연시간은 초안 시간과 검증 시간을 더한 뒤 한 사이클에서 평균적으로 승인되는 토큰 수로 나눈 값으로 이해할 수 있습니다. 좋은 시스템은 초안 비용을 낮추면서 승인 길이를 길게 해야 합니다. 어느 한쪽만 개선하면 다른 쪽이 악화되기 쉽습니다. 여러 후보를 트리 형태로 만드는 방식은 승인 가능성을 높이지만 검증 폭과 메모리 사용량을 키웁니다. 단순한 다중 토큰 예측 헤드는 싸지만 뒤쪽 토큰의 정확도가 빠르게 떨어질 수 있습니다.
DFlash의 첫 번째 돌파구는 초안 자체를 블록 병렬 문제로 바꾼 것이었습니다. 가벼운 블록 확산 모델이 여러 위치의 토큰을 한 번의 전방 계산으로 예측하고, 목표 모델의 여러 계층에서 얻은 은닉 상태를 조건으로 사용합니다. 목표 모델이 이미 문맥에서 계산한 풍부한 정보를 초안 모델에 주입하므로 작은 초안 모델이 문맥을 처음부터 다시 이해할 필요가 줄어듭니다. 초안 길이가 늘어도 작성 단계가 토큰 수만큼 완전히 순차적으로 늘지 않는 구조를 만들었습니다.

DFlash 2 시스템 구조. 공식 저장소가 제공한 그림으로, 병렬 초안과 목표 모델 검증의 연결을 보여줍니다.
DFlash 2가 겨냥한 두 가지 남은 문제
병렬 초안은 빠르지만 각 위치를 독립적으로 고르면 문장 내부의 연결이 약해질 수 있습니다. 예를 들어 첫 위치에서 여러 후보 중 하나가 선택되면 두 번째 위치의 가장 자연스러운 후보도 달라집니다. 각 위치의 정답 토큰이 상위 후보 집합 안에 들어 있어도, 후보를 위치별 최고 확률 하나로 독립 선택하면 전체 경로가 어긋날 수 있습니다. 공식 발표는 기존 DFlash의 상위 후보 회수율이 매우 높다는 관찰에서 출발합니다. 문제는 더 큰 모델로 후보를 새로 만드는 것이 아니라 이미 생성된 후보 사이에서 서로 잘 이어지는 경로를 고르는 일이었습니다.
두 번째 문제는 블록의 뒤쪽으로 갈수록 승인 확률이 낮아지는 접미부 감쇠입니다. 앞 위치에서 생긴 불확실성이 뒤 위치에 전달되는데 병렬 예측에서는 실제로 선택된 앞 토큰을 본 뒤 다음 위치를 다시 계산하지 않습니다. 자기회귀 초안은 매 단계 이전에 뽑힌 토큰을 조건으로 삼아 이 문제를 자연스럽게 처리하지만, 그 대가로 순차 지연을 지불합니다. DFlash 2의 과제는 앞뒤 의존성을 일부 회복하면서도 토큰별 순차 루프를 되살리지 않는 것이었습니다.
해결책은 두 부분입니다. 하나는 여러 위치의 후보를 함께 고려하는 가벼운 선택기이고, 다른 하나는 인접 위치 정보를 섞는 짧은 동적 합성곱입니다. 선택기는 초안 모델이 이미 계산한 상위 후보를 받아 자연스러운 토큰 경로를 고릅니다. 합성곱은 각 위치의 표현에 바로 앞 위치의 표현을 섞어 블록 내부의 국소적 연결을 강화합니다. 두 구성 요소 모두 무거운 자기회귀 보정 모델을 추가하지 않으며 병렬 초안이라는 기본 설계를 유지합니다.
후보 선택기는 무엇을 바꾸나
언어 모델의 출력층은 각 위치마다 어휘 전체의 확률 분포를 냅니다. 일반적인 디코딩은 그 분포에서 하나의 토큰을 선택합니다. 병렬 초안에서는 여러 위치의 분포가 동시에 나오지만, 위치별 선택을 서로 독립적으로 처리하면 첫 위치에서 고른 단어와 다음 위치에서 고른 단어의 조합이 어색할 수 있습니다. DFlash 2의 선택기는 각 위치의 상위 후보들을 보고 짧은 경로를 평가합니다. 이미 후보가 잘 만들어져 있다는 전제 아래 선택 과정만 개선하므로 추가 계산을 작게 유지할 수 있습니다.
이 접근의 장점은 오류의 원인을 정확히 분리했다는 데 있습니다. 정답 후보가 목록에 거의 없다면 초안 모델의 표현력이나 학습 데이터를 키워야 합니다. 반대로 정답이 상위 후보에 자주 들어 있는데 최종 선택만 틀린다면 더 큰 초안 모델은 낭비가 될 수 있습니다. 발표에서는 선택기가 추가하는 지연이 사이클의 약 1% 수준이라고 설명합니다. 초안 전체를 다시 생성하는 대신 후보 조합을 정렬하는 작은 문제로 바꾼 결과입니다.
다만 후보 선택기는 공짜가 아닙니다. 후보 수를 늘리면 탐색 공간과 메모리 접근이 커지고, 너무 공격적으로 줄이면 올바른 경로가 후보 집합에서 사라질 수 있습니다. 샘플링 온도와 top-p, top-k, 반복 패널티처럼 목표 분포를 바꾸는 옵션도 선택기와 검증 로직이 정확하게 다뤄야 합니다. 탐욕 디코딩에서 빠르다는 결과만으로 확률 샘플링과 도구 호출 형식에서도 같은 효과를 낸다고 가정해서는 안 됩니다.
두 탭 동적 합성곱이 접미부 감쇠를 줄이는 법
DFlash 2는 초안 모델의 각 주의집중과 MLP 하위 계층 전후에 짧은 합성곱을 둡니다. 각 위치는 자기 표현과 바로 앞 위치의 표현을 섞고, 블록의 첫 위치는 마지막으로 검증된 토큰의 정보를 받습니다. 멀리 떨어진 모든 위치를 순차적으로 읽는 대신 가장 중요한 지역적 인접 관계를 한 번에 전달합니다. 커널이 블록 안에서만 동작하고 상태를 따로 보존하지 않으므로 기존 주의집중, 출력 헤드, 검증 구조를 크게 바꾸지 않습니다.
공식 분석에서 이 합성곱은 1,650만 개의 매개변수를 더했습니다. 해당 5계층 초안 모델 기준 약 3%입니다. 합성곱을 넣은 5계층 모델은 15계층 DFlash에 가까운 접미부 정확도를 보였고, 사이클 지연 증가는 0.7%였다고 보고합니다. 반면 트랜스포머 계층 열 개를 더하는 방식은 지연이 15.2% 늘었습니다. 모든 문법 의존성이 가까운 거리에 있다는 뜻은 아니지만, 초안 블록 뒤쪽에서 발생하는 실패의 큰 부분이 국소 연결 부족에서 왔다는 근거입니다.
또한 뒤쪽 계층의 블록 내부 주의집중 비중이 평균 9.4%에서 0.5%로 감소했다는 분석이 제시됩니다. 합성곱이 가까운 위치를 연결하는 일을 맡으면서 주의집중은 문맥 정보를 읽는 본래 역할에 더 집중했다는 해석입니다. 이 수치는 원인 자체를 완전히 증명하지는 않지만, 작은 연산을 올바른 위치에 배치하는 것이 계층을 무작정 깊게 만드는 것보다 효율적일 수 있음을 보여줍니다.

DFlash 2 공식 발표 이미지. 출처: Inco AI, 2026년 8월 18일.
벤치마크 숫자를 정확히 읽는 법
Qwen3.5-4B 비교에서 요청당 평균 승인 길이는 MTP 4.54, DFlash 4.92, DSpark 5.49, DFlash 2 5.97로 제시됐습니다. DFlash 2는 기존 DFlash보다 평균 1.05토큰, 약 21%를 더 승인했고 DSpark보다 0.48토큰 길었습니다. GSM8K, MATH-500, HumanEval, MBPP, MT-Bench의 다섯 평가에서 모두 가장 긴 평균 승인 길이를 기록했습니다. 선택기와 합성곱을 합한 사이클 지연 증가는 5계층 DFlash 대비 1.3%로 보고됐습니다.
승인 길이가 21% 늘었다고 서비스 처리량도 정확히 21% 늘어나는 것은 아닙니다. 실제 속도는 목표 모델 크기, GPU 종류, 메모리 대역폭, KV 캐시, 배치 크기, 프롬프트 길이, 생성 길이, 서버 스케줄러에 따라 달라집니다. 초안 모델을 GPU 메모리에 함께 올리는 비용도 있습니다. 높은 동시성에서는 기본 모델 자체가 큰 배치로 GPU를 잘 활용할 수 있어 추측 디코딩의 상대 이득이 줄 수 있습니다. 반대로 낮은 동시성과 긴 생성에서는 한 번의 검증으로 여러 토큰을 확정하는 이점이 크게 나타날 수 있습니다.
공식 Qwen3.8-27B 결과의 2.7~3.4배도 배치 크기 1과 특정 SGLang 설정에서 측정된 수치입니다. 운영팀은 평균 초당 토큰뿐 아니라 첫 토큰 지연, 토큰 사이 지연, 요청당 전체 완료시간, 상위 백분위 지연, GPU 메모리 최고치, 에너지 사용량을 함께 측정해야 합니다. 에이전트 워크로드라면 일반 대화뿐 아니라 코드 생성, JSON 도구 호출, 긴 문서 요약, 반복 계획처럼 실제 트래픽 비율을 반영한 평가 세트를 만들어야 합니다.
출력이 같다는 말의 정확한 범위
추측 디코딩은 목표 모델이 후보 블록을 검증하고 잘못된 제안을 거절하므로 수학적으로 목표 분포를 보존할 수 있습니다. DFlash 2 공식 글이 말하는 같은 출력은 초안 모델이 임의의 답을 최종 결과에 섞는다는 뜻이 아니라, 목표 모델의 승인 규칙을 통과한 토큰만 확정한다는 뜻입니다. 탐욕 디코딩에서는 목표 모델이 고른 토큰과 맞는 접두부를 받아들이고, 확률 샘플링에서는 보정된 거절 샘플링이 필요합니다.
현실의 구현에서는 커널의 수치 오차, 부동소수점 연산 순서, 샘플 난수 관리, 서버별 샘플러 차이로 바이트 단위 출력이 달라질 수 있습니다. 분포 보존이라는 알고리즘 성질과 특정 하드웨어에서 문자열이 언제나 완전히 같다는 주장은 구분해야 합니다. 도구 호출에서는 공백 하나나 특수 토큰 하나가 JSON 파싱에 영향을 줄 수 있으므로, 일반 텍스트 품질 평가와 별도로 구조화 출력 성공률을 측정해야 합니다.
초안 모델과 목표 모델의 조합도 정확해야 합니다. DFlash 계열은 목표 모델의 은닉 상태 구조에 의존하므로 아무 초안 체크포인트나 다른 모델에 붙일 수 없습니다. 모델 리비전, 토크나이저, 목표 계층 번호, 마스크 토큰과 초안 설정이 일치해야 합니다. 잘못된 조합이 조용히 느려지는 데 그치지 않고 승인률과 안정성을 해칠 수 있으므로 공식 지원 목록을 기준으로 구성해야 합니다.
지금 사용할 수 있는 모델과 런타임
공식 DFlash 저장소는 DFlash 2 체크포인트로 Muse-Glimmer-30B와 Qwen3.8-27B를 먼저 제시합니다. 로컬 실행 예시는 Transformers에서 Muse-Glimmer-30B를, Apple Silicon의 MLX에서는 Qwen3.8-27B 4비트 모델을 사용합니다. 서버 환경은 SGLang과 vLLM의 OpenAI 호환 엔드포인트를 지원하고, llama.cpp와 oMLX 경로도 안내합니다. 지원 범위는 빠르게 바뀔 수 있으므로 설치 시점의 저장소와 각 런타임 병합 상태를 다시 확인해야 합니다.
Apple Silicon 예시에는 양자화된 목표·초안 모델에서 블록 크기를 5 이하로 쓰라는 구체적인 주의가 있습니다. 현재 MLX의 양자화 행렬곱 커널은 검증 폭이 커질 때 효율이 낮아질 수 있기 때문입니다. 이 사례는 블록을 크게 만들면 언제나 빨라진다는 직관이 틀릴 수 있음을 보여줍니다. 블록이 길수록 한 번에 제안하는 토큰은 많아지지만 뒤쪽 승인률이 떨어지고 검증 폭과 임시 메모리가 늘어납니다.
서버 프레임워크의 최신 개발 버전을 직접 설치하는 예시도 운영 관점에서는 주의해야 합니다. 특정 커밋을 고정하지 않은 Git 설치는 다음 빌드에서 동작이 달라질 수 있습니다. 검증된 컨테이너 이미지, 정확한 커밋 해시, CUDA와 드라이버 조합, 초안 체크포인트 리비전을 기록해야 합니다. 실험 단계에서는 빠른 설치가 유용하지만 프로덕션에서는 재현성과 롤백이 속도만큼 중요합니다.
실무 도입을 위한 재현 가능한 평가 절차
- 현재 기준선을 고정합니다. 같은 모델, 같은 정밀도, 같은 프롬프트 집합에서 추측 디코딩을 끈 상태의 첫 토큰 지연과 출력 처리량, 메모리 사용량을 기록합니다.
- 공식 조합으로 시작합니다. 목표 모델과 DFlash 2 초안 모델, 런타임 버전을 공식 예시와 맞춥니다. 처음부터 임의 양자화나 다른 토크나이저를 섞지 않습니다.
- 워크로드를 나눕니다. 짧은 대화, 긴 코드, 수학 추론, JSON 도구 호출, 장문 요약을 별도 그룹으로 측정합니다. 평균 하나로 합치면 실패 조건을 놓칩니다.
- 동시성을 단계적으로 올립니다. 1, 2, 4, 8 이상의 동시 요청에서 처리량과 상위 백분위 지연을 함께 봅니다. 낮은 동시성의 최고 배수를 전체 용량 계획에 그대로 적용하지 않습니다.
- 블록 크기를 탐색합니다. 승인 길이와 사이클 지연, 메모리 증가를 같이 기록해 최적점을 찾습니다. 가장 큰 블록보다 요청당 지연이 가장 낮은 블록이 중요합니다.
- 출력 무결성을 검증합니다. 샘플링 설정과 난수 시드를 통제하고 도구 호출 스키마, 중단 토큰, 반복 패널티, 긴 문맥에서 회귀가 없는지 확인합니다.
- 장시간 안정성을 확인합니다. 캐시 누수, 메모리 파편화, 요청 취소, 서버 재시작, 혼합 길이 배치에서 장애가 없는지 부하 테스트합니다.
어떤 환경에서 이득이 크고 작을까
이득이 클 가능성이 높은 환경은 배치가 작고 생성 구간이 길며 목표 모델의 한 번 전방 계산이 비싼 경우입니다. 사용자가 응답을 기다리는 코딩 도우미, 단일 요청을 오래 수행하는 연구 에이전트, 로컬 워크스테이션에서 큰 모델을 실행하는 환경이 여기에 가깝습니다. 초안 모델을 함께 올릴 메모리 여유가 있고 지원되는 목표 모델을 그대로 사용한다면 도입 장벽도 낮습니다.
이득이 제한될 수 있는 환경은 매우 높은 동시성으로 기본 모델의 GPU 활용률이 이미 높은 경우, 출력이 아주 짧은 경우, 프롬프트 처리 시간이 생성 시간보다 큰 경우입니다. 검색 증강 시스템이 수만 토큰 문서를 넣고 두세 문장만 답한다면 프리필이 지배적일 수 있습니다. 초안 모델 때문에 목표 모델의 KV 캐시 공간이 줄어 배치 수용량이 감소하면 단일 요청은 빨라져도 전체 처리량이 나빠질 수 있습니다.
네트워크와 도구 실행 시간이 지배적인 에이전트에서도 모델 토큰 속도 개선이 사용자 체감으로 그대로 이어지지 않을 수 있습니다. 브라우저 자동화가 페이지 로딩을 기다리거나 외부 API가 수 초 걸린다면 디코딩 몇 백 밀리초 절감은 전체 작업시간에서 작습니다. 반대로 모델이 긴 계획과 코드를 반복 생성하는 구간에서는 누적 이득이 큽니다. 시스템 전체의 시간 분해 없이 토큰 벤치마크만 보고 투자 규모를 정하면 안 됩니다.
DFlash 2의 의미는 더 큰 초안 모델이 아니다
DFlash 2가 흥미로운 이유는 성능을 얻기 위해 구조 전체를 더 무겁게 만들지 않았다는 점입니다. 병렬 초안이 이미 올바른 후보를 상당수 만들어낸다는 관찰, 그리고 접미부 오류가 주로 가까운 위치의 연결 부족에서 온다는 관찰을 각각 작은 선택기와 짧은 합성곱으로 해결했습니다. 모델 규모를 키우기 전에 오류가 후보 생성, 후보 선택, 위치 연결, 검증 중 어디에서 생기는지 측정하는 시스템 설계의 좋은 사례입니다.
동시에 아직 일반화 범위는 확인해야 합니다. 발표 시점의 DFlash 2 체크포인트는 제한적이고, 수치는 특정 모델과 벤치마크, 런타임 설정에서 나왔습니다. 다국어, 긴 문맥, 높은 동시성, 다양한 양자화, 혼합 전문가 모델에서 같은 비율이 유지되는지는 독립 평가가 필요합니다. 초안 모델을 목표 모델 버전마다 따로 준비해야 한다면 모델 업데이트 주기가 빠른 조직에는 운영 비용이 생깁니다.
향후 경쟁 지점은 단순한 초당 토큰 최대값만이 아닐 것입니다. 초안 체크포인트를 얼마나 빠르게 학습하고 배포하는지, 여러 런타임이 같은 알고리즘을 얼마나 안정적으로 구현하는지, 동적 배치와 캐시 관리가 추측 디코딩을 얼마나 잘 스케줄링하는지가 중요합니다. 모델 제공자가 공식 초안 모델을 함께 배포하면 사용자는 정확한 조합을 찾는 부담을 줄일 수 있습니다.
결론: 병렬성을 지키면서 정확도를 회수한 업데이트
DFlash는 추측 디코딩의 초안마저 한 번에 만들 수 있다는 방향을 제시했습니다. DFlash 2는 그 병렬성 때문에 생긴 약점을 더 큰 순차 모델로 덮지 않고, 후보 선택과 국소 연결이라는 두 작은 문제로 나눴습니다. 공식 결과대로라면 약 1%의 추가 사이클 지연으로 검증당 출력이 20% 이상 늘어나는 효율적인 개선입니다. Qwen3.8-27B의 2.7~3.4배 처리량은 낮은 동시성의 에이전트와 로컬 추론에서 특히 주목할 만합니다.
도입 판단은 간단합니다. 공식 지원 조합으로 작은 평가 환경을 만들고, 자신의 프롬프트 길이와 생성 길이, 동시성, 샘플링 설정에서 기준선과 비교해야 합니다. 평균 초당 토큰뿐 아니라 상위 지연, 메모리, 구조화 출력, 장애 복구까지 확인해야 합니다. DFlash 2의 가장 중요한 메시지는 모든 모델이 곧 세 배 빨라진다는 선언이 아닙니다. 추론 가속의 병목을 더 세밀하게 측정하면 병렬성을 포기하지 않고도 상당한 정확도를 회수할 수 있다는 것입니다.
참고 자료
'LLM' 카테고리의 다른 글
| Gemini 3.7 Flash API 가격·마이그레이션 총정리 (0) | 2026.08.21 |
|---|---|
| MTP와 DFlash 차이, LLM 추론 가속은 무엇이 더 빠를까? (0) | 2026.08.20 |
| LLM 텍스트 워터마크 — 같은 뜻에 다른 주사위를 심는 법 (0) | 2026.08.17 |
| GLM-5.3 공개 지연 — 코딩 성능과 사이버 위험 해설 (0) | 2026.08.17 |
| LFM2.5 Encoder — 로컬 개인정보 필터 설계 가이드 (0) | 2026.08.16 |