Ultralytics YOLO27: Bekleme listesine katıl.
YOLO'yu lisansla
Ultralytics Sözlüğüne dön

Grouped Query Attention (GQA)

Gruplandırılmış sorgu dikkati (GQA), sorgu başlığı gruplarının anahtar-değer başlıklarını paylaşmasını sağlayarak KV önbelleğini küçültür ve LLM kod çözümünü hızlandırır.

Gruplu sorgu dikkati (GQA), transformer modellerine yönelik çok başlı bir dikkat türüdür; bu yöntemde sorgu başı grupları tek bir anahtar başını ve tek bir değer başını paylaşır. Örneğin Llama 3.1 8B, her katmanda 32 sorgu başını 8 anahtar-değer başıyla eşleştirir. Her sorgu başının kendi anahtar ve değerlerine sahip olduğu çok başlı dikkat (MHA) ile tüm sorgu başlarının tek bir anahtar ve değer başını paylaştığı çoklu sorgu dikkati (MQA) arasında yer alır. Google Research'ten Joshua Ainslie ve çalışma arkadaşları bu yöntemi EMNLP 2023'te GQA: Çok Başlı Kontrol Noktalarından Genelleştirilmiş Çoklu Sorgu Transformer Modelleri Eğitimi başlıklı çalışmada tanıttı. GQA modellerinin, MHA'ya yakın kaliteye ve MQA'ya yakın çözümleme hızına ulaştığını gösterdiler. Llama 2 70B, Llama 3 ailesi, Mistral 7B ve Gemma 2 gibi açık büyük dil modelleri (LLM'ler) bu yöntemi kullanır. Google'ın Gemma 2 üzerine kurulu PaliGemma 2 modeli gibi, bu modeller üzerine kurulan görü-dil modelleri (VLM'ler) de dil kod çözücülerinde aynı yöntemi kullanır.

GQA Nasıl Çalışır#

Öz-dikkatte, her token her baş için bir sorguya, anahtara ve değere yansıtılır; her baş da sorgularını anahtarlarıyla karşılaştırır. GQA, sorgu başlarının tümünü korur ancak daha az sayıda anahtar ve değer başı üretir. Her sorgu başı grubu, kendisiyle paylaşılan anahtar ve değerleri kullanarak dikkat uygular. 8 sorgu başı ve 2 anahtar-değer başıyla her anahtar-değer başı 4 sorgu başına hizmet eder:

Her baştaki dikkat hesaplaması, ölçekli noktasal çarpım dikkati olarak değişmeden kalır. Tek bir grup katmanı MQA'ya, sorgu başı sayısı kadar grup ise MHA'ya dönüştürür. PyTorch, bu düzeni doğrudan scaled_dot_product_attention öğesinin enable_gqa bağımsız değişkeni üzerinden destekler:

import torch
import torch.nn.functional as F

torch.manual_seed(0)
q = torch.randn(1, 8, 16, 64)  # 8 query heads, 16 tokens, 64 dimensions per head
k = torch.randn(1, 2, 16, 64)  # only 2 key heads
v = torch.randn(1, 2, 16, 64)  # and 2 value heads

out = F.scaled_dot_product_attention(q, k, v, is_causal=True, enable_gqa=True)

# Equivalent multi-head attention: copy each key-value head to its group of 4 query heads
k_full, v_full = k.repeat_interleave(4, dim=1), v.repeat_interleave(4, dim=1)
reference = F.scaled_dot_product_attention(q, k_full, v_full, is_causal=True)

print(f"Output {tuple(out.shape)}, same as copied heads: {torch.allclose(out, reference, atol=1e-6)}")
print(f"Cached values per token per layer: {k[0, :, 0].numel() * 2} with GQA, {k_full[0, :, 0].numel() * 2} with MHA")

Output (1, 8, 16, 64), same as copied heads: True ve 256 with GQA, 1024 with MHA çıktısını verir: MHA'nın depolayacağı anahtar ve değerlerin dörtte biriyle 8 sorgu başının tümü çıktı üretir.

GQA, KV Önbelleğini Neden Küçültür?#

Metin üretimi sırasında model, önceki her tokenın anahtar ve değerlerini KV önbelleğinde tutar ve her yeni token için önbelleğin tamamını okur. Bu nedenle çözümleme hızı, işlem gücünden çok bellek bant genişliğiyle sınırlıdır. Önbellek boyutu, anahtar-değer başlarının sayısıyla orantılıdır. Llama 3.1 8B'de 32 katman vardır ve her katman 128 boyutlu 8 anahtar-değer başı içerir. Bu nedenle model, 16 bit duyarlılıkta token başına 128 KiB, 131.072 tokenlık tam bağlam penceresinde ise 16 GiB depolar. MHA ile aynı model token başına 512 KiB, tam uzunlukta ise 64 GiB gerektirirdi. Boşalan bellek; daha uzun bağlamlara, sürekli gruplama için daha büyük gruplara ve token başına daha düşük çıkarım gecikmesine ayrılır. Ultralytics LLM arayüzü, kendi sunucunda barındırılan Llama 3.1 8B gibi OpenAI uyumlu tüm sunucular için bir base_url kabul eder. Bu sunucuda 8 anahtar-değer başı, belirli bir önbellek belleğinde 32 başlı MHA düzenine kıyasla dört kat daha fazla konuşma tokenının tutulmasını sağlar.

Modelleri GQA'ya Dönüştürme#

GQA, eğitime sıfırdan başlamayı gerektirmez. Yazarlar, her grup içindeki anahtar ve değer başlarının ortalamasını alarak mevcut bir MHA kontrol noktasını dönüştürdü; ardından ilk hesaplama miktarının yaklaşık %5'ini kullanarak ön eğitime devam etti. Bu aşamaya ek eğitim adını verdiler. Tek paylaşımlı başın uç örneği olan MQA, 2019'da Noam Shazeer tarafından tanıtıldı ve en hızlı düzendir; ancak kaliteyi düşürdüğü ve eğitimi kararsızlaştırabildiği için ara sayıda grup, bu kalitenin çoğunu geri kazandırır.

  • Çok başlı gizil dikkat (MLA): DeepSeek-V2 ile tanıtılmıştır; her tokenın anahtar ve değerlerini küçük, paylaşılan bir gizil vektörde sıkıştırır.
  • PagedAttention: Parçalanmayı önlemek için KV önbelleğini sabit boyutlu bloklara ayırır; bu işlem, önbelleği dolduran baş sayısından bağımsızdır.
  • Kayan pencere dikkati: Her katmandaki önbelleğe alınmış token sayısını sınırlar; Mistral 7B bunu GQA ile birlikte kullanır.
  • Flash attention: Tam dikkati daha hızlı hesaplayan ve GQA düzenlerini yerel olarak destekleyen bir GPU çekirdeğidir.

Çözümleri keşfet

Sporda bilgisayarlı görü

Sporda bilgisayarlı görü

Ultralytics YOLO'nun oyuncu ve top takibi, performans analitiği, antrenörlük içgörüleri ve sporcu rehabilitasyonuyla spor alanında görsel yapay zekâyı nasıl güçlendirdiğini keşfet.
Daha fazla bilgi edin
Hava görüntüleri için bilgisayarlı görü

Hava görüntüleri için bilgisayarlı görü

İHA ve hava görüntülerini Ultralytics YOLO ile tarım, su ürünleri yetiştiriciliği, koruma çalışmaları ve jeo-uzamsal analiz için gerçek zamanlı içgörülere dönüştür.
Daha fazla bilgi edin
Havacılıkta bilgisayarlı görü

Havacılıkta bilgisayarlı görü

Uçak denetimi, pistteki yabancı madde tespiti, havaalanı yer operasyonları ve kompozit malzeme kusurlarının tespiti için Ultralytics YOLO ile havacılık ve uzay sektöründe bilgisayarlı görü uygula.
Daha fazla bilgi edin
Güvenlikte bilgisayarlı görü

Güvenlikte bilgisayarlı görü

Ultralytics YOLO modelleriyle her sahayı koru. Görsel yapay zekâ; çevre izleme, tehdit tespiti, plaka tanıma ve iş yeri güvenliğini destekler.
Daha fazla bilgi edin
Robotikte bilgisayarlı görü

Robotikte bilgisayarlı görü

Ultralytics YOLO modelleriyle daha akıllı makinelere güç ver. Robotikte görsel yapay zekâ; otonom navigasyonu, algılamayı, nesne takibini ve gerçek zamanlı kontrolü destekler.
Daha fazla bilgi edin
Lojistikte bilgisayarlı görü

Lojistikte bilgisayarlı görü

Ultralytics YOLO modelleriyle lojistiği kolaylaştır. Görüntü yapay zekâsı; paket denetimini, ayrıştırmayı, araç takibini ve gerçek zamanlı depo güvenliği izlemeyi mümkün kılar.
Daha fazla bilgi edin
Perakendede bilgisayarlı görü

Perakendede bilgisayarlı görü

Ultralytics YOLO modelleriyle perakendeyi yeniden tasarla. Görüntü yapay zekâsı; envanter takibini, raf izlemeyi, kuyruk yönetimini ve daha kapsamlı müşteri analizlerini mümkün kılar.
Daha fazla bilgi edin
Sağlık hizmetlerinde bilgisayarlı görü

Sağlık hizmetlerinde bilgisayarlı görü

Ultralytics YOLO modelleriyle sağlık çözümleri geliştir. Sağlık hizmetlerinde görüntü yapay zekâsı; daha hızlı tıbbi görüntüleme, daha akıllı tanı ve hasta takibini mümkün kılar.
Daha fazla bilgi edin
Üretimde bilgisayarlı görü

Üretimde bilgisayarlı görü

Ultralytics YOLO modelleriyle üretimi optimize et. Görsel yapay zekâ; kalite kontrolünü, kusur tespitini, kişisel koruyucu donanım uyumunu ve montaj hattı otomasyonunu destekler.
Daha fazla bilgi edin
Otomotivde bilgisayarlı görü

Otomotivde bilgisayarlı görü

Ultralytics YOLO modelleriyle otomotivde bilgisayarlı görüden yararlan. Görsel yapay zekâ; daha akıllı yollar için yol güvenliğini, sürüş desteğini ve araç otomasyonunu ileri taşır.
Daha fazla bilgi edin
Tarımda bilgisayarlı görü

Tarımda bilgisayarlı görü

Ultralytics YOLO modelleriyle akıllı tarıma görüntü yapay zekâsı kazandır. Daha yüksek ve akıllı verim için mahsul izleme, hayvan takibi ve hassas tarımı destekle.
Daha fazla bilgi edin

Geleceğin yapay zekasını birlikte inşa edelim!

Makine öğreniminin geleceğine yolculuğuna başla