compare ONNX ve ONNX Runtime Farkı
ONNX, PyTorch, TensorFlow ve diğer çerçevelerden modelleri dışa aktarmak için kullanılan ara temsil (interchange) formatıdır. ONNX Runtime ise bu formatı çalıştıran motordur. Bir model bir kez ONNX'e dönüştürüldüğünde ONNX Runtime sayesinde Python'dan JavaScript'e, Windows'tan Android'e kadar herhangi bir ortamda çalıştırılabilir.
Neden ONNX Runtime?
devices Çapraz Platform
Windows, Linux, macOS, iOS, Android, tarayıcı (WASM/WebGPU) — tek model çok ortam.
speed Hız Optimizasyonu
Graph optimizasyonu ve donanım hızlandırıcı (CUDA, DirectML, CoreML) desteğiyle çıkarımı hızlandırır.
hub Geniş Model Desteği
ResNet, BERT, GPT, Whisper ve binlerce diğer model ONNX formatında mevcuttur.
ONNX Runtime Özellikleri ve Uygulama Alanları
- check_circle Platform ve Execution Provider Desteği: CPU (varsayılan), CUDA (NVIDIA GPU), TensorRT (NVIDIA optimize), CoreML (Apple), DirectML (Windows GPU), ROCm (AMD GPU), OpenVINO (Intel) execution provider'ları. Tek kod yazılır, farklı donanımlarda en uygun provider otomatik seçilir.
- check_circle Optimizasyon Teknikleri: Graph optimizasyonu: gereksiz operatörleri kaldır, ardışık işlemleri birleştir (operator fusion). Kuantizasyon: FP32 → INT8/INT4; bellek %75 azalır, hız 2-4× artar, minimal doğruluk kaybı. Statik kuantizasyon: kalibrasyon verisiyle sabit ölçek; dinamik kuantizasyon: çalışma zamanında ölçek belirlenir.
- check_circle Transformers.js: Tarayıcıda ONNX Runtime: Hugging Face'in Transformers.js kütüphanesi ONNX Runtime Web kullanır. BERT, DistilBERT, Whisper gibi modeller doğrudan tarayıcıda çalışır. Gizlilik: veri sunucuya gönderilmez; tamamen istemci tarafı çıkarım. WebGPU desteğiyle GPU hızlandırma tarayıcıda mümkün.
ONNX ve ONNX Runtime: Framework Bağımsız Çıkarım
ONNX (Open Neural Network Exchange): sinir ağı modellerini framework'ten bağımsız temsil eden açık format. Farklı framework'ler ONNX formatına model ihraç edebilir: PyTorch (torch.onnx.export), TensorFlow (tf2onnx), scikit-learn (sklearn-onnx). ONNX Runtime: bu modelleri yüksek performansla çalıştıran çıkarım motoru. Üretim senaryoları: PyTorch'ta eğit → ONNX'e dönüştür → ONNX Runtime ile mobile/edge/cloud'da sun. Performans: genellikle PyTorch'tan 2-5× daha hızlı çıkarım; TensorRT ile NVIDIA GPU'da ek 2-3× hız. Destekleyen şirketler: Microsoft, AWS, Facebook, Nvidia, Intel.
quiz Sık Sorulan Sorular
- check_circle Transformers.js ONNX Runtime kullanır mı?: Evet. Transformers.js, tarayıcıda ONNX Runtime Web (ort-web) paketini kullanır; WebAssembly veya WebGPU backend seçilebilir.
- check_circle PyTorch modelini ONNX'e nasıl dönüştürürüm?: `torch.onnx.export()` fonksiyonu veya `optimum` kütüphanesi kullanılır. HuggingFace modelleri için `optimum export onnx` komutu en kolay yoldur.
- check_circle ONNX Runtime nedir?: ONNX formatındaki makine öğrenmesi modellerini CPU, GPU ve diğer donanımlarda yüksek performansla çalıştıran çapraz platform çıkarım motorudur. Microsoft tarafından geliştirilmiş ve açık kaynak olarak sunulmuştur.
- check_circle ONNX Runtime ne zaman kullanılır?: Model çıkarımını production'da hızlandırmak istediğinizde. Farklı platformlarda (mobile, web, cloud) aynı modeli çalıştırmanız gerektiğinde. PyTorch/TF bağımlılığını kaldırarak daha hafif deployment oluşturmak istediğinizde.
- check_circle ONNX Runtime ile kuantizasyon nasıl yapılır?: onnxruntime.quantization modülü kullanılır. Statik kuantizasyon: quantize_static(model_path, qmodel_path, calibration_data_reader). Dinamik kuantizasyon: quantize_dynamic(model_path, qmodel_path) — kalibrasyon verisi gerekmez. Sonuç: INT8 model orijinale kıyasla 2-4× daha hızlı, ~%1-3 doğruluk kaybı.
- check_circle Hugging Face modelleri ONNX Runtime ile çalışabilir mi?: Evet. optimum kütüphanesi (pip install optimum[onnxruntime]) bu dönüşümü kolaylaştırır. optimum-cli export onnx --model bert-base-uncased model/ komutuyla Hugging Face modeli ONNX'e aktarılır ve ORT ile çalıştırılır. Transformers.js da Hugging Face modellerini tarayıcıda ONNX Runtime üzerinden çalıştırır.