Yazı

Kurum İçi Dağıtımlar İçin Yapay Zeka Çıkarım Derleyici Optimizasyonu

On-Premises AI · AI Architecture · Best Practices · Intermediate

Mevcut kurum içi donanımda verimi en üst düzeye çıkarmak ve gecikmeyi azaltmak için TensorRT, ONNX Runtime ve OpenVINO gibi çıkarım derleyicilerini kullanmaya yönelik pratik bir kılavuz.

Devre kartı üzerinde bilgisayar işlemci çipinin yakın çekimi

Kurum İçinde Çıkarım Derleyicilerinin Önemi

Çoğu yapay zeka ekibi, modelleri eğittikleri çerçeveyle dağıtır: varsayılan ayarlarla PyTorch veya TensorFlow. Bu yaklaşım ciddi performans potansiyelini masada bırakır. Çıkarım derleyicileri, modelinizin hesaplama grafiğini analiz eder ve donanımınızın özel yeteneklerinden yararlanmak üzere yeniden yazar; genellikle modelin kendisini değiştirmeden 2x ila 5x verim artışı sağlar.

Kurum içinde bu daha da önemlidir. Talep arttığında basitçe daha fazla GPU ekleyemezsiniz. Mevcut donanımınızdan elde edilen her verimlilik yüzdesi, dağıtımınızın kapasitesini doğrudan genişletir. Çıkarım derleyicileri, çoğu kurum içi ekibin henüz benimsemediği en düşük çabalı ve en yüksek etkili optimizasyondur.

Derleyici Ekosistemini Anlamak

NVIDIA TensorRT, NVIDIA GPU dağıtımları için en olgun seçenektir. GPU mimarinize özgü katman birleştirme, çekirdek otomatik ayarlama, hassasiyet kalibrasyonu ve bellek optimizasyonu gerçekleştirir. TensorRT, transformer tabanlı modellerde mükemmeldir ve dinamik toplu işlemeyi yerel olarak destekler. Takas, satıcı bağımlılığıdır: TensorRT planları belirli bir GPU modeli için derlenir ve donanım değiştiğinde yeniden oluşturulmalıdır.

ONNX Runtime, Microsoft'tan gelen en geniş donanım desteğini sunar. ONNX formatına dışa aktarılan modeller; NVIDIA GPU'larda (TensorRT veya CUDA yürütme sağlayıcıları aracılığıyla), AMD GPU'larda, Intel CPU'larda ve ARM işlemcilerde çalışabilir. Bu, farklı ekiplerin farklı donanım kullandığı heterojen kurum içi ortamlar için doğal bir tercih yapar. Graf optimizasyonları arasında sabit katlama, operatör birleştirme ve şekil çıkarımı bulunur.

OpenVINO, Intel'den gelir ve Intel CPU'ları, tümleşik GPU'ları ve VPU'ları hedefler. Kurum içi altyapınız Intel Xeon işlemcilerde çalışıyorsa, OpenVINO yapay zeka iş yükleri için düşünmemiş olabileceğiniz donanımdan önemli çıkarım performansı açığa çıkarabilir. Bilgisayarlı görme modelleri ve hafif NLP görevleri için özellikle etkilidir.

AMD ROCm ve MIGraphX, AMD GPU ortamlarına hizmet eder. Ekosistem NVIDIA'nınkinden daha az olgun olsa da, maliyet nedeniyle AMD donanımını standartlaştıran kuruluşlar yine de anlamlı çıkarım optimizasyonu elde edebilir. MIGraphX, AMD'nin CDNA ve RDNA mimarilerine özgü birleştirme ve kuantizasyon dahil graf düzeyinde optimizasyonlar gerçekleştirir.

Optimizasyon İş Akışı

Çıkarım derleyicilerini uygulamak, hangi aracı seçerseniz seçin tutarlı bir iş akışı izler:

Adım 1: Modeli dışa aktarın. Eğitilmiş modelinizi bir ara temsile dönüştürün. TensorRT için bu genellikle önce ONNX'e dışa aktarma, ardından derleme anlamına gelir. OpenVINO için Model Optimizer'ı kullanarak PyTorch, TensorFlow veya ONNX'ten dönüştürün. Bu aşamada giriş şekillerinizi tanımlayın; dinamik girişler için minimum, optimal ve maksimum toplu boyutları ve dizi uzunluklarını belirtin.

Adım 2: Hassasiyeti kalibre edin. Karma hassasiyetli çıkarım (FP16 veya INT8), bellek kullanımını dramatik şekilde azaltır ve verimi artırır. INT8 kuantizasyonu bir kalibrasyon veri kümesi gerektirir: derleyicinin optimal kuantizasyon aralıklarını belirlemek için kullandığı üretim verilerinizin temsili bir örneği. Gerçek veri dağılımınızı yansıtan 500 ila 1000 örnek kullanın. Derleyici aracılığıyla eğitim sonrası kuantizasyon, kuantizasyon farkındalıklı eğitimden daha basittir ve çoğu çıkarım senaryosu için yeterlidir.

Adım 3: Derleyin ve karşılaştırma yapın. Derleyiciyi hedef donanım profilinizle çalıştırın. TensorRT motor dosyaları oluşturur; ONNX Runtime oturum oluşturma sırasında optimizasyonları uygular; OpenVINO IR (Ara Temsil) dosyaları üretir. Derlenen modeli orijinalle karşılaştırırken sentetik veri değil, üretim istek kalıplarınızı kullanın. P50, P95 ve P99'da gecikmeyi, hedef toplu boyutlarında verimi ve bellek ayak izini ölçün.

