TensorFlow Lite ve TensorFlow operatör uyumluluğu

Modelinizde kullandığınız makine öğrenimi (ML) operatörleri, TensorFlow modelini TensorFlow Lite formatına dönüştürme sürecini etkileyebilir. TensorFlow Lite dönüştürücü, ortak çıkarım modellerinde kullanılan sınırlı sayıda TensorFlow işlemini destekler; bu, her modelin doğrudan dönüştürülemeyeceği anlamına gelir. Dönüştürücü aracı ek operatörler eklemenize olanak tanır, ancak bir modeli bu şekilde dönüştürmek aynı zamanda modelinizi yürütmek için kullandığınız TensorFlow Lite çalışma zamanı ortamını da değiştirmenizi gerektirir; bu da Google Play hizmetleri gibi standart çalışma zamanı dağıtım seçeneklerini kullanma yeteneğinizi sınırlayabilir.

TensorFlow Lite Dönüştürücü, model yapısını analiz etmek ve onu doğrudan desteklenen operatörlerle uyumlu hale getirmek amacıyla optimizasyonlar uygulamak için tasarlanmıştır. Örneğin, modelinizdeki ML operatörlerine bağlı olarak dönüştürücü, bu operatörleri TensorFlow Lite benzerleriyle eşlemek için bu operatörleri atlayabilir veya birleştirebilir .

Desteklenen işlemlerde bile performans nedeniyle bazen belirli kullanım kalıpları beklenir. TensorFlow Lite ile kullanılabilecek bir TensorFlow modelinin nasıl oluşturulacağını anlamanın en iyi yolu, bu sürecin getirdiği sınırlamalarla birlikte işlemlerin nasıl dönüştürüldüğünü ve optimize edildiğini dikkatlice düşünmektir.

Desteklenen operatörler

TensorFlow Lite yerleşik operatörleri, TensorFlow çekirdek kütüphanesinin parçası olan operatörlerin bir alt kümesidir. TensorFlow modeliniz ayrıca kompozit operatörler veya sizin tarafınızdan tanımlanan yeni operatörler formundaki özel operatörleri de içerebilir. Aşağıdaki diyagram bu operatörler arasındaki ilişkileri göstermektedir.

TensorFlow operatörleri

Bu ML model operatörleri aralığında, dönüştürme süreci tarafından desteklenen 3 tür model vardır:

  1. Yalnızca TensorFlow Lite yerleşik operatöre sahip modeller. ( Tavsiye edilen )
  2. Yerleşik operatörlere ve seçili TensorFlow çekirdek operatörlerine sahip modeller.
  3. Yerleşik operatörlere, TensorFlow çekirdek operatörlerine ve/veya özel operatörlere sahip modeller.

Modeliniz yalnızca TensorFlow Lite tarafından yerel olarak desteklenen işlemleri içeriyorsa, onu dönüştürmek için herhangi bir ek işarete ihtiyacınız yoktur. Önerilen yol budur çünkü bu tür bir model sorunsuz bir şekilde dönüştürülür ve varsayılan TensorFlow Lite çalışma zamanı kullanılarak optimize edilmesi ve çalıştırılması daha kolaydır. Ayrıca modeliniz için Google Play hizmetleri gibi daha fazla dağıtım seçeneğiniz de vardır. TensorFlow Lite dönüştürücü kılavuzunu kullanmaya başlayabilirsiniz. Yerleşik operatörlerin listesi için TensorFlow Lite Ops sayfasına bakın.

Çekirdek kitaplıktan belirli TensorFlow işlemlerini eklemeniz gerekiyorsa bunu dönüştürme sırasında belirtmeli ve çalışma zamanınızın bu işlemleri içerdiğinden emin olmalısınız. Ayrıntılı adımlar için TensorFlow operatörlerini seçme konusuna bakın.

Mümkün olduğunda, dönüştürülmüş modelinize özel operatörler ekleme şeklindeki son seçenekten kaçının. Özel operatörler , birden fazla temel TensorFlow çekirdek operatörünün birleştirilmesiyle oluşturulan veya tamamen yeni bir operatör tanımlanarak oluşturulan operatörlerdir. Özel operatörler dönüştürüldüğünde yerleşik TensorFlow Lite kitaplığının dışında bağımlılıklar oluşturarak genel modelin boyutunu artırabilirler. Özel operasyonlar, özellikle mobil veya cihaz konuşlandırması için oluşturulmamışsa, kaynak kısıtlı cihazlara dağıtıldığında sunucu ortamına kıyasla daha kötü performansla sonuçlanabilir. Son olarak, tıpkı belirli TensorFlow çekirdek operatörlerinin dahil edilmesinde olduğu gibi, özel operatörler de model çalışma zamanı ortamını değiştirmenizi gerektirir, bu da sizi Google Play hizmetleri gibi standart çalışma zamanı hizmetlerinden yararlanmanızı kısıtlar.

Desteklenen türler

TensorFlow Lite operasyonlarının çoğu hem kayan nokta ( float32 ) hem de nicemlenmiş ( uint8 , int8 ) çıkarımı hedefler, ancak birçok işlem henüz tf.float16 ve dizeler gibi diğer türler için bunu yapmamaktadır.

İşlemlerin farklı versiyonlarını kullanmanın yanı sıra, kayan noktalı modeller ile nicemlenmiş modeller arasındaki diğer fark, bunların dönüştürülme şeklidir. Nicelenmiş dönüşüm, tensörler için dinamik aralık bilgisi gerektirir. Bu, model eğitimi sırasında "sahte niceleme", bir kalibrasyon veri seti aracılığıyla aralık bilgisinin alınması veya "anında" aralık tahmininin yapılmasını gerektirir. Daha fazla ayrıntı için kuantizasyona bakın.

Basit dönüşümler, sürekli katlama ve birleştirme

Doğrudan eşdeğerleri olmasa da bir dizi TensorFlow işlemi TensorFlow Lite tarafından gerçekleştirilebilir. Bu, grafikten kolayca çıkarılabilen ( tf.identity ), tensörlerle değiştirilebilen ( tf.placeholder ) veya daha karmaşık işlemlerle birleştirilebilen ( tf.nn.bias_add ) işlemler için geçerlidir. Desteklenen bazı işlemler bile bazen bu süreçlerden biri aracılığıyla kaldırılabilir.

Genellikle grafikten kaldırılan TensorFlow işlemlerinin kapsamlı olmayan bir listesi aşağıda verilmiştir:

Deneysel İşlemler

Aşağıdaki TensorFlow Lite işlemleri mevcuttur ancak özel modeller için hazır değildir:

  • CALL
  • CONCAT_EMBEDDINGS
  • CUSTOM
  • EMBEDDING_LOOKUP_SPARSE
  • HASHTABLE_LOOKUP
  • LSH_PROJECTION
  • SKIP_GRAM
  • SVDF