Hari Komunitas ML adalah 9 November! Bergabung dengan kami untuk update dari TensorFlow, JAX, dan lebih Pelajari lebih lanjut

Pengelompokan bobot

Dikelola oleh Arm ML Tooling

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

Gambaran

Pengelompokan, atau pembagian bobot, mengurangi jumlah nilai bobot unik dalam model, yang menghasilkan manfaat untuk penerapan. Ini pertama-tama mengelompokkan bobot setiap lapisan ke dalam kluster N , kemudian membagikan nilai pusat kluster untuk semua bobot yang termasuk dalam kluster.

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

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

Harap dicatat 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:

  • tf.keras model: tf.keras dengan hanya model Berurutan 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 eager

Hasil

Klasifikasi gambar

Model Asli Berkelompok
Akurasi 1 teratas (%) Ukuran kompresi .tflite (MB) Konfigurasi # cluster Akurasi 1 teratas (%) Ukuran kompresi .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 Konv2D) 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 Konv2D) 32 69.744 4.05

Model dilatih dan diuji di ImageNet.

Bercak kata kunci

Model Asli Berkelompok
Akurasi 1 teratas (%) Ukuran kompresi .tflite (MB) Konfigurasi # cluster Akurasi 1 teratas (%) Ukuran kompresi .tflite (MB)
DS-CNN-L 95.233 1.46
Penuh (semua lapisan Konv2D) 32 95.09 0.39
Penuh (semua lapisan Konv2D) 8 94.272 0.27

Model ini dilatih dan diuji pada SpeechCommands v0.02.

  1. Serialisasi model Keras menjadi file .h5
  2. Konversikan file .h5 menjadi .tflite menggunakan TFLiteConverter.from_keras_model_file()
  3. Kompres file .tflite menjadi zip

Contoh

Selain contoh pengelompokan bobot di Keras , lihat contoh berikut:

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

Implementasi weight clustering didasarkan pada kertas Deep Compression: Compressing Deep Neural Networks With Pruning, Trained Quantization dan Huffman Coding . Lihat bab 3, berjudul Kuantisasi Terlatih dan Pembagian Berat .