Modelinizde kullandığınız makine öğrenimi (ML) operatörleri, TensorFlow modelini LiteRT biçimine dönüştürme sürecini etkileyebilir. LiteRT dönüştürücü, yaygın çıkarım modellerinde kullanılan sınırlı sayıda TensorFlow işlemini destekler. Bu nedenle, her model doğrudan dönüştürülemez. Dönüştürücü aracı, ek operatörler eklemenize olanak tanır. Ancak bir modeli bu şekilde dönüştürmek, modelinizi yürütmek için kullandığınız LiteRT çalışma zamanı ortamını değiştirmenizi de gerektirir. Bu durum, Google Play Hizmetleri gibi standart çalışma zamanı dağıtım seçeneklerini kullanma olanağınızı sınırlayabilir.
LiteRT Dönüştürücü, 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 operatörlerine bağlı olarak dönüştürücü, bu operatörleri LiteRT karşılıklarıyla eşlemek için kısaltabilir veya birleştirebilir.
Desteklenen işlemler için bile bazen performans nedeniyle belirli kullanım kalıpları beklenir. LiteRT ile kullanılabilecek bir TensorFlow modeli oluşturmayı anlamanın en iyi yolu, işlemlerin nasıl dönüştürüldüğünü ve optimize edildiğini ve bu süreçte uygulanan sınırlamaları dikkatlice incelemektir.
Desteklenen operatörler
LiteRT'nin yerleşik operatörleri, TensorFlow çekirdek kitaplığının bir parçası olan operatörlerin bir alt kümesidir. TensorFlow modeliniz, birleşik operatörler veya sizin tarafınızdan tanımlanan yeni operatörler şeklinde özel operatörler de içerebilir. Aşağıdaki şemada bu operatörler arasındaki ilişkiler gösterilmektedir.

Bu makine öğrenimi modeli operatörleri aralığında, dönüştürme süreci tarafından desteklenen 3 model türü vardır:
- Yalnızca LiteRT yerleşik operatörüne sahip modeller. (Önerilen)
- Yerleşik operatörlere sahip modeller ve TensorFlow çekirdek operatörlerini seçin.
- Yerleşik operatörler, TensorFlow çekirdek operatörleri ve/veya özel operatörler içeren modeller.
Modeliniz yalnızca LiteRT tarafından yerel olarak desteklenen işlemleri içeriyorsa dönüştürmek için ek işaretlere ihtiyacınız yoktur. Bu tür bir model sorunsuz bir şekilde dönüştürüleceği ve varsayılan LiteRT çalışma zamanı kullanılarak daha kolay optimize edilip çalıştırılacağı için bu yol önerilir. Ayrıca, modeliniz için Google Play Hizmetleri gibi daha fazla dağıtım seçeneğiniz vardır. LiteRT dönüştürücü kılavuzunu kullanarak başlayabilirsiniz. Yerleşik operatörlerin listesi için LiteRT Ops sayfasına bakın.
Temel kitaplıktaki belirli TensorFlow işlemlerini dahil etmeniz gerekiyorsa bunu dönüştürme sırasında belirtmeniz ve çalışma zamanınızın bu işlemleri içerdiğinden emin olmanız gerekir. 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 seçeneğini kullanmaktan kaçının. Özel operatörler, birden fazla temel TensorFlow operatörünü birleştirerek oluşturulan veya tamamen yeni tanımlanan operatörlerdir. Özel operatörler dönüştürüldüğünde, yerleşik LiteRT kitaplığının dışındaki bağımlılıklar nedeniyle modelin genel boyutu artabilir. Özel işlemler, mobil veya cihaz dağıtımı için özel olarak oluşturulmamışsa kaynak kısıtlamalı cihazlara dağıtıldığında sunucu ortamına kıyasla daha kötü performans gösterebilir. Son olarak, belirli TensorFlow temel operatörlerini dahil etme işleminde olduğu gibi, özel operatörler de model çalışma zamanı ortamını değiştirmenizi gerektirir. Bu durum, Google Play Hizmetleri gibi standart çalışma zamanı hizmetlerinden yararlanmanızı engeller.
Desteklenen türler
Çoğu LiteRT işlemi hem kayan nokta (float32) hem de nicelendirilmiş (uint8, int8) çıkarımı hedefler. Ancak birçok 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. Kuantize edilmiş dönüştürme için tensörlerin dinamik aralık bilgisi gerekir. Bu işlem için model eğitimi sırasında "sahte nicemleme" yapılması, bir kalibrasyon veri kümesi aracılığıyla aralık bilgilerinin alınması veya "anında" aralık tahmini yapılması gerekir. Daha fazla bilgi için nicelendirme bölümüne bakın.
Basit dönüşümler, sabit katlama ve birleştirme
Doğrudan eşdeğeri olmasa da bazı TensorFlow işlemleri LiteRT tarafından işlenebilir. Bu durum, grafikten kolayca kaldırılabilen (tf.identity), tensörlerle değiştirilebilen (tf.placeholder) veya daha karmaşık işlemlere birleştirilebilen (tf.nn.bias_add) işlemler için geçerlidir. Desteklenen bazı işlemler bile bazen bu süreçlerden biriyle kaldırılabilir.
Genellikle grafikten kaldırılan TensorFlow işlemlerinin kapsamlı olmayan bir listesini aşağıda bulabilirsiniz:
tf.addtf.debugging.check_numericstf.constanttf.divtf.dividetf.fake_quant_with_min_max_argstf.fake_quant_with_min_max_varstf.identitytf.maximumtf.minimumtf.multiplytf.no_optf.placeholdertf.placeholder_with_defaulttf.realdivtf.reduce_maxtf.reduce_mintf.reduce_sumtf.rsqrttf.shapetf.sqrttf.squaretf.subtracttf.tiletf.nn.batch_norm_with_global_normalizationtf.nn.bias_addtf.nn.fused_batch_normtf.nn.relutf.nn.relu6
Deneysel İşlemler
Aşağıdaki LiteRT işlemleri mevcuttur ancak özel modeller için hazır değildir:
CALLCONCAT_EMBEDDINGSCUSTOMEMBEDDING_LOOKUP_SPARSEHASHTABLE_LOOKUPLSH_PROJECTIONSKIP_GRAMSVDF