Dikelola oleh Optimasi Model TensorFlow
Ada dua bentuk kuantisasi: kuantisasi pasca pelatihan dan pelatihan sadar kuantisasi. 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.
- Untuk mendalami contoh end-to-end, lihat contoh pelatihan sadar kuantisasi .
- Untuk menemukan API yang Anda perlukan untuk kasus penggunaan Anda dengan cepat, lihat panduan komprehensif pelatihan sadar kuantisasi .
Ringkasan
Pelatihan sadar kuantisasi mengemulasikan kuantisasi waktu inferensi, menciptakan model yang akan digunakan oleh alat hilir untuk menghasilkan model yang benar-benar terkuantisasi. Model terkuantisasi menggunakan presisi yang lebih rendah (misalnya float 8-bit, bukan 32-bit), sehingga memberikan keuntungan selama penerapan.
Terapkan dengan kuantisasi
Kuantisasi menghadirkan peningkatan melalui kompresi model dan pengurangan latensi. Dengan API default, ukuran model menyusut 4x, dan kami biasanya melihat peningkatan latensi CPU antara 1,5 - 4x di backend yang diuji. Pada 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 sebagian model ini .
Bereksperimenlah dengan kuantisasi dan perangkat keras terkait
Pengguna dapat mengkonfigurasi parameter kuantisasi (misalnya jumlah bit) dan pada 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 ke belakang.
Kompatibilitas API
Pengguna dapat menerapkan kuantisasi dengan API berikut:
- Pembuatan model:
keras
hanya dengan model Sekuensial dan Fungsional. - Versi TensorFlow: TF 2.x untuk tf-nightly.
-
tf.compat.v1
dengan paket TF 2.X tidak didukung.
-
- Mode eksekusi TensorFlow: eksekusi yang bersemangat
Ada dalam peta jalan kami untuk menambahkan dukungan di bidang-bidang berikut:
- Pembuatan model: memperjelas bagaimana Model Subkelas memiliki dukungan terbatas atau tidak ada
- Pelatihan terdistribusi:
tf.distribute
Matriks dukungan umum
Dukungan tersedia di bidang berikut:
- Cakupan model: model yang menggunakan lapisan yang diizinkan , BatchNormalization jika mengikuti lapisan Conv2D dan DepthwiseConv2D, dan dalam kasus tertentu,
Concat
. - Akselerasi perangkat keras: API default kami kompatibel dengan akselerasi pada backend EdgeTPU, NNAPI, dan TFLite, antara lain. Lihat peringatan di peta jalan.
- Penerapan dengan kuantisasi: saat ini hanya kuantisasi per sumbu untuk lapisan konvolusional, bukan kuantisasi per tensor yang didukung.
Ada dalam peta jalan kami untuk menambahkan dukungan di bidang-bidang berikut:
- Cakupan model: diperluas hingga mencakup RNN/LSTM dan dukungan Concat umum.
- Akselerasi perangkat keras: pastikan konverter TFLite dapat menghasilkan model bilangan bulat penuh. Lihat masalah ini untuk detailnya.
- Bereksperimenlah dengan kasus penggunaan kuantisasi:
- Bereksperimenlah dengan algoritme kuantisasi yang mencakup lapisan Keras atau memerlukan langkah pelatihan.
- Stabilkan API.
Hasil
Klasifikasi gambar dengan alat
Model | Akurasi Top-1 yang tidak terkuantisasi | Akurasi Terkuantisasi 8-bit |
---|---|---|
MobilenetV1 224 | 71,03% | 71,06% |
Jaringan ulang v1 50 | 76,3% | 76,1% |
MobilenetV2 224 | 70,77% | 70,01% |
Model tersebut diuji di Imagenet dan dievaluasi di TensorFlow dan TFLite.
Klasifikasi gambar berdasarkan teknik
Model | Akurasi Top-1 yang tidak terkuantisasi | Akurasi Terkuantisasi 8-Bit |
---|---|---|
Nasnet-Mobile | 74% | 73% |
Resnet-v2 50 | 75,6% | 75% |
Model tersebut 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 hal serupa, lihat makalah Kuantisasi dan Pelatihan Jaringan Syaraf Tiruan untuk Inferensi 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).
,Dikelola oleh Optimasi Model TensorFlow
Ada dua bentuk kuantisasi: kuantisasi pasca pelatihan dan pelatihan sadar kuantisasi. 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.
- Untuk mendalami contoh end-to-end, lihat contoh pelatihan sadar kuantisasi .
- Untuk menemukan API yang Anda perlukan untuk kasus penggunaan Anda dengan cepat, lihat panduan komprehensif pelatihan sadar kuantisasi .
Ringkasan
Pelatihan sadar kuantisasi mengemulasikan kuantisasi waktu inferensi, menciptakan model yang akan digunakan oleh alat hilir untuk menghasilkan model yang benar-benar terkuantisasi. Model terkuantisasi menggunakan presisi yang lebih rendah (misalnya float 8-bit, bukan 32-bit), sehingga memberikan keuntungan selama penerapan.
Terapkan dengan kuantisasi
Kuantisasi menghadirkan peningkatan melalui kompresi model dan pengurangan latensi. Dengan API default, ukuran model menyusut 4x, dan kami biasanya melihat peningkatan latensi CPU antara 1,5 - 4x di backend yang diuji. Pada 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 sebagian model ini .
Bereksperimenlah dengan kuantisasi dan perangkat keras terkait
Pengguna dapat mengkonfigurasi parameter kuantisasi (misalnya jumlah bit) dan pada 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 ke belakang.
Kompatibilitas API
Pengguna dapat menerapkan kuantisasi dengan API berikut:
- Pembuatan model:
keras
hanya dengan model Sekuensial dan Fungsional. - Versi TensorFlow: TF 2.x untuk tf-nightly.
-
tf.compat.v1
dengan paket TF 2.X tidak didukung.
-
- Mode eksekusi TensorFlow: eksekusi yang bersemangat
Ada dalam peta jalan kami untuk menambahkan dukungan di bidang-bidang berikut:
- Pembuatan model: memperjelas bagaimana Model Subkelas memiliki dukungan terbatas atau tidak ada
- Pelatihan terdistribusi:
tf.distribute
Matriks dukungan umum
Dukungan tersedia di bidang berikut:
- Cakupan model: model yang menggunakan lapisan yang diizinkan , BatchNormalization jika mengikuti lapisan Conv2D dan DepthwiseConv2D, dan dalam kasus tertentu,
Concat
. - Akselerasi perangkat keras: API default kami kompatibel dengan akselerasi pada backend EdgeTPU, NNAPI, dan TFLite, antara lain. Lihat peringatan di peta jalan.
- Penerapan dengan kuantisasi: saat ini hanya kuantisasi per sumbu untuk lapisan konvolusional, bukan kuantisasi per tensor yang didukung.
Ada dalam peta jalan kami untuk menambahkan dukungan di bidang-bidang berikut:
- Cakupan model: diperluas hingga mencakup RNN/LSTM dan dukungan Concat umum.
- Akselerasi perangkat keras: pastikan konverter TFLite dapat menghasilkan model bilangan bulat penuh. Lihat masalah ini untuk detailnya.
- Bereksperimenlah dengan kasus penggunaan kuantisasi:
- Bereksperimenlah dengan algoritme kuantisasi yang mencakup lapisan Keras atau memerlukan langkah pelatihan.
- Stabilkan API.
Hasil
Klasifikasi gambar dengan alat
Model | Akurasi Top-1 yang tidak terkuantisasi | Akurasi Terkuantisasi 8-bit |
---|---|---|
MobilenetV1 224 | 71,03% | 71,06% |
Jaringan ulang v1 50 | 76,3% | 76,1% |
MobilenetV2 224 | 70,77% | 70,01% |
Model tersebut diuji di Imagenet dan dievaluasi di TensorFlow dan TFLite.
Klasifikasi gambar berdasarkan teknik
Model | Akurasi Top-1 yang tidak terkuantisasi | Akurasi Terkuantisasi 8-Bit |
---|---|---|
Nasnet-Mobile | 74% | 73% |
Resnet-v2 50 | 75,6% | 75% |
Model tersebut 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 hal serupa, lihat makalah Kuantisasi dan Pelatihan Jaringan Syaraf Tiruan untuk Inferensi 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).