본문으로 건너뛰기

Gisting으로 LLM 에이전트 context 압축

Shopify는 Gisting으로 긴 system prompt를 4대1 압축해 지연시간과 GPU 사용량을 낮췄습니다.

이 요약은 AI가 원문을 분석해 생성했습니다. 정확한 내용은 원문 기준으로 확인하세요.

TL;DR

Shopify는 Gisting으로 Sidekick GraphQL agent의 약 6,000토큰 system prompt를 약 1,500개의 gist tokens로 압축하면서 prediction quality를 유지했습니다. 모델 가중치를 고정하고 전체 prompt를 본 Teacher와 압축 토큰을 본 Student의 logits 사이 KL divergence를 줄이는 방식으로 gist embeddings를 학습합니다. 350 RPM에서 TTFT는 438ms에서 354ms로, E2E latency는 6.8초에서 4.2초로 줄었고 throughput은 20.2 QPS에서 23.4 QPS로 늘었습니다. Production GraphQL traffic에서는 GPU 사용량이 14% 감소했으며, Prefix Caching과 함께 적용해 긴 context의 attention 및 KV cache 읽기 비용을 낮췄습니다.

빠른 이해

새로운 점

긴 system prompt의 동작을 유지하면서 학습된 gist tokens로 4대1 압축해 serving 비용과 지연시간을 함께 낮춘 구현입니다.

핵심 메커니즘

전체 system prompt를 본 Teacher가 응답 위치별 logits를 만들고, 같은 모델이 prompt를 gist tokens로 바꿔 계산한 Student logits와 비교합니다. 모델 가중치는 고정한 채 두 분포의 KL divergence를 줄이도록 gist embeddings만 학습한 뒤, 추론 시 요청의 긴 prompt를 특수 토큰 문자열로 치환합니다. Shopify는 약 6,000토큰을 약 1,500 gist tokens로 줄여 TTFT, E2E latency, throughput과 GPU 사용량을 함께 개선했습니다.

핵심 수치

  • System prompt 압축: 약 6,000토큰 -> 약 1,500 gist tokens, 4대1 감소- Sidekick GraphQL agent
  • TTFT p50: 438ms -> 354ms, 19% 감소- 350 RPM
  • E2E latency p50: 6.8초 -> 4.2초, 약 38% 감소- 350 RPM
  • Throughput: 20.2 QPS -> 23.4 QPS, 16% 증가- 350 RPM
  • GPU 사용량: 14% 감소- Production GraphQL traffic
  • 학습 실행 시간: 30시간 -> 6시간- Teacher logits 사전 계산과 pre-tokenization 적용

섹션별 상세

01

긴 system prompt의 추론 비용

Shopify의 Sidekick GraphQL agent는 요청마다 약 6,000토큰의 system prompt를 사용해 긴 지시문의 행동 특성을 유지했지만, prompt가 길어질수록 첫 토큰까지의 시간과 요청 처리 비용이 커지고 같은 트래픽을 처리하는 데 더 많은 GPU가 필요했습니다. Gisting은 이 prompt를 학습된 특수 토큰열로 치환해 약 1,500개의 gist tokens만 추론 입력에 남기는 방식으로 토큰 수를 4분의 1로 줄였습니다. 압축 과정에서 모델의 예측 품질을 유지하도록 전체 prompt를 본 모델의 출력 분포와 압축 prompt를 본 모델의 출력 분포를 맞췄습니다. 350 RPM에서 TTFT는 438ms에서 354ms로, E2E 지연시간은 6.8초에서 4.2초로 감소했고 처리량은 20.2 QPS에서 23.4 QPS로 증가했습니다. 이 결과는 긴 지시문을 유지하면서도 요청당 attention과 메모리 부담을 줄여 GPU 사용량을 낮추는 것이 Gisting의 핵심 가치임을 뜻합니다.
02

Gist embeddings를 학습하는 방식

Gist token은 모델 어휘에 추가하는 특수 토큰이며, 4대1 압축에서는 원래 prompt 토큰 네 개마다 gist token 하나를 배치합니다. 모델 가중치는 고정하고 gist embeddings만 학습하므로, 교사 단계에서는 전체 자연어 prompt를 입력해 응답 각 위치의 teacher logits를 얻고 학생 단계에서는 같은 모델에 gist tokens를 넣어 student logits를 계산합니다. 두 logits의 KL divergence를 손실로 사용해 학생의 다음 토큰 확률분포가 교사의 분포에 가까워질 때까지 임베딩을 갱신합니다. Shopify는 학습이 끝난 뒤 임베딩을 모델의 embedding matrix에 기록하고 tokenizer에 특수 토큰을 등록했으며, 추론 시 요청의 긴 prompt를 gist token 문자열로 바꿉니다. 이 구조는 custom attention mask나 별도 encoder, 특수 serving path 없이 일반 모델 로딩과 추론 흐름을 유지하므로 압축 비용을 학습 시점에 한 번만 지불하게 합니다.
전체 system prompt를 읽는 Teacher와 gist tokens를 읽는 Student가 각각 응답 토큰별 예측분포를 만들고, 두 분포의 KL divergence를 줄이는 학습 구조를 나타낸 도식입니다.
Diagram왼쪽 Teacher는 model과 full system prompt를 입력으로 받고, 오른쪽 Student는 model과 gist tokens를 입력으로 받습니다. 두 출력분포를 맞추는 지식 증류가 Gisting embeddings 학습의 핵심이며, 긴 prompt의 행동 특성을 짧은 토큰열에 옮기는 과정을 시각화합니다.
03

