İçeriğe geç

LLM Maliyetlerini Düşürmenin 2026 Rehberi: Önbellekleme, Yönlendirme ve Batching

LLM faturasını düşürmenin üç katmanı: model, sistem ve uygulama. Prompt caching, model routing, batching ve Türkiye'ye özgü kur ve KVKK riskleri.

SYK
Şükrü Yusuf KAYA
AI Expert · Kurumsal AI Danışmanı

TL;DR — 2026'da LLM faturanızı düşürmenin sihirli tek bir düğmesi yok; ama üst üste yığdığınızda gerçekten işe yarayan üç katman var: model düzeyi (nicemleme, budama, damıtma), sistem düzeyi (sürekli batching, PagedAttention, spekülatif çözümleme) ve uygulama düzeyi (bağlam sıkıştırma, prompt önbellekleme). Prompt caching tek başına maliyeti %45-80 düşürüp ilk token süresini %13-31 iyileştirebiliyor; sürekli batching statik batching'e göre 2-3 kat verim veriyor; akıllı model yönlendirme %40-70 tasarruf sağlıyor. Üçünü doğru sırayla yığdığınızda faturada %60-80 düşüş mümkün. Bu yazıda katman katman somut tavsiyeler, önce ölçme disiplini, Türkiye'ye özgü kur ve KVKK/BDDK riskleri ve Türkçe'nin token verimliliği konusunu sahadan anlatıyorum.

Önce bir itiraf: çoğu ekip yanlış yerden başlıyor

Maliyet optimizasyonu konusunda bana gelen ekiplerin neredeyse tamamı aynı hatayı yapıyor: Ölçmeden optimize etmeye çalışıyorlar. "Faturamız yüksek, hadi daha ucuz bir modele geçelim" diye başlıyorlar ve haftalar sonra kaliteyi bozup tasarrufu da yakalayamadan geri dönüyorlar. Oysa maliyet optimizasyonu bir mühendislik disiplinidir, tahmin işi değil.

Bu yüzden her şeyden önce şunu söylüyorum: Gözlemlenebilirlik olmadan optimizasyon, karanlıkta ok atmaktır. Hangi isteğin kaç token yaktığını, hangi uç noktanın faturanın aslan payını götürdüğünü, hangi kullanıcı akışının en pahalı olduğunu bilmeden atacağınız her adım kumar. İlk işiniz, istek başına girdi/çıktı token sayısını, model dağılımını ve uç nokta bazında maliyeti loglayan basit bir izleme kurmak olmalı. Ben buna FinOps for AI diyorum: bulut maliyet disiplininin, token ekonomisine uyarlanmış hali.

Ölçtükten sonra optimizasyon üç katmanda ilerler. Aşağıdaki tablo, bu katmanları ve her birinin tipik kazanımını özetliyor; yazının geri kalanında her satırı tek tek açacağım.

KatmanTekniklerEtki alanıTipik kazanım
Model düzeyiNicemleme, budama, damıtmaModelin kendisi (çoğunlukla self-hosted)Bellek/işlem maliyeti düşer
Sistem düzeyiSürekli batching, PagedAttention, spekülatif çözümlemeSunum/serving altyapısı2-3x verim, düşük gecikme
Uygulama düzeyiBağlam sıkıştırma, prompt önbellekleme, yönlendirmePrompt ve akış tasarımı%45-80 (caching), %40-70 (routing)

Katman 1: Model düzeyi optimizasyon

Bu katman, modelin kendisiyle oynadığınız yer; genellikle kendi altyapınızda (self-hosted) model çalıştırıyorsanız devreye girer. API kullanıyorsanız bu katman büyük ölçüde sağlayıcının işidir, ama kararınızı etkiler.

Nicemleme (quantization), modelin ağırlıklarını daha düşük hassasiyetle (örneğin 16 bit yerine 8 ya da 4 bit) temsil etmektir. Sonuç: daha az bellek, daha hızlı çıkarım, daha düşük donanım maliyeti. Kalitede genelde kabul edilebilir, bazen fark edilmeyen bir düşüş olur. Kendi modelini çalıştıran ekipler için nicemleme, en hızlı geri dönüşü olan tekniklerden biri.

