Karışık Hassasiyet
Karma hassasiyet eğitimi ile derin öğrenme verimliliğini artırın! Doğruluktan ödün vermeden daha yüksek hızlar, daha az bellek kullanımı ve enerji tasarrufu elde edin.
Karma hassasiyet, model eğitimini hızlandırmak ve bellek tüketimini azaltmak için derin öğrenmede kullanılan bir tekniktir. Hesaplama sırasında 16 bit kayan nokta (FP16) gibi daha düşük hassasiyetli sayısal formatlar ile 32 bit kayan nokta (FP32) gibi daha yüksek hassasiyetli formatların bir arada kullanılmasını içerir. Ağırlık çarpımı gibi modelin belirli bölümleri için stratejik olarak daha düşük hassasiyetli sayılar kullanarak ve ağırlık güncellemeleri gibi kritik bileşenleri daha yüksek hassasiyette tutarak, karışık hassasiyetli eğitim, model doğruluğunda önemli bir kayıp olmadan modern GPU 'larda performansı önemli ölçüde hızlandırabilir.
Karma Hassasiyet Nasıl Çalışır?
Karma hassasiyetin arkasındaki temel fikir, daha düşük hassasiyetli veri türlerinin hızından ve bellek verimliliğinden yararlanmaktır. Modern donanımlar, özellikle de Tensor Çekirdekli NVIDIA GPU 'lar, 16 bitlik sayılar üzerindeki işlemleri 32 bitlik sayılardan çok daha hızlı gerçekleştirebilir. Süreç genellikle üç temel adımdan oluşur:
- Daha Düşük Hassasiyete Döküm: Modelin işlemlerinin çoğu, özellikle de hesaplama açısından yoğun matris çarpımları ve konvolüsyonlar, yarım hassasiyetli (FP16) aritmetik kullanılarak gerçekleştirilir. Bu, bellek ayak izini azaltır ve hesaplamaları hızlandırır.
- Ağırlıkların Ana Kopyasının Tutulması: Model doğruluğunu ve kararlılığını korumak için model ağırlıklarının bir ana kopyası standart 32 bit kayan nokta (FP32) formatında tutulur. Bu ana kopya, eğitim süreci boyunca gradyanları biriktirmek ve ağırlıkları güncellemek için kullanılır.
- Kayıp Ölçekleme: Sayısal düşük akışı (küçük gradyan değerlerinin FP16'ya dönüştürüldüğünde sıfır olması) önlemek için kayıp ölçekleme adı verilen bir teknik kullanılır. Bu teknik, gradyan değerlerini FP16 için temsil edilebilir bir aralıkta tutmak için geriye yayılmadan önce kaybın bir ölçekleme faktörü ile çarpılmasını içerir. Ağırlıklar güncellenmeden önce gradyanlar tekrar ölçeklendirilir.
PyTorch ve TensorFlow gibi derin öğrenme çerçeveleri, otomatik karma hassasiyet için yerleşik desteğe sahiptir ve bu da uygulamayı kolaylaştırır.
Uygulamalar ve Örnekler
Karma hassasiyet, verimliliğin çok önemli olduğu 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 ve BERT 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 uygulanabilir hale getirir. Bu, araştırmacıların daha hızlı yineleme yapmasına ve daha da güçlü dil modelleri oluşturmasına olanak tanır.
- Bilgisayarla Görme Modellerinin Hızlandırılması: Bilgisayarlı görüde (CV), karışık hassasiyet, 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. Nesne algılama ve görüntü segmentasyonu gibi görevler için, en yeni Ultralytics YOLO11 de dahil olmak üzere Ultralytics YOLO modelleri, daha hızlı yakınsama için karma hassasiyetten yararlanır. Bu, özellikle Ultralytics HUB gibi platformlarda hiperparametre ayarlama ve hızlı geliştirme için kullanışlıdır. Daha hızlı eğitim, COCO gibi büyük veri kümeleri üzerinde daha hızlı deney yapmayı da kolaylaştırır. Karışık hassasiyet, model dağıtımını hızlandırmak için çıkarım sırasında da kullanılabilir, özellikle de daha düşük hassasiyetler için büyük ölçüde optimize edilmiş TensorRT gibi formatlara aktarılırken.
İlgili Kavramlar
Karma hassasiyet, derin öğrenme modellerini daha verimli hale getirmek için kullanılan çeşitli optimizasyon tekniklerinden biridir. Bunu ilgili kavramlardan ayırmak önemlidir:
- Model Niceleme: Niceleme, kayan noktalı sayıları (FP32 veya FP16 gibi) INT8 gibi daha düşük bitli tamsayı biçimlerine dönüştürerek model boyutunu ve hesaplama maliyetini azaltır. Karma hassasiyet eğitim sırasında farklı kayan nokta formatları kullanırken, niceleme tipik olarak eğitimden sonra (eğitimsonrası niceleme) veya eğitim sırasında (nicelemeyeduyarlı eğitim), özellikle uç cihazlarda çıkarım için optimize etmek üzere uygulanır.
- Model Budama: Budama, bir sinir ağından gereksiz veya önemsiz bağlantıların (ağırlıkların) çıkarılmasını içeren bir tekniktir. Ağırlıkların sayısal biçimini değiştiren karma hassasiyetin aksine, budama, modelin boyutunu ve karmaşıklığını azaltmak için modelin mimarisini değiştirir. Bu teknikler, daha da büyük performans kazanımları elde etmek için birlikte kullanılabilir.