Adım 4: Doğruluğu doğrulayın. Derlenen modelin çıktılarını test veri kümeniz boyunca orijinalle karşılaştırın. Kuantizasyon küçük sayısal farklılıklar getirebilir. Kullanım durumunuza göre kabul edilebilir tolerans eşikleri belirleyin: sınıflandırma görevleri genellikle regresyon görevlerinden daha fazla sapma tolere edebilir. Her model güncellemesinin yeniden derlenmesi ve doğrulanması için bu karşılaştırmayı CI/CD boru hattınızın bir parçası olarak otomatikleştirin.

Birleşik Etki Yaratan Pratik Teknikler

Operatör birleştirme, en etkili derleyici optimizasyonudur. Birden fazla ardışık işlemi (konvolüsyon, toplu normalizasyon ve aktivasyon gibi) tek bir GPU çekirdeğinde birleştirir. Bu, işlemler arasındaki bellek gidiş-dönüşlerini ortadan kaldırır ve çekirdek başlatma yükünü azaltır. Çoğu derleyici bunu otomatik olarak gerçekleştirir, ancak modelinizin derleyicinin tanıdığı standart operatör kalıplarını kullandığından emin olarak yardımcı olabilirsiniz.

Dinamik şekil işleme dikkatli yapılandırma gerektirir. Modeliniz değişken uzunluklu girişleri (metin dizileri gibi) işliyorsa, derleyiciyi beklenen aralığınızı kapsayan optimizasyon profilleriyle yapılandırın. TensorRT, örneğin, farklı giriş boyutu aralıkları için her biri bağımsız olarak optimize edilmiş birden fazla profil belirlemenize olanak tanır. Bu, mümkün olan maksimum giriş boyutu için derlemenin performans cezasını önler.

Katmana özgü hassasiyet, genel FP16 veya INT8 dönüşümünden daha ince kontrol sağlar. Bazı katmanlar (özellikle ağın ilk ve son katmanları ile transformer'lardaki dikkat mekanizmaları) hassasiyet azaltmaya daha duyarlıdır. Bu katmanları daha yüksek hassasiyette çalışacak şekilde yapılandırırken, hesaplama yoğun orta katmanların INT8 kullanmasına izin verin. TensorRT ve OpenVINO her ikisi de katman başına hassasiyet yapılandırmasını destekler.

Bellek havuzlama, tekrarlanan çıkarım çağrıları için tahsis yükünü azaltır. Maksimum toplu işiniz için boyutlandırılmış GPU bellek arabelleklerini önceden tahsis edin ve bunları istekler arasında yeniden kullanın. Bu, yüksek istek oranlarında önemli olabilen her çıkarım çağrısında bellek tahsis ve serbest bırakma maliyetini ortadan kaldırır.

Model Sunma Altyapısıyla Entegrasyon

Derlenmiş modeller, optimizasyonlarından yararlanabilen sunma altyapısına ihtiyaç duyar. NVIDIA Triton Inference Server, TensorRT motorlarını, ONNX Runtime oturumlarını ve OpenVINO modellerini yerel olarak destekler. Dinamik toplu işleme (istekleri optimal toplu boyutlarına biriktirme), model sürümleme ve paylaşımlı GPU'larda eş zamanlı model yürütme ekler.

Büyük dil modeli sunma için vLLM veya text-generation-inference (TGI) kullanıyorsanız, bu çerçevelerin derleyici optimizasyonlarıyla etkileşebilecek kendi optimizasyonlarını (sürekli toplu işleme, PagedAttention) uyguladığını unutmayın. Faydaların toplamsal olduğunu varsaymak yerine kombinasyonu test edin. Bazı durumlarda, vLLM'nin yerel CUDA çekirdekleri belirli LLM mimarileri için TensorRT'den daha iyi performans gösterir.

Derlemeyi CI/CD boru hattınıza entegre edin. Yeni bir model sürümü terfi ettirildiğinde, derlenen yapıyı otomatik olarak dışa aktarın, derleyin, kalibre edin, doğrulayın ve paketleyin. Derlenmiş modelleri, hedef donanım ve derleyici sürümüyle etiketlenmiş olarak orijinalin yanında model kaydınızda saklayın. Bu, yeniden üretilebilirliği sağlar ve geri almaları basitleştirir.

Gerçek Dünya Etkisini Ölçme

Çıkarım derlemesinin değerini ölçmek için üç metriği izleyin: verim kazancı (eşdeğer gecikmede saniyedeki istek sayısı), gecikme azalması (eşdeğer yükte P95 gecikme) ve çıkarım başına maliyet (milyon istek başına tüketilen hesaplama saatleri). Son metrik doğrudan donanım yatırım getirisine çevrilir ve bütçe görüşmeleri için en ikna edici rakamdır.

Derlemeden önce temel değerleri belirleyin. Optimize edilmemiş modelinizi, ani davranış ve değişken giriş boyutları dahil üretim trafik kalıbınızı simüle eden bir yük testinden geçirin. Ardından aynı testi derlenmiş modelle çalıştırın. Karşılaştırmayı tek çalıştırma sayılarıyla değil, güven aralıklarıyla raporlayın.

Donanım değiştiğinde, derleyici büyük bir sürüm yayınladığında veya model mimariniz önemli ölçüde değiştiğinde derlemeyi yeniden gözden geçirin. Bu olayların her biri yeni optimizasyonlar açabilir veya mevcut olanları geçersiz kılabilir. Kararlı dağıtımlar için üç aylık yeniden derleme döngüsü makul bir varsayılandır.

Öne çıkan görsel: giuse tarafından Unsplash'ta paylaşılmıştır.