Ağırlık kümeleme

Arm ML Tooling tarafından bakım yapılır

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 için 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 merkez değerini paylaşır.

Bu teknik, model sıkıştırması 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örevlerinde kümelemeyi denedik. Aşağıda sunulan sonuçların da gösterdiği gibi, model sıkıştırmada minimum doğruluk kaybıyla 5 kata kadar iyileştirmeler gördük.

Kümelemenin, konvolüsyon ve toplu normalleştirme katmanından önce gelen yoğun katmanlar için ve ayrıca eksen başına eğitim sonrası niceleme ile kombinasyon halinde azaltılmış faydalar sağlayacağını lütfen 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.compat.v1 bir TF 2.X paketi ve ile tf.compat.v2 bir TF 1.X paketi ile 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) Konfigürasyon küme sayısı İlk 1 doğruluk (%) Sıkıştırılmış .tflite boyutu (MB)
MobileNetV1 70.976 14.97
Seçici (son 3 Dönüşüm2D katmanı) 16, 16, 16 70.294 7.69
Seçici (son 3 Dönüşüm2D 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 Dönüşüm2D katmanı) 16, 16, 16 70.742 6.68
Seçici (son 3 Dönüşüm2D katmanı) 32, 32, 32 70.926 7.03
Tam (tüm Conv2D katmanları) 32 69.744 4.05

Modeller, ImageNet üzerinde eğitildi ve test edildi.

Anahtar kelime belirleme

Modeli Orijinal Kümelenmiş
İlk 1 doğruluk (%) Sıkıştırılmış .tflite boyutu (MB) Konfigürasyon 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ğitilmiş ve test edilmiştir.

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

Örnekler

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

  • MNIST el yazısıyla yazılmış basamak sınıflandırması veri kümesinde eğitilmiş bir CNN modelinin ağırlıklarını kümelendirin: kod

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