Büyük dil modelleri (LLM’ler), araştırma merakından çeşitli uygulamalar için güçlü araçlara hızla evrildi. Llama.cpp veya Ollama gibi araçları kullanarak basit bir chatbot oluşturmak nispeten kolay olsa da, gerçek dünya iş yüklerini ele almak için bir üretim ortamında LLM’leri dağıtmak farklı zorluklar sunar. Bu zorluklar, birden fazla eşzamanlı kullanıcıyı yönetmeyi, çalışma süresi garantilerini sağlamayı ve bütçe kısıtlamalarını aşmamak için GPU kaynak kullanımını optimize etmeyi içerir.
Bir LLM’yi ölçekte sunmak için gereken kaynaklar, onu kişisel bir bilgisayarda çalıştırmak için gerekenlerden önemli ölçüde farklıdır. Bir PC’de 4 GB’den az bellek ile verimli bir şekilde çalışan bir model, çok sayıda eşzamanlı isteği işlemek için bir üretim ortamında dağıtıldığında 40 GB veya daha fazla GPU belleği talep edebilir.
Bu kılavuz, yapay zeka iş yüklerini ilk konsept kanıtlarından üretime hazır dağıtımlara ölçeklendirmenin yollarını araştırıyor. Gemma 3 veya Llama 3 gibi modelleri ölçekte dağıtma konusunda size yol göstereceğiz.
LLM Entegrasyonu için API’lerden Yararlanma
LLM’leri bir kod tabanına entegre etmek çeşitli yöntemlerle gerçekleştirilebilir, ancak üretim dağıtımları için OpenAI uyumlu bir API kullanılması şiddetle tavsiye edilir. Bu yaklaşım, hızla gelişen model ortamına uyum sağlama esnekliği sağlar. Daha birkaç ay önce son teknoloji olarak kabul edilen modeller hızla eski hale gelebilir.
2022’de ChatGPT ile başlayan yapay zeka patlamasından bu yana, OpenAI’nin API arayüzü, uygulamaları LLM’lere bağlamak için fiili standart olarak ortaya çıktı. Bu standart, geliştiricilerin mevcut kaynakları kullanarak uygulamalar oluşturmasına olanak tanır; örneğin, bir not defterinde Llama.cpp’de Mistral 7B ile başlamak ve üretim dağıtımı için Mistral AI’nın API sunucularına sorunsuz bir şekilde geçmek. Bu, tek bir modele, çıkarım motoruna veya API sağlayıcısına bağlı kalmayı ortadan kaldırır.
Bulut tabanlı çıkarım hizmetleri, yapay zeka dağıtımlarını ölçeklendirmenin sermaye harcaması (capex) dostu bir yolunu sağlar. Bu hizmetler, donanım yönetimi ve model yapılandırması ihtiyacını ortadan kaldırır, bunun yerine uygulama entegrasyonu için bir API sağlar.
Büyük model oluşturucuların API tekliflerine ek olarak, giderek artan sayıda yapay zeka altyapı girişimi, açık ağırlıklı modeller için hizmet olarak çıkarım sunmaktadır. Bu sağlayıcılar yaklaşımlarında farklılık gösterir. SambaNova, Cerebras ve Groq gibi bazıları, çıkarımı hızlandırmak için özel donanım veya spekülatif kod çözme gibi tekniklerden yararlanır, ancak daha küçük bir model seçimi sunar. Fireworks AI gibi diğerleri, Düşük Sıralama Adaptasyonu (LoRA) adaptörlerini kullanarak özel ince ayarlı modellerin dağıtımını destekler. Yapay zeka ekosisteminin çeşitliliği, belirli bir sağlayıcıya taahhütte bulunmadan önce kapsamlı bir araştırma yapılmasını gerektirir.
Şirket İçi LLM Dağıtım Hususları
Gizlilik, düzenleyici veya önceden var olan altyapı kısıtlamaları (örneğin, bir şirket zaten GPU sunucularına yatırım yapmış) nedeniyle bulut tabanlı yaklaşımların uygun olmadığı durumlarda, şirket içi dağıtım gerekli hale gelir. Bu, çeşitli zorluklar sunabilir. Ortaya çıkan bazı yaygın sorular şunlardır:
- Model Seçimi: Uygun model, belirli kullanım durumuna bağlıdır. Bir müşteri hizmetleri chatbotu için tasarlanmış bir model, alma destekli oluşturma veya bir kod asistanı olarak kullanılan bir modelden farklı gereksinimlere sahip olacaktır. İhtiyaçları karşılayan bir model belirlemek için API sağlayıcılarıyla zaman geçirilmesi önerilir.
- Donanım Gereksinimleri: Gerekli donanımı belirlemek çok önemlidir, çünkü GPU’lar pahalıdır ve edinilmesi zor olabilir. Modelin kendisi, onu çalıştırmak için gereken donanım hakkında bilgi sağlayabilir. Daha büyük modeller daha fazla donanım gerektirir. Minimum GPU belleğinin kabaca bir tahmini, parametre sayısının (milyarlarda) 16 bit hassasiyetle eğitilmiş modeller için 2 GB ile çarpılmasıyla hesaplanabilir. 8 bit modeller için, milyar parametre başına 1 GB gerekir. Kuantizasyon gibi model sıkıştırma teknikleri bunu milyar parametre başına 512 MB’ye düşürebilir. Bu bir alt sınırdır. Modelin kısa süreli belleği olarak hareket eden anahtar-değer önbelleği nedeniyle, modele aynı anda birden fazla kullanıcıya hizmet vermek için ek belleğe ihtiyaç vardır. Nvidia’nın destek matrisi, çeşitli modelleri çalıştırmak için gereken GPU’lar hakkında rehberlik sunar.
- Yedeklilik: Donanımı modele göre boyutlandırmaya ek olarak, yedeklilik de dikkate alınmalıdır. Tek bir GPU düğümü arızaya karşı savunmasızdır, bu nedenle yük devretme ve yük dengeleme için iki veya daha fazla sistemin dağıtılması önemlidir.
- Dağıtım Yöntemleri: LLM’ler, çeşitli yöntemler kullanılarak üretimde dağıtılabilir ve sunulabilir: yük dengeleyicili bare metal, sanal makineler veya Docker veya Kubernetes’teki kapsayıcılar. Kubernetes, kapsayıcı oluşturma, ağ oluşturma ve yük dengelemeyi otomatikleştirerek büyük ölçekli dağıtımları basitleştirir.
LLM Dağıtımı için Kubernetes
Kubernetes, kapsayıcı oluşturma, ağ oluşturma ve yük dengelemeyi otomatikleştirerek büyük ölçekli dağıtımlarla ilişkili karmaşıklığın çoğunu soyutlar. Birçok kuruluş zaten Kubernetes’i benimsemiş ve anlamıştır. Nvidia, Hugging Face ve diğerleri, yaygın iş yükleri ve dağıtımlar için önceden yapılandırılmış Nvidia Inference Microservices (NIM’ler) ve Hugging Face Generative AI Services (HUGS) ile kapsayıcılı ortamlara öncelik veriyor.
Çıkarım Motorları
Modelleri çalıştırmak için çok çeşitli donanımlarla uyumlu Ollama ve Llama.cpp dahil olmak üzere çeşitli çıkarım motorları mevcuttur. Modelleri ölçeklendirmek için genellikle vLLM, TensorRT LLM, SGLang ve PyTorch gibi kitaplıklar kullanılır. Bu kılavuz, popüler modellerin geniş bir seçimini desteklediği ve Nvidia, AMD ve diğer donanımlar arasında geniş destek ve uyumluluk sunduğu için vLLM kullanarak modelleri dağıtmaya odaklanmaktadır.
Kubernetes Ortamını Hazırlama
GPU’larla çalışmak için bir Kubernetes ortamı kurmak, tipik bir Kubernetes kurulumuna kıyasla ek sürücüler ve bağımlılıklar gerektirir. Kurulum süreci AMD ve Nvidia donanımı için farklılık gösterecektir.
Bu kılavuz, tek düğümlü bir yapılandırmada K3S kullanır. Temel adımlar çok düğümlü ortamlara benzer, ancak bağımlılıkların her GPU çalışan düğümünde karşılanması gerekir ve depolama yapılandırması ayarlamalar gerektirebilir.
Amaç, çıkarım iş yüklerini üretime uygun bir şekilde dağıtmak için sağlam bir temel sağlamaktır. Aşağıdaki ön koşullar gereklidir:
- En az bir desteklenen AMD veya Nvidia GPU kartına sahip bir sunucu veya iş istasyonu
- Ubuntu 24.04 LTS’nin yeni bir kurulumu
Nvidia Bağımlılıkları
Nvidia hızlandırmalı bir K3S ortamı kurmak, CUDA Sürücüleri Fabric Manager ve Başsız sunucu sürücülerini yüklemeyi gerektirir. Sürücü sorunlarını gidermek için Nvidia’nın sunucu yardımcı programlarını yükleyin.
Daha Detaylı Bir Bakış: LLM’leri Ölçeklendirme
Büyük dil modellerinin (LLM’ler) dağıtımı, sadece modeli çalıştırmaktan çok daha fazlasını içerir. Gerçek dünya uygulamalarında kullanılabilir, güvenilir ve verimli olmalarını sağlamak için çeşitli faktörleri dikkate almak gerekir. Bu bölümde, LLM’leri ölçeklendirmenin temel yönlerine daha yakından bakacağız.
Model Seçimi ve İnce Ayar
Doğru modeli seçmek, başarılı bir LLM dağıtımının temelidir. Modelin boyutu, mimarisi ve eğitim verileri, performansını ve kaynak gereksinimlerini önemli ölçüde etkiler.
- Model Boyutu: Daha büyük modeller genellikle daha iyi doğruluk ve anlama yetenekleri sunar, ancak daha fazla GPU belleği ve işlem gücü gerektirirler. Küçük modeller, kaynak kısıtlı ortamlarda daha uygun olabilir, ancak daha düşük bir doğruluk pahasına.
- Model Mimarisi: Farklı model mimarileri (örneğin, Transformer, RNN, LSTM) belirli görevler için daha uygun olabilir. Mimari seçimi, uygulamanın özelliklerine ve gereksinimlerine bağlıdır.
- Eğitim Verileri: Modelin eğitildiği verilerin kalitesi ve kapsamı, performansını doğrudan etkiler. Uygulamanın özel alanına yönelik eğitim verileriyle ince ayar yapmak, doğruluğu ve alaka düzeyini önemli ölçüde artırabilir.
Model seçimi yapıldıktan sonra, ince ayar genellikle kritik bir adımdır. İnce ayar, modeli belirli bir görev veya alan için daha da optimize etmeyi içerir. Bu, daha küçük bir etiketli veri kümesi üzerinde modelin yeniden eğitilmesini veya Low Rank Adaptation (LoRA) gibi tekniklerin kullanılmasını içerebilir. LoRA, modelin tüm parametrelerini eğitmek yerine, sadece birkaç ek parametre eğiterek, ince ayar sürecini daha verimli hale getirir.
Donanım Altyapısı
LLM’lerin donanım gereksinimleri, modelin boyutu, çıkarım hızı ve eşzamanlı kullanıcı sayısı gibi çeşitli faktörlere bağlıdır. GPU’lar, LLM’lerin matris çarpımı ağırlıklı doğası nedeniyle çıkarım için yaygın olarak kullanılır.
- GPU Seçimi: GPU seçimi, bütçe, performans ve güç tüketimi gibi faktörlere bağlıdır. Nvidia A100 ve H100 gibi üst düzey GPU’lar, en iyi performansı sunar, ancak daha yüksek bir maliyetle gelirler. Orta seviye GPU’lar, maliyet ve performans arasında bir denge sağlayabilir.
- GPU Belleği: GPU belleği, bir LLM’yi çalıştırmak için kritik bir faktördür. Modelin tüm parametrelerinin yanı sıra ara hesaplamalar için yeterli belleğe sahip olmak önemlidir. Model paralelleştirme teknikleri, modeli birden fazla GPU’ya dağıtarak bellek gereksinimlerini azaltabilir.
- CPU ve RAM: CPU ve RAM, GPU’lara ek olarak, veri ön işlemesi, model yükleme ve diğer görevler için de gereklidir. Yeterli CPU çekirdeği ve RAM’e sahip olmak, LLM’nin genel performansını iyileştirebilir.
Çıkarım Motorları ve Optimizasyonlar
Çıkarım motoru, LLM’nin gerçek çıkarımını gerçekleştiren yazılım bileşenidir. Farklı çıkarım motorları, farklı donanım platformları ve model mimarileri için optimize edilmiştir.
- vLLM: vLLM, LLM’ler için popüler bir çıkarım motorudur. Nvidia, AMD ve diğer donanımlar arasında geniş destek ve uyumluluk sunar. vLLM, yüksek verimlilik ve düşük gecikme süresi için optimize edilmiştir.
- TensorRT LLM: TensorRT LLM, Nvidia GPU’lar için optimize edilmiş bir çıkarım motorudur. TensorRT LLM, model optimizasyonları ve donanım hızlandırması sayesinde, yüksek performans sunar.
- SGLang: SGLang, karmaşık dil görevleri için tasarlanmış bir dil aracıdır. SGLang, LLM’lerle etkileşimi basitleştirir ve çeşitli görevler için yüksek performans sunar.
Çıkarım motoruna ek olarak, model optimizasyon teknikleri de performansı önemli ölçüde artırabilir.
- Kuantizasyon: Kuantizasyon, model parametrelerinin hassasiyetini azaltmayı içerir. Örneğin, 32 bitlik kayan nokta parametreleri yerine 8 bitlik tamsayı parametreleri kullanmak, model boyutunu ve bellek gereksinimlerini azaltabilir.
- Budama: Budama, modeldeki gereksiz bağlantıları kaldırmayı içerir. Budama, model boyutunu ve işlem yükünü azaltabilir.
- Model Paralelleştirme: Model paralelleştirme, modeli birden fazla GPU’ya dağıtmayı içerir. Model paralelleştirme, bellek gereksinimlerini azaltabilir ve çıkarım hızını artırabilir.
Kubernetes ile Ölçeklendirme
Kubernetes, LLM’leri ölçeklendirmek için güçlü bir araçtır. Kubernetes, kapsayıcı oluşturma, ağ oluşturma ve yük dengelemeyi otomatikleştirerek, büyük ölçekli dağıtımları basitleştirir.
- Kapsayıcılaştırma: LLM’ler, Docker gibi kapsayıcı teknolojileri kullanılarak kapsayıcılaştırılabilir. Kapsayıcılaştırma, LLM’nin tutarlı bir şekilde dağıtılmasını ve çalıştırılmasını sağlar.
- Orkestrasyon: Kubernetes, LLM kapsayıcılarının dağıtımını ve yönetimini otomatikleştirir. Kubernetes, kapsayıcı oluşturma, ölçeklendirme, yük dengeleme ve iyileştirme gibi görevleri otomatikleştirir.
- GPU Yönetimi: Kubernetes, GPU kaynaklarının yönetimini destekler. Kubernetes, GPU kaynaklarının LLM kapsayıcılarına atanmasını ve izlenmesini sağlar.
İzleme ve Yönetim
LLM’lerin sürekli olarak izlenmesi ve yönetilmesi, güvenilir ve verimli bir şekilde çalışmasını sağlamak için önemlidir.
- Metrikler: GPU kullanımı, bellek kullanımı, gecikme süresi ve hata oranı gibi temel metriklerin izlenmesi, LLM’nin performansını anlamak için önemlidir.
- Uyarılar: Anormallikleri veya sorunları tespit etmek için belirli metrikler için uyarılar yapılandırılabilir.
- Günlük Kaydı: Olayları ve hataları kaydetmek için günlük kaydı kullanılabilir. Günlükler, sorun giderme ve analiz için değerli bilgiler sağlayabilir.
Güvenlik
LLM’lerin güvenliği, hassas verilerin korunması ve kötü amaçlı kullanımların önlenmesi için önemlidir.
- Erişim Kontrolü: LLM’lere erişimi yetkilendirilmiş kullanıcılara kısıtlamak, yetkisiz erişimi önleyebilir.
- Veri Şifreleme: Hassas verileri şifrelemek, yetkisiz erişimi önleyebilir.
- Girdi Doğrulama: LLM’lere gönderilen girdileri doğrulamak, kötü amaçlı girdileri ve saldırıları önleyebilir.
Sonuç
LLM’leri üretimde ölçeklendirmek, çeşitli zorluklar sunan karmaşık bir görevdir. Ancak, doğru araçları, teknikleri ve stratejileri kullanarak, LLM’ler güvenilir, verimli ve güvenli bir şekilde dağıtılabilir. Bu kılavuzda, LLM’leri ölçeklendirmenin temel yönlerini ele aldık ve başarılı bir dağıtım için pratik bilgiler sağladık.