Pengelompokan berat badan

Dikelola oleh Arm ML Tooling

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

Ringkasan

Pengelompokan, atau pembagian bobot, mengurangi jumlah nilai bobot unik dalam model, sehingga memberikan manfaat untuk penerapan. Pertama-tama ia mengelompokkan bobot setiap lapisan ke dalam N cluster, kemudian membagikan nilai pusat massa cluster untuk semua bobot yang dimiliki cluster tersebut.

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

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

Harap perhatikan bahwa pengelompokan akan mengurangi manfaat untuk konvolusi dan lapisan padat yang mendahului lapisan normalisasi batch, serta dalam kombinasi dengan kuantisasi pasca-pelatihan per sumbu.

Matriks kompatibilitas API

Pengguna dapat menerapkan pengelompokan dengan API berikut:

  • Pembuatan model: keras hanya dengan model Sekuensial dan Fungsional
  • 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 Berkelompok
Akurasi 1 teratas (%) Ukuran terkompresi .tflite (MB) Konfigurasi # cluster Akurasi 1 teratas (%) Ukuran terkompresi .tflite (MB)
MobileNetV1 70.976 14.97
Selektif (3 lapisan Konv2D terakhir) 16, 16, 16 70.294 7.69
Selektif (3 lapisan Konv2D 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 Konv2D terakhir) 16, 16, 16 70.742 6.68
Selektif (3 lapisan Konv2D terakhir) 32, 32, 32 70.926 7.03
Penuh (semua lapisan Conv2D) 32 69.744 4.05

Model dilatih dan diuji di ImageNet.

Pencarian kata kunci

Model Asli Berkelompok
Akurasi 1 teratas (%) Ukuran terkompresi .tflite (MB) Konfigurasi # cluster Akurasi 1 teratas (%) Ukuran terkompresi .tflite (MB)
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 makalah Deep Compression: Compressing Deep Neural Networks With Pruning, Trained Quantization, dan Huffman Coding . Lihat bab 3 berjudul Kuantisasi Terlatih dan Pembagian Bobot .