Community & Governance

npm'de LLM Sıkıştırma: 12 Kat Tasarruf, Alan Odaklı

LLM'inizin bağlam penceresi bütçenizi mi eritiyor? Yeni bir açık kaynak aracı olan gni-compression, kayda değer bir verimlilikle token maliyetlerini düşürmeyi vaat ediyor. Verileri inceliyoruz.

{# Always render the hero — falls back to the theme OG image when article.image_url is empty (e.g. after the audit's repair_hero_images cleared a blocked Unsplash hot-link). Without this fallback, evergreens with cleared image_url render no hero at all → the JSON-LD ImageObject loses its visual counterpart and LCP attrs go missing. #}
gni-compression için npm paket sayfası ekran görüntüsü, kurulum komutu ve açıklamayı vurguluyor.

Key Takeaways

  • gni-compression, LLM konuşma verilerinde 12.40x'e kadar sıkıştırma oranları (%91.9 tasarruf) elde ediyor ve brotli-6'dan önemli ölçüde daha iyi performans gösteriyor.
  • Alan odaklı yaklaşım, yaygın LLM dil kalıplarını tanımak ve sıkıştırmak için önceden eğitilmiş bir sözlük kullanıyor; özellikle kısa, tekrarlayan mesajlarda etkili.
  • Paket, verimliliği artırmak için verileri token kimlikleri ve ham veriler olarak ayırıyor. Artık npm'de mevcut.
  • Kalıcı bir yapay zeka aracı iskele (NN Dash) için geliştirilen gni-compression, token maliyetlerini azaltarak uzun süreli yapay zeka etkileşimlerini ekonomik olarak uygulanabilir kılmayı hedefliyor.

Uzun soluklu yapay zeka etkileşimlerinin sırrı daha fazla VRAM değil de daha akıllı veri yönetimi olsaydı ne olurdu? Yıllardır büyük dil modellerinin bağlam pencerelerinin artan maliyetleriyle boğuşuyoruz. Şimdi, npm kayıt defterindeki yeni bir oyuncu olan gni-compression, özellikle LLM konuşma verileri için kayıpsız sıkıştırmanın sınırlarını zorlayarak önemli bir sıçrama vadediyor.

Bu, bildiğimiz gzip veya brotli formatlarından sadece biri değil. napi-rs aracılığıyla JavaScript için Rust yerel bir ikili program olarak sarmalanan gni-compression paketi, alan odaklı bir yaklaşımla tasarlanmış. Temel yeniliği, doğrudan pakete eklenmiş önceden eğitilmiş bir sözlük (gcdict.bin) içinde yatıyor. Kapsamlı LLM konuşma veri kümeleri üzerinde eğitilen bu sözlük, sıkıştırıcının bu özel etkileşimlerde bulunan yaygın dil kalıplarını ve token’ları tanımasını ve verimli bir şekilde kodlamasını sağlıyor.

Bu Yeni Sıkıştırıcı Gerçekten İşe Yarıyor mu?

Sayılar, dedikleri gibi, yalan söylemez. Beş farklı halka açık veri kümesi üzerinde brotli-6 ile kıyaslanan gni-compression, tutarlı bir şekilde daha iyi performans gösteriyor. Sonuçlar çarpıcı:

Veri Kümesi GN Oranı Tasarruf brotli-6
WildChat 4.94x 79.8% ~2.1x
ShareGPT 8.65x 88.4% ~2.0x
LMSYS 10.38x 90.4% ~2.1x
Ubuntu IRC 8.40x 88.1% ~1.2x
Claude sohbetleri 12.40x 91.9% ~1.9x

Bu, 12.40x’e varan sıkıştırma oranı anlamına geliyor ve bazı veri kümelerinde %90’dan fazla tasarruf sağlıyor. Buradaki sürpriz performans gösteren, çok kısa ve sık tekrarlanan mesajlardan oluşan bir veri kümesi olan Ubuntu IRC. brotli-6 bu tür verilerle mücadele ederken (sadece 1.2x oran elde ederken), gni-compression parlıyor. Bu, paketin gücünü vurguluyor: Alanına özgü sözlüğü, genel amaçlı algoritmaların tökezlediği yerlerde, özellikle kısa ve yüksek oranda tekrar eden mesaj dizilerinde üstünlük sağlıyor.

Bu Kadar Yüksek Sıkıştırmayı Nasıl Başarıyor?

Teknik altyapı büyüleyici. gni-compression, her şeyi tek bir sıkıştırma akışına atmıyor. Bunun yerine, girdi verilerini akıllıca iki farklı akışa ayırıyor: biri token kimlikleri için, diğeri ise ham baytlar için. Token kimlikleri, önceden eğitilmiş kelime dağarcığına referans veren kompakt tam sayılardır. Sıkıştırıcı bilinen bir diziyi veya kelimeyi karşılaştığında, onu karşılık gelen kimliğiyle değiştirerek veri boyutunu önemli ölçüde azaltıyor. Ham akış, sözlükle eşleşmeyen kalan verileri yakalıyor - bu artık veri daha sonra GCdict uygulanmış deflate kullanılarak sıkıştırılıyor.

Bu iki yönlü yaklaşım anahtar. Token kimliği akışı, yüksek tekrarlardan dolayı inanılmaz derecede küçülür. Ham akış, daha az tahmin edilebilir olsa da, token kimlikleri üzerinde zaten gerçekleştirilmiş olan anlamsal sıkıştırmadan faydalanır. Verimliliği en üst düzeye çıkaran zarif bir iş bölümü.

İfade uzunluğu analizi, ilginç bir dağılım ortaya koyuyor. Yazar, kelime dağarcığının belirgin bir boşlukla iki modlu bir dağılım sergilediğini gözlemledi. Kısa dolgu token’ları (min uzunluk 4-5) önemli ölçüde azalırken, daha uzun ifadeler (min uzunluk 10+) için tekrar önemli bir düşüş görülüyor. En önemlisi, 5 ila 9 karakter arasındaki ifadeler için kelime dağarcığı kullanımında göreceli bir düşüş var. Bu, gni-compression‘ın konuşma gürültüsünü ve yaygın, kısa ifadeleri budama konusunda özellikle yetenekli olduğunu gösteriyor; bu da sıkıştırılmış bağlam kullanıldığında az çok iyileşmiş aşağı akış model performansı hakkındaki anekdotsal raporları açıklayabilir - sinyal-genlik oranı iyileşiyor.

gni-compression’a Giden Uzun Yol

Bugün piyasaya sürülen şey, odaklanmış bir geliştirme çabasının doruk noktası. Yolculuk, kayıpsız mesaj kurtarma sağlayan güçlü bir seri hale getirme katmanının oluşturulmasıyla yedi makale önce başladı. Bu temel çalışmadan tam teşekküllü, yüksek performanslı bir npm paketine geçiş, çeşitli engellerin aşılmasını gerektirdi. Başlangıçta, saf bir JavaScript uygulaması brotli-6‘nın gerisinde kaldı. Çığır açan gelişme, Rust uygulaması ve GCdict işlem hattının etkili entegrasyonuyla geldi. Bir diğer önemli zorluk ise yuvarlanma veri bütünlüğüydü: ham bölünmüş format, orijinal arabellek olmadan doğrudan bir tersine sahip değildi. Mimariyi harmanlanmış bir format etrafında yeniden oluşturmak bu kritik sorunu çözdü.

Tek bir veri kümesine aşırı uyum sağlamadan çeşitli veri kümeleri arasında etkili bir şekilde genelleme yapan bir sözlük eğitmek de özenli bir süreçti. npm’deki sürüm geçmişi kendi başına bir hikaye anlatıyor; 3.x sürümleri önceki harmanlanmış işlem hattını, 4.x ise nihai API’yi temsil ediyor.

Zaten LLM’leriniz Varken Neden Bunu Oluşturdunuz?

gni-compression‘ın arkasındaki itici güç, Claude, GPT ve yerel Ollama modelleri arasında sorunsuz etkileşimleri kolaylaştırmak için tasarlanmış kalıcı bir yapay zeka aracı iskele olan NN Dash‘in geliştirilmesidir. Nihai hedef: sürdürülebilir, çok oturumlu yapay zeka ilişkilerini ekonomik olarak uygulanabilir kılmak. Çok binlerce mesajlık bağlam pencerelerinin önemli maliyeti, uzun süreli, uygun maliyetli yapay zeka etkileşimleri için önemli bir engel olmuştur. gni-compression, céu kesici token faturaları olmaksızın bu genişletilmiş bağlamları mümkün kılan motordur.

Bu projenin arkasındaki algoritmik titizlik, NLNet hibesi almasını sağlayacak kadar sağlamdır, bu da resmi akademik yazıların potansiyelini göstermektedir.

Kullanın:

npm install gni-compression

const { compress, decompress } = require('gni-compression');

const longContext = Buffer.from("Çok uzun LLM konuşma dizgeniz burada...");

const compressed = await compress(longContext);
const restored = await decompress(compressed);

// restored, longContext ile aynı olacaktır (kayıpsız)

Kaynak kodu GitHub’da MIT lisansı altında mevcuttur: github.com/atomsrkull/glasik-core. Sayılar, metodoloji veya potansiyel kullanım alanları hakkındaki geri bildirimler aktif olarak memnuniyetle karşılanmaktadır.


🧬 İlgili İçgörüler

Sam O'Brien
Written by

Ecosystem and language reporter. Tracks package releases, runtime updates, and OSS maintainer news.

Worth sharing?

Get the best Open Source stories of the week in your inbox — no noise, no spam.

Originally reported by Dev.to