Budama (pruning), modeldeki katkısı düşük ağırlıkları ya da nöronları atmaktır; model küçülür, hızlanır. Damıtma (distillation) ise büyük bir "öğretmen" modelin bilgisini, daha küçük bir "öğrenci" modele aktarmaktır. Belirli, dar bir görev için damıtılmış küçük bir model, çoğu zaman devasa bir genel modelin yaptığı işi çok daha ucuza yapar. Sahada gördüğüm en verimli yaklaşım, dar ve tekrar eden görevlerde büyük modele damıtma yoluyla küçük ve özel bir model eğitmek.

Bu tekniklerin ortak teması şu: Her göreve dünyanın en büyük modelini koşmak, çekiçle sinek öldürmektir. Görevin gerçekten ne kadar zeka gerektirdiğini dürüstçe sorun.

Katman 2: Sistem düzeyi optimizasyon

Burası, çıkarımı (inference) sunan altyapının verimliliğiyle ilgili. Kendi modelinizi barındırıyorsanız doğrudan sizin sorumluluğunuzda; API kullanıyorsanız sağlayıcının bu tekniklerde ne kadar iyi olduğu, size yansıyan fiyatı belirler.

Sürekli batching (continuous batching), belki de bu katmanın en etkili tekniği. Klasik (statik) batching'de, bir grup isteğin hepsinin bitmesini beklersiniz; en yavaş istek tüm grubu bekletir, GPU boş oturur. Sürekli batching'de ise biten isteğin yeri anında yeni bir istekle doldurulur; GPU asla boş kalmaz. Sonuç, statik batching'e kıyasla 2-3 kat throughput artışı. Aynı donanımdan iki-üç kat iş çıkarmak demek bu; doğrudan birim maliyeti düşürür.

PagedAttention, dikkat mekanizmasının bellek yönetimini işletim sistemlerindeki sanal bellek gibi ele alır. Bellek parçalanmasını (fragmentation) azaltır, aynı GPU'da daha fazla eşzamanlı isteği barındırmanızı sağlar. Sürekli batching ile birlikte çalıştığında verim artışı katlanır.

Spekülatif çözümleme (speculative decoding), küçük ve hızlı bir modelin birkaç token'ı önden "tahmin etmesi", ardından büyük modelin bu tahminleri toplu halde doğrulamasıdır. Tahminler tuttuğunda, büyük modelin token'ları tek tek üretmesine gerek kalmaz; gecikme düşer. Kaliteden ödün vermeden hız kazandıran zarif bir numara.

Bu katmanın güzelliği şu: Uygulama mantığınıza dokunmadan, tamamen altyapı tarafında verim kazandırır. API kullanıyorsanız bile, sağlayıcı seçerken "bu teknikleri ne kadar iyi uyguluyorlar?" sorusu, fiyat/performans kararınızın merkezinde olmalı.

Katman 3: Uygulama düzeyi optimizasyon

İşte kontrolün en çok sizde olduğu ve çoğu ekibin en hızlı kazanımı elde ettiği katman burası. İki büyük silah var: prompt önbellekleme ve model yönlendirme.

Prompt önbellekleme (prompt caching)

Uygulamalarınızın çoğunda promptun büyük bir kısmı her istekte aynıdır: sistem talimatı, araç tanımları, few-shot örnekleri, sabit bağlam. Prompt caching, bu tekrar eden ön eki (prefix) bir kez işleyip sonucunu saklar; sonraki isteklerde aynı ön eki baştan işlemek yerine önbellekten çeker. Kazanç iki yönlü:

  • Maliyette %45-80 düşüş: Önbelleğe alınan token'lar çok daha ucuza faturalanır.
  • İlk token süresinde (TTFT) %13-31 iyileşme: Model, tekrar eden bağlamı yeniden işlemediği için ilk cevabı daha hızlı verir.

