NLP ve CV için GPU eğitimini ve gerçek zamanlı çıkarımı hızlandıran Transformer dikkati için hızlı, bellek açısından verimli bir yöntem olan Flash Attention'ı keşfedin.
Flash Attention, bellek erişimini daha verimli bir şekilde yöneterek Transformer modellerinin eğitimi ve çıkarımını hızlandırmak için tasarlanmış, yüksek düzeyde optimize edilmiş bir algoritmadır. Modern derin öğrenmede (DL), özellikle büyük modellerde, birincil darboğaz genellikle işlemcinin hesaplama hızı değil, bellek depolama ve hesaplama birimleri arasında veri aktarımı için gereken süredir. Flash Attention, dikkat mekanizmalarının verileri işleme şeklini yeniden düzenleyerek bu "bellek duvarını" ortadan kaldırır ve doğruluktan ödün vermeden daha hızlı performans ve daha düşük bellek kullanımı sağlar .
Flash Attention'ı anlamak için, bir GPU Grafik İşlem Birimi) mimarisine bakmak yardımcı olabilir. Bir GPU yüksek kapasiteli ancak daha yavaş olan Yüksek Bant Genişliği Belleği (HBM) ve düşük kapasiteli ancak inanılmaz derecede hızlı olan yonga üstü SRAM'e sahiptir. Standart dikkat uygulamaları, büyük matrisleri yavaş HBM'ye tekrar tekrar okur ve yazar, bu da birikim yaratır.
Flash Attention, büyük dikkat matrisini hızlı SRAM'e tamamen sığacak şekilde daha küçük bloklara ayırmak için "döşeme" adı verilen bir teknik kullanır. Bu blokları hızlı bellekte tutarak ve sonucu geri yazmadan önce orada daha fazla hesaplama yaparak, algoritma HBM'ye yapılan okuma/yazma işlemlerinin sayısını önemli ölçüde azaltır. Bu blokları hızlı bellekte tutarak ve sonucu geri yazmadan önce burada daha fazla hesaplama yaparak, algoritma HBM'ye yapılan okuma/yazma işlemlerinin sayısını önemli ölçüde azaltır. Stanford Üniversitesi araştırmacıları tarafından tanıtılan bu yenilik, süreci "IO-aware" hale getirir, yani veri hareketinin maliyetini açıkça hesaba katar. Matematiksel ayrıntıları orijinal araştırma makalesinde inceleyebilirsiniz.
Flash Attention'ı yapay zeka (AI) sözlüğündeki benzer kavramlardan ayırmak önemlidir: * Flash Attention, yapay zeka sistemlerinde bir tür öğrenme algoritmasıdır.
Başlangıçta uzun metin dizilerini işlemek için Doğal Dil İşleme (NLP) için geliştirilen Flash Attention, bilgisayar görüşü (CV) alanında da kritik bir öneme sahip hale gelmiştir. Yüksek çözünürlüklü görüntüler, Vision Transformers (ViT) tarafından işlendiğinde büyük veri dizileri oluşturur.
Bu teknoloji, nesne algılayıcıların gelişimini etkilemektedir. Örneğin, topluluk odaklı YOLO12, bu ilkeleri kullanan dikkat katmanlarını tanıttı. Ancak, tamamen dikkat temelli mimariler, eğitim istikrarsızlığı ve yavaş CPU muzdarip olabilir. Çoğu profesyonel uygulama için Ultralytics önerilen standarttır. YOLO26, uçtan uca nesne algılama ve görüntü segmentasyonu için hız ve doğruluk arasında denge sağlayan, kenar cihazlarda genellikle ağır dikkat katmanlarıyla ilişkili ek yükü önleyen, yüksek düzeyde optimize edilmiş bir mimari kullanır.
Flash Attention'ın sağladığı verimlilik artışı, daha önce çok pahalı veya yavaş olduğu için çalıştırılamayan uygulamaların çalıştırılmasını mümkün kılar.
Gibi modern çerçeveler PyTorch (sürüm 2.0+) Flash Attention'ı
"Scaled Dot Product Attention" (SDPA) olarak işlevsel API'larına doğrudan entegre etmişlerdir.
SDPA ultralytics desteklenen bir GPU NVIDIA veya Hopper mimarisi gibi) paket, bu
optimizasyonlar otomatik olarak uygulanır.
Aşağıdaki örnek, GPU üzerinde eğitimi nasıl başlatacağınızı gösterir. Ortam destekliyorsa, temel çerçeve, eğitim sürecini hızlandırmak için Flash Attention çekirdeklerini kullanır .
import torch
from ultralytics import YOLO
# Verify CUDA device availability for Flash Attention support
device = "cuda" if torch.cuda.is_available() else "cpu"
print(f"Training on: {device}")
# Load the latest YOLO26 model (recommended for stability and speed)
model = YOLO("yolo26n.pt")
# Train the model; PyTorch 2.0+ automatically uses optimized attention kernels
if device == "cuda":
model.train(data="coco8.yaml", epochs=5, imgsz=640, device=0)
Donanım gelişmeye devam ettikçe, Ultralytics gibi araçlar bu düşük seviyeli optimizasyonlardan yararlanarak, eğitimlerin geliştiriciler için mümkün olduğunca uygun maliyetli ve hızlı bir şekilde gerçekleşmesini sağlayacaktır.