Ağırlık kümeleme

Arm ML Tooling tarafından korunur

Bu belge, kullanım durumunuza nasıl uyduğunu belirlemenize yardımcı olmak için ağırlık kümeleme hakkında bir genel 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 için avantajlar sağlar. Ö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, sınırlı kaynaklara sahip gömülü sistemlerde derin öğrenme modellerini dağıtmak için çok önemli bir fark yaratabilecek bellek ayak izi iyileştirmelerinin kilidini açabilir.

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

Lütfen kümelemenin, bir toplu normalleştirme katmanından önce gelen evrişim ve yoğun katmanlar için ve ayrıca eksen başına eğitim sonrası niceleme ile kombinasyon halinde azaltılmış faydalar sağlayacağını unutmayın.

API uyumluluk matrisi

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

  • Model oluşturma: Yalnızca Sıralı ve İşlevsel modellerle tf.keras
  • TensorFlow sürümleri: 1.14+ ve 2.x sürümleri için TF 1.x.
    • TF 2.X paketiyle tf.compat.v1 ve TF 1.X paketiyle 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 İlk 1 doğruluk (%) Sıkıştırılmış .tflite boyutu (MB)
MobileNetV1 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
MobileNetV2 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 üzerinde eğitilmiş ve test edilmiştir.

Anahtar kelime tespiti

modeli orijinal kümelenmiş
İlk 1 doğruluk (%) Sıkıştırılmış .tflite boyutu (MB) Yapılandırma # küme İ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ğitilmiş ve test edilmiştir.

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

Örnekler

Keras örneğindeki Ağırlık kümelemeye ek olarak, aşağıdaki örneklere bakın:

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

Ağırlık kümeleme uygulaması, Derin Sıkıştırma: Budama, Eğitimli Kuantizasyon ve Huffman Kodlama ile Derin Sinir Ağlarını 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.