Sahada bunun en çok işe yaradığı yer, uzun ve sabit sistem promptlarıyla çalışan ajanlar ve RAG akışları. Önerim: Promptunuzu değişmeyen kısım önce, değişen kısım sonra gelecek şekilde tasarlayın. Çünkü önbellek, ön ekin sabit olmasından beslenir; değişken bir parçayı en başa koyarsanız önbellek işe yaramaz.

Model yönlendirme (routing)

En sevdiğim teknik bu, çünkü mantığı kadar kazanımı da büyük. Fikir basit: Her isteği en pahalı modele göndermek israftır. İstekleri zorluğuna göre sınıflandırıp kolay olanları ucuz, zor olanları pahalı modele yönlendirirsiniz.

Somut bir örnekle: Rutin, basit istekleri ucuz bir modele (örneğin Haiku 4.5 sınıfı, milyon token başına yaklaşık 1 dolar) gönderin; gerçekten akıl yürütme gerektiren zor işleri pahalı modele (örneğin Opus sınıfı, milyon token başına yaklaşık 5 dolar) ayırın. Sahadan çarpıcı bir veri: Kod ajanı isteklerinin %60-80'i rutindir ve pahalı modele hiç ihtiyaç duymaz. Bu istekleri ucuz modele kaydırdığınızda, kaliteden neredeyse hiç ödün vermeden %40-70 tasarruf elde edersiniz.

"

Kural basit: Her isteğe en zeki modeli koşmak, bakkaldan ekmek almak için taksi çağırmaya benzer. Görevin gerçekten ne kadar zeka istediğini sorun, sonra fişi ona göre kesin.

Yönlendirmeyi karmaşıklaştırmayın. Baştan devasa bir sınıflandırıcı kurmaya kalkmayın; basit bir kurallar seti ya da hafif bir sınıflandırıcı ile başlayın. İstek uzunluğu, anahtar kelimeler, görev tipi gibi ucuz sinyaller şaşırtıcı derecede iyi çalışır. Zamanla, yanlış yönlendirmelerin kalite maliyetini ölçüp sınıflandırıcıyı iyileştirirsiniz.

Üç katmanı üst üste yığmak

Şimdi işin güzel kısmına gelelim. Bu üç katman birbirini dışlamaz; üst üste yığılır. Uygun bir iş yükünde model düzeyi kazanımı, sistem düzeyi verimi ve uygulama düzeyi caching + routing birleştiğinde, faturada %60-80 düşüş gerçekçi bir hedeftir.

Ama bir uyarı: Bu rakam "iş yükü uygunsa" geçerli. Her senaryo bu kadar sıkıştırılamaz. Çok çeşitli, tekrar etmeyen, her seferinde farklı ve gerçekten zor istekler alan bir sistemde caching az işe yarar, routing'de kolay istek oranı düşüktür. Dürüst olun: Kendi iş yükünüzün ne kadarının rutin ve tekrar eden olduğunu ölçün, tasarruf beklentinizi buna göre kalibre edin. Abartılı vaatler, sonradan hayal kırıklığı yaratır.

Türkiye bağlamı: kur riski, veri ikametgahı ve token ekonomisi

Şimdi, uluslararası bloglarda hiç göremeyeceğiniz ama Türkiye'de iş yapıyorsanız kritik olan kısma gelelim.

Kur riski. Bu, sahada en çok göz ardı edilen kalem. Büyük LLM API'leri USD ile faturalandırılır. Geliriniz TL cinsindense, faturanız TL/USD kurunun insafına kalmış demektir. Modeliniz aynı verimle çalışsa bile, kur hareketi yüzünden TL bazında maliyetiniz aylar içinde ciddi biçimde artabilir. Benim önerim: Token bütçenizi ve birim ekonominizi hem USD hem TL üzerinden takip edin; fiyatlandırmanızda kur tamponu bırakın. Maliyet planınızı yalnızca dolar üzerinden yaparsanız, kur şoku bütçenizi bir gecede alt üst eder.

