AI 컨텍스트 절약을 위한 로그 압축 기법
How I Save 80% of Neural Network Context When Working with Logs
핵심 요약
로그 내 반복되는 정보를 사전 기반 태그로 치환해 AI 컨텍스트 사용량을 80%까지 줄이는 최적화 방법.
- 로그 압축 기법 — 반복되는 텍스트를 사전 기반 태그로 치환하여 토큰 사용량을 획기적으로 절감함.
- Base62 인코딩 — 태그 길이를 최소화하기 위해 영문 대소문자를 활용한 효율적인 인덱싱을 적용함.
- 불필요 데이터 제거 — 16진수 포인터의 선행 0을 삭제하여 로그 크기를 추가로 최적화함.
- 메타 BPE 적용 — 태그 간의 반복 패턴까지 찾아내어 다중 계층 압축을 수행함.
문제점
저는 프로젝트 개발 중 발생하는 문제를 디버깅하기 위해 AI를 적극적으로 활용합니다. 그런데 한 가지 성가신 문제를 겪었습니다. 로그에는 보통 엄청난 양의 반복적인 정보가 포함되어 있다는 점입니다. 이는 실질적인 가치를 더하지 않으면서 입력 컨텍스트의 상당 부분을 차지합니다.
전형적인 시나리오는 이렇습니다. 버그를 발견하고 로그 1000줄을 복사해서 채팅창에 붙여넣습니다. 신경망이 텍스트를 파싱하기 시작하지만, 그 1000줄 중에서 실제로 고유한 내용은 300줄 정도에 불과합니다. 나머지는 수백 번 반복되는 동일한 템플릿입니다.
2026-04-18T11:54:02.746 [WinFocusMonitor] computeIsSecureField: queryMsaaProtected == 0
2026-04-18T11:54:02.747 [WinFocusMonitor] workerMain: hwnd=00000000016000FE idObject=-4 idChild=0 -> secure=0
2026-04-18T11:54:02.765 [WinFocusMonitor] computeIsSecureField: queryMsaaProtected == 0
2026-04-18T11:54:02.765 [WinFocusMonitor] workerMain: hwnd=00000000003B0640 idObject=-4 idChild=-45107 -> secure=0
2026-04-18T11:54:04.787 [MemDiag] periodic t+9s WorkingSet=352.257812MB Peak=368.761719MB
2026-04-18T11:54:04.788 [MemDiag] WordIndex en_US READY at t+9s
2026-04-18T11:54:04.788 [MemDiag] after WordIndex en_US READY WorkingSet=352.320312MB Peak=368.761719MB
동일한 구성 요소([WinFocusMonitor], [MemDiag]), 동일한 키(WorkingSet=, hwnd=), 그리고 반복되는 문구들을 확인할 수 있습니다.
제 아이디어는 로그를 평소처럼 클립보드에 복사한 뒤, Ctrl+Alt+V를 눌러 최적화된 버전으로 붙여넣는 것이었습니다. 결과적으로 이 간단한 백그라운드 유틸리티를 통해 로그의 양과 반복 횟수에 따라 최대 80%까지 로그 압축을 달성했습니다.
1단계: 기본 아이디어 — 반복 사전(Dictionary)
첫 번째 생각은 간단했습니다. 무언가 반복된다면 그것을 '범례(legend)'(사전)로 추출하고 짧은 태그로 대체하는 것입니다. 저는 AI에게 로그를 분석하여 반복되는 요소를 #1#, #2#와 같은 태그로 추출하는 PowerShell 스크립트를 작성해달라고 요청했습니다.
스크립트의 첫 번째 버전을 거친 로그는 다음과 같습니다.
--- LEGEND ---
#T# = 2026-04-18T11:54:
#0# = [WinFocusMonitor]
#1# = [MemDiag]
#2# = hwnd=
#3# = idObject=
#4# = idChild=
#5# = secure=
#6# = WorkingSet=
#7# = Peak=
#8# = ' computeIsSecureField: queryMsaaProtected == 0'
#9# = ' WordIndex '
--- LOGS ---
#T#02.746 #0##8#
#T#02.747 #0# workerMain: #2#00000000016000FE #3#-4 #4#0 -> #5#0
#T#02.765 #0#8
#T#02.765 #0# workerMain: #2#00000000003B0640 #3#-4 #4#-45107 -> #5#0
#T#04.787 #1# periodic t+9s #6#352.257812MB #7#368.761719MB
#T#04.788 #1# #9#en_US READY at t+9s
#T#04.788 #1# after #9#en_US READY #6#352.320312MB #7#368.761719MB
모든 기본적인 반복 요소가 상단의 범례로 추출되었습니다.
1단계 결과: 4072자 → 2625자. 약 35%.


