TÜM SİSTEMLER ÇALIŞIYOR 14 BÖLGE · 1.2 TBPS KALKAN ŞUNUNLA YÜKLE BTC · XMR · LTC · ETH · USDT +3 COINLER

GPU VE YAPAY ZEKA

Özel bir GPU sunucusunda LLM nasıl kendi kendine barındırılır

9 dk okuma

Özel bir GPU sunucusunda LLM nasıl kendi kendine barındırılır

Bir dil modelini kiraladığınız donanımda çalıştırmak, istemlerinizin sizden başka kimse tarafından kaydedilmediğinden, saklanmadığından veya okunmadığından emin olmanın tek yoludur. Barındırılan her API — gizlilik politikası ne kadar iyi olursa olsun — gönderdiğiniz her token'ı alır ve bu politika sizin hiçbir kontrolünüz olmadan değişebilir. Kendi kendine barındırma sınırı kaydırır: ağırlıklar kontrolünüzdeki bir diskte durur, çıkarım saatlik olarak kiraladığınız VRAM üzerinde gerçekleşir ve siz bir yere göndermediğiniz sürece hiçbir şey makineden dışarı çıkmaz. Yazılım tarafı artık gerçekten kolaylaştı. İnsanları hâlâ yakalayan şey, kartı sipariş etmeden önce doğru boyutlandırmak ve açık bir çıkarım portunun her zaman açık bir çıkarım portu olduğunu unutmamaktır.

Kendi kendine barındırmanın size gerçekte kazandırdığı şey — ve kazandırmadığı şey

Faydası konusunda net olun, çünkü "özel yapay zeka" gelişigüzel bir şekilde pazarlanıyor. Kendi GPU'nuzdaki bir model bazı şeyleri tamamen değiştirir, bazılarını ise hiç değiştirmez.

  • İstemleriniz ve çıktılarınız makinede kalır — sağlayıcı tarafında kayıt tutma yok, saklama penceresi yok, sorduklarınızdan oluşturulan bir veri kümesi yok.
  • Hesap yok, anahtar başına hız sınırı yok ve sizinle ağırlıklar arasında hiçbir politika katmanı yok. Dağıttığınız model, aldığınız modeldir.
  • Hacimde öngörülebilir maliyet. Günde birkaç milyon token'ı geçtiğinizde kiralık bir kart, token başına fiyatlandırmadan daha ucuzdur ve bir sağlayıcı fiyat listesini güncellediğinde fiyatınız değişmez.
  • Zayıf bir modeli güçlü yapmaz. Kendi donanımınızda çalışan açık ağırlıklı bir model yine de aynı modeldir — kendi kendine barındırma size kontrol kazandırır, en gelişmiş düzeyde bir yetenek değil.
  • Hiçbir şeyi barındırıcıdan gizlemez. Çalışan bir makineye fiziksel erişimi olan herkes prensipte onun belleğini okuyabilir; bu, modelle değil barındırıcıyla ilgili bir sorudur.

VRAM her şeydir: bir modeli karta göre boyutlandırmak

Başarısız olan neredeyse her ilk deneme bir VRAM aritmetik hatasıdır. Ağırlıklar, KV önbelleği ve çalışma alanının hepsi karta aynı anda sığmak zorundadır ve kademeli bir bozulma söz konusu değildir — yüklemeye başladıktan birkaç saniye sonra bellek yetersizliği (out-of-memory) hatası alırsınız. Kullanışlı bir kaba kural şudur: 16-bit hassasiyette bir model, milyar parametre başına kabaca 2 GB VRAM'e ihtiyaç duyar; bu, 8-bit'te yaklaşık 1 GB, 4-bit'te ise kabaca 0,6 GB'a düşer. Ardından, bağlam uzunluğuyla ve eşzamanlı isteklerle büyüyen ve testte değil üretimde sizi asıl ısıran şey olan KV önbelleğini eklemeniz gerekir.

  • 7B ila 8B'lik bir model: FP16'da yaklaşık 16 GB, 4-bit'te ise rahatlıkla 8 GB'ın altında. Bu, RTX A4000 16 GB'a fazlasıyla yer bırakarak sığan sınıftır.
  • 13B ila 14B'lik bir model: FP16'da kabaca 28 GB, 4-bit'te yaklaşık 9 GB. Bir RTX 4090 24 GB bunu kuantize hâlde, geriye bolca bağlam payı bırakarak çalıştırır.
  • 30B ila 34B'lik bir model: FP16'da yaklaşık 68 GB, 4-bit'te 20 GB'a yakın — RTX 5090 32 GB için doğal bir yuva.
  • 70B'lik bir model: FP16'da yaklaşık 140 GB, 4-bit'te kabaca 40 GB. Bu, bir A100 veya H100 80 GB anlamına gelir; tam hassasiyette ise birden fazla kart anlamına gelir.
  • Uzun bağlam, ağırlıkları değil KV önbelleğini katlar. Büyük bir modelde 128k token'lık bir pencere tek başına onlarca gigabayt isteyebilir — bunun bütçesini sipariş vermeden önce ayırın, sonra değil.