Veri ikametgahı, KVKK ve BDDK. Self-hosted mı yoksa API mi kararı, Türkiye'de yalnızca maliyet meselesi değil; bir uyum meselesi. KVKK açısından kişisel verinin yurt dışına aktarımı ek yükümlülükler doğurur. Finans sektöründeyseniz BDDK'nın veri lokalizasyonu ve dış hizmet alımına dair düzenlemeleri, verinin nerede işleneceğini doğrudan kısıtlayabilir. Bu durumda, salt maliyet açısından API daha ucuz görünse bile, uyum gereği self-hosted bir modele yönelmeniz gerekebilir. Yani maliyet kararınız, hukuk ve regülasyondan bağımsız değil; ikisini aynı masada konuşmalısınız.

Token bütçesi ve birim ekonomisi. Her özelliğin, işlem başına ya da kullanıcı başına bir token maliyeti vardır. Bunu birim ekonominize gömün: Bir işlem size kaç token'a mal oluyor, karşılığında ne kadar gelir/değer üretiyor? Bu hesabı yapmayan ekipler, kullanıcı arttıkça faturanın neden orantısız büyüdüğünü anlayamaz.

Türkçe'nin token verimliliği: gizli bir maliyet kalemi

Bu, Türkçe ürün geliştiren herkesin bilmesi gereken ama çoğunun geç fark ettiği bir gerçek. Dil modelleri metni "token" denen parçalara böler ve tokenizer'lar ağırlıklı olarak İngilizce üzerine optimize edilmiştir. Sonuç: Aynı anlamı taşıyan bir metin, Türkçe'de İngilizce'ye göre daha fazla token yakabilir.

Bunun nedeni Türkçe'nin sondan eklemeli yapısı ve tokenizer'ların Türkçe kelime köklerini ve eklerini verimsiz parçalaması. "Evlerinizden" gibi tek bir Türkçe kelime, İngilizce karşılığından çok daha fazla token'a bölünebilir. Pratikte bu şu demek: Türkçe bir uygulama, İngilizce eşdeğerine göre aynı iş için daha yüksek token maliyeti taşıyabilir. Faturanız, farkında olmadan, sırf dil yüzünden şişebilir.

Ne yapmalı? Öncelikle ölçün: Türkçe akışlarınızın token yoğunluğunu İngilizce ile karşılaştırın; sürprizi rakamla görün. Sonra prompt tasarımında gereksiz uzunluktan kaçının; sistem promptlarını Türkçe'de daha yalın kurun. Prompt caching burada ekstra değerli, çünkü tekrar eden Türkçe bağlamın token yükünü önbellek üstlenir. Bağlam sıkıştırma teknikleri de Türkçe'de İngilizce'den daha fazla getiri sağlayabilir, çünkü kısılacak token daha çoktur.

Bağlam sıkıştırma: promptu zayıflatmadan kısaltmak

Uygulama katmanının sık atlanan tekniği bağlam sıkıştırma. Fikir, modele gönderdiğiniz bağlamı, anlamı bozmadan kısaltmak. RAG akışlarında getirdiğiniz belgelerin tamamını değil, yalnızca soruyla gerçekten ilgili parçalarını göndermek; uzun konuşma geçmişini özetleyip taşımak; gereksiz tekrarları ayıklamak.

Sahada gördüğüm en yaygın israf, "ne olur ne olmaz" diye modele devasa bağlam yığmak. Bu hem token yakar hem de dikkat dağıtarak kaliteyi düşürebilir. Bağlamı akıllıca kısmak, çoğu zaman hem daha ucuz hem de daha isabetli sonuç verir. Özellikle Türkçe'de, token verimsizliği yüzünden, bağlam sıkıştırmanın getirisi daha yüksektir.

Gözlemlenebilirliği derinleştirmek: neyi ölçmeli?

"Önce ölç" dedim ama bunu somutlaştırmadan bırakmak haksızlık olur. Gözlemlenebilirlik kurarken bakmanız gereken metrikler bellidir; bunları düzenli izleyen bir ekip, faturayı da kaliteyi de kontrol altında tutar. Sahada kurduğum panolarda şu kalemler mutlaka yer alır:

