원문 캡처 · github.com
원문 캡처 · github.com

TokenGate는 긴 문맥에서 중요한 토큰만 골라 처리하도록 기존 언어 모델에 학습 가능한 선택 모듈을 더하는 프로젝트다. 프로젝트 측은 긴 입력을 미리 처리하는 속도를 최대 11.3배 높이고 메모리 사용량을 최대 3.4배 줄였다고 밝혔다.

게이트는 지정한 문서 구간의 토큰에 점수를 매겨 상위 K개를 남긴다. 게이트 위쪽 모델 계층은 남은 토큰만 처리하고, 지시문이나 질문처럼 {state}로 지정하지 않은 입력은 가지치기 대상이 아니다. 학습 시에는 토큰 중요도 점수를 활용해 미분할 수 없는 상위 K개 선택 문제를 다룬다.

저장소에는 추론과 학습 도구, 사전 학습된 체크포인트가 포함돼 있다. 설치에는 Python 3.10 이상과 CUDA를 지원하는 PyTorch 2.9 이상이 필요하다. 일부 기본 설정은 nvcc로 FlashAttention-2 커널을 빌드하며, 빌드 없이 FlexAttention을 사용할 수도 있다. 이 경우 추론은 자동으로 대체 경로를 사용하고, 학습에서는 attn_backend="flex"를 명시해야 한다.

프로젝트가 공개한 테스트 결과는 배치 크기 1, H100 GPU 한 대에서 예약된 테스트 데이터를 모두 사용해 측정했다. 기준 모델은 원래 방식대로 전체 입력을 처리했다.

데이터셋표본 수지표기준 모델TokenGate 미가지치기TokenGate K=2000K=2000 TTFT 속도 향상
NIAH (16k)150정확도0.9931.0001.0006.3배
RepoBench-P450ES0.2850.5870.5503.8배
BioDEX-Reactions450F10.0560.2840.2922.1배

프로젝트 측은 더 낮은 토큰 예산에서도 일부 작업의 성능이 유지됐다고 보고했다. NIAH는 K=100에서 정확도 1.000과 8.1배 속도 향상을, RepoBench는 K=500에서 ES 0.533과 5.6배 속도 향상을 기록했다. 논문에 제시된 1.4~11.3배 범위는 더 긴 문맥 구간에서 나온 결과라고 저장소는 설명한다. 이 수치는 프로젝트가 공개한 실험 결과이며, 데이터셋과 실행 조건에 따라 달라질 수 있다.