Chain-of-Draft: 추론 과정은 유지하고, 서술은 버리고, 추론 토큰을 약 80% 절감하기
요약
Chain-of-Draft(CoD)는 기존 Chain-of-Thought(CoT)의 불필요한 서술적 토큰을 제거하고 핵심적인 추론 단계만 간결한 초안 형태로 생성하는 기법입니다. 이를 통해 CoT와 유사한 정확도를 유지하면서도 추론 토큰 사용량을 약 80% 절감하여 비용과 지연 시간을 획기적으로 줄일 수 있습니다.
핵심 포인트
- CoT의 대부분은 정답과 무관한 서술적 토큰으로 구성됨
- CoD는 각 사고 단계를 5단어 내외의 초안으로 제한하여 효율성 극대화
- 정확도는 유지하면서 추론 토큰 및 비용을 약 80% 절감 가능
- 시스템 프롬프트 변경만으로 기존 CoT 파이프라인에 즉시 적용 가능
Chain-of-Thought (CoT)는 모델이 정답으로 바로 건너뛰는 대신 중간 단계를 직접 쓰게 함으로써 추론 정확도를 안정적으로 높여줍니다. 하지만 CoT 추적(trace)을 자세히 살펴보면 한 가지 사실을 발견할 수 있습니다. 간단한 산술 문제에서 모델은 실제 계산은 단 한 번의 뺄셈뿐임에도 불구하고 한 단락 분량의 글을 생성합니다. Chain-of-Draft (Xu et al., 2025, Zoom)는 이에 대한 해결책입니다. 동일한 단계별 추론을 수행하되, 각 단계를 몇 단어 내외의 간결한 '초안 (draft)'으로 제한합니다. 논문에 따르면 산술, 상식 및 기호적 벤치마크에서 CoT와 유사한 정확도를 유지하면서도 추론 토큰을 약 80% 절감했다고 보고합니다.
통찰: 대부분의 CoT 토큰은 신호가 아닌 서술이다
CoT 추적을 두 부분으로 나누어 봅시다. 정답을 담고 있는 (answer-bearing) 토큰은 중간 숫자와 핵심적인 변환 과정입니다. 연결 (connective) 토큰은 인간 독자에게 과정을 설명하는 산문입니다 ("그가 얼마나 주었는지 찾기 위해, 시작 금액에서 남은 금액을 뺍니다, 그래서..."). 정답을 담고 있는 토큰은 아주 작은 부분에 불과하며, 나머지는 모델이 자신을 위해서가 아니라 당신을 위해 작성한 서술(narration)입니다.
CoT가 직접 답변하는 방식보다 뛰어난 이유는 유창함 때문이 아닙니다. 중간 '상태 (state)'를 작성하는 행위가 모델이 다음 토큰을 조건화(condition)할 수 있는 구체적인 대상을 제공하기 때문입니다. 이 메커니즘은 압축 후에도 유지됩니다. 20 - 12 = 8은 뺄셈을 설명하는 문장과 동일한 상태를 고정합니다.
CoT -> 서술형, 단계당 하나의 완전한 문장:
"그가 얼마나 주었는지 찾기 위해, 시작 금액에서
남은 막대사탕을 뺍니다, 그래서..."
...
기술은 단 하나의 시스템 프롬프트로 구현된다
이 모든 동작은 단 하나의 지시문(논문의 정확한 문구)에 담겨 있습니다. 이 지시문은 두 가지 역할을 수행합니다. 모델이 서술을 멈추도록 초안 길이를 제한하는 것과, 최종 답변 전에 구분자(delimiter)를 요구하여 깔끔하게 파싱할 수 있도록 하는 것입니다.
const COD_SYSTEM =
"단계별로 생각하되, 각 사고 단계마다 최대 5단어의 " +
"최소한의 초안만 유지하세요. 결과는 " +
...
이는 CoT (Chain-of-Thought) 호출을 즉시 대체할 수 있는 방식입니다. 동일한 SDK와 동일한 형태를 유지하며, 오직 시스템 문자열(system string)만 변경됩니다. 출력이 더 작기 때문에 파이프라인의 변경 없이 비용과 지연 시간(latency)이 모두 감소합니다. 출력 토큰(output tokens)은 비용을 지불하는 대상이자 생성 시간을 결정하는 요소이므로, 80%의 토큰 절감은 대략 각각 80%의 절감으로 이어집니다.
정답을 파싱하고, 절감 효과를 증명하세요
#### 구분자는 CoD가 간결한 추적(trace)에도 불구하고 기계가 사용 가능한 상태를 유지할 수 있는 이유입니다. 이를 기준으로 분할하여 그 뒤에 오는 내용을 가져오면 됩니다. 이는 CoT에서 사용하는 것과 동일한 추출 방식이므로, 추론 과정을 축소하더라도 다운스트림(downstream) 과정에는 아무런 변화가 없습니다.
function extractAnswer(text) {
const i = text.lastIndexOf("####");
return (i >= 0 ? text.slice(i + 4) : text).trim(); // "8"
...
성공을 당연하게 가정하지 말고 직접 측정하세요. 동일한 질문을 두 프롬프트 모두에 실행하고, 실제 토크나이저(tokenizer)로 출력 토큰을 계산하여 비교해 보십시오. 논문에 따르면 GSM8K 데이터셋에서 CoD는 유사한 정확도를 유지하면서 CoT 추론 토큰의 약 8% 수준에 도달했습니다.
형식을 강화하는 복사-붙여넣기 템플릿
Zero-shot CoD는 단계가 전달해야 할 신호(signal)보다 더 압축될 때, 또는 암묵적으로 상태를 유지할 수 없는 매우 작은 모델에서는 성능이 저하될 수 있습니다. 두 가지 간단한 해결책이 있습니다. 하나는 간결한 형식이 유지되도록 원샷(one-shot)을 제공하는 것이고, 다른 하나는 정말 어려운 문제는 다시 전체 CoT로 라우팅(route)하는 것입니다.
당신은 신중한 추론가입니다. 단계별로 생각하되, 각 사고 단계마다
최소한의 초안(MINIMUM DRAFT)만 유지하세요 — 단계당 최대 5단어입니다.
완전한 문장이나 설명을 작성하지 마세요; 파편(fragments)을 사용하세요,
...
각 CoD 샘플은 CoT 샘플보다 5~10배 저렴하기 때문에, 더 많은 샘플을 추출하여 자기 일관성(self-consistency)을 위한 다수결 투표(majority-vote)를 수행할 수도 있습니다. 종종 n개의 CoD 추출 비용이 단 한 번의 CoT 추출 비용보다 적게 듭니다. CoD는 추론 '형식(format)' 기술입니다. CoT가 들어가는 곳이라면 어디든 끼워 넣을 수 있으며, 이는 (입력 히스토리를 줄이는) 컨텍스트 관리(context management)와는 구별됩니다. CoD는 모델의 '출력' 추론을 줄이기 때문입니다.
실시간 토큰 미터(token meter)와 함께, 장황한 CoT(Chain-of-Thought) 추적과 압축된 CoD(Chain-of-Draft) 추적이 나란히 동일한 정답에 도달하는 과정을 여기에서 확인하세요: https://dev48v.infy.uk/prompt/day53-chain-of-draft.html
AI 자동 생성 콘텐츠
본 콘텐츠는 Dev.to AI tag의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기