MetrikNe söylerNeden önemli
İstek başına girdi/çıktı tokenHangi akış ne kadar yakıyorEn pahalı akışı bulmanın anahtarı
Uç nokta bazında toplam maliyetFatura nerede yoğunlaşıyorOptimizasyonu doğru yere odaklar
Model dağılımıTrafiğin kaçı pahalı modeldeRouting fırsatını gösterir
Önbellek isabet oranıCaching gerçekten çalışıyor muDüşükse prompt yapısı bozuktur
İlk token süresi (TTFT)Kullanıcı ne kadar bekliyorDeneyim ve caching etkisi
İstek başına maliyet trendiZamanla artıyor muKontrolsüz büyümenin erken uyarısı

Bu tabloyu bir kez kurup unutmayın; haftalık bakın. Sahada gördüğüm en sinsi sorun, faturanın bir gecede değil, haftalar içinde sessizce tırmanmasıdır. İstek başına maliyet trendini izleyen bir ekip, bu tırmanışı daha ilk haftasında yakalar; izlemeyen ekip ise ay sonu faturasıyla irkilir.

İki tür önbellek: birebir mi, anlamsal mı?

Prompt caching dedim ama aslında iki farklı yaklaşımdan söz ediyoruz ve karıştırılınca hayal kırıklığı oluyor.

Birebir (exact-prefix) önbellek, promptun sabit ön ekini birebir yakalar; aynı ön ek tekrar geldiğinde önbellekten çeker. Sağlayıcıların sunduğu klasik prompt caching budur. Güvenilir ve öngörülebilir; ama yalnızca ön ek gerçekten aynıysa çalışır. Bu yüzden "sabit-önce" prompt tasarımı kritik.

Anlamsal (semantic) önbellek ise farklı bir fikir: Anlamca benzer sorulara verilen cevabı önbelleğe alır. Kullanıcı "iade politikanız nedir?" ile "ürünü nasıl geri gönderirim?" dediğinde, ikisi de aynı niyeti taşıdığından, aynı cevabı önbellekten dönebilirsiniz. Bu, tekrar eden soruların çok olduğu müşteri hizmetlerinde muazzam tasarruf sağlar. Ama bir uyarı: Anlamsal önbellek yanlış eşleştirme yaparsa kullanıcıya alakasız cevap gider. Bu yüzden benzerlik eşiğini muhafazakar tutun ve yanlış isabetleri düzenli denetleyin.

Benim önerim: Birebir önbellekle başlayın, çünkü risksiz ve hızlı. Anlamsal önbelleği yalnızca soru çeşitliliği dar ve tekrar yüksekse, dikkatli eşiklerle ekleyin.

Asenkron ve toplu işleme: acelesi olmayan işi ucuza yaptırmak

Çoğu ekip her isteği anında (senkron) işlemeye çalışıyor, oysa işlerin önemli bir kısmının aciliyeti yok. Gecelik rapor üretimi, toplu belge sınıflandırma, arka planda özetleme gibi işler için gerçek zamanlı yanıta ihtiyacınız yok. Bu tür işleri toplu (batch) ve asenkron işleyerek ciddi tasarruf edebilirsiniz; birçok sağlayıcı, acelesi olmayan toplu işler için indirimli fiyat sunuyor.

Sahadaki alışkanlığım şu: İş yükünü "kullanıcı bekliyor mu?" sorusuyla ikiye ayırırım. Kullanıcı ekranın başında bekliyorsa senkron ve hızlı; beklemiyorsa asenkron ve ucuz. Bu basit ayrım, faturanın kayda değer bir dilimini asenkron ve indirimli rayına taşır. Çoğu ekip bu fırsatı hiç değerlendirmiyor, çünkü baştan her şeyi gerçek zamanlı kurgulamış oluyor.

RAG ve embedding maliyeti: unutulan kalem