Prefix Caching과 함께 쓰는 이유

Prefix Caching은 이미 처리한 system prompt의 key와 value를 KV cache에 저장해 후속 요청에서 prefix 재계산을 건너뛰지만, 생성 단계의 decode 비용까지 없애지는 못합니다. 모델이 새 토큰을 생성할 때마다 캐시된 시퀀스 전체의 KV를 고대역폭 메모리에서 읽어야 하며, 이 읽기량은 캐시된 시퀀스 길이에 따라 선형으로 증가합니다. Gisting은 system prompt 자체를 짧게 만들어 attention 계산과 KV cache 읽기 범위를 함께 축소하고, batch size가 커질수록 처리량 측면의 효과가 커집니다. Shopify는 두 최적화를 상호 배타적인 대안으로 보지 않고 실험과 production serving stack에서 함께 사용했습니다. 따라서 Prefix Caching이 반복 계산을 줄이는 동안 Gisting은 각 생성 토큰이 참조하는 시퀀스 길이를 줄이는 결합 구조가 됩니다.
04

autoresearch가 찾은 학습 조합

Shopify는 autoresearch loop가 학습 recipe를 제안하고 gist embeddings를 훈련한 뒤 평가를 반복하도록 trainer를 연결해 hyperparameter를 조정했습니다. 무작위 noise 대신 system prompt를 길이 k인 chunk로 나누고 각 chunk의 평균을 해당 gist embedding의 초기값으로 사용하자 초기 loss가 7분의 1로 감소했습니다. 여러 압축비를 비교한 결과 Shopify의 domain에서는 4대1을 넘을 때 prediction quality가 떨어지기 시작해 4대1이 적합했으며, 다른 domain에서는 최적값이 달라질 수 있습니다. 응답 토큰마다 loss를 평균하면 hallucination이 발생했지만 batch 기준으로 평균하면 긴 응답의 신호가 더 보존되어 안정적인 embedding이 생성됐습니다. Teacher logits 사전 계산과 데이터 사전 토큰화를 적용한 뒤 전체 학습 실행 시간은 30시간에서 6시간으로 줄었고, 크고 다양한 데이터셋이 남은 품질 격차를 좁혔습니다.
약 40회의 autoresearch 실험에서 유지된 7개 개선이 전체 점수를 64에서 teacher baseline 73.1에 가까운 수준까지 단계적으로 높인 그래프입니다.
Chart회색 점은 폐기된 실험이고 청록색 계단선과 번호가 유지된 개선을 나타냅니다. 개선 목록에는 4대1 압축, batchmean loss, 100k 데이터, chunk_means initialization, cosine learning-rate schedule, 추가 training epochs가 포함되어 autoresearch가 학습 recipe를 반복적으로 좁혀간 흐름을 보여줍니다.
05

지연시간과 GPU 사용량 변화

Shopify는 동일한 모델을 full prompt와 compressed prompt로 각각 부하 테스트해 요청 동시성과 batch size가 커질수록 Gisting의 지연시간 차이가 더 커지는지 비교했습니다. 350 RPM에서 compressed prompt는 full prompt보다 TTFT를 19% 낮추고 E2E latency를 약 38% 낮췄으며 처리량은 16% 높였습니다. 이미지의 결과 그래프에서도 350 RPM 기준 TTFT p50은 full prompt 438ms와 compressed 354ms로, E2E p50은 6.8초와 4.2초로 나타났습니다. Production GraphQL traffic에 같은 하드웨어 구성을 적용했을 때 처리량 증가가 GPU 절감으로 이어져 Gisting 사용 GPU 수가 14% 줄었습니다. 이 수치는 prompt 압축이 단순한 입력 길이 감소가 아니라 latency, throughput, serving 비용을 함께 바꾸는 inference 최적화임을 뒷받침합니다.
60, 145, 235, 350 RPM에서 compressed prompt와 full prompt의 TTFT p50 및 E2E p50을 비교한 결과 그래프입니다.
Chart350 RPM에서 TTFT p50은 compressed prompt 354ms, full prompt 438ms이고 E2E p50은 각각 4.2초와 6.8초입니다. 요청률이 높아질수록 두 방식의 격차가 커지며, 본문의 19% TTFT 감소와 약 38% E2E latency 감소 수치를 시각적으로 뒷받침합니다.
06

Continual Learning으로의 확장