Kuantizasyon, vereceğiniz en yüksek kaldıraçlı karardır. FP16'dan iyi bir 4-bit kuantizasyona geçmek, çoğu görevin hiç fark etmeyeceği bir kalite kaybı karşılığında VRAM'i kabaca dörtte üç oranında azaltır — "bir H100 gerektiren" bir modeli "bir 4090'da çalışan" bir modele dönüştüren şey tam olarak budur. Bunu bir benchmark tablosuna güvenmek yerine kendi istemleriniz üzerinde ölçün.

GPU seçimi: A4000'den H100'e ve saatlik faturalandırmanın aylıktan üstün olduğu durumlar

GPU sunucu serisindeki her plan, tüm VRAM'iyle birlikte bütün bir fiziksel karttır — MIG bölümlemesi yok, zaman paylaşımı yok — dolayısıyla teknik özellik sayfasındaki rakam, gerçekten doldurabileceğiniz rakamdır. Kartı, bir gün denemek isteyebileceğiniz modele değil, sunmayı planladığınız modele göre eşleştirin.

  • RTX A4000 16 GB ($89/mo) — 8 vCPU ve 64 GB RAM. Kuantize edilmiş bir 7B ila 13B asistan, bir embedding servisi veya gün boyu çalışan bir sınıflandırma hattı için yeterli.
  • RTX 4090 24 GB ($189/mo) — 16 vCPU, 128 GB ve 2 TB NVMe. 4-bit'te 13B ila 34B modeller için token başına en iyi değer ve küçük bir üretim uç noktası için alışılagelmiş tercih.
  • RTX 5090 32 GB ($279/mo) — 24 vCPU ve 192 GB. Bu fazladan 8 GB, genellikle gerçek bağlamla sığan bir 34B model ile sığmayan bir 34B model arasındaki farktır.
  • A100 80 GB ($690/mo) — 32 vCPU, 256 GB ve 4 TB NVMe. HBM2e bant genişliği ve uzun bir pencereyle 4-bit'te bir 70B modeli çalıştırmaya ya da yoğun toplu (batch) sunuma yetecek bellek.
  • H100 80 GB ($1190/mo) — 48 vCPU, 384 GB, 8 TB NVMe ve 10 Gbps'lik bir port. FP8 desteği ve HBM3 bant genişliği, onu ciddi işlem hacmi veya eğitim için tek mantıklı seçim yapar.

Faturalandırma, aynı ön ödemeli bakiyeden saatlik veya aylık olarak yapılır ve bu durum hesabı, insanların beklediğinden çok daha fazla değiştirir. Bir H100'de iki öğleden sonra süren bir değerlendirme, bir ay değil yalnızca çalıştığı saatler kadar ücretlendirilir. Sabahın üçünde yanıt vermesi gereken bir sohbet uç noktası ise aylık bir kutu ister. Tek bir makinede birden fazla karta ihtiyacınız varsa, ya da bol miktarda yerel depolamanın yanında bir GPU istiyorsanız, bir dedicated sunucu daha uygun bir biçimdir — kriptoyla ödemenin genel mantığı ise kripto ile bir GPU sunucusu kiralamak rehberinde ele alınmıştır.

Adım adım: kripto bakiye yüklemeden çalışan bir uç noktaya

  1. 01Tek kullanımlık (burner) bir e-postayla hesap oluşturunBir e-posta ve bir parola. İsim, telefon veya kimlik yok; bizim tarafımızda çalıştırdığınız modeli sizinle ilişkilendirecek hiçbir şey bulunmuyor.
  2. 02Bakiyenizi kriptoyla yükleyinÖn ödemeli bakiyenizi Bitcoin, Monero veya diğer 8 coinden biriyle yükleyin. Bakiye asla süresi dolmaz ve asla dondurulmaz.
  3. 03Bir CUDA imajı üzerinde GPU örneği dağıtınKartı, bir bölgeyi ve güncel sürücüler ile PyTorch içeren CUDA hazır bir imajı seçin. Kutu dakikalar içinde hazır olur.
  4. 04Herhangi bir şey çekmeden önce kartın görünür olduğunu doğrulayınTek bir nvidia-smi çağrısı; GPU'yu, sürücü sürümünü ve boş VRAM'i bildirir. Bu, bir saatlik kafa karışıklığından tasarruf ettiren on saniyelik bir kontroldür.
  5. 05Ağırlıkları yerel NVMe'ye çekinModeli bir ağ bağlantısı (network mount) yerine örneğin kendi diskine indirin. Ağırlıklar onlarca gigabayta ulaşır ve bunları birden fazla kez yükleyeceksiniz.
  6. 06Sunucuyu localhost'a bağlı olarak başlatınvLLM veya Ollama'yı 127.0.0.1 üzerinde başlatın, yerel olarak bir tamamlamayı (completion) doğrulayın ve ona dışarıdan nasıl erişeceğinize ancak bundan sonra karar verin.

