PyTorch, TensorFlow ve Sklearn modellerini ONNX formatına çevirerek CPU, GPU ve NPU dahil her donanımda yüksek performanslı çalıştıran Microsoft'un çapraz platform çıkarım motoru.

ONNX Runtime, Microsoft tarafından geliştirilen açık kaynaklı çapraz platform yüksek performanslı makine öğrenmesi çıkarım motorudur. ONNX (Open Neural Network Exchange) formatındaki modelleri CPU, GPU, NPU ve özel hızlandırıcılar dahil çeşitli donanımlar üzerinde optimize biçimde çalıştırır. MIT lisansıyla dağıtılan bu motor, modern yapay zeka üretim altyapısının temel bileşenlerinden biri haline gelmiş olup Microsoft Azure, Hugging Face ve diğer büyük AI platformlarının çıkarım katmanında kullanılmaktadır. ONNX Runtime'ın temel değeri eğitim çerçevesi bağımsızlığıdır. PyTorch, TensorFlow, Keras veya Scikit-learn ile eğitilen modeller ONNX formatına dışa aktarıldıktan sonra ONNX Runtime üzerinde çalıştırılabilir; bu sayede eğitim ve dağıtım çerçeveleri birbirinden ayrışır. Dağıtım ortamı PyTorch veya TensorFlow yüklemek yerine çok daha hafif olan ONNX Runtime kütüphanesini kullanır; bu durum konteyner imaj boyutlarını ve başlangıç gecikmelerini önemli ölçüde azaltır. Performans optimizasyonu için ONNX Runtime çeşitli yürütme sağlayıcıları (execution providers) destekler: CUDA (NVIDIA GPU), TensorRT (NVIDIA ileri hızlandırması), DirectML (Windows GPU), ROCm (AMD GPU), OpenVINO (Intel donanımları) ve CoreML (Apple Silicon). Hangi sağlayıcının kullanılacağı çalışma zamanında otomatik seçilebilir ya da elle belirtilebilir; desteklenmeyen işlemler CPU'ya otomatik devredilir. ONNX Runtime Web bileşeni, JavaScript/TypeScript ortamında modeli WebAssembly veya WebGPU arka ucuyla tarayıcıda çalıştırır. Transformers.js gibi istemci tarafı yapay zeka kütüphanelerinin altyapısını oluşturur; BERT tabanlı metin gömme veya Whisper tabanlı konuşma tanıma tarayıcıda saniyeler içinde ve kullanıcı verisi sunucuya gitmeden gerçekleştirilir. Model optimizasyon araçları grafik birleştirme (graph fusion), sabit katlama (constant folding) ve kuantizasyon (INT8, FP16) teknikleriyle çıkarım hızını artırırken bellek kullanımını azaltır. Bu özellikler uç cihaz ve mobil dağıtım senaryolarında kritik önem taşır; ONNX Runtime Mobile, Android ve iOS için optimize edilmiş hafif bir yapı ile sınırlı donanım koşullarında bile güvenilir çıkarım sağlar.

Eğitim-Dağıtım Uçurumunu Kapatmak

Büyük PyTorch veya TensorFlow modeli üretim sunucusuna dağıtıldığında tüm eğitim bağımlılıklarını da beraberinde taşımak zorunda kalırsınız; bu durum büyük imaj boyutları ve başlangıç gecikmelerine yol açar. ONNX Runtime bu uçurumu kapatır: modeli bir kez ONNX formatına dışa aktarın, ardından yalnızca ONNX Runtime kütüphanesinin yüklü olduğu hafif bir ortamda çalıştırın. Bu mimari hem bulut maliyetlerini hem de dağıtım karmaşıklığını azaltır.

Execution Providers: Her Donanım İçin En İyi Hız

ONNX Runtime'ın yürütme sağlayıcısı mimarisi, modelin donanım özelliklerine göre otomatik olarak en uygun kodu çalıştırmasını sağlar. NVIDIA GPU'da TensorRT sağlayıcısı model çıkarımını on katlara varan hızlandırmayla gerçekleştirebilir. Apple Silicon'da CoreML sağlayıcısı Neural Engine'i aktive eder. Intel donanımında OpenVINO, AVX-512 ve VPU hızlandırmasını kullanır. Fallback mekanizması desteksiz işlemleri CPU'ya devreder.

ONNX Runtime Web ve Tarayıcı AI

ONNX Runtime Web, JavaScript/TypeScript ortamında npm paketi olarak kullanılır ve modeli WebAssembly veya WebGPU arka ucuyla tarayıcıda çalıştırır. Hugging Face'in Transformers.js kütüphanesi bu motor üzerine inşa edilmiştir; BERT tabanlı metin gömme veya Whisper tabanlı konuşma tanıma tarayıcıda saniyeler içinde çalışır. Gizlilik açısından tüm işlem istemci tarafında gerçekleşir; kullanıcı verisi sunucuya gitmez.

Model Optimizasyon Teknikleri

Dışa aktarma sonrası ONNX modeli çeşitli optimizasyon geçişlerinden geçirilebilir. Grafik birleştirme (graph fusion) ardışık matris çarpımı ve aktivasyon katmanlarını tek bir çekirdek çağrısına indirger. Sabit katlama, değişmez alt grafları derleme zamanında hesaplayarak çıkarım sırasındaki yükü azaltır. INT8 ve FP16 kuantizasyonu model boyutunu küçültürken minimal doğruluk kaybıyla yüksek hız elde edilmesini sağlar.

⚙️ ONNX Runtime ile Model Dağıtım Adımları

  • check_circle Modeli ONNX formatına dönüştürün: torch.onnx.export veya tf2onnx ile çerçeveden bağımsız hale getirin
  • check_circle ONNX modelini doğrulayın: onnx.checker.check_model ile şema uyumluluğunu kontrol edin
  • check_circle Yürütme sağlayıcısı seçin: CUDA, TensorRT, CoreML veya CPU'ya göre optimum hız elde edin
  • check_circle Graph optimizasyonu uygulayın: katman birleştirme ve sabit katlama ile çıkarım hızını artırın
  • check_circle Niceleme için onnxruntime-tools kullanın: INT8 niceleme bellek ve gecikmeyi iyileştirir

Sık Sorulan Sorular

  • check_circle PyTorch modelini ONNX'e nasıl aktarırım? torch.onnx.export() fonksiyonu ile temsili bir girdi tensörü vererek modeli dışa aktarabilirsiniz. Dinamik boyutlar için dynamic_axes parametresi kullanılır. Transformers modelleri için Optimum kütüphanesi bu süreci basitleştirir.
  • check_circle ONNX Runtime TensorFlow Serving'den daha mı hızlı? Görev ve donanıma bağlıdır. TensorRT sağlayıcısıyla NVIDIA GPU üzerinde ONNX Runtime genellikle daha yüksek verim sunar. CPU çıkarımında ikisi benzer performans gösterir; ONNX Runtime'ın hafif dağıtım avantajı daha belirgindir.
  • check_circle Tüm ONNX operatörleri her cihazda desteklenir mi? Hayır. Bazı operatörler yalnızca belirli sağlayıcılarda desteklenir; desteklenmeyen operatörler CPU fallback ile çalışır. Ayrıntılı uyumluluk matrisi resmi belgelerinde mevcuttur.
  • check_circle Mobil cihazlarda kullanılabilir mi? Evet. ONNX Runtime Mobile, Android ve iOS için optimize edilmiş yapı sunar. INT8 kuantizasyonu ve küçük model boyutlarıyla sınırlı bellek ve batarya koşullarında çalışır.