Hızla gelişen yapay zeka (AI) ve makine öğrenimi (ML) alanında, modelleri farklı araçlar ve platformlar arasında verimli bir şekilde taşımak çok önemlidir. ONNX (Open Neural Network Exchange), özellikle yapay zeka modelleri için tasarlanmış açık kaynaklı bir format sağlayarak bu zorluğun üstesinden geliyor. Evrensel bir çevirmen görevi görür ve geliştiricilerin bir modeli tek bir çerçevede eğitmesine olanak tanır, örneğin PyTorchgibi başka bir çerçeve veya çıkarım motoru kullanarak dağıtın. TensorFlow veya ONNX Runtime gibi özel çalışma zamanları. Bu birlikte çalışabilirlik, araştırmadan üretime giden yolu kolaylaştırarak yapay zeka ekosisteminde işbirliğini ve esnekliği teşvik eder. ONNX başlangıçta Facebook AI Research ve Microsoft Research tarafından geliştirilmiştir ve şu anda gelişen bir topluluk projesidir.
Alaka düzeyi ONNX
ONNX 'in temel değeri, aşağıdakilerin teşvik edilmesinde yatmaktadır taşınabilirlik ve birlikte çalışabilirlik yapay zeka geliştirme yaşam döngüsü içinde. Geliştiriciler, belirli bir çerçevenin ekosistemine kilitlenmek yerine, modelleri farklı araçlar ve donanım platformları arasında serbestçe taşımak için ONNX 'ten yararlanabilirler. Ortak bir operatör seti tanımlayarak (ONNX'in yapı taşları sinir ağları) ve standart bir dosya formatı (.onnx
), ONNX bir modelin yapısının ve öğrenilen parametrelerinin (ağırlıklar) tutarlı bir şekilde temsil edilir. Bu, özellikle aşağıdaki kullanıcılar için faydalıdır Ultralytics YOLO modelleri için basit yöntemler sağladığından, Ultralytics Modelleri ONNX formatına aktarma. Bu dışa aktarma özelliği, kullanıcıların aşağıdaki gibi modelleri almasına olanak tanır YOLOv8 veya en son YOLO11 ve bunları çok çeşitli donanım ve yazılım platformlarında, genellikle optimize edilmiş çıkarım motorları gelişmiş performans ve donanım hızlandırma.
ONNX Nasıl Çalışır?
ONNX , birkaç temel teknik özellik sayesinde birlikte çalışabilirlik sağlar:
- Ortak Model Gösterimi: ONNX , konvolüsyon veya aktivasyon fonksiyonları gibi standart bir hesaplama grafiği operatörleri seti ve ortak bir veri tipi sistemi tanımlar. Bir derin öğrenme modeli ONNX'e dönüştürüldüğünde, mimarisi ve parametreleri bu ortak temsile çevrilir.
- Grafik Tabanlı Yapı: ONNX 'teki modeller hesaplama grafikleri olarak temsil edilir. Grafikteki düğümler işlemleri (matris çarpımı veya ReLU işlevi uygulama gibi) temsil ederken, kenarlar bu işlemler arasındaki veri akışını (tensörler) temsil eder. Bu grafik yapısı, birçok makine öğrenimi çerçevesinde ortaktır ve daha kolay dönüştürmeyi kolaylaştırır.
- Versiyonlama Sistemi: ONNX , operatör setleri (opsets) için sürümleri korur. Bu, geriye dönük uyumluluğu sağlayarak eski operatör setleriyle oluşturulan modellerin bu sürümleri destekleyen daha yeni çalışma zamanlarında çalışmaya devam etmesine olanak tanır.
- Genişletilebilirlik: ONNX çekirdek bir operatör seti tanımlarken, aynı zamanda özel operatörlere izin vererek çerçevelerin ve donanım satıcılarının özel işlevleri desteklemesini sağlar.
- Ekosistem ve Araçlar: ONNX'i, çeşitli çerçevelerden modelleri dönüştürmek için kütüphaneler de dahil olmak üzere zengin bir ekosistem çevreliyor (örneğin PyTorch veya TensorFlow), ONNX grafiklerini görselleştirmek ve hata ayıklamak için araçlar ve farklı donanımlarda yüksek performanslı çıkarım için optimize edilmiş ONNX Runtime gibi çalışma zamanları (CPU, GPU, özel hızlandırıcılar).
Uygulamaları ONNX
ONNX , model eğitim ortamları ile çeşitli dağıtım hedefleri arasında önemli bir köprü görevi görür. İşte iki somut örnek:
- Bilgisayarla Görme Modellerini Uç Cihazlara Dağıtma: Bir geliştirici, Ultralytics YOLO modeli gibi bir nesne algılama modelini aşağıdakileri kullanarak eğitir PyTorch GPU'lara sahip güçlü bir sunucuda. Kaynak kısıtlaması olan uç cihazlara (akıllı kamera veya drone gibi) yerleştirmek için modeli ONNX formatında dışa aktarırlar. Bu ONNX dosyası daha sonra aşağıdaki gibi araçlar kullanılarak optimize edilebilir NVIDIA TensorRT veya Intel' in OpenVINO'sunu kullanabilir ve doğrudan cihaz üzerinde verimli, gerçek zamanlı çıkarım için konuşlandırılabilir. Bu esneklik, çeşitli model dağıtım seçeneklerinde vurgulanmaktadır. Farklı sektörlerdeki örnekler için Ultralytics çözümlerini keşfedebilirsiniz.
- Çerçeveler Arası İşbirliği ve Dağıtım: Bir araştırma ekibi aşağıdakileri kullanarak yeni bir model mimarisi geliştiriyor TensorFlow. Başka bir ekip ise bu modeli, aşağıdaki yöntemlerle oluşturulmuş mevcut bir uygulamaya entegre etmek istiyor PyTorch. TensorFlow modelini ONNX'e aktararak, ikinci ekip PyTorch ortamlarında kolayca yükleyip kullanabilir veya orijinal TensorFlow çerçevesine ihtiyaç duymadan farklı sunucu yapılandırmalarında(bulut veya şirket içi) standartlaştırılmış ONNX Çalışma Zamanını kullanarak dağıtabilir. Bu, daha kolay model sunumu ve entegrasyonunu teşvik eder.
ONNX vs. İlgili Kavramlar
ONNX 'i ilgili terimlerden ayırt etmek önemlidir:
- Çerçeveye Özel Formatlar: PyTorch'unki gibi formatlar
.pt
/.pth
veya TensorFlow'un SavedModel'i kendi çerçevelerine özgüdür. ONNX , bu formatlar arasında dönüşüme veya ortak bir çalışma zamanı aracılığıyla dağıtıma izin veren bir aracı görevi görür. TorchScript PyTorch model serileştirmesi için başka bir formattır, bazen ONNX dışa aktarımına alternatif veya öncü olarak kullanılır. - Çıkarım Motorları/Çalışma Zamanları: ONNX Runtime gibi araçlar, TensorRTve OpenVINO ML modellerini verimli bir şekilde çalıştırmak için tasarlanmış yazılım kütüphaneleridir. Bu motorların çoğu ONNX modellerini kullanabilir ve genellikle belirli donanım hedefleri için daha fazla optimizasyon ( niceleme veya grafik füzyonu gibi) uygular. ONNX , bu motorlar için standartlaştırılmış model girdisi sağlar.
Özetle ONNX , makine öğrenimi operasyonları (MLOps) işlem hattında esneklik ve birlikte çalışabilirlik sağlamak için hayati bir standarttır ve geliştiricilerin çerçeve sınırlamaları tarafından kısıtlanmadan eğitim ve dağıtım için en iyi araçları seçmelerini sağlar. Ultralytics HUB gibi platformlar, model geliştirmeden gerçek dünya uygulamasına kadar olan yolculuğu basitleştirmek için bu tür formatlardan yararlanır.