ONNX (ONNX (Açık Sinir Ağı Değişim Formatı))

ONNX (Open Neural Network Exchange — Açık Sinir Ağı Değişim Formatı), farklı derin öğrenme çerçeveleri arasında model taşınabilirliğini sağlayan açık bir standarttır.

ONNX (Open Neural Network Exchange — Açık Sinir Ağı Değişim Formatı), farklı derin öğrenme çerçeveleri arasında model taşınabilirliğini sağlayan açık bir standarttır. 2017 yılında Microsoft ve Facebook tarafından geliştirilen ONNX, PyTorch veya TensorFlow gibi farklı çerçevelerde eğitilmiş modellerin, optimizasyon ve dağıtım aşamasında tek bir ortak formata dönüştürülmesine olanak tanır. ONNX Runtime, bu formatı çalıştırmak için optimize edilmiş bir çıkarım motorudur. CPU, GPU, NPU ve özel hızlandırıcılar üzerinde yüksek performanslı çıkarım sağlayan ONNX Runtime; Windows, Linux, macOS, iOS ve Android gibi farklı platformlarda çalışır. Microsoft, Azure AI hizmetlerinde ONNX Runtime'ı yaygın biçimde kullanmaktadır. Transformers.js kütüphanesi, ONNX Runtime Web üzerinde çalışarak önceden eğitilmiş Hugging Face modellerini doğrudan tarayıcıda çalıştırır. Bu sayede duygu analizi, nesne tanıma, metin gömme ve konuşma tanıma gibi görevler sunucu gerekmeksizin istemci tarafında gerçekleştirilebilir. ONNX ekosistemi, PyTorch'tan ONNX'e dönüştürme araçları, model optimizasyon araçları ve donanıma özgü yürütme sağlayıcıları (execution providers) ile kapsamlı bir altyapı sunar.

ONNX Ekosistemi

schema ONNX Format

Protobuf tabanlı model temsili. Operatör seti (opset) versiyonlaması ile geriye dönük uyumluluk. PyTorch torch.onnx.export() ile dışa aktarım.

speed ONNX Runtime

Microsoft'un çıkarım motoru. CPU, CUDA, TensorRT, DirectML, CoreML ve OpenVINO yürütme sağlayıcıları. 2-5x PyTorch eager modu hızlanması.

web ONNX Runtime Web

WebAssembly ve WebGL üzerinde tarayıcı içi çıkarım. Transformers.js bu altyapıyı kullanarak Hugging Face modellerini tarayıcıda çalıştırır.

tune Model Optimizasyonu

Grafik optimizasyonları, füzyon (operator fusion), nicemleme (INT8/INT4) ve budama (pruning) araçları ile dağıtım öncesi model boyutunu küçültme.

rocket_launch ONNX ile Model Dağıtım Akışı

Tipik bir ONNX dağıtım akışı: (1) PyTorch veya TensorFlow'da model eğit, (2) torch.onnx.export() veya tf2onnx ile ONNX formatına dönüştür, (3) ONNX model optimizer ile grafik optimizasyonları uygula, (4) hedef platforma uygun ONNX Runtime yürütme sağlayıcısı seç (CUDA, CoreML, TensorRT vb.), (5) dağıt ve çıkarım yap. Bu akış, eğitim-çıkarım çerçevesi bağımsızlığı sağlar.

quiz Sık Sorulan Sorular

  • check_circle Her PyTorch modeli ONNX'e dönüştürülebilir mi?: Standart operatörler kullanan modeller sorunsuz dönüştürülür. Dinamik kontrol akışı, özel CUDA çekirdeği veya desteklenmeyen operatörler içeren modellerde sorun yaşanabilir.
  • check_circle ONNX Runtime, orijinal PyTorch'tan ne kadar hızlıdır?: Donanım ve model tipine göre değişir. CPU'da 1.5-3x, uyumlu GPU'da TensorRT ile 3-5x hızlanma tipiktir. BERT gibi transformer modellerde operator fusion büyük kazanım sağlar.