Decoder-only
- Makine Öğrenmesi kursu
- Uzman
- Ders 25/44
- 5 dk
GPT, yalnızca decoder bloklarından oluşan bir transformer'dır.
Yalnızca-decoder mimarisi
GPT'nin bloğu, orijinal transformer decoder'ının çapraz dikkatsiz hâlidir: yalnızca maskeli öz-dikkat ve FFN. Encoder yoktur; bağlam, girdi dizisinin kendisidir:
x = gomme[ids] + konum[:n]
for blok in bloklar:
x = x + maskeli_dikkat(layer_norm(x)) # pre-LN
x = x + ffn(layer_norm(x))
logit = layer_norm(x) @ gomme.T # ağırlık bağlamaGPT-2'den itibaren LayerNorm alt katmanın önüne konur (pre-LN); bu derin ağlarda eğitimi kararlı kılar. Çıkış katmanı gömme matrisini yeniden kullanır (ağırlık bağlama).
GPT-2 small: 124 milyon
GPT-2 small: sözlük 50257, bağlam 1024, d = 768, 12 katman. Ağırlık bağlama sayesinde çıkış katmanı ek parametre getirmez:
V, N, d, L = 50257, 1024, 768, 12
gomme = V * d + N * d
katman = 2 * (2 * d) + (d * 3 * d + 3 * d) + (d * d + d) + (d * 4 * d + 4 * d) + (4 * d * d + d)
print(gomme + L * katman + 2 * d) # son LayerNorm dahilAğırlık bağlama olmasaydı 38.6 milyon parametrelik ayrı bir çıkış matrisi gerekirdi.
Uygulama GPT-2 parametre sayısı
Verilen ayarlarla gömme ve tek katman parametre sayılarını hesapla, aynı satırda yazdır. Toplamı (12 katman + son LayerNorm) yazdır. Son olarak ağırlık bağlama olmasaydı eklenecek parametre sayısını (V * d) yazdır.
Başlangıç kodu
V, N, d, L = 50257, 1024, 768, 12
# buraya yazÖrnek çözüm
V, N, d, L = 50257, 1024, 768, 12
gomme = V * d + N * d
katman = 2 * (2 * d) + (d * 3 * d + 3 * d) + (d * d + d) + (d * 4 * d + 4 * d) + (4 * d * d + d)
print(gomme, katman)
print(gomme + L * katman + 2 * d)
print(V * d)Beklenen çıktı
39383808 7087872 124439808 38597376
Soru ve cevaplar
Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.
1 GPT bloğunda orijinal transformer decoder'ına göre hangi alt katman yoktur?
- Çapraz dikkat Doğru cevap
- Maskeli öz-dikkat
- FFN
- LayerNorm
Açıklama: Encoder olmadığı için bakılacak bir kaynak dizi de yoktur.
2 Çıkışta gömme matrisini yeniden kullan.
logit = layer_norm(x) @ gomme.____
logit = layer_norm(x) @ gomme.T
Açıklama: Gömme (V, d); devriği (d, V) logitleri verir.
3 Eşleştir.
| Kavram | Anlamı |
|---|---|
pre-LN |
Norm alt katmandan önce |
ağırlık bağlama |
Çıkış = gömmeᵀ |
bağlam |
1024 belirteç |
GPT-2 small |
~124M parametre |