TensorFlow Lite ve TensorFlow operatör uyumluluğu

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ü, yaygın çı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 Converter, model yapısını analiz etmek ve doğrudan desteklenen operatörlerle uyumlu hale getirmek için optimizasyonlar uygulamak üzere tasarlanmıştır. Örneğin, modelinizdeki makine öğrenimi işleçlerine bağlı olarak dönüştürücü, bu işleçleri TensorFlow Lite karşılıklarıyla eşlemek için bu işleçleri atlayabilir veya birleştirebilir .

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, işlemlerin nasıl dönüştürüldüğünü ve optimize edildiğini ve bu sürecin getirdiği sınırlamaları dikkatlice değerlendirmektir.

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, bileşik işleçler veya sizin tanımladığınız yeni işleçler biçiminde özel işleçler de içerebilir. Aşağıdaki diyagram bu operatörler arasındaki ilişkileri göstermektedir.

TensorFlow operatörleri

Bu makine öğrenimi modeli işleçleri aralığında, 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. ( Önerilir )
  2. Yerleşik işleçlere ve belirli TensorFlow çekirdek işleçlerine sahip modeller.
  3. Yerleşik işleçler, TensorFlow temel işleçler ve/veya özel işleçler içeren modeller.

Modeliniz yalnızca TensorFlow Lite tarafından doğal olarak desteklenen işlemleri içeriyorsa, onu dönüştürmek için herhangi bir ek işarete ihtiyacınız yoktur. Bu önerilen yoldur, çü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ılavuzu ile başlayabilirsiniz. Yerleşik operatörlerin listesi için TensorFlow Lite Ops sayfasına bakın.

Çekirdek kitaplıktan belirli TensorFlow işlemlerini dahil etmeniz gerekiyorsa, bunu dönüşüm 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ülen modelinize özel işleçler dahil etme son seçeneğinden kaçının. Özel işleçler , birden çok ilkel TensorFlow çekirdek işleci birleştirilerek oluşturulan veya tamamen yeni bir tane tanımlayarak oluşturulan işleçlerdir. Özel işleçler dönüştürüldüğünde, yerleşik TensorFlow Lite kitaplığının dışında bağımlılıklara neden olarak genel modelin boyutunu artırabilirler. Özel işlemler, mobil veya cihaz dağıtımı için özel olarak oluşturulmadıysa, sunucu ortamına kıyasla kaynakları kısıtlı cihazlara dağıtıldığında 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

TensorFlow Lite işlemlerinin çoğu hem kayan noktalı ( 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 bunu yapmaz.

İşlemlerin farklı sürümlerini kullanmanın yanı sıra, kayan noktalı ve nicemlenmiş modeller arasındaki diğer fark, bunların dönüştürülme şeklidir. Nicemli dönüştürme, tensörler için dinamik aralık bilgisi gerektirir. Bu, model eğitimi sırasında "sahte nicemleme", bir kalibrasyon veri seti aracılığıyla aralık bilgisi almayı veya "anında" aralık tahmini yapmayı gerektirir. Daha fazla ayrıntı için kuantizasyona bakın.

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

Bir dizi TensorFlow işlemi, doğrudan eşdeğerleri olmasa da TensorFlow Lite tarafından işlenebilir. Bu, grafikten basitçe kaldırı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. Bazı desteklenen 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:

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