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

Farklı AI çerçeveleri arasında model taşınabilirliğini sağlayan açık format ve yüksek performanslı çıkarım motoru.

ONNX (Open Neural Network Exchange — Açık Sinir Ağı Değişim Formatı), PyTorch, TensorFlow ve JAX gibi farklı derin öğrenme çerçeveleri arasında model taşınabilirliğini sağlayan açık bir endüstri standardıdır. 2017'de Microsoft ve Meta (Facebook) tarafından ortaklaşa geliştirilen format, "bir kez eğit, her yerde çalıştır" felsefesiyle AI model dağıtımının karmaşıklığını ortadan kaldırmayı hedefler. Teknik olarak ONNX, hesaplama grafiğini (computational graph) Protocol Buffers formatında saklar. Model ağırlıkları, katman mimarisi ve tüm operasyonlar platform bağımsız bir .onnx uzantılı dosyada kodlanır. Bu dosya; CPU, GPU, NPU, FPGA veya WebAssembly gibi birbirinden farklı donanım hedeflerinde ONNX Runtime tarafından çalıştırılabilir hale gelir. Opset (operator set) versiyonlama mekanizması, geriye dönük uyumluluğu koruyarak ekosistemi istikrarlı kılar. ONNX Runtime, Microsoft tarafından geliştirilen açık kaynaklı yüksek performanslı çıkarım motorudur. CUDA (NVIDIA GPU), DirectML (Windows AI platformu), CoreML (Apple Silicon), TensorRT ve OpenVINO gibi Execution Provider'lar aracılığıyla aynı model farklı donanım mimarilerinde otomatik optimize edilir. Karşılaştırmalı testler, PyTorch eager mode'a kıyasla ortalama 1,5–3× hızlanma, transformer modellerinde operatör birleştirme (operator fusion) ile daha yüksek kazanım bildirmektedir. Ekosistem açısından PyTorch'tan torch.onnx.export(), TensorFlow'dan tf2onnx veya keras2onnx ile dönüşüm yapılır. Netron aracı model grafiğini görselleştirir; onnxsim gereksiz düğümleri temizler; INT8 ve FP16 nicemleme model boyutunu dörtte bire kadar indirir. Transformers.js ve ONNX Runtime Web, ONNX modellerini doğrudan tarayıcıda WebAssembly ve WebGL aracılığıyla çalıştırır. Phi-3, LLaMA ve Mistral gibi büyük dil modellerinin ONNX sürümleri Hugging Face'te yayınlanmakta; Windows Copilot+ PC'lerde NPU üzerinde, iOS ve Android'de ise internet bağlantısı gerekmeden yerel çıkarım için kullanılmaktadır. AWS SageMaker, Azure ML ve Google Vertex AI gibi büyük bulut platformları ONNX formatını doğrudan desteklemekte, model kayıt defterlerine sorunsuz entegrasyon imkânı sunmaktadır.

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ı. 1,5-3× 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.

ONNX'in Temel Özellikleri ve Ekosistemi

  • check_circle Evrensel Ara Format: PyTorch, TensorFlow, Keras, scikit-learn ve diğer çerçevelerden modelleri ONNX formatına dışa aktarma ve farklı çalışma zamanlarında (ONNX Runtime) çalıştırma.
  • check_circle Donanım Optimizasyonu: ONNX Runtime, hedef donanıma göre grafı otomatik optimize eder: katman birleştirme (layer fusion), kuantizasyon ve donanıma özgü çekirdekler.
  • check_circle Model Kuantizasyonu: ONNX Runtime'ın yerleşik kuantizasyon araçları INT8 ve INT4 dönüşümü destekler; özellikle CPU çıkarımında bellek ve hız avantajı sunar.
  • check_circle Çerçeve Bağımsızlığı: Belirli bir çerçeve veya donanım sağlayıcısına bağımlılığı önler. Model bir kez eğitilir, Python, C++, C# veya JavaScript ile birçok ortamda çalıştırılır.
  • check_circle GenAI ONNX: Phi, LLaMA, Mistral gibi LLM'lerin ONNX formatındaki sürümleri Windows AI, iOS ve Android'de yerel çıkarım için Hugging Face üzerinden yayınlanmaktadır.

ONNX ile Üretim Model Dağıtımı

ONNX, model eğitim ortamı ile dağıtım ortamı arasındaki köprüdür. PyTorch'ta model eğit, torch.onnx.export() ile dışa aktar, ONNX Runtime ile çıkarım yap. Avantajlar üretimde şöyle somutlaşır: Python bağımlılığı kaldırılabilir; C++ veya .NET uygulamalarına gömülebilir. Edge dağıtım için Windows ML, Apple CoreML ve Android NNAPI ONNX modellerini cihaz üzerinde çalıştırır. Sınırlamalar: dinamik kontrol akışı (if/for döngüleri) içeren özel katmanlar dönüştürülürken sorun çıkarabilir; ONNX opset versiyonu eşleşmesi ve operatör desteği pratik dikkat noktalarıdır.

Büyük Dil Modelleri ve ONNX Runtime GenAI

  • check_circle Phi-3 Mini ve Windows AI: Microsoft'un Phi-3 Mini modeli ONNX formatında yayınlandı; Windows Copilot+ PC'lerde NPU üzerinde DirectML aracılığıyla yerel çıkarım yapılmaktadır.
  • check_circle Llama ve Mistral ONNX: Meta ve Mistral AI'ın açık ağırlıklı LLM'leri Hugging Face'te .onnx formatında sunulmakta, mobil uygulamalarda internet bağlantısı gerekmeden çalıştırılmaktadır.
  • check_circle Transformers.js ile Tarayıcı Çıkarımı: Hugging Face'in Transformers.js kütüphanesi ONNX Runtime Web üzerine inşa edilmiştir; duygu analizi, NER ve metin oluşturma gibi görevler sunucu olmadan tarayıcıda çalışır.
  • check_circle ONNX Runtime GenAI Kütüphanesi: LLM'ler için özel optimizasyonlar sunar: KV-cache yönetimi, speculative decoding ve döngülü token jenerasyonu ile yüksek verimli dil modeli çıkarımı.

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-3×, uyumlu GPU'da TensorRT ile 3-5× hızlanma tipiktir. BERT gibi transformer modellerde operator fusion büyük kazanım sağlar.
  • check_circle ONNX Runtime nedir?: ONNX formatındaki modelleri CPU, CUDA, TensorRT ve CoreML dahil çeşitli donanım hızlandırıcılarında verimli çalıştıran, Microsoft destekli açık kaynaklı çıkarım motorudur.
  • check_circle PyTorch modelini ONNX'e nasıl dönüştürürüm?: torch.onnx.export(model, dummy_input, "model.onnx", opset_version=17) ile dışa aktarılır. Dinamik boyutlar için dynamic_axes parametresi kullanılır. Ardından ONNX Runtime veya TensorRT ile çalıştırılabilir.
  • check_circle ONNX ne zaman kullanılmalıdır?: Model farklı programlama dili veya donanımda çalıştırılacaksa, edge/mobil dağıtım yapılacaksa veya Python olmadan üretime alınacaksa ONNX doğal seçimdir. Aynı çerçeve içinde kalınıyorsa gerek olmayabilir.