Karma hassasiyetli eğitim, model doğruluğunu önemli ölçüde etkilemeden model eğitimini hızlandırmak ve bellek tüketimini azaltmak için derin öğrenmede (DL) kullanılan bir tekniktir. Bunu, bir sinir ağı (NN) içindeki değerleri depolamak ve hesaplamak için stratejik olarak farklı sayısal hassasiyet formatlarının bir kombinasyonunu kullanarak başarır. Tipik olarak bu, model ağırlıklarının depolanması gibi kritik parçalar için standart 32 bit kayan nokta formatının (FP32 veya tek hassasiyetli) kullanılmasını içerirken, ileri ve geri geçişler (geriyeyayılma) sırasında hesaplamalar için daha hızlı, daha az bellek yoğun 16 bit kayan nokta formatlarının (FP16 veya yarım hassasiyetli ve bazen BF16 veya BFloat16) kullanılmasını içerir.
Karma Hassasiyet Nasıl Çalışır?
Karma hassasiyetin arkasındaki temel fikir, potansiyel sayısal kararlılık sorunlarını azaltırken daha düşük hassasiyetli formatların hız ve bellek avantajlarından yararlanmaktır. Yaygın bir yaklaşım şu adımları içerir:
- Ana Ağırlıkları FP32 'de Tutun: Ağırlık güncellemelerinde yüksek hassasiyet sağlamak için modelin ağırlıklarının birincil kopyası standart FP32 formatında tutulur.
- Hesaplamalar için FP16/BF16 kullanın: Eğitim döngüsü sırasında, FP32 ağırlıkları ileri ve geri geçişler için FP16 veya BF16'ya dönüştürülür. Bu düşük hassasiyetli formatları kullanan hesaplamalar, daha düşük hassasiyetlerde matris çarpımlarını hızlandırmak için özel olarak tasarlanmış Tensor Çekirdekleri ile donatılmış NVIDIA GPU 'lar gibi modern donanımlarda önemli ölçüde daha hızlıdır.
- Kayıp Ölçeklendirme: FP16 kullanıldığında, temsil edilebilir sayı aralığı FP32'den çok daha küçüktür. Bu, geri yayılım sırasında hesaplanan küçük gradyan değerlerinin sıfır olmasına (düşük akış) ve öğrenmenin engellenmesine neden olabilir. Bunu önlemek için, kayıp değeri geri yayılımdan önce ölçeklendirilir, böylece gradyanlar FP16 ile temsil edilebilir bir aralığa ölçeklendirilir. Ağırlık güncellemesinden önce bu gradyanlar tekrar aşağı ölçeklendirilir. BF16, FP32'ye benzer daha geniş dinamik aralığı ancak daha düşük hassasiyeti ile genellikle kayıp ölçekleme ihtiyacını ortadan kaldırır.
- Ana Ağırlıkları Güncelle: Hesaplanan gradyanlar (kayıp ölçeklendirme kullanılmışsa tekrar aşağı ölçeklendirilir) FP32'de kalan ağırlıkların ana kopyasını güncellemek için kullanılır.
Bu dikkatli denge, modellerin daha hızlı eğitilmesini ve daha az kullanılmasını sağlar GPU Hafıza.
Karma Hassasiyetin Faydaları
- Daha Hızlı Eğitim: Düşük hassasiyetli hesaplamalar (FP16/BF16) uyumlu donanımlarda çok daha hızlı çalışarak her bir eğitim dönemi için gereken süreyi önemli ölçüde azaltır. Bu, daha hızlı yineleme ve deney yapmaya olanak tanır.
- Azaltılmış Bellek Tüketimi: FP16/BF16 değerleri, FP32 değerlerinin yarısı kadar bellek gerektirir. Bu azalma, ileri geçiş sırasında depolanan aktivasyonlar ve geri geçiş sırasında hesaplanan gradyanlar için geçerlidir. Daha düşük bellek kullanımı, daha büyük modellerin eğitilmesini veya daha büyük parti boyutlarının kullanılmasını sağlayarak model performansını ve eğitim kararlılığını artırabilir.
- Geliştirilmiş Verimlilik: Daha hızlı hesaplama ve daha düşük bellek bant genişliği gereksinimlerinin birleşimi, donanım kaynaklarının daha verimli kullanılmasını sağlayarak bulut bilişim veya şirket içi kümeler için eğitim maliyetlerini potansiyel olarak düşürür.
Karışık Hassasiyet ve İlgili Kavramlar
- Tam Hassasiyet (FP32): Geleneksel eğitim, tüm depolama ve hesaplama için FP32 kullanır. Genellikle sayısal olarak daha kararlıdır ancak karışık hassasiyete göre daha yavaş ve daha yoğun bellek gerektirir.
- Yarım Hassasiyet (FP16/BF16): Eğitim boyunca sadece FP16 veya BF16 kullanmak önemli sayısal kararsızlıklara (özellikle kayıp ölçekleme gibi teknikler olmadan FP16) ve potansiyel doğruluk kaybına yol açabilir. Karma hassasiyet, FP32 ve FP16/BF16'yı birleştiren daha sağlam bir yaklaşımdır.
- Model Niceleme: Bu tipik olarak model ağırlıklarını ve/veya aktivasyonlarını 8 bitlik tamsayılar (INT8) gibi daha düşük hassasiyetli formatlara dönüştürmeyi ifade eder, özellikle de uç cihazlarda çıkarım hızını ve verimliliğini optimize etmek için kullanılır. Bazen eğitim sırasında kullanılsa da(Quantization-Aware Training), standart eğitim aşamalarında kullanılan tipik FP32/FP16 karışık hassasiyetten farklıdır.
Uygulamalar ve Örnekler
Karma hassasiyet, büyük ölçekli makine öğrenimi (ML) modellerinin eğitiminde yaygın olarak kullanılmaktadır.
- Büyük Dil Modellerinin (LLM'ler) Eğitimi: GPT-3, BERT ve T5 gibi modellerin milyarlarca parametresi vardır. Bunları yalnızca FP32 kullanarak eğitmek çok yüksek miktarda GPU belleği ve zaman gerektirecektir. Karma hassasiyet, bellek ihtiyaçlarını önemli ölçüde azaltarak ve hesaplamaları hızlandırarak bu tür temel modellerin eğitimini mümkün kılar. PyTorch gibi çerçeveler ve TensorFlow karma hassas eğitim için yerleşik destek sağlar.
- Bilgisayarla Görme Modellerinin Hızlandırılması: Bilgisayarla görmede (CV), karma hassasiyet, nesne algılama, görüntü segmentasyonu ve görüntü sınıflandırma gibi görevler için kullanılan Evrişimli Sinir Ağları (CNN'ler) ve Görüntü Dönüştürücüler (ViT 'ler) gibi karmaşık modellerin eğitimini hızlandırır. Örneğin, en yeni Ultralytics YOLO modelleri de dahil olmak üzere Ultralytics YOLO11model eğitim ipuçlarımızda ve model karşılaştırmalarımızda belirtildiği gibi, daha hızlı yakınsama ve verimli kaynak kullanımı için eğitim sırasında karışık hassasiyetten yararlanabilir. Bu, kullanıcıların COCO gibi veri kümelerinde yüksek performanslı modelleri daha hızlı eğitmesine olanak tanır. Daha hızlı eğitim döngüleri, Ultralytics HUB gibi platformlarda daha hızlı hiperparametre ayarlama ve model geliştirmeyi kolaylaştırır. Karma hassasiyet, özellikle modelleri aşağıdaki gibi formatlara aktarırken dağıtımı hızlandırmak için çıkarım sırasında da kullanılabilir TensorRT daha düşük hassasiyetler için yoğun bir şekilde optimize edilir.