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.