vLLM, Ollama veya llama.cpp: sunum yığınını seçmek

Üç yığın neredeyse her durumu kapsar ve doğru olanı, hangisinin teknik olarak en etkileyici olduğuna değil, uç noktanın kaç istek göreceğine bağlıdır.

  • Ollama — sıfırdan çalışan bir uç noktaya giden en kısa yol. Tek bir komut, kuantize edilmiş bir modeli indirir ve OpenAI uyumlu bir API'nin arkasında sunar. Tek bir kullanıcı, bir prototip veya özel bir asistan için idealdir.
  • vLLM — üretime yönelik cevap. Sürekli toplu işleme (continuous batching) ve sayfalanmış dikkat (paged attention), tek bir kartın, saf bir döngünün (naive loop) birkaç katı işlem hacmiyle çok sayıda eşzamanlı isteğe hizmet vermesini sağlar. Bu, sizin için bir uç nokta ile bir uygulama için bir uç nokta arasındaki farktır.
  • llama.cpp — pragmatist olan. 4-bit'e ve altına kadar inen GGUF kuantizasyonları, sığmayan katmanlar için CPU'ya aktarma (offload) ve üçü arasındaki en düşük bellek tabanı. Aşırı büyük bir modelin, yetersiz kalan bir kartta bile bir şekilde çalışmasını sağlayan şey budur.
  • TGI, SGLang ve TensorRT-LLM, belirli senaryolarda daha da hızlıdır. Bunlara, bir darboğazı ölçtükten sonra başvurun, önce değil.

Üçü de OpenAI uyumlu bir chat-completions rotası sunar, bu yüzden ticari bir API'ye karşı yazılmış uygulama kodu genellikle yalnızca bir taban URL değişikliğine ihtiyaç duyar, başka hiçbir şeye değil. Kendi kendine barındırmanın bir projeden bir yapılandırma tercihine dönüşmesinin pratik nedeni de bu uyumluluktur.

Uç noktayı özel tutmak: çıkarım portunu asla dışarı açmayın

Kimlik doğrulaması olmayan bir çıkarım sunucusu, açık bir veritabanının modern karşılığıdır. Tarayıcılar yeni IP'leri saatler içinde bulur ve açıkta kalan bir uç nokta, başka birinin GPU saatlerinizi harcadığı — ya da uygulamanızın onun üzerinden gönderdiği her şeyi okuduğu anlamına gelir.

Sunucuyu 127.0.0.1'e bağlayın, asla 0.0.0.0'a değil. Ona kontrolünüzdeki bir WireGuard tüneli veya bir SSH tüneli üzerinden ulaşın ve bir uygulamanın erişime ihtiyacı varsa önüne gerçek bir token'a sahip bir ters proxy koyun. 11434 portundaki Ollama ile 8000 portundaki vLLM sürekli olarak taranır ve hiçbiri varsayılan olarak kimlik doğrulaması yapmaz.

Uç noktanın gerçekten herkese açık olması gerekiyorsa — özel bir asistan değil de bir ürünse — TLS'i bir ters proxy'de sonlandırın, düzenli olarak yenilediğiniz bir bearer token zorunlu kılın ve anahtar başına hız sınırlaması uygulayın. Bu proxy'yi ayrı, küçük bir VPS'e koymak ve GPU kutusunu yalnızca tünel üzerinden erişilebilir bırakmak daha temiz bir düzenlemedir. Bu, KYC olmadan bir web sitesi barındırmakla aynı mantıktır: internetle yüz yüze olan makine olabildiğince az şey taşımalıdır.

İnce ayar (fine-tuning): kiralık bir kartta bir öğleden sonranın aylık faturaya üstün geldiği an

