Pengelompokan berat badan

Dikelola oleh Arm ML Tooling

Dokumen ini memberikan ikhtisar tentang pengelompokan bobot untuk membantu Anda menentukan kesesuaiannya dengan kasus penggunaan Anda.

Ringkasan

Pengelompokan, atau pembagian bobot, mengurangi jumlah nilai bobot unik dalam model, yang mengarah pada manfaat penerapan. Ini pertama-tama mengelompokkan bobot setiap lapisan ke dalam N cluster, kemudian membagikan nilai centroid cluster untuk semua bobot milik cluster.

Teknik ini membawa perbaikan melalui kompresi model. Dukungan kerangka kerja masa depan dapat membuka kunci peningkatan jejak memori yang dapat membuat perbedaan penting untuk menerapkan model pembelajaran mendalam pada sistem tertanam dengan sumber daya terbatas.

Kami telah bereksperimen dengan pengelompokan di seluruh tugas penglihatan dan bicara. Kami telah melihat peningkatan hingga 5x dalam kompresi model dengan kehilangan akurasi minimal, seperti yang ditunjukkan oleh hasil yang disajikan di bawah ini.

Harap dicatat bahwa pengelompokan akan memberikan pengurangan manfaat untuk konvolusi dan lapisan padat yang mendahului lapisan normalisasi batch, serta dalam kombinasi dengan kuantisasi pascapelatihan per sumbu.

Matriks kompatibilitas API

Pengguna dapat menerapkan pengelompokan dengan API berikut:

  • Pembuatan model: tf.keras hanya dengan model Sequential dan Functional
  • Versi TensorFlow: TF 1.x untuk versi 1.14+ dan 2.x.
    • tf.compat.v1 dengan paket TF 2.X dan tf.compat.v2 dengan paket TF 1.X tidak didukung.
  • Mode eksekusi TensorFlow: grafik dan bersemangat

Hasil

Klasifikasi gambar

Model Asli berkerumun
Akurasi top-1 (%) Ukuran .tflite (MB) terkompresi Konfigurasi # dari cluster Akurasi top-1 (%) Ukuran .tflite (MB) terkompresi
MobileNetV1 70,976 14.97
Selektif (3 lapisan Conv2D terakhir) 16, 16, 16 70.294 7.69
Selektif (3 lapisan Conv2D terakhir) 32, 32, 32 70.69 8.22
Penuh (semua lapisan Conv2D) 32 69,4 4.43
MobileNetV2 71.778 12.38
Selektif (3 lapisan Conv2D terakhir) 16, 16, 16 70,742 6.68
Selektif (3 lapisan Conv2D terakhir) 32, 32, 32 70.926 7.03
Penuh (semua lapisan Conv2D) 32 69.744 4.05

Model dilatih dan diuji di ImageNet.

Bercak kata kunci

Model Asli berkerumun
Akurasi top-1 (%) Ukuran .tflite (MB) terkompresi Konfigurasi # dari cluster Akurasi top-1 (%) Ukuran .tflite (MB) terkompresi
DS-CNN-L 95.233 1.46
Penuh (semua lapisan Conv2D) 32 95.09 0.39
Penuh (semua lapisan Conv2D) 8 94.272 0.27

Model dilatih dan diuji pada SpeechCommands v0.02.

  1. Buat serial model Keras menjadi file .h5
  2. Ubah file .h5 menjadi .tflite menggunakan TFLiteConverter.from_keras_model_file()
  3. Kompres file .tflite menjadi zip

Contoh

Selain contoh Weight clustering in Keras , lihat contoh berikut:

  • Kelompokkan bobot model CNN yang dilatih pada kumpulan data klasifikasi digit tulisan tangan MNIST: kode

Implementasi pengelompokan bobot didasarkan pada Kompresi Dalam: Mengompresi Jaringan Syaraf Dalam Dengan Kertas Pemangkasan, Kuantisasi Terlatih, dan Pengodean Huffman . Lihat bab 3, berjudul Kuantisasi Terlatih dan Pembagian Bobot .