Retrieval-Augmented Generation (RAG) akışları, maliyet konuşulurken çoğu zaman yalnızca üretim (generation) tarafından değerlendiriliyor. Oysa RAG'in iki gizli maliyet kalemi var. Birincisi, belgeleri vektörlemek için harcanan embedding maliyeti; büyük ve sık güncellenen bilgi tabanlarında bu ciddi bir kalem. İkincisi ve daha sinsisi, getirdiğiniz bağlamın üretim promptunu şişirmesi.

Sahada sık gördüğüm hata, RAG'in her soruya on-on beş belge parçası getirip hepsini modele yığması. Bu, hem embedding hem de üretim tarafında token yakar. Çözüm çift yönlü: Getirdiğiniz parça sayısını gerçekten gerekenle sınırlayın (yeniden sıralama/reranking burada işe yarar) ve yalnızca en alakalı parçaları modele gönderin. Embedding tarafında ise, değişmeyen belgeleri tekrar tekrar vektörlemeyin; embedding sonuçlarını önbelleğe alın. Bir müşterimde yalnızca getirilen parça sayısını akıllıca kısarak RAG akışının token maliyetini yarı yarıya düşürdük, üstelik cevap kalitesi arttı çünkü model daha az gürültüyle çalıştı.

Kaliteyi korumak: maliyet düşerken değer düşmesin

Maliyet optimizasyonunun en tehlikeli tarafı, kaliteyi sessizce feda etme riskidir. Ucuz modele kaydırdığınız bir istek türü aslında o modelin kaldıramayacağı kadar zorsa, tasarruf ettiğiniz para, düşen kalitenin iş kaybına yol açmasıyla ziyan olur. Bu yüzden her optimizasyonun yanında bir kalite güvencesi kurmak şart.

Pratikte şunu yapıyorum: Optimizasyon öncesi ve sonrası çıktıları karşılaştıran bir regresyon test seti tutuyorum. Routing eşiğini değiştirdiğimde ya da modeli küçülttüğümde, bu set üzerinde kalitenin düşmediğini doğruluyorum. Otomatik değerlendirme (LLM-as-judge gibi) burada hızlı bir sinyal verir; ama kritik akışlarda insan gözüyle örnekleme de yaparım. Kural şu: Ölçemediğiniz kaliteyi feda ediyor olabilirsiniz. Tasarrufu kutlamadan önce, kalitenin sabit kaldığını sayıyla gösterin.

Self-hosted mı, API mi? Toplam sahip olma maliyeti

Türkiye bağlamında sık sorulan bu soruyu, salt token fiyatına bakarak cevaplamak yanıltıcı. Karar, toplam sahip olma maliyeti (TCO) ve uyum gereklilikleriyle birlikte verilmeli. İki seçeneği kabaca şöyle karşılaştırıyorum:

KriterAPISelf-hosted
Başlangıç maliyetiDüşük, hızlı başlarYüksek (donanım, kurulum)
Birim maliyet (yüksek hacim)Hacimle artarÖlçekte düşebilir
Bakım/operasyonSağlayıcıdaSizde (ekip, uzmanlık)
KVKK/BDDK veri ikametgahıKısıtlı kontrolTam kontrol
Kur riskiYüksek (USD)Donanım hariç düşük
Optimizasyon esnekliğiSınırlıTam (nicemleme vb.)

Genel önerim: Düşük ve orta hacimde, uyum engeli yoksa API ile başlayın; hız ve esneklik kazanırsınız. Hacim büyüdükçe, kur riski ve KVKK/BDDK kısıtları ağırlaştıkça self-hosting'in TCO'su mantıklı hale gelir. Ama self-hosting'i hafife almayın; GPU maliyeti, operasyon yükü ve uzmanlık ihtiyacı gerçek kalemlerdir. Bir modeli çalıştırmak kolay, üretimde verimli ve güvenilir tutmak zordur.

Sahadan bir vaka: faturayı adım adım nasıl düşürdük?

Soyut yüzdeleri somuta indirmek için, geçtiğimiz aylarda bir e-ticaret müşterisiyle yaşadığımız süreci sadeleştirerek anlatayım. Müşteri hizmetleri için kurdukları bir asistanın aylık LLM faturası, kullanıcı büyümesiyle birlikte rahatsız edici bir hızla tırmanıyordu ve ekip panik halinde "en ucuz modele geçelim" diyordu.

