Teknik olarak FP16 (Floating-Point 16-bit) olarak bilinen yarım hassasiyet, daha yaygın olan 32 bit tek hassasiyetli (FP32) veya 64 bit çift hassasiyetli (FP64) formatların aksine, bir sayıyı temsil etmek için 16 bit kullanan sayısal bir formattır. Yapay zeka (AI) ve özellikle derin öğrenme (DL) alanında, yarım hassasiyetten yararlanmak, model eğitimini ve çıkarımını optimize etmek, hesaplama verimliliğini sayısal doğrulukla dengelemek için çok önemli bir teknik haline gelmiştir. Modellerin daha hızlı çalışmasını ve daha az bellek tüketmesini sağlayarak karmaşık yapay zekayı daha geniş bir donanım yelpazesinde uygulanabilir hale getirir.
Yarım Hassasiyet nedir?
Kayan noktalı sayılar, bilgisayarlarda gerçek sayıları temsil etmek için kullanılır ve sabit sayıda bit içinde onlara yaklaşır. IEEE 754 standardı, FP16 ve FP32 dahil olmak üzere yaygın formatları tanımlar. Bir FP16 sayısı işaret için 1 bit, üs için 5 bit (aralığı belirleyen) ve anlamlı veya mantissa için 10 bit (hassasiyeti belirleyen) kullanır. Buna karşılık, FP32 1 işaret biti, 8 üs biti ve 23 anlamlı bit kullanır. Bitlerdeki bu azalma, FP16'nın FP32'den önemli ölçüde daha küçük bir sayısal aralığa ve daha düşük hassasiyete sahip olduğu anlamına gelir. Bu formatların nasıl çalıştığına dair temel bir genel bakış için kayan nokta aritmetiğinin temelleri bölümüne bakın.
Yarım Hassasiyetin Faydaları
FP16 kullanımı, derin öğrenme iş akışlarında çeşitli avantajlar sunar:
- Azaltılmış Bellek Kullanımı: FP16'da depolanan model ağırlıkları, aktivasyonlar ve gradyanlar, FP32'ye kıyasla yarı bellek gerektirir. Bu, daha büyük modellere, daha büyük parti boyutlarına veya sınırlı belleğe sahip cihazlarda dağıtıma olanak tanır.
- Daha Hızlı Hesaplamalar: Tensor Çekirdekli NVIDIA GPU 'lar ve Google TPU'lar gibi özel işlemciler gibi modern donanımlar, FP16 işlemlerini FP32 işlemlerinden çok daha hızlı gerçekleştirebilir.
- Geliştirilmiş Verim ve Daha Düşük Gecikme: Azaltılmış bellek bant genişliği gereksinimleri ve daha hızlı hesaplamaların birleşimi, eğitim sırasında daha yüksek verim ve daha düşük çıkarım gecikmesi sağlayarak zorlu uygulamalar için gerçek zamanlı çıkarıma olanak tanır.
Potansiyel Dezavantajlar
Yararlı olmakla birlikte, yalnızca FP16 kullanmak bazen sorunlara yol açabilir:
- Azaltılmış Sayısal Aralık: Daha küçük üs aralığı, FP16 sayılarını taşmaya (çok büyük olma) veya düşük taşmaya (çok küçük, genellikle sıfır olma) daha duyarlı hale getirir.
- Daha Düşük Hassasiyet: Anlamlı bit sayısının azalması daha az hassasiyet anlamına gelir ve bu da dikkatli bir şekilde yönetilmediği takdirde hassas modellerin nihai doğruluğunu etkileyebilir.
- Gradyan Sorunları: Eğitim sırasında, küçük gradyan değerleri FP16'da sıfırın altına taşarak öğrenmeyi engelleyebilir. Bu, kaybolan gradyanlar gibi sorunları daha da kötüleştirebilir.
Yarım Hassasiyet ve İlgili Kavramlar
FP16'yı diğer sayısal formatlardan ve tekniklerden ayırmak önemlidir:
- Tek Hassasiyetli (FP32): gibi birçok makine öğrenimi (ML) çerçevesinin varsayılan biçimi PyTorch ve TensorFlow. Çoğu görev için iyi bir menzil ve hassasiyet dengesi sunar, ancak FP16'dan daha yoğun kaynak gerektirir.
- Çift Kesinlikli (FP64): Çok yüksek hassasiyet sağlar ancak FP32'nin iki katı bellek ve hesaplama kaynağı gerektirir. Öncelikle bilimsel hesaplamada, nadiren de derin öğrenmede kullanılır.
- Karışık Hassasiyet: Bu, FP16'nın derin öğrenmede kullanılmasının en yaygın yoludur. Eğitim veya çıkarım sırasında stratejik olarak hem FP16 hem de FP32 kullanılmasını içerir. Tipik olarak, konvolüsyonlar ve matris çarpımları gibi hesaplama açısından yoğun işlemler hız için FP16'da gerçekleştirilirken, ağırlık güncellemeleri veya belirli azaltmalar gibi kritik işlemler sayısal kararlılığı ve doğruluğu korumak için FP32'de tutulur. Kayıp ölçeklendirme gibi teknikler, düşük akış sorunlarını azaltmaya yardımcı olur. Orijinal Karma Hassasiyetli Eğitim makalesine veya PyTorch AMP ve TensorFlow Karma Hassasiyet kılavuzlarına bakın. Ultralytics modelleri genellikle karışık hassasiyetten yararlanır; model eğitimi için ipuçlarına bakın.
- BFloat16 (BF16): Öncelikle Google tarafından geliştirilen başka bir 16 bit format. 8 üs biti kullanır (FP32 ile aynıdır, geniş bir aralık sağlar) ancak yalnızca 7 anlamlı bit kullanır (FP16'dan daha düşük hassasiyet). Özellikle büyük dil modellerini (LLM'ler) eğitmek için kullanışlıdır. BFloat16 hakkında daha fazla bilgi edinin.
- Model Niceleme: Model hassasiyetini daha da azaltan, genellikle 8 bitlik tamsayılara (INT8) veya daha azına indiren teknikler. Bu, uç cihazlarda dağıtım için maksimum verimlilik sağlar, ancak doğruluğu korumak için genellikle dikkatli kalibrasyon veya Niceleme Farkında Eğitim (QAT) gerektirir. PyTorch' ta nicemlemeye giriş bölümüne bakın.
Uygulamalar ve Örnekler
Öncelikle karma hassasiyet teknikleri aracılığıyla yarı hassasiyet yaygın olarak kullanılmaktadır:
- Model Eğitiminin Hızlandırılması: Görüntü sınıflandırma veya doğal dil işleme (NLP) için olanlar gibi büyük derin öğrenme modellerinin eğitimi, karma hassasiyet kullanılarak önemli ölçüde hızlandırılabilir ve eğitim süresini ve maliyetlerini azaltabilir. Ultralytics HUB gibi platformlar genellikle bu optimizasyonları kullanır.
- Nesne Algılama Çıkarımını Optimize Etme: Gibi modeller Ultralytics YOLO11 gibi formatlara (dışa aktarma modu belgelerinde açıklanan araçlar kullanılarak) aktarılabilir. ONNX veya TensorRT daha hızlı çıkarım için FP16 hassasiyetiyle. Bu, otonom araçlar veya canlı video gözetim sistemleri gibi gerçek zamanlı performans gerektiren uygulamalar için çok önemlidir.
- Kaynak Kısıtlı Cihazlarda Dağıtım: FP16 modellerinin azaltılmış bellek ayak izi ve hesaplama maliyeti, onları NVIDIA Jetson gibi uç bilgi işlem platformlarında veya TensorFlow Lite veya Core ML gibi çerçeveler kullanan mobil cihazlarda dağıtım için uygun hale getirir.
- Büyük Dil Modellerinin (LLM'ler) Eğitimi: GPT-3 ve daha yeni mimariler gibi modellerin devasa boyutları, modelleri belleğe sığdırmak ve eğitimi makul zaman dilimleri içinde tamamlamak için 16 bit formatların (FP16 veya BF16) kullanılmasını gerektirir.
Özetle, yarım hassasiyet (FP16) derin öğrenme optimizasyon araç setinde hayati bir araçtır ve daha hızlı hesaplama ve daha az bellek kullanımı sağlar. Aralık ve hassasiyette sınırlamaları olsa da, bunlar genellikle karma hassasiyet teknikleri kullanılarak etkili bir şekilde yönetilir, bu da onu büyük modelleri eğitmek ve verimli yapay zeka uygulamalarını dağıtmak için vazgeçilmez kılar.