Prompt Compression
İstem sıkıştırma, düşük bilgi içeren belirteçleri çıkararak veya bağlamı kısa biçimde kodlayarak LLM girdilerini kısaltır; yanıtları korurken maliyeti ve gecikmeyi azaltır.
İstem sıkıştırma, modelin yanıtlamak için ihtiyaç duyduğu bilgileri korurken büyük dil modeline (LLM) verilen girdiyi kısaltır. Böylece bir istek daha az belirteç kullanır, daha hızlı çalışır ve bağlam penceresine sığar. Yöntemler; küçük bir dil modeliyle tahmin edilebilir sözcükleri silmekten uzun konuşma geçmişlerini özetlemeye, bütün metin parçalarının yerini alan kısa, öğrenilmiş belirteçler eğitmeye kadar uzanır. Sık gönderilen uzun istemlerde sıkıştırma işe yarar: Çok sayıda alınan belgeyi ekleyen getirim destekli üretim (RAG) işlem hatları, her adımda geçmişi büyüyen yapay zekâ ajanları ve uzun yönergelerle örnekler içeren uygulamalar buna örnektir. Sağlayıcılar giriş belirteci başına ücret alır; dikkat hesaplaması da girdi uzunluğuna göre büyür. Bu nedenle istemi yarıya sıkıştırmak, giriş maliyetini yaklaşık yarıya indirir ve çıkarım gecikmesini azaltır.
İstem Sıkıştırma Nasıl Çalışır#
Katı istem sıkıştırma, metni kapalı bir API modeli dâhil her LLM'nin okuyabileceği daha kısa bir metne dönüştürür. Yöntemlerin çoğu her belirteci küçük bir dil modeliyle puanlar ve en kolay tahmin edilebilir, dolayısıyla en az bilgi taşıyan belirteçleri çıkarır. Selective Context bu fikri sözcüklere ve ifadelere uygular. Microsoft'un LLMLingua yöntemi, yönergeye, örneklere ve soruya farklı sıkıştırma oranları atayan bir bütçe denetleyicisi ile yinelemeli belirteç düzeyinde budama ekler; performansta çok az kayıpla 20 kata kadar sıkıştırma sağlar. LLMLingua-2, sıkıştırmayı XLM-RoBERTa gibi çift yönlü bir kodlayıcıyla belirteç sınıflandırma problemi olarak ele alır ve daha büyük bir LLM'den damıtılan sıkıştırma örnekleriyle eğitilir. Önceki yöntemlerden 3 ila 6 kat hızlı çalışır ve 2 ila 5 kat sıkıştırmada uçtan uca gecikmeyi 1,6 ila 2,9 kat hızlandırır. Soyutlamalı yöntemler bunun yerine modelden bağlamı özetlemesini ister; daha fazla sıkıştırma sağlar ancak sorunun gerektirdiği ayrıntıları atabilir.
Yumuşak istem sıkıştırma, metni modelin asıl belirteçler yerine okuduğu birkaç öğrenilmiş gömme değerine dönüştürür. Gist belirteçleri, LLaMA-7B ve FLAN-T5-XXL modellerini bir yönergeyi bir avuç özel belirtece sığdıracak şekilde eğitir; böylece 26 kata kadar sıkıştırma ve %40'a kadar daha az FLOP elde edilir. Bu yöntemler modelin ağırlıklarına erişim gerektirir, dolayısıyla açık modellere uygulanır.
Token düzeyindeki sıkıştırmanın özü birkaç satır PyTorch koduna sığar. Bu örnek, Hugging Face Transformers kitaplığındaki 124 milyon parametreli GPT-2'yi kullanarak her tokenın özbilgisini (öncesindeki tüm içerik göz önüne alındığında tokenın negatif log olasılığını) hesaplar ve daha şaşırtıcı olan yarısını tutar:
import torch
from transformers import AutoModelForCausalLM, AutoTokenizer
tokenizer = AutoTokenizer.from_pretrained("gpt2")
model = AutoModelForCausalLM.from_pretrained("gpt2")
prompt = (
"The quarterly maintenance report states that, as of the end of the quarter, a total of three conveyor "
"belts on line 4 were found to have worn bearings, and all of them were replaced on March 12 by the night shift."
)
ids = tokenizer(prompt, return_tensors="pt").input_ids[0]
# Self-information of each token, -log p(token | preceding tokens), under a small language model
with torch.no_grad():
logits = model(ids[None]).logits[0, :-1]
info = -logits.log_softmax(-1).gather(1, ids[1:, None]).squeeze(1)
# Keep the first token and the more surprising half of the rest, in their original order
keep = torch.cat([torch.tensor([True]), info > info.median()])
compressed = tokenizer.decode(ids[keep])
print(f"{len(ids)} -> {keep.sum().item()} tokens: {compressed}")46 -> 23 tokens: The quarterly maintenance report states, a three convey on line 4 found worn bearings all replaced on March 12 by night shift çıktısını verir. 4. satır, aşınmış rulmanlar, 12 Mart ve gece vardiyası dâhil olgular korunurken "çeyreğin sonu itibarıyla" gibi tahmin edilebilir dolgu ifadeleri kaybolur. "Konveyör bantlarından" geriye kalan "convey" parçası, tek tek belirteçleri budamanın tipik bir sonucudur. Bu nedenle bazı yöntemler bütün sözcükleri veya ifadeleri budar.
Görüntüleri Sıkıştırma#
Görüş-dil modelleri her görüntüyü, çoğu gereksiz olan yüzlerce görsel belirtece dönüştürür. FastV, ikinci katmandan sonra görüntü belirteçlerinin yarısını budar ve performanstan ödün vermeden LLaVA-1.5-13B için FLOP sayısını %45 azaltır. Belirteç birleştirme de benzer bir fikri görüntü dönüştürücülerin içinde uygular. Bir nesne algılayıcı da görüntüleri sıkıştırmak için kullanılabilir: Ultralytics YOLO26 bir fotoğrafı Results.summary() biçimine, yani her nesnenin sınıf adını, güven değerini ve kutu koordinatlarını içeren bir listeye dönüştürür. Böylece yalnızca hangi nesnelerin nerede bulunduğuna ihtiyaç duyan bir LLM işlem hattı, yüzlerce, hatta binden fazla belirteç tutan bir görüntü yerine nesne başına birkaç düzine belirteç gönderebilir.
İstem Sıkıştırma ve İlgili Teknikler#
- İstem önbelleğe alma: Tekrarlanan bir istem önekine ait model hesaplanmış durumlarını saklar; böylece bunların yeniden hesaplanması gerekmez. İstemin uzunluğu değişmez. İki yöntem birlikte iyi çalışır: İstemin değişken kısmını sıkıştırırken sabit kısmını önbelleğe alabilirsin.
- KV önbelleği sıkıştırma: Üretim sırasında modelin içindeki anahtar-değer durumlarını atar veya nicemler. İstem sıkıştırma ise model girdiyle karşılaşmadan önce giriş üzerinde çalışır.
- İstem mühendisliği: İnsanlar açık ve kısa istemleri elle yazar. Sıkıştırma otomatiktir ve alınan belgeler gibi kimsenin düzenlemediği içeriğe uygulanır.
- Bağlam mühendisliği: Her adımda modelin bağlamına nelerin gireceğine karar verme uygulamasının daha geniş kapsamlı hâlidir. Sıkıştırma, getirim ve filtrelemenin yanında bu uygulamanın araçlarından biridir.
- İstem zenginleştirme: İsteme alınmış veya üretilmiş bağlam ekler. İşlem hatları çoğu zaman önce zenginleştirir, ardından sonucu sıkıştırır.
Gerçek Dünya Uygulamaları#
- RAG işlem hatları: Alınan metin parçaları üretimden önce sıkıştırılır; böylece bütçeye daha fazla kaynak sığar ve model, soruyu yanıtlayan cümlelere odaklanır.
- Ajan geçmişleri: Kodlama ve araştırma ajanları, bağlam dolduğunda eski araç çıktılarıyla konuşma turlarını bir özetle değiştirerek geçmişlerini kısaltır; çünkü uzun bağlamlar güncelliğini yitirmiş içerikle doldukça doğruluk düşer.
- Az örnekli istemler: Çözümlü örneklerden oluşan uzun listeler iyi sıkıştırılır. LLMLingua'nın bütçe denetleyicisi önce karmaşıklık ölçüsüne göre sıralanmış örneklerin tamamını siler, ardından makalenin varsayılan ayarlarında yönergenin %85'ini ve sorunun %90'ını korurken tek tek belirteçleri budar.