İlk yaptığımız şey optimize etmek değil, ölçmek oldu. Bir haftalık gözlemlenebilirlik verisi topladık ve şunu gördük: Faturanın büyük kısmı, tek bir uç noktadan, yani her mesaja eklenen upuzun ürün kataloğu ve sabit sistem talimatından geliyordu. Yani her konuşma turunda, değişmeyen dev bir bağlam baştan işleniyordu.

Adımlar şöyle ilerledi. Önce promptu yeniden düzenledik: Sabit katalog ve talimat başa, kullanıcının değişen mesajı sona geldi ve prompt caching'i açtık. Tek başına bu adım, tekrar eden bağlamın maliyetini büyük ölçüde eritti ve ilk token süresi de gözle görülür kısaldı. İkinci adımda routing kurduk: Gelen mesajları basit bir sınıflandırıcıyla ayırdık; "kargom nerede", "iade nasıl yapılır" gibi rutin sorular ucuz modele, gerçekten karmaşık şikayet ve istisna durumları pahalı modele gitti. Trafiğin çok büyük kısmının rutin olduğunu görmek ekibi şaşırttı. Üçüncü adımda, asistanın çektiği ürün bilgisini yalnızca konuyla ilgili kalemle sınırladık; her mesaja tüm katalogu değil, yalnızca ilgili ürünleri koyduk.

Üç adımın birleşik etkisi, faturayı kabaca üçte birine indirdi ve bunu yaparken kalite metriği neredeyse hiç bozulmadı; aksine, daha yalın bağlamla çalışan model bazı akışlarda daha isabetli cevap verdi. Buradan çıkardığım ders net: Ekibin sandığı çözüm (modeli küçültmek) hiç gerekmedi; asıl kazanç, ölçüp doğru katmandan başlamakta gizliydi.

KV cache ve bellek: gecikmenin sessiz kahramanı

Teknik bir ayrıntı ama üretimde fark yaratır. Bir model metin üretirken, önceki token'lar için hesapladığı anahtar-değer (key-value) temsillerini bir bellekte tutar; buna KV cache denir. Bu önbellek verimli yönetilmezse, uzun bağlamlı isteklerde bellek hızla dolar, eşzamanlı istek kapasiteniz düşer ve birim maliyet artar. İşte yukarıda bahsettiğim PagedAttention'ın çözdüğü sorun tam da budur: KV cache'i parçalanmadan, sanal bellek benzeri bir düzenle yöneterek aynı donanıma daha fazla iş sığdırır.

Self-hosting yapan ekipler için pratik çıkarım şu: Bağlam uzunluğu, yalnızca token faturasını değil, aynı anda kaç kullanıcıya hizmet verebileceğinizi de belirler. Gereksiz uzun bağlam, hem doğrudan token maliyeti hem de dolaylı olarak düşen eşzamanlılık yüzünden iki kez cezalandırır sizi. Bu yüzden bağlam sıkıştırma, yalnızca bir uygulama katmanı tekniği değil, aynı zamanda altyapı verimini doğrudan etkileyen bir kaldıraçtır.

En sık gördüğüm maliyet tuzakları

Kapanıştan önce, sahada tekrar tekrar karşılaştığım pahalı hataları sıralayayım:

  • Ölçmeden optimize etmek. En temel hata; hangi akışın pahalı olduğunu bilmeden atılan her adım kör.
  • Her isteğe en büyük modeli koşmak. Rutin işlerin %60-80'i ucuz modelle görülebilir; routing kurmamak doğrudan para yakmaktır.
  • Değişkeni promptun başına koymak. Caching'i işlevsiz bırakan klasik hata; sabit kısım önce gelmeli.
  • Bağlamı "ne olur ne olmaz" diye şişirmek. Hem token yakar hem kaliteyi düşürür.
  • Kur riskini yok saymak. USD faturayı TL geliriyle planlamak, kur şokunda bütçeyi patlatır.
  • Kaliteyi ölçmeden tasarruf etmek. Sessizce düşen kalite, tasarruftan çok daha pahalıya patlar.
  • Optimizasyonu tek seferlik proje sanmak. Token fiyatları ve iş yükü değişir; sürekli geri dönüp ölçmek gerekir.