İnce ayar, abone olmak yerine kiralamak için en güçlü argümandır. 7B ila 13B'lik bir modelde yapılan bir LoRA veya QLoRA çalıştırması — birkaç bin örnek, bir avuç epoch — bir 4090'da saatler içinde biter ve tam olarak çalıştığı saatler kadar ücrete mal olur. Ortaya çıkan adaptör birkaç yüz megabayttır; böylece kontrol noktasını (checkpoint) saklayabilir, örneği yok edebilir ve daha sonra bu adaptörü sunum için daha küçük bir karta yükleyebilirsiniz. 70B'lik bir modelin tam ince ayarı farklı bir bütçe gerektirir ve optimizer durumu için yer bırakan bir A100 veya H100 ister, ama yine de bir sözleşmeyle değil günlerle ölçülür.

Saatlik faturalandırmanın mümkün kıldığı iş akışı basittir: dağıt, eğit, adaptörü kutudan kopyala, yok et. Yalnızca kullandığınız işlem gücü için ödeme yaparsınız ve arada boşta bekleyen bir kart olmaz. Veri kümesini çalışırken örneğin NVMe'sinde tutun ve işiniz bittiğinde geri çekin — kiralık bir makinede bıraktığınız hiçbir şey asla tek kopya olmamalıdır.

Sahibi olmadığınız bir GPU'nun dürüst gizlilik ödünleşimi

Kendi kendine barındırma en büyük ve en somut sızıntıyı ortadan kaldırır: gönderdiğiniz her istemi (prompt) alan, bir süre saklayan ve kendi başına ne yapacağına karar veren bir üçüncü taraf. Kiralık bir kart üzerinde model ve verileriniz, yalnızca sizin anahtarınıza cevap veren bir makinenin içinde yaşar. Kiralamanın ortadan kaldıramadığı şey ise barındırıcının kendisidir. Çalışan bir sunucuya fiziksel erişimi olan herkes prensipte onun belleğini okuyabilir; uzak bir makinedeki tam disk şifrelemesi sizi çalınan bir sürücüye karşı korur, çalışan bir sürücüye karşı değil.

Dolayısıyla asıl soru "barındırıcı bunu görebilir mi" değil, "barındırıcı kim olduğumu biliyor mu"dur. KYC'siz barındırma bu soruyu yanıtlar: bir e-posta ve bir parola, doğrulama yok, sızdırılacak veya celp edilecek bir kayıt yok. Bir kripto bakiyesinden ödeme yapmak bankayı devre dışı bırakır. Ödeme tarafını ne kadar ileri götüreceğiniz bir tehdit modeli seçimidir — Bitcoin takma adlıdır (pseudonymous), anonim değildir; bu yüzden doğrulanmış bir borsaya kadar izlenen coinler yine de bir yere çıkar, Monero ile bakiye yüklemek ise bu açığı protokol düzeyinde kapatır.

GPU saatlerini sessizce israf eden hatalar

  • Yalnızca ağırlıklara göre boyutlandırıp KV önbelleğini unutmak; bu yüzden model sorunsuzca yüklenir ve ilk uzun istekte çöker.
  • Kimsenin gerçekte ölçmediği bir kalite kaygısı yüzünden, aynı modeli 4-bit'te üç katı bağlamla çalıştırabilecek bir kartta FP16'da sunum yapmak.
  • Kırk gigabaytlık ağırlığı bir ağ bağlantısına (network mount) indirip sonra her yeniden başlatmanın neden yirmi dakika sürdüğünü merak etmek.
  • Sunucuyu "sadece dizüstü bilgisayarımdan test etmek için" 0.0.0.0'a bağlı bırakmak; bu, genel bir IP'de aynı gün içinde bulunur.
  • İş yükü baştan beri bir toplu (batch) işken, günün yirmi saatinde boşta duran bir kart için aylık ödeme yapmak.
  • Bir seferde tek bir istekle benchmark yaparak vLLM'in zahmete değmediği sonucuna varmak ve tüm avantajının yalnızca eşzamanlılık altında ortaya çıktığını gözden kaçırmak.

Bunların hiçbiri egzotik arızalar değildir. Kart, model belirlenmeden önce seçildiğinde olan şey tam olarak budur. Önce modele ve kuantizasyona karar verin, VRAM aritmetiğini dürüstçe yapın, portu kapalı tutun; kendi kendine barındırılan bir LLM, çalışır bırakabileceğiniz en az bakım isteyen şeylerden biridir.

Denemeye hazır mısınız?GPU Sunucuları/ay başlangıç fiyatıyla $89 devreye alın — KYC yok, kripto ile ödeme. Başlayın