Ağırlık kümeleme

Arm ML Tooling tarafından sürdürülmektedir

Bu belge, kullanım durumunuza nasıl uyduğunu belirlemenize yardımcı olmak için ağırlık kümelemesine genel bir bakış sağlar.

Genel Bakış

Kümeleme veya ağırlık paylaşımı, bir modeldeki benzersiz ağırlık değerlerinin sayısını azaltarak dağıtım açısından avantajlar sağlar. İlk önce her katmanın ağırlıklarını N küme halinde gruplandırır, ardından kümeye ait tüm ağırlıklar için kümenin ağırlık merkezi değerini paylaşır.

Bu teknik, model sıkıştırma yoluyla iyileştirmeler sağlar. Gelecekteki çerçeve desteği, derin öğrenme modellerinin sınırlı kaynaklara sahip gömülü sistemlere dağıtılmasında önemli bir fark yaratabilecek bellek ayak izi iyileştirmelerinin kilidini açabilir.

Görme ve konuşma görevlerinde kümelemeyi denedik. Aşağıda sunulan sonuçların da gösterdiği gibi, minimum doğruluk kaybıyla model sıkıştırmada 5 kata kadar iyileşme gördük.

Kümelemenin, toplu normalleştirme katmanından önce gelen evrişim ve yoğun katmanların yanı sıra eksen başına eğitim sonrası kuantizasyonla kombinasyon halinde azaltılmış faydalar sağlayacağını lütfen unutmayın.

API uyumluluk matrisi

Kullanıcılar aşağıdaki API'lerle kümelemeyi uygulayabilir:

  • Model oluşturma: yalnızca Sıralı ve İşlevsel modellere sahip keras
  • TensorFlow sürümleri: 1.14+ ve 2.x sürümleri için TF 1.x.
    • TF 2.X paketine sahip tf.compat.v1 ve TF 1.X paketine sahip tf.compat.v2 desteklenmez.
  • TensorFlow yürütme modu: hem grafik hem de istekli

Sonuçlar

Görüntü sınıflandırması

Modeli Orijinal Kümelenmiş
İlk 1 doğruluk (%) Sıkıştırılmış .tflite boyutu (MB) Yapılandırma küme sayısı İlk 1 doğruluk (%) Sıkıştırılmış .tflite boyutu (MB)
MobilNetV1 70.976 14.97
Seçici (son 3 Conv2D katmanı) 16, 16, 16 70.294 7.69
Seçici (son 3 Conv2D katmanı) 32, 32, 32 70.69 8.22
Tam (tüm Conv2D katmanları) 32 69.4 4.43
MobilNetV2 71.778 12.38
Seçici (son 3 Conv2D katmanı) 16, 16, 16 70.742 6.68
Seçici (son 3 Conv2D katmanı) 32, 32, 32 70.926 7.03
Tam (tüm Conv2D katmanları) 32 69.744 4.05

Modeller ImageNet'te eğitildi ve test edildi.

Anahtar kelime tespit

Modeli Orijinal Kümelenmiş
İlk 1 doğruluk (%) Sıkıştırılmış .tflite boyutu (MB) Yapılandırma küme sayısı İlk 1 doğruluk (%) Sıkıştırılmış .tflite boyutu (MB)
DS-CNN-L 95.233 1.46
Tam (tüm Conv2D katmanları) 32 95.09 0,39
Tam (tüm Conv2D katmanları) 8 94.272 0,27

Model, SpeechCommands v0.02 üzerinde eğitildi ve test edildi.

  1. Keras modelini .h5 dosyasına serileştirin
  2. .h5 dosyasını TFLiteConverter.from_keras_model_file() kullanarak .tflite'a dönüştürün
  3. .tflite dosyasını bir zip dosyasına sıkıştırın

Örnekler

Keras örneğinde Ağırlık kümelemesine ek olarak aşağıdaki örneklere bakın:

  • MNIST el yazısıyla yazılan rakam sınıflandırma veri kümesinde eğitilmiş bir CNN modelinin ağırlıklarını kümeleyin: kod

Ağırlık kümeleme uygulaması Derin Sıkıştırma: Derin Sinir Ağlarını Budama, Eğitimli Niceleme ve Huffman Kodlama ile Sıkıştırma makalesine dayanmaktadır. Eğitimli Niceleme ve Ağırlık Paylaşımı başlıklı 3. bölüme bakın.