Trie Automata for Constrained Decoding over Large Finite Sets
이 논문은 유한 집합 제약 디코딩을 위해 아호-코라식크(Aho-Corasick) 다중 패턴 매칭을 활용하여 토큰 마스크를 사전 계산하는 특화된 메커니즘인 트라이 오토마타(trie automaton)를 소개하며, 이를 통해 XGrammar와 같은 기존 시스템에 비해 100%의 출력 유효성을 보장하면서도 최대 29배 높은 처리량과 현저히 빠른 컴파일 속도를 달성한다.
원본 논문은 CC BY 4.0 (http://creativecommons.org/licenses/by/4.0/) 라이선스로 제공됩니다. 이것은 아래 논문에 대한 AI 생성 설명입니다. 저자가 작성하거나 승인한 것이 아닙니다. 기술적 정확성을 위해서는 원본 논문을 참조하세요. 전체 면책 조항 읽기
컴퓨터가 매우 재능 있지만 약간은 산만하고 혼란스러운 요리사 같은 세상이 있다고 상상해 보세요. 그들은 이야기를 쓰고, 수학 문제를 풀고, 소프트웨어를 코딩할 수도 있지만, 무언가를 지어내는 나쁜 버릇이 있습니다. 만약 당신이 그들에게 세계의 수도 목록을 나열하라고 요청한다면, 그들은 자신 있게 "나니아"라는 도시를 발명하거나 "파리(Paris)"의 철자를 틀릴 수도 있습니다. 이를 막기 위해 과학자들은 **제약된 디코딩(constrained decoding)**이라는 기술을 사용합니다. 이것은 요리사에게 엄격한 레시피 북을 주는 것과 같습니다. 요리사가 우주의 모든 재료를 마음대로 고르게 하는 대신, 레시レシピ 북은 "밀가루, 설탕, 또는 달걀만 사용할 수 있습니다"라고 말합니다. 컴퓨터는 자신이 쓰려는 단어 하나하나를 이 목록과 대조하여 실수로 새로운 재료를 만들어내지 않도록 확인합니다.
이 방식은 레시피에 재료가 세 가지처럼 목록이 짧을 때는 아주 잘 작동합니다. 하지만 만약 목록이 엄청나게 길다면 어떨까요? 예를 들어 레시피가 "전 세계의 10,000가지 서로 다른 향신료 중 무엇이든 선택할 수 있습니다"라거나, "거대한 작업장에 있는 50,000개의 도구 중 무엇이든 고를 수 있습니다"라고 한다면 말이죠. 세 개의 아이템이 있는 목록을 확인하는 것은 쉽습니다. 하지만 컴퓨터가 새로운 단어를 생각할 때마다 50,000개의 아이템을 확인하는 것은, 계속해서 커지는 거대한 건초더미에서 특정 바늘 하나를 찾는 것과 같습니다. 컴퓨터는 목록을 확인하느라 너무 허우적거리다가 요리를 멈춰버리거나, 음식이 다 식을 때까지 너무 오래 걸리게 됩니다. 이것이 바로 연구자들이 해결하려고 노력 중인 문제입니다. 즉, "금지된 목록"이 방대해지더라도 어떻게 하면 컴퓨터를 빠르고 정확하게 유지할 것인가 하는 점입니다.
금지된 단어들의 거대한 도서관
이 논문에서 연구자들은 **트라이 오토마톤(Trie Automaton)**이라는 영리한 새로운 도구를 소개합니다. 이것이 왜 혁신적인 변화인지 이해하기 위해, 기존 방식이 어떻게 작동했는지 살펴봅시다. 컴퓨터가 거대한 도서관 문 앞을 지키는 보안 요리사라고 상상해 보세요. 컴퓨터가 단어를 말하고 싶을 때마다, 보안 요사는 긴 복도를 달려가 거대하고 먼지가 쌓인 장부(10,000개의 유효한 단어 목록)를 확인하고 그 단어가 허용되는지 확인해야 합니다. 목록이 방대해지면, 보안 요사는 복도를 왔다 갔다 하는 데 모든 시간을 허비하게 되고, 안으로 들어가려는 사람들의 줄(컴퓨터의 생각들)은 꽉 막히게 됩니다. 이것이 논문에서 말하는 "카디널리티 벽(cardinality wall)"입니다. 즉, 목록이 너무 커져서 시스템이 멈추거나 속도가 느려지는 지점을 말합니다.
연구자들은 기존 방식이 모든 목록을 무작위로 뒤섞인 단어들처럼 취급했다는 점을 깨달았습니다. 하지만 현실 세계에서 목록은 무작위가 아닙니다. 도구 이름 목록을 생각해 보세요: "aws.create_user", "aws.delete_user", "aws.list_user". 이들은 모두 "aws."로 시작합니다. 그다음에는 "create", "delete", 또는 "list"가 옵니다. 이들은 나무의 가지처럼 공통된 시작 부분을 많이 공유합니다. 기존의 보안 요사는 이를 알아차리지 못했습니다. 그들은 매번 처음부터 모든 단어를 하나하나 확인했습니다.
새로운 **트라이 오토마톤(Trie Automaton)**은 도서관의 특별한 지도를 만드는 매우 똑똑한 사서와 같습니다. 긴 복도 대신, 사서는 나무 모양의 경로를 만듭니다.
- 지도: 그들은 "aws."를 위한 경로를 그립니다. 일단 "aws." 경로에 들어서면, 다시 "aws."를 확인할 필요가 없습니다. 그저 다음 갈림길인 "create", "delete", 또는 "list"를 보기만 하면 됩니다.
- 사전 확인: 여기 마법 같은 기술이 있습니다. 컴퓨터가 말을 시작하기도 전에, 사서는 나무의 모든 갈림길에서 어떤 단어가 허용되는지를 미리 계산합니다. 그들은 이 답들을 작은 포스트잇에 적어 나무 가지에 바로 붙여 놓습니다.
- 속도: 이제 컴퓨터가 말을 하고 싶을 때, 사서는 장부로 달려가지 않습니다. 그저 현재 가지에 붙은 포스트잇을 보기만 하면 됩니다. "아, 지금 'aws' 가지에 있군요? 쪽지에 다음으로는 'create', 'delete', 또는 'list'만 말할 수 있다고 적혀 있네요." 이 과정은 순식간에 끝납니다.
결과: 달팽이에서 로켓으로
연구자들은 이 새로운 시스템을 10개에서 10,000개의 아이템으로 구성된 단어 목록을 사용하여 기존의 최선책(XGrammar 등)과 비교 테스트했습니다. 결과는 극적이었습니다.
- 컴파일 속도: 1,000개의 아이템에 대한 지도를 만들 때, 기존 시스템은 약 75밀리초(약간의 기다림)가 걸렸습니다. 새로운 트라이 오토마톤은 이를 약 33밀리초 만에 해냈습니다. 하지만 목록이 10,000개로 늘어나자 기존 시스템은 거의 240밀리초가 걸린 반면, 새로운 시스템은 40밀리초 정도로 거의 일정하게 유지되었습니다. 마치 기존 시스템은 진흙 속을 달리고 있었고, 새로운 시스템은 속도가 빨라져도 전혀 힘들어하지 않는 러닝머신 위를 달리는 것과 같았습니다.
- "카디널리티 벽": 기존 시스템은 목록이 몇 백 개를 넘어서면 급격히 실패하거나 느려지기 시작했습니다. 새로운 시스템은 10,000개의 아이템이 있는 목록도 무리 없이 처리했으며, 연구자들은 이론적으로 100,000개까지도 처리할 수 있음을 보여주었습니다.
- 배치 서빙 (진정한 승리): 가장 놀라운 결과는 여러 요청을 동시에 처리할 때(예: 256개의 주문이 밀려드는 바쁜 레스토랑) 나타났습니다. 기존 시스템은 초당 약 7.5개의 주문만 처리할 수 있었습니다. 하지만 새로운 트라이 오토마톤은 초당 219개의 주문을 처리했습니다. 이는 29배나 향상된 수치입니다.
왜 이렇게 훨씬 더 빨랐을까요? 단순히 지도 때문만이 아니라, 그 지도를 사용하는 방식 때문이었습니다. 답이 포스트잇에 미리 적혀 있었기 때문에, 컴퓨터는 말을 하는 동안 복잡한 생각이나 확인 과정을 거칠 필요가 없었습니다. 그저 쪽지를 집어 들고 바로 다음 단계로 넘어갈 수 있었습니다. 덕분에 컴퓨터는 기존 시스템이 매번 수행해야 했던 느리고 복잡한 단계들을 통째로 건너뛸 수 있었습니다.
이것이 의미하는 바
이 논문은 특정 유형의 목록들—예를 들어 레지스트리에서 도구를 선택하거나, 의료 코드를 고르거나, 제품 카테고리를 선택하는 경우—에 대해서는 기존의 "모두 확인하기" 방식이 너무 느리다는 것을 증명합니다. 단어의 구조(공유된 시작 부분)를 활용하고 답을 미리 계산함으로써, 새로운 방식은 제약된 디코딩을 다시 빠르고 신뢰할 수 있게 만듭니다.
연구자들은 이 새로운 방식이 컴퓨터를 더 똑똑하게 만들거나 무엇을 말할지 바꾸는 것이 아니라, 단지 정해진 대로만 말하도록 보장하며 이를 믿을 수 없을 만큼 빠르게 수행한다는 점을 매우 주의 깊게 명시했습니다. 그들은 이를 실제 컴퓨터 칩에서 측정하였고, 새로운 방식이 규칙을 따르는 데 있어 기존 방식과 마찬가지로 100% 정확하면서도, 생성되는 모든 단어에 대해 7배 더 빠르다는 것을 발견했습니다. 이 속도를 수백 개의 요청이 동시에 발생하는 상황에 곱해보면, 그 차이는 엄청납니다.
요약하자면, 이 논문은 거대한 건초더미 속을 헤매는 혼란스럽고 느린 탐색을 빠르고 조직적인 산책으로 바꾸는 방법을 찾아냈습니다. 이는 "카디널리티 벽" 문제를 해결하여, AI가 수천 개의 도구나 서비스를 즉각적으로 선택해야 하는 AI 에이전트의 미래에 필수적인, 방대한 옵션 목록을 막힘없이 처리할 수 있도록 해줍니다.
연구 분야의 논문에 파묻히고 계신가요?
연구 키워드에 맞는 최신 논문의 일일 다이제스트를 받아보세요 — 기술 요약 포함, 당신의 언어로.