LLM(Language Model) 기반 기능 개발 시 JSON 토큰 사용량(Token Usage)을 줄이기 위한 다양한 최적화 기법 소개
UUID를 짧은 ID로 대체, JSON 포맷팅 제거, 키 이름 축약 등 구체적인 방법론 제시
Kollabe의 회고 및 스탠드업 요약 기능에 실제 적용하여 토큰 사용량 50% 감소 효과를 확인
TOON(Token-Oriented Object Notation)과 같은 표준화된 압축 방식도 존재하지만, 유연한 커스터마이징(Customization)을 위해 자체적인 최적화 방식 선택
데이터 구조 단순화, 불필요한 메타데이터 제거 등을 통해 LLM(Language Model)의 추론 속도(Inference Speed) 향상 및 비용 절감 가능
본문에서는 UUID(Universally Unique Identifier)를 짧은 ID로 대체하여 토큰 사용량을 줄이는 방법을 제시한다. UUID는 데이터베이스(Database)에서 고유 식별자로 유용하지만, LLM(Language Model)에게는 불필요한 토큰을 소모하는 원인이 된다.
UUID를 u-1, u-2와 같은 짧은 ID로 매핑: 동일한 사용자를 나타내는 경우, 짧은 ID를 재사용하여 토큰 절약
접두사(Prefix) 사용: 사용자(u), 질문(q), 답변(a) 등, 각 객체 유형에 따라 다른 접두사를 사용하여 LLM(Language Model)이 문맥을 이해하도록 돕는다.
구현: 데이터 처리 시, UUID와 짧은 ID 간의 매핑 테이블을 구축하여 관리한다. 이 방법은 JSON 데이터 크기(JSON Data Size)를 줄이는 효과를 가져온다.
글에서는 JSON 포맷팅 제거와 키 이름 축약을 통해 토큰 사용량을 줄이는 방법을 설명한다. JSON.stringify()의 두 번째, 세 번째 인자를 활용하여 JSON 데이터 크기(JSON Data Size)를 최적화한다.
JSON.stringify() 활용: 공백 제거를 통해 데이터 압축(Data Compression) 효과를 얻는다.
키 이름 축약: odUserId를 uid로, userName을 name으로 변경하는 등, 의미를 해치지 않는 범위 내에서 키 이름을 줄인다.
구현: 개발자는 JSON 직렬화 시 포맷팅 옵션을 제거하고, 키 이름을 축약하는 규칙을 정의하여 적용한다. 이러한 방법은 JSON 파싱(JSON Parsing) 속도 향상에도 기여한다.
본문에서는 중첩된 구조를 평탄화하고, null 또는 빈 값을 제거하여 토큰 사용량을 줄이는 방법을 소개한다. LLM(Language Model)에 불필요한 정보를 전달하지 않도록 데이터 전처리(Data Preprocessing)를 수행한다.
중첩 구조 평탄화: user -> profile -> name과 같은 중첩 구조를 name으로 변경하여 구조적 토큰(Structural Token) 사용을 줄인다.
null 및 빈 값 제거: 존재하지 않는 데이터는 LLM(Language Model)에 전달하지 않음으로써 토큰 낭비를 방지한다.
구현: 데이터 구조를 분석하고, 불필요한 중첩과 값을 제거하는 로직을 구현한다. 이러한 최적화는 LLM(Language Model)의 추론 정확도(Inference Accuracy) 향상에도 기여할 수 있다.
글에서는 유사한 항목들을 배열로 표현하고, 불리언 값을 효율적으로 나타내는 방법을 제시한다. 데이터 구조를 변경하여 토큰 사용량(Token Usage)을 절감하고, LLM(Language Model)의 이해도를 높인다.
반복되는 객체 대신 배열 사용: 동일한 구조를 가진 객체들의 경우, 헤더 행과 데이터 행으로 구성된 배열을 사용하여 중복되는 키(Key)를 제거한다.
불리언 값 표현 최적화: false인 경우 필드를 생략하거나, true인 값만 배열에 포함하여 토큰 사용량을 줄인다.
구현: 데이터 구조를 분석하고, 배열로 표현하는 것이 효율적인지 판단한다. 불리언 값은 긍정적인 경우만 포함하도록 로직을 변경한다. 이러한 방법은 LLM(Language Model)의 성능 향상에 기여한다.
본문에서는 Kollabe의 회고 요약 기능에 적용된 JSON 최적화 사례를 보여준다. 실제 데이터를 기반으로 최적화 전후의 차이점을 비교 분석하여 최적화의 효과(Optimization Effect)를 시각적으로 제시한다.
최적화 전: UUID, 긴 키 이름, 중첩 구조, null 값, 타임스탬프(Timestamp) 등, 불필요한 데이터가 포함되어 토큰 사용량 증가
최적화 후: 짧은 ID, 축약된 키 이름, 구조 단순화, null 값 제거, 불필요한 데이터 제거를 통해 JSON 데이터 크기 50% 감소
결과: 토큰 비용 절감, 추론 속도 향상, LLM(Language Model)의 성능 향상
이러한 사례는 LLM(Language Model) 기반 서비스를 개발하는 개발자들에게 실질적인 가이드라인(Practical Guideline)을 제공한다.