Ana Sayfa

ONNX Runtime ve CoreML'in Gizli FP16 Dönüşümü

1 dk okuma

Makale, ONNX Runtime'ın CoreMLExecutionProvider ile kullanıldığında modelleri varsayılan olarak FP16'ya (16-bit kayan nokta) dönüştürerek tahminlerde beklenmedik farklılıklara yol açabileceği önemli bir konuyu ele alıyor. Yazar, "EyesOff" adlı bir modeli benchmark ederken bu durumu fark etmiş; ONNX modelinin Mac GPU'da (MPS) çalıştırılan versiyonu ile CPU'da veya PyTorch ile çalıştırılan versiyonları arasında metriklerde tutarsızlıklar gözlemlemiştir. Bu farklılıklar, kayan nokta hesaplamalarından kaynaklanabilecek küçük sapmalardan daha büyüktü ve modelin davranışını etkiliyordu.

Yapılan detaylı incelemelerde, ONNX Runtime'ın CoreML'e model dönüştürme sırasında varsayılan olarak FP16'ya cast etmesinin bu tutarsızlığa neden olduğu ortaya çıktı. Özellikle, bazı tahminlerin eşik değerinin (0.5) diğer tarafına geçmesiyle, karışıklık matrislerinde bile küçük değişiklikler (örneğin, iki tahminin negatiften pozitife dönmesi) meydana geliyordu. Bu durum, modelin doğruluk ve güvenilirlik açısından kritik olabilecek sonuçlarını doğrudan etkileyebilir.

Bu sorunu gidermek için, ONNX Runtime'da InferenceSession oluşturulurken CoreMLExecutionProvider için "ModelFormat": "MLProgram" argümanının açıkça belirtilmesi gerektiği vurgulanıyor. Bu yapılandırma, modelin Mac GPU'da çalışırken FP32 (32-bit kayan nokta) hassasiyetinde kalmasını sağlayarak tahmin tutarsızlıklarının önüne geçiyor. Makale, geliştiricilerin modellerini dağıtırken bu tür sessiz dönüşümlere karşı dikkatli olmaları gerektiğini ve hassasiyet ayarlarını kontrol etmelerinin önemini gösteriyor.

İçgörü

Geliştiricilerin ONNX Runtime ve CoreML kullanırken modellerinin hassasiyet ayarlarını kontrol etmemesi, tahminlerde sessiz ve önemli farklılıklara yol açabilir.

Kaynak