TensorFlow Lite ve TensorFlow operatör uyumluluğu

Koleksiyonlar ile düzeninizi koruyun İçeriği tercihlerinize göre kaydedin ve kategorilere ayırın.

Modelinizde kullandığınız makine öğrenimi (ML) operatörleri, bir 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ülebilir olmadığı anlamına gelir. Dönüştürücü aracı, ek operatörler eklemenize izin verir, ancak bir modeli bu şekilde dönüştürmek, modelinizi yürütmek için kullandığınız TensorFlow Lite çalışma zamanı ortamını değiştirmenizi gerektirir; bu, 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ü, doğrudan desteklenen operatörlerle uyumlu hale getirmek için model yapısını analiz etmek ve optimizasyonları uygulamak üzere tasarlanmıştır. Örneğin, modelinizdeki ML operatörlerine bağlı olarak dönüştürücü, onları TensorFlow Lite karşılıklarıyla eşleştirmek için bu operatörleri devre dışı bırakabilir veya kaynaştırabilir .

Desteklenen işlemler için bile, performans nedenleriyle 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 kitaplığının parçası olan operatörlerin bir alt kümesidir. TensorFlow modeliniz ayrıca, sizin tarafınızdan tanımlanan bileşik operatörler veya yeni operatörler biçiminde özel operatörler içerebilir. Aşağıdaki diyagram bu operatörler arasındaki ilişkileri göstermektedir.

TensorFlow operatörleri

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

  1. Yalnızca yerleşik TensorFlow Lite operatörüne sahip modeller. ( Önerilen )
  2. Yerleşik operatörlere ve belirli TensorFlow çekirdek operatörlerine sahip modeller.
  3. Yerleşik operatörler, TensorFlow çekirdek operatörleri ve/veya özel operatörler içeren modeller.

Modeliniz yalnızca yerel olarak TensorFlow Lite tarafından desteklenen işlemleri içeriyorsa, onu dönüştürmek için herhangi bir ek bayrağa ihtiyacınız yoktur. Bu model türü sorunsuz bir şekilde dönüştürüleceğinden ve varsayılan TensorFlow Lite çalışma zamanını kullanarak optimize edilmesi ve çalıştırılması daha kolay olduğundan önerilen yol budur. 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ılavuzuyla başlayabilirsiniz . Yerleşik operatörlerin listesi için TensorFlow Lite Ops sayfasına bakın.

Çekirdek kitaplıktan seçilen 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örleri dahil etme son seçeneğinden kaçının. Özel operatörler , birden çok ilkel TensorFlow çekirdek operatörünü birleştirerek veya tamamen yeni bir tane tanımlayarak 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 dağıtımı için oluşturulmadıysa, kaynak kısıtlı cihazlara dağıtıldığında bir sunucu ortamına kıyasla daha kötü performansa neden olabilir. Son olarak, tıpkı belirli TensorFlow çekirdek operatörlerini dahil etmek gibi, özel operatörler, Google Play hizmetleri gibi standart çalışma zamanı hizmetlerinden yararlanmanızı sınırlayan model çalışma zamanı ortamını değiştirmenizi gerektirir.

Desteklenen türler

Çoğu TensorFlow Lite işlemi hem kayan nokta ( float32 ) hem de nicelenmiş ( uint8 , int8 ) çıkarımı hedefler, ancak çoğu işlem henüz tf.float16 ve dizeler gibi diğer türler için değildir.

İşlemlerin farklı versiyonlarını kullanmanın yanı sıra, kayan nokta ve nicelleştirilmiş modeller arasındaki diğer fark, dönüştürülme biçimleridir. Nicelenmiş dönüştürme, 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 menzil bilgisi almayı veya "anında" menzil tahmini yapmayı gerektirir. Daha fazla ayrıntı için kuantizasyona bakın.

Doğrudan dönüşümler, sürekli katlama ve eritme

Bir dizi TensorFlow işlemi, doğrudan eşdeğeri olmasa da TensorFlow Lite tarafından işlenebilir. Bu, grafikten kolayca çıkarılabilen ( tf.identity ), tensörlerle değiştirilebilen ( tf.placeholder ) veya daha karmaşık işlemlerle kaynaştırılabilen ( tf.nn.bias_add ) işlemler için geçerlidir. Hatta bazı desteklenen işlemler bazen bu işlemlerden biri yoluyla kaldırılabilir.

Genellikle grafikten kaldırılan TensorFlow işlemlerinin kapsamlı olmayan bir listesi:

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