Distilled gist embeddings를 얻은 뒤에는 해당 모델을 continual learning의 새로운 시작점으로 삼을 수 있습니다. Incremental data를 사용한 post-training에서 gist embeddings를 prefix로 넣고 model weights와 gist embeddings 양쪽에 gradient update를 적용하면, 새 데이터에 맞춰 모델과 압축 표현을 함께 조정할 수 있습니다. 매번 긴 system prompt에서 gist embeddings를 처음부터 다시 distill하지 않아도 되므로 반복 학습의 계산 부담을 줄이는 구조입니다. 이 방식은 기존 prompt의 행동 특성을 짧은 prefix에 보존하면서 새 데이터에 따른 calibration과 개선을 이어가는 경로를 제공합니다. Shopify는 이러한 운영상의 재사용성까지 포함해 Gisting을 GraphQL agent의 표준 serving 방식으로 채택했다고 밝혔습니다.

용어 해설

지식 증류(Knowledge Distillation)
큰 모델이나 전체 프롬프트가 만든 출력 분포를 교사 신호로 삼아 학생 모델 또는 압축 표현이 같은 예측을 내도록 학습하는 방법입니다. Gisting에서는 모델 가중치를 고정한 채 전체 system prompt를 본 교사의 logits와 gist tokens를 본 학생의 logits 사이 KL divergence를 줄여 임베딩을 학습합니다. 이를 통해 긴 지시문의 행동 특성을 짧은 토큰열에 옮깁니다.
Gist Token
긴 프롬프트의 여러 토큰을 대신하도록 모델 어휘에 추가한 특수 토큰입니다. Gisting은 prompt token 일부를 gist token으로 치환한 뒤, 전체 프롬프트를 읽은 교사와 압축 토큰을 읽은 학생의 예측 분포가 가까워지도록 해당 토큰의 임베딩만 학습합니다. 추론 단계에서는 짧은 토큰열이 긴 system prompt 역할을 맡습니다.
두 확률분포가 얼마나 다른지 측정하는 값입니다. 학습 과정에서 전체 system prompt를 본 교사의 logits와 gist tokens를 본 학생의 logits를 같은 응답 위치에서 비교하고, KL divergence를 낮추는 방향으로 gist embeddings를 갱신합니다. 값이 작아질수록 학생의 다음 토큰 예측이 교사의 예측에 가까워집니다.(KL Divergence)
두 확률분포가 얼마나 다른지 측정하는 값입니다. 학습 과정에서 전체 system prompt를 본 교사의 logits와 gist tokens를 본 학생의 logits를 같은 응답 위치에서 비교하고, KL divergence를 낮추는 방향으로 gist embeddings를 갱신합니다. 값이 작아질수록 학생의 다음 토큰 예측이 교사의 예측에 가까워집니다.
이전에 처리한 시퀀스의 attention용 key와 value를 KV cache에 저장해 동일한 prefix를 다시 계산하지 않는 서빙 최적화입니다. 다만 새 토큰을 생성할 때는 캐시에 저장된 전체 key와 value를 계속 읽어야 하므로 긴 prefix의 decode 비용과 메모리 대역폭 부담이 남습니다. Gisting은 prefix 자체와 KV cache의 길이를 줄여 Prefix Caching의 효과를 보완합니다.(Prefix Caching)
이전에 처리한 시퀀스의 attention용 key와 value를 KV cache에 저장해 동일한 prefix를 다시 계산하지 않는 서빙 최적화입니다. 다만 새 토큰을 생성할 때는 캐시에 저장된 전체 key와 value를 계속 읽어야 하므로 긴 prefix의 decode 비용과 메모리 대역폭 부담이 남습니다. Gisting은 prefix 자체와 KV cache의 길이를 줄여 Prefix Caching의 효과를 보완합니다.
모델이 이전 시퀀스에서 계산한 attention의 key와 value를 저장하는 메모리 구조입니다. 새 응답 토큰을 생성할 때 모델은 캐시된 값을 다시 계산하지 않지만, 각 토큰마다 시퀀스 전체의 KV를 고대역폭 메모리에서 읽어야 합니다. 따라서 캐시된 prefix가 길수록 decode 단계의 메모리 읽기량과 처리 비용이 선형으로 커집니다.(KV Cache)
모델이 이전 시퀀스에서 계산한 attention의 key와 value를 저장하는 메모리 구조입니다. 새 응답 토큰을 생성할 때 모델은 캐시된 값을 다시 계산하지 않지만, 각 토큰마다 시퀀스 전체의 KV를 고대역폭 메모리에서 읽어야 합니다. 따라서 캐시된 prefix가 길수록 decode 단계의 메모리 읽기량과 처리 비용이 선형으로 커집니다.

기술

  • Gisting
  • LLM
  • knowledge distillation
  • KL divergence
  • gist tokens
  • Prefix Caching
  • KV cache
  • autoresearch
  • continual learning
  • Sidekick GraphQL agent
AI 분석 전체 내용 보기

AI 요약 · 북마크 · 개인 피드 설정 — 무료

출처 · 인용 안내

수집 2026. 08. 20.출처 타입 WEB

인용 시 "요약 출처: AI Trends (aitrends.kr)"를 표기하고, 사실 확인은 원문 보기 기준으로 진행해 주세요. 자세한 기준은 운영 정책을 참고해 주세요.