Temel noktalar
- En iyi yerel model, en iyi üne sahip olan değil, VRAM'inize kullanılabilir bir hızda sığan en büyük modeldir.
- Ollama, kendi makinenizde OpenAI ile uyumlu bir uç nokta açığa çıkarır; bu nedenle aynı istemci kodu hem yerel hem de barındırılan ortamda çalışır.
- Yerel çalışma gizlilik ve çevrimdışı kullanım sağlar; barındırılan hizmet daha büyük bir model sunar, donanım ve kurulum gerektirmez.
- Yalnızca barındırılan bir uç nokta sunuyoruz: bu hizmetten model indirme seçeneği yoktur.
Kısa cevap: belleğe göre seçin, ardından iki veya üç modeli test edin
Bu iş için tek bir en iyi model yoktur, çünkü sınır donanımınızdır. Bir model, çalışma önbelleğiyle birlikte GPU belleğine (veya çok daha yavaş olan sistem RAM'ine) sığmalıdır. Pratik kural basittir: belleğinize rahatça sığan ve kabul edilebilir bir hızda yanıt veren en büyük modeli bulun, ardından kendi istemlerinizle iki veya üç adayı karşılaştırın.
Model adları ve sıralamalar her birkaç haftada bir değişir, bu nedenle bugün yazılan herhangi bir liste hızla güncelliğini yitirir. Liderlik tablolarını atlayın ve kısa bir yöntem izleyin: Ollama kütüphanesini ve topluluk yüklemelerini gezin, sansürsüz, abliterated veya rol yapma için ince ayarlanmış olarak tanımlanan modelleri filtreleyin, küçük ve orta boyutlu bir tane indirin ve her biri için aynı on istemi çalıştırın. Kendi istemleriniz, başkalarının test sonuçlarından daha fazla şey söyler.
Bundan sonra makinenize sığan modellerin istediğiniz kalite için küçük kaldığını fark ederseniz, barındırılan bir uç nokta alternatiftir. Bu sayfanın geri kalanı, sayılarla karar vermeniz için karşılaştırmayı açıklar.
Makineniz için bir modeli nasıl boyutlandırırsınız
İyi çalışacak bir modeli belirleyen üç sayı vardır: parametre sayısı, nicekleme ve bağlam uzunluğu.
Parametreler ve nicekleme
Daha fazla parametreye sahip bir model genellikle daha iyi yazar, talimatları daha güvenilir şekilde takip eder ve bir karakteri daha uzun süre korur. Ancak parametreler bellek kaplar. Tam 16-bit hassasiyetle bir model parametre başına yaklaşık iki bayt gerektirir; bu nedenle 7B'lik bir model herhangi bir önbellek olmadan yaklaşık 14 GB alan gerektirir. Quantization bunu küçültür. 4-bit bir sürüm parametre başına yaklaşık yarım bayt gerektirir; bu nedenle aynı 7B'lik model yaklaşık 4 ila 5 GB'a sığar. Kalite her adımda biraz düşer ve kayıp genellikle 4 ila 5 bit'te küçük, bunun altında ise belirgindir.
Bağlam uzunluğu
Bağlam penceresi de bellek maliyeti doğurur, çünkü model konuşmadaki her şeyin bir önbelleğini depolar. Uzun bir rol yapma oturumu veya çok fazla önceki metni olan bir hikaye daha büyük bir önbellek gerektirir. Ollama, model başına bağlam boyutunu ayarlamanıza olanak tanır; daha büyük bir değer daha fazla bellek kullanır ve üretimi yavaşlatır. Hızlı kalmak için birçok yerel kurulum, birkaç bin token'lık bir pencere ile çalışır; bu da modelin uzun sohbetlerin başını unuttuğu anlamına gelir.
Hız
Bir model GPU belleğinin dışına taşar ve sistem RAM'ine geçerse, üretim keyifli bir okuma hızından her seferinde bir kelimeye düşebilir. Tamamen GPU'ya sığan daha küçük bir model, daha iyi yazan ancak sığmayan daha büyük bir modelden daha iyi hissettirebilir.
Ollama'da bir modeli çalıştırma ve koddan çağırma
Ollama yüklendikten sonra indirme ve sohbet iki komut alır ve tam model adı seçtiğiniz kütüphane sayfasından gelir:
ollama pull MODEL_NAME
ollama run MODEL_NAME
Ollama ayrıca kendi makinenizde varsayılan olarak http://localhost:11434/v1 adresinde OpenAI uyumlu bir API sunar. Bu, aynı istemci kodunun yerel veya barındırılan bir modele bağlanabileceği ve base URL ve model adını değiştirerek geçiş yapabileceği anlamına gelir:
from openai import OpenAI
# Local Ollama (the key is ignored but must be non-empty)
local = OpenAI(base_url="http://localhost:11434/v1", api_key="ollama")
# Hosted endpoint
hosted = OpenAI(base_url="https://api.ornith.top/v1", api_key="YOUR_API_KEY")
def ask(client, model, text):
r = client.chat.completions.create(
model=model,
messages=[{"role": "user", "content": text}],
)
return r.choices[0].message.content
prompt = "Write a tense two-paragraph scene set in an abandoned lighthouse."
print(ask(local, "MODEL_NAME", prompt))
print(ask(hosted, "uncensored", prompt))
Aynı istemlerde her ikisini de çalıştırmak, kendi durumunuz için soruyu yanıtlamanın en hızlı yoludur. Yerel çıktı yeterince iyiyse, işiniz biter ve size elektrik maliyeti getirir. Değilse, elde edebileceğiniz şey için bir taban çizmiş olursunuz.
Yerel Ollama ile barındırılan API karşılaştırması
Her iki yaklaşım da her durumda daha iyi değildir. Bu tablo, her yaklaşımın yapısal olarak doğru olanlara sadık kalır.
| Nokta | Ollama ile Yerel | Barındırılan API |
|---|---|---|
| Ön maliyet | Kendi GPU'nuz veya yeterli RAM'e sahip bir makine | Yok; $20'den başlayan ön ödemeli kredi |
| Çalıştırma maliyeti | Elektrik ve zamanınız | 1M girdi token'ı başı $0.15, 1M çıktı token'ı başı $0.50 |
| Model boyutu | Belleğinizle sınırlıdır | Sağlayıcı tarafından seçilen bir model |
| Çevrimdışı çalışır | Evet | Hayır, internet gerektirir |
| Veri makinenizden ayrılır | Hayır | Evet, istemler sağlayıcıya gider; bizimkiler eğitim için kullanılmaz |
| Model seçimi | İndirebileceğiniz her şey | Yalnızca sunulan |
| Eşzamanlı kullanıcılar | Donanımınızla sınırlı | Tam anahtarla 8 eşzamanlı istek |
| Kurulum | Kurulum, indirme, ayarları ince ayar | Base URL ve anahtarı değiştir |
Yerel çalışma gizlilik, çevrimdışı kullanım ve seçim özgürlüğüne göre kazanır. Metninizin makinenizden asla ayrılmaması gerekiyorsa veya haftalık olarak modelleri değiştirmek istiyorsanız, yerel çalıştırın. Barındırılan API, kurulum süresi, çalışırken GPU'nuzu meşgul etmemek ve aynı anda birden fazla kullanıcıya hizmet verme konusunda kazanır.
Ayrıca ne sunmadığımızı söylemek de adil olur. Bu hizmet yalnızca barındırılan bir uç noktadır. İndirilecek bir model dosyası, ince ayar ve kendi ağırlıklarınızı getirme seçeneği yoktur. Modeli sahiplenmek istiyorsanız, Ollama doğru araçtır ve açık kaynak LLM API kılavuzumuz daha geniş seçenek setini inceler.
Barındırılanın maliyeti, detaylı olarak
İnsanlar genellikle barındırılan bir modelin ücretsiz yerel çalıştırmaya kıyasla pahalı olduğunu varsayar. Donanımı saydığınızda yerel ücretsiz değildir, ancak karşılaştırma somut kullanım ile daha kolaydır. Fiyatlar burada 1M giriş token'ı başına $0.15 ve 1M çıktı token'ı başına $0.50'dir.
- Günlük rol yapma, günde 100 mesaj. Her dönüşün 3.000 token geçmişi gönderdiğini ve 300 token döndürdüğünü varsayın. Dönüş başına giriş: 3.000 token, 1M başına $0.15 ile $0.00045. Çıktı: 300 token, 1M başına $0.50 ile $0.00015. Bu, dönüş başına $0.0006, 100 dönüş için $0.06, 30 gün boyunca yaklaşık $1.80 demektir.
- Bir yazı projesi. Aylık 5M giriş token'ı ve 1M çıktı token'ı $0.75 artı $0.50, yani $1.25 eder.
- Küçük bir uygulama. Aylık 200M giriş ve 40M çıktı token'ı $30 artı $20, yani $50 eder.
Kendi GPU'nuzun maliyetini yalnızca siz belirleyebilirsiniz, ancak hafif ve orta kullanım barındırılan olarak çok az maliyetlidir. $20 minimum bakiye yükleme ilk iki seviyede uzun süre yetecek kadar krediyi kapsar ve kredi asla sona ermez, bu nedenle bir ay izin alırsanız kaybolmaz. Daha büyük bakiye yüklemeleri bonus taşır: $50'den %5, $100'den %10, $200'den %15. Detaylar fiyatlandırma sayfasında yer almaktadır.
Her ikisini birleştirmek için mantıklı bir yol
Bir kez seçim yapmak zorunda değilsiniz. Birçok kişi hızlı taslaklar ve özel notlar için küçük bir yerel model çalıştırır ve daha uzun veya daha talepkar işleri barındırılan bir uç noktaya gönderir. Her ikisi de OpenAI formatını desteklediğinden, uygulamanız iki istemci nesnesi tutabilir ve yukarıdaki kodda olduğu gibi görevlere göre yönlendirme yapabilir.
Hosted tarafı test ettiğinizde, yeni kullanıcılar API anahtarı sayfasında tek tıkla $0.50 deneme kredisi talep edebilir; kart gerekmez, kişi başı bir kez, 7 gün boyunca geçerlidir. Yukarıdaki dönüş başına maliyetlere göre bu, yüzlerce rol yapma dönüşüne denk gelir ve aynı istemlerle en iyi yerel modelinizle karşılaştırmanızı sağlar. Google veya e-posta ve şifre ile giriş yaptıktan sonra bir API anahtarı oluşturabilirsiniz. API belgeleri temperature, top_p, stop ve seed gibi parametreleri listeler; bunlar doğrudan iletilir, böylece yerel örnekleme ayarlarınız korunur.
Planlamanız gereken bazı limitler. Bir deneme anahtarı 2 eşzamanlı istek ve dakika başına 60 istek izni verir; tam anahtar 8 ve 300 izni verir. Bağlam penceresi 100.000 token'dır; bu, çoğu yerel kurulumun rahatça çalıştığından çok daha büyüktür. Ve hiçbir ayarı değiştiremeyeceğiniz tek kural: model yasal yetişkin kullanımı içindir ve reşit olmayanlarla ilgili cinsel içerik üretmez.
