Pelatihan sadar kuantisasi

Dikelola oleh Pengoptimalan Model TensorFlow

Ada dua bentuk kuantisasi: kuantisasi pasca-pelatihan dan kuantisasi sadar pelatihan. Mulailah dengan kuantisasi pasca-pelatihan karena lebih mudah digunakan, meskipun pelatihan sadar kuantisasi seringkali lebih baik untuk akurasi model.

Halaman ini memberikan ikhtisar tentang pelatihan sadar kuantisasi untuk membantu Anda menentukan kesesuaiannya dengan kasus penggunaan Anda.

Ringkasan

Pelatihan sadar kuantisasi mengemulasi kuantisasi waktu inferensi, menciptakan model yang akan digunakan alat hilir untuk menghasilkan model yang benar-benar terkuantisasi. Model terkuantisasi menggunakan presisi yang lebih rendah (misalnya 8-bit, bukan 32-bit float), yang menghasilkan manfaat selama penerapan.

Terapkan dengan kuantisasi

Kuantisasi membawa peningkatan melalui kompresi model dan pengurangan latensi. Dengan API default, ukuran model menyusut 4x, dan kami biasanya melihat peningkatan antara 1,5 - 4x dalam latensi CPU di backend yang diuji. Akhirnya, peningkatan latensi dapat dilihat pada akselerator pembelajaran mesin yang kompatibel, seperti EdgeTPU dan NNAPI.

Teknik ini digunakan dalam produksi dalam kasus penggunaan pidato, penglihatan, teks, dan terjemahan. Kode saat ini mendukung subset dari model ini .

Bereksperimenlah dengan kuantisasi dan perangkat keras terkait

Pengguna dapat mengkonfigurasi parameter kuantisasi (misalnya jumlah bit) dan sampai tingkat tertentu, algoritma yang mendasarinya. Perhatikan bahwa dengan perubahan dari default API ini, saat ini tidak ada jalur yang didukung untuk penerapan ke backend. Misalnya, konversi TFLite dan implementasi kernel hanya mendukung kuantisasi 8-bit.

API khusus untuk konfigurasi ini bersifat eksperimental dan tidak tunduk pada kompatibilitas mundur.

Kompatibilitas API

Pengguna dapat menerapkan kuantisasi dengan API berikut:

  • Pembuatan model: tf.keras hanya dengan model Sequential dan Functional.
  • Versi TensorFlow: TF 2.x untuk tf-nightly.
  • Mode eksekusi TensorFlow: eksekusi bersemangat

Ada di peta jalan kami untuk menambahkan dukungan di bidang-bidang berikut:

  • Pembuatan model: klarifikasi bagaimana Model Subclass terbatas hingga tidak ada dukungan
  • Pelatihan terdistribusi: tf.distribute

Matriks dukungan umum

Dukungan tersedia di area berikut:

  • Cakupan model: model menggunakan lapisan yang diizinkan , BatchNormalization ketika mengikuti lapisan Conv2D dan DepthwiseConv2D, dan dalam kasus terbatas, Concat .
  • Akselerasi perangkat keras: API default kami kompatibel dengan akselerasi pada backend EdgeTPU, NNAPI, dan TFLite, antara lain. Lihat peringatan di peta jalan.
  • Deploy dengan kuantisasi: hanya kuantisasi per-sumbu untuk lapisan konvolusi, bukan kuantisasi per-tensor, yang saat ini didukung.

Ada di peta jalan kami untuk menambahkan dukungan di bidang-bidang berikut:

  • Cakupan model: diperluas untuk menyertakan RNN/LSTM dan dukungan Concat umum.
  • Akselerasi perangkat keras: memastikan konverter TFLite dapat menghasilkan model bilangan bulat penuh. Lihat masalah ini untuk detailnya.
  • Percobaan dengan kasus penggunaan kuantisasi:
    • Bereksperimenlah dengan algoritme kuantisasi yang menjangkau lapisan Keras atau memerlukan langkah pelatihan.
    • Stabilkan API.

Hasil

Klasifikasi gambar dengan alat

Model Akurasi Top-1 Non-kuantisasi Akurasi Terkuantisasi 8-bit
MobilenetV1 224 71,03% 71,06%
Reset v1 50 76,3% 76,1%
MobilenetV2 224 70,77% 70,01%

Model diuji di Imagenet dan dievaluasi di TensorFlow dan TFLite.

Klasifikasi gambar untuk teknik

Model Akurasi Top-1 Non-kuantisasi Akurasi Terkuantisasi 8-Bit
Nasnet-Mobile 74% 73%
Resnet-v2 50 75.6% 75%

Model diuji di Imagenet dan dievaluasi di TensorFlow dan TFLite.

Contoh

Selain contoh pelatihan sadar kuantisasi , lihat contoh berikut:

  • Model CNN pada tugas klasifikasi digit tulisan tangan MNIST dengan kuantisasi: kode

Untuk latar belakang tentang sesuatu yang serupa, lihat Kuantisasi dan Pelatihan Jaringan Syaraf Tiruan untuk makalah Integer-Aritmatika-Saja yang Efisien . Makalah ini memperkenalkan beberapa konsep yang digunakan alat ini. Implementasinya tidak persis sama, dan ada konsep tambahan yang digunakan dalam alat ini (misalnya kuantisasi per sumbu).