Terima kasih telah mendengarkan Google I/O. Lihat semua sesi sesuai permintaan Tonton sesuai permintaan

Kompatibilitas operator TensorFlow Lite dan TensorFlow

Operator pembelajaran mesin (ML) yang Anda gunakan dalam model Anda dapat memengaruhi proses konversi model TensorFlow ke format TensorFlow Lite. Konverter TensorFlow Lite mendukung operasi TensorFlow dalam jumlah terbatas yang digunakan dalam model inferensi umum, yang berarti tidak semua model dapat dikonversi secara langsung. Alat pengonversi memungkinkan Anda menyertakan operator tambahan, tetapi mengonversi model dengan cara ini juga mengharuskan Anda mengubah lingkungan waktu proses TensorFlow Lite yang Anda gunakan untuk menjalankan model, yang dapat membatasi kemampuan Anda menggunakan opsi penerapan waktu proses standar, seperti layanan Google Play .

TensorFlow Lite Converter dirancang untuk menganalisis struktur model dan menerapkan pengoptimalan agar kompatibel dengan operator yang didukung secara langsung. Misalnya, bergantung pada operator ML dalam model Anda, konverter dapat menghapus atau memadukan operator tersebut untuk memetakannya ke mitra TensorFlow Lite.

Bahkan untuk operasi yang didukung, pola penggunaan tertentu terkadang diharapkan, karena alasan performa. Cara terbaik untuk memahami cara membuat model TensorFlow yang dapat digunakan dengan TensorFlow Lite adalah dengan mempertimbangkan secara cermat bagaimana operasi dikonversi dan dioptimalkan, beserta batasan yang diberlakukan oleh proses ini.

Operator yang didukung

Operator bawaan TensorFlow Lite adalah subset dari operator yang merupakan bagian dari pustaka inti TensorFlow. Model TensorFlow Anda juga dapat menyertakan operator khusus dalam bentuk operator komposit atau operator baru yang ditentukan oleh Anda. Diagram di bawah menunjukkan hubungan antara operator-operator tersebut.

Operator TensorFlow

Dari rangkaian operator model ML ini, terdapat 3 jenis model yang didukung oleh proses konversi:

  1. Model dengan operator bawaan TensorFlow Lite saja. ( Direkomendasikan )
  2. Model dengan operator bawaan dan pilih operator inti TensorFlow.
  3. Model dengan operator bawaan, operator inti TensorFlow, dan/atau operator khusus.

Jika model Anda hanya berisi operasi yang didukung secara native oleh TensorFlow Lite, Anda tidak memerlukan flag tambahan untuk mengonversinya. Ini adalah jalur yang disarankan karena jenis model ini akan mengonversi dengan lancar dan lebih mudah untuk dioptimalkan dan dijalankan menggunakan runtime TensorFlow Lite default. Anda juga memiliki lebih banyak opsi penerapan untuk model Anda seperti layanan Google Play . Anda dapat memulai dengan panduan pengonversi TensorFlow Lite . Lihat halaman TensorFlow Lite Ops untuk mengetahui daftar operator bawaan.

Jika Anda perlu menyertakan operasi TensorFlow tertentu dari pustaka inti, Anda harus menentukannya pada konversi dan memastikan runtime Anda menyertakan operasi tersebut. Lihat topik Pilih operator TensorFlow untuk langkah-langkah mendetail.

Jika memungkinkan, hindari opsi terakhir untuk menyertakan operator ubahsuaian dalam model konversi Anda. Operator khusus adalah operator yang dibuat dengan menggabungkan beberapa operator inti TensorFlow primitif atau menentukan yang benar-benar baru. Saat operator khusus dikonversi, mereka dapat meningkatkan ukuran model keseluruhan dengan memunculkan dependensi di luar pustaka TensorFlow Lite bawaan. Operasi khusus, jika tidak dibuat secara khusus untuk penerapan seluler atau perangkat, dapat menghasilkan kinerja yang lebih buruk saat diterapkan ke perangkat dengan sumber daya terbatas dibandingkan dengan lingkungan server. Terakhir, sama seperti menyertakan operator inti TensorFlow tertentu, operator khusus mengharuskan Anda mengubah lingkungan waktu proses model yang membatasi Anda untuk memanfaatkan layanan waktu proses standar seperti layanan Google Play .

Jenis yang didukung

Sebagian besar operasi TensorFlow Lite menargetkan inferensi floating-point ( float32 ) dan terkuantisasi ( uint8 , int8 ), tetapi banyak operasi belum melakukannya untuk tipe lain seperti tf.float16 dan string.

Selain menggunakan versi operasi yang berbeda, perbedaan lain antara model floating-point dan model terkuantisasi adalah cara mereka dikonversi. Konversi terkuantisasi memerlukan informasi rentang dinamis untuk tensor. Ini membutuhkan "kuantisasi palsu" selama pelatihan model, mendapatkan informasi jangkauan melalui kumpulan data kalibrasi, atau melakukan estimasi jangkauan "on-the-fly". Lihat kuantisasi untuk detail lebih lanjut.

Konversi langsung, pelipatan konstan, dan peleburan

Sejumlah operasi TensorFlow dapat diproses oleh TensorFlow Lite meskipun tidak memiliki padanan langsung. Ini adalah kasus untuk operasi yang dapat dengan mudah dihapus dari grafik ( tf.identity ), diganti dengan tensor ( tf.placeholder ), atau digabungkan menjadi operasi yang lebih kompleks ( tf.nn.bias_add ). Bahkan beberapa operasi yang didukung terkadang dapat dihapus melalui salah satu dari proses ini.

Berikut adalah daftar operasi TensorFlow yang tidak lengkap yang biasanya dihapus dari grafik:

Operasi Eksperimental

Operasi TensorFlow Lite berikut tersedia, tetapi belum siap untuk model kustom:

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