Fiyatlar düşerken bile neden optimize etmeli?

"Token fiyatları zaten sürekli ucuzluyor, neden uğraşayım?" diyen ekipler görüyorum. Bu, sahada gördüğüm en pahalı yanılgılardan biri. Evet, birim token fiyatları zamanla düşme eğiliminde; ama aynı anda iki şey oluyor: Kullanıcı sayınız büyüyor ve ajanlarınız daha çok token yakan, daha uzun akıl yürüten, daha çok araç çağıran yapılara dönüşüyor. Yani birim fiyat düşerken toplam tüketim çok daha hızlı artıyor. Sonuç, ucuzlayan tokenlara rağmen büyüyen bir fatura.

Bir diğer nokta, optimizasyonun yalnızca para değil, deneyim ve ölçeklenebilirlik kazandırması. Prompt caching TTFT'yi kısaltıp kullanıcıya daha hızlı cevap verdirir; bağlam sıkıştırma aynı donanımdan daha çok kullanıcıya hizmet ettirir. Yani optimizasyon, fiyat sıfır olsa bile deneyim ve kapasite açısından değerli kalır. Benim yaklaşımım şu: Maliyet optimizasyonunu bir kriz anı refleksi değil, ürünün kalıcı bir mühendislik alışkanlığı olarak kurun. Kur, model ve iş yükü değişkenken, bir kez düzeltip unutulacak bir ayar yoktur; düzenli olarak ölçüp yeniden kalibre eden ekip kazanır.

Somut bir uygulama sırası

Peki tüm bunları hangi sırayla hayata geçirmeli? Sahada müşterilerime önerdiğim, riski düşük getirisi yüksek sıralama şu:

  1. Önce ölç. Gözlemlenebilirliği kur; token, model dağılımı ve uç nokta bazında maliyeti gör. Bu adım olmadan ilerleme kör uçuştur.
  2. En büyük kalemi bul. Fatura genellikle birkaç uç noktada yoğunlaşır. En pahalı akışı hedef al; küçük optimizasyonlarla vakit kaybetme.
  3. Prompt caching'i aç. Genellikle en hızlı ve en düşük riskli kazanç. Promptu sabit-önce olacak şekilde yeniden düzenle.
  4. Routing kur. Basit bir sınıflandırıcıyla rutin istekleri ucuz modele kaydır. Kalite metriğini izleyerek eşiği ayarla.
  5. Bağlamı sıkıştır. RAG'de yalnızca ilgili parçayı gönder; geçmişi özetle. Türkçe'de bu adımın getirisi daha yüksek.
  6. Sistem/model katmanına in. Hacim ve uyum gerekçesi self-hosting'i haklı çıkarıyorsa, sürekli batching, PagedAttention ve nicemlemeyi devreye al.
  7. Kur ve uyumu hesaba kat. TL/USD tamponunu, KVKK/BDDK veri ikametgahı kısıtlarını kararın içine göm.

Bu sırayı takip ettiğinizde, en düşük çabayla en büyük kazanımı erken elde eder, sonra giderek derinleşirsiniz. Maliyet optimizasyonu bir kerelik proje değil, süreklilik isteyen bir alışkanlıktır; token fiyatları, modeller ve iş yükünüz değiştikçe düzenli olarak geri dönüp yeniden ölçmeniz gerekir. Faturayı bir kez düşürüp unutan değil, sürekli ölçen ve ayar yapan ekipler kazanıyor.

Danismanlik Baglantilari

Bu yazıya en yakın consulting sayfaları

Bu içerikten sonraki mantıklı adım için en ilgili solution, role ve industry landing'lerini burada görebilirsin.

Yorumlar