Full transcript
0:00Bu videonun sponsoru kiwo, onlardan daha sonra bahsedeceğim.
0:03Ocak 2025'te Çinli şirket deepseek, R1'i piyasaya sürerek dünyayı şok etti.
0:09Bu dil modeli, oldukça rekabetçi ve yalnızca küçük bir miktar hesaplamasını gerektiren, diğer lider modellerin gerektirdiği compute'un çok küçük bir kısmını gerektiriyor.
0:15Belki daha da şaşırtıcı olan,
0:17Amerikalı rakiplerinin çoğunun aksine, deep seek'in R1 model ağırlıklarını, inference kodunu ve kapsamlı teknik raporlarını halka açık bir şekilde yayınlaması
0:25ve 2024'te ayda ortalama bir rapor yayınlayarak,
0:292025'in başlarında R1'in piyasaya sürülmesiyle dramatik bir şekilde sonuçlanan yeniliklerin herhangi birini detaylandırmasıdır.
0:362024 yılının Haziran ayında, deepseek ekibi, multi-head latent attention adını verdikleri bir tekniği tanıttı.
0:42Stack'in uçlarında gerçekleşen birçok deepseek yeniliğinin aksine,
0:46multi-head latent attention doğrudan Transformer'ın çekirdeğine etki ediyor.
0:50Bu, neredeyse tüm büyük dil modellerinin paylaştığı compute mimarisidir.
0:54Bu değişiklik, key value cache adı verilen önemli bir darboğazın boyutunu 57 kat azaltıyor.
1:02Geleneksel bir Transformer'a göre deep seek'in uygulamasının 6 kattan daha hızlı metin üretmesini sağlıyor.
1:08Peki deepseek ekibi bu kadar yaygın kullanılan bir mimariden nasıl bu kadar önemli bir iyileştirme elde edebildi?
1:15Diğer modern dil modelleri gibi, deepseek'e bir girdi verdiğinizde,
1:19model yanıtını token olarak bilinen kelime parçaları halinde tek tek üretir.
1:24Matematiksel olarak bu auto regressive yaklaşım, modelin ürettiği her yeni token'ın, ondan önce gelen tüm token'ların bir fonksiyonu olduğu anlamına gelir.
1:32Büyük dil modellerindeki token'lar arası etkileşimler, attention adı verilen bir mekanizma ile yönetilir.
1:37Attention, attention patterns adı verilen matrisleri hesaplayarak çalışır.
1:40Bunlar, gpt2 small modeline örnek girdi olarak "The American flag is red white and" verildiğinde hesaplanan 144 attention pattern'ıdır.
1:50Bu model, layer başına attention heads adı verilen 12 ayrı attention mekanizması kullanır
1:55ve 12 layer'a sahiptir, bu da toplamda 144 attention pattern'ı yapar.
2:00Deepseek R1 ise layer başına 128 attention head'e ve 61 layer'a sahiptir, bu da toplam 7.808 pattern demektir.
2:09Her iki modelde de attention pattern'ının boyutu, modele verilen token sayısına eşittir.
2:15Örnek girdimiz olan "The American flag is red white and" dokuz token'a karşılık gelir, bu yüzden tüm attention pattern'larımız 9'a 9'luk matrislerdir.
2:24Attention pattern'ları, attention head'ler tarafından token pozisyonları arasında bilgi taşımak için modelin residual stream'inde kullanılır
2:31Örneğin, gpt2'nin üçüncü layer'ındaki bu ilk attention pattern'ı,
2:35girdi token'ı olan "American"dan çıktı token'ı olan "flag"e yüksek bir değer eşlemesine sahiptir,
2:41bu da, bu attention head'in muhtemelen "American" nitelemesini "flag" ismine uygulayarak "American flag" kavramı için birleşik bir temsil oluşturduğu anlamına gelir.
2:52Bu 11. layer'daki bu sekizinci attention pattern'ı,
2:56"flag", "red" ve "white" kelimelerini son token olan "and"in çıktısına yüksek değerlerle eşler.
3:01Ve bu attention head, girdimizdeki bir sonraki doğru token olan "blue"yu tahmin etmek için ilgili kelimeleri çekip çıkarmıştır,
3:06ki bu gpt2 small modeli bunu doğru bir şekilde tahmin eder.
3:11Hadi, standart attention mekanizmasının gpt2 gibi modellerde tam olarak nasıl çalıştığına biraz daha derinlemesine bakalım ve birkaç denklem oluşturalım
3:18ve deepseek ekibinin nasıl bu kadar güçlü bir iyileştirme yaptığını anlayabilelim.
3:23Belirli bir attention pattern'ı hesaplamak için X girdi matrisini alırız.
3:27Bu, modelimizin herhangi bir layer'ına girdi olabilir ve her girdi token'ı için bir satıra ve modelin embedding dimension'ına karşılık gelen bir sütun sayısına sahip olacaktır.
3:36Bu, her bir token'ı temsil etmek için kullanılan vektörün uzunluğudur.
3:40gpt2 small'un embedding dimension'ı 768 iken, deep seek R1'in embedding dimension'ı 7168'dir.
3:47Belirli bir attention pattern'ı hesaplamak için girdi matrisimiz X'i, öğrenilmiş iki ayrı ağırlık seti olan WQ ve WK ile çarparız.
3:56gpt2'de bu matrisler 768'e 64 boyutundadır ve yeni iki matris elde ederiz. Q ve K adlı iki yeni matris elde ederiz, bunlarda 9'a 64 boyutundadır.
4:08Q matrisimizin satırları query, K matrisimizin satırları ise key olarak bilinir.
4:14Attention'ın temel fikri, benzer query ve key'lere sahip token çiftlerini aramamızdır,
4:20bu da modelin token'lar arasında çeşitli ilişkiler öğrenmesini sağlar.
4:24Örneğin, "flag" gibi bir token, anlamını niteleyen kelimeler için query yapabilirken,
4:29"American" gibi kelimeler belirli attention head'lerinde onları niteleyici olarak işaretleyen key'ler üretebilir.
4:35Bu niteleyici query ve niteleyici key, benzer key ve query vektörleri üretmelidir.
4:41Matematiksel olarak, benzer key ve query'leri bulmak için, dokuz token'ımızın her bir olası çifti için key ve query'lerin dot product'ını alabiliriz.
4:50Benzer key ve query vektörleri yüksek dot product'lar üretecektir.
4:54Tüm bu dot product'ları tek seferde, key matrisimizin transpozunu (devrik matris'ini) alıp query matrisimizle çarparak hesaplayabiliriz.
5:01Bu, her bir girdinin tek bir key ve query'nin dot product'ına karşılık geldiği yeni bir 9'a 9'luk matrisle sonuçlanır.
5:08Attention pattern'ımızı hesaplamak için bir maskeleme işlemi uygularız, bu da matrisimizin sağ üst kısmını etkili bir şekilde sıfırlar.
5:16Bu adım, çoğunlukla training için önemlidir.
5:19Modelin bir sonraki token'ı sadece bir sonraki token'a bakarak tahmin etme görevinde hile yapmasını engellediği için önemlidir.
5:25son olarak, sonucumuzu embedding dimension'ımızın kareköküne bölerek ve her satırın toplamını bire eşitleyen bir soft Max işlemi uygulayarak normalleştiririz.
5:36Artık attention pattern'ımızı hesapladığımıza göre, verilerimizi işlemek için onu kullanmamız gerekiyor.
5:41Bu, birkaç matris çarpımı daha içerir.
5:44Önce, value matrisi olarak bilinen şeyi, girdimizi üçüncü bir ağırlık matrisi olan WV ile çarparak hesaplarız.
5:51Bu hesaplama, key ve query matrislerimizi hesapladığımız yolla aynıdır,
5:56sadece farklı bir öğrenilmiş ağırlık seti kullanılır.
5:59Ardından attention pattern matrisimizi value matrisimizle çarparız.
6:03Bu, etkili bir şekilde attention pattern'ımızı izleyerek value'larımızın ağırlıklı bir toplamını alır.
6:08Bu adımı düşünmenin bir yolu, girdilerimizi, ağırlıkları verinin kendisi tarafından kontrol edilen bir sinir ağı kullanarak işlemek gibidir.
6:17Son olarak, her layer'daki attention bloğunun birden fazla head'i vardır.
6:20Her head aynı hesaplamaları yapar ancak farklı öğrenilmiş ağırlıklar kullanır, bu da farklı bir query, key, attention pattern ve value setiyle sonuçlanır.
6:29Buradaki fikir, çeşitli attention head'lerinin çeşitli görevlerde uzmanlaşabilmesidir,
6:34örneğin sıfatları aramak veya aynı token'ın diğer örneklerini aramak gibi.
6:38Attention bloğunun son çıktısını hesaplamak için, her head'den gelen sonuçları üst üste yığarız ve son bir öğrenilmiş ağırlık matrisi olan wo ile çarparız,
6:47bu da bize attention bloğumuzun son matris çıktısını verir.
6:51Attention bloğu, modern dil modellerinin önemli bir parçasıdır ancak önemli miktarda hesaplama gerektirir,
6:58çünkü attention pattern'ımızın yüksekliği ve genişliği girdi token'larının sayısına eşittir,
7:02bu matristeki girdi sayısı girdi token'larının karesiyle ölçeklenir.
7:07Bu, büyük modeller için potansiyel olarak büyük bir hesaplama sorunudur.
7:11OpenAI'nin chat GPT modelleri artık 100.000'den fazla token'lık maksimum bağlam uzunlukları sunuyor.
7:17Referans olarak bu, ilk Harry Potter kitabının uzunluğu kadardır.
7:21Yani, chat GPT'nin izin verilen maksimum girdi boyutu için her bir attention pattern'ını hesaplamak,
7:26kitabın tüm metnini tek bir satır ve sütun olarak düzenlemek ve ardından tüm metinden her olası token çifti için dot product'lar hesaplamakla eşdeğerdir
7:36Neyse ki, büyük bir hesaplama kısayolu var.
7:41Büyük dil modelleri yeni metinleri tek bir token olarak ürettikçe, attention pattern'larının kendileri aslında çok fazla değişmez.
7:49"American flag" örneğimizde,
7:51diyelim ki model "blue" kelimesi için yeni bir token üretti. Cümlemiz şimdi "The American flag is red white and blue" oldu.
7:59Modelin bir sonraki ne diyeceğini görmek için, bu yeni 10 token'lık girdiyi tekrar modele veririz ki 11. token'ı elde edelim ve bu böyle devam eder.
8:06Yeni 10 token'lık girdimiz, her biri 10'a 64 boyutunda olan key, query ve value matrisleriyle sonuçlanır.
8:13Ancak önemli bir nokta, ağırlık matrislerimiz her bir token'a aynı işlemi uyguladığı için,
8:17key, query ve value matrislerimizin ilk dokuz satırı, orijinal dokuz token'lık girdimizden değişmeden kalır.
8:24Key'lerimizin transpozunu (devrik matris'ini) alıp query'lerimizle çarparak yeni attention pattern'ımızı hesaplarken,
8:29Q'nun ilk dokuz satırının ve K transpozunun ilk dokuz sütununun değişmediğini unutmayın.
8:35Bu, attention pattern'ımızın sol üst 9'a 9'luk matrisinin de değişmeyeceği
8:40ve yeni 10'a 10'luk attention pattern'ımıza ulaşmak için sadece yeni bir son satır ve sütun hesaplamamız gerektiği anlamına gelir.
8:46Dahası, attention pattern'ımızın sağ üst köşesini maskelediğimiz için, aslında sadece yeni alt satırı hesaplamamız gerekir.
8:54Attention pattern'ımızın alt satırı, query matrisimizin son satırını transpoze edilmiş key matrisimizin her bir sütunuyla çarpmaktan kaynaklanır.
9:02Yani, bu son attention pattern satırını hesaplamak için tüm key'lerimizi bilmemiz gerekir, ancak query matrisimizin sadece son yeni satırına ihtiyacımız var.
9:10Zaten 10 key'imizden dokuzunu önceki model çağrısında hesapladığımız için,
9:14bu key'leri bellekte saklamak ve yeni 10 token'lık girdi geldiğinde onlara erişmek hesaplama açısından çok daha verimlidir.
9:22Aynı mantık value matrisimiz için de geçerlidir.
9:25Yeni çıktılarımızı hesaplamak için tam value matrisimize ihtiyacımız var, ancak ilk dokuz satır değişmediği için onları bellekte önbelleğe alabiliriz.
9:32Query'leri önbelleğe almaya gerek olmadığını unutmayın, çünkü attention pattern'ımızı güncellemek için yalnızca query'lerimizin yeni son satırına ihtiyacımız var.
9:39Bu fikir, key-value veya KV caching olarak adlandırılır
9:43ve büyük dil modeli altyapısının kritik bir parçasıdır.
9:47Compute, girdi token'larının sayısının karesiyle karesel olarak büyümek yerine, key-value caching, modelin attention bloklarının gerektirdiği compute'un girdi token'larının sayısıyla doğrusal olarak ölçeklenmesi anlamına gelir.
9:58Şimdi bu hesaplama kısayolu bir maliyetle gelir: özellikle artan bellek kullanımı.
10:05Sistemimiz artık model oturumunun tüm geçmişi için key ve value'ları tüm layer'lardaki tüm attention head'ler için bellekte saklamalıdır.
10:13L layer, layer başına NH attention head, key ve value matrislerimiz için DH boyutu ve N girdi token'ı olan bir model verildiğinde,
10:22KV cache'imizde 2 * N * DH * NH * L adet benzersiz sayıyı saklamamız gerekir.
10:29Floating point 16 sayıları, deepseek R1 mimarisi ve 100.000 token'lık bir bağlam uzunluğu varsayarsak, token başına dört megabayt almamız gerekir.
10:40Bu da modelin bağlam penceresinde her yeni token için 400 gigabaytlık devasa bir bellek okumasına yol açar.
10:47Deepseek'in bu soruna çözümü gerçekten zekice ve inference kodlarıyla oynayarak konuyu gerçekten kavramak harikaydı.
10:54(Reklam) Anlayışı geliştirmek için bunun gibi uygulamalı deneyler gibisi yoktur, bu yüzden
10:59bu videonun sponsoru kiwo ile tekrar ortak olmaktan çok mutlu oldum. kiwo, öğrenmeyi her yaştan
11:05çocuk için gerçekten eğlenceli hale getiren uygulamalı proje kitleri sunuyor. Kızım şu sıralar renklere ve gökkuşaklarına
11:10takıntılı ve renk keşfi setini çok seviyor. Bu çarklar, renk karıştırmayı birlikte
11:16keşfetmemiz için çok eğlenceli bir yol. Setlerin nasıl ilerlediğini ve birbirini tamamladığını görmek harika.
11:22Geçen yıl Panda Club'ın bir parçası olarak ince motor becerilerini geliştiriyordu ve şimdi Sprouts Club'da
11:27yaratıyor ve deneyler yapıyor. Birkaç yıl içinde altı yaşına geldiğinde, bu uzaktan kumandalı araba gibi
11:32daha karmaşık bilim ve mühendislik projeleri üzerinde çalışacağı Kiwi Co Labs Club'a katılabilir.
11:37Çocukken bu sete kesinlikle bayılırdım. Oğlum ise renklerin adlarını öğrenmeye çalışıyor.
11:43Şimdilik her şey mavi. Bu blok bulmaca, onun kendi yaşında farklı renkleri keşfetmesi için
11:49çok eğlenceli ve interaktif bir yol. Çocuklarımın birçok oyuncağından çabucak sıkıldığı veya kırdığı bir dönemde,
11:54kendimizi sürekli olarak kiwo Co setlerine dönerken buluyoruz. Yapı kalitesi gerçekten
12:00harika ve her setin içine yerleştirilmiş düşünce ve çok amaçlı tasarım, onları gerçekten
12:05meşgul ediyor. Ailenizin kiwico'nun harikalığını deneyimlemesini istiyorsanız, Welch labs kodumu kullanarak
12:11üç yaş ve üzeri çocuklar için ilk setinizde %50 indirim veya üç yaş altı çocuklar için
12:17ilk Panda setinizde %20 indirim alabilirsiniz. Bu videoya sponsor olduğu için kiwo'ya çok teşekkürler.
12:21Şimdi deepseek'in KV cache sorununa çözümüne geri dönelim.
12:25Sürdürülemez derecede büyük KV cache'ler yeni bir sorun değil.
12:29Popüler bir çözüm, multi-query attention bloklarında birden fazla attention head arasında key ve value matrislerini yeniden kullanmaktır.
12:34Multi-query attention bloğunda, her attention head için benzersiz key ve value matrislerine sahip olmak yerine,
12:41tek bir key ve value matrisini tüm head'ler arasında paylaşırız.
12:45Bu, KV cache'imizin gerekli boyutunu, layer başına head sayısının (deep seek R1 mimarisi için 128) önemli bir faktörü kadar azaltır.
12:54Ancak bu değişiklik, tüm attention head'lerini aynı key ve value'ları kullanmaya zorlamak daha az uzmanlaşmaya izin verdiği için model performansını etkiler.
13:04Bu fikrin daha az yıkıcı bir versiyonu grouped query attention'dır.
13:08Burada, belirli bir layer'daki tüm attention head'lerini aynı key ve value'yu paylaşmaya zorlamak yerine,
13:11aynı key ve value matrislerini paylaşan birden fazla attention head grubu oluştururuz.
13:17Meta'nın Llama 3 modelleri, sekiz attention head'den oluşan grupların aynı key ve value matrislerini paylaştığı grouped query attention kullanır,
13:24bu da KV cache boyutunu sekiz kat azaltır.
13:28Grouped query attention KV cache boyutunu azaltır, ancak tam multi-head attention'a göre yine de bir performans düşüşü yaşar.
13:36Şimdi, deepseek'in multi-head latent attention adı verilen yaklaşımında gerçekten dikkat çekici olan şey,
13:41gerekli KV cache boyutunu 57 kat azaltırken, performansı gerçekten artırmalarıdır.
13:49Anahtar içgörü, makine öğreniminde çok yaygın bir fikir olan latent space'in yeni bir uygulamasıdır.
13:56Ya model, kendi key ve value'larını verimli bir şekilde sıkıştırmayı öğrenebilseydi?
14:01Multi-head latent attention, her bir attention head'in girdisi ile key ve value matrisleri arasına etkili bir şekilde ekstra bir adım ekler.
14:08Fikir, girdimizi multi-query attention gibi belirli bir bloktaki tüm attention head'leri arasında paylaşılan sıkıştırılmış bir latent space'e yansıtmaktır.
14:18Ancak, her head'in aynı key ve value'ları paylaştığı multi-query attention'ın aksine,
14:23multi-head latent attention'da, sıkıştırılmış latent space, başka bir öğrenilmiş ağırlık seti olan Wuk ve Wuv kullanılarak key ve value matrislerine geri yansıtılır
14:34ve bu ağırlıklar her attention head'e özgüdür.
14:38Bu, multi-head latent attention'a multi-query attention veya grouped query attention'dan daha fazla esneklik sağlar.
14:44Şimdi, ilk bakışta yeni bir matris çarpımı eklediğimiz için,
14:48bellek bant genişliğini ek compute için takas etmiş gibi görünüyoruz
14:52ve sonuçta KV caching'in tüm amacı attention bloklarının yüksek compute ihtiyacını azaltmaktı.
14:58Ancak, deep seek ekibinin de işaret ettiği gibi, zekice bir lineer cebir ile, query hesaplamamızı Wuk ağırlıklarını içerecek şekilde yeniden düzenleyebilir
15:06ve son çıktı hesaplamamızı da Wuv ağırlıklarını içerecek şekilde yeniden düzenleyebiliriz.
15:11Tüm bu ağırlıklar eğitim zamanında sabitlendiği için, emilmiş ağırlıkları sadece bir kez hesaplamamız gerekir ve inference sırasında herhangi bir ek compute'tan kaçınabiliriz.
15:21Yani, yeni bir token geldiğinde, query vektörünü ve query'nin latent cache space'e yansımasını tek adımda aynı anda hesaplarız ve
15:30ardından attention pattern'ımızı doğrudan latent key-value cache matrisinden hesaplarız.
15:35Bu gerçekten zarif bir çözüm.
15:38Multi-head latent attention ile, gereken KV cache'in boyutu artık layer başına attention head sayısına bağlı değildir
15:46ve bunun yerine sadece paylaşılan KV cache matrisinin boyutuna bağlıdır.
15:50Deepseek R1 için bu, girdi token'ı sayısının 576 ile çarpımına eşittir.
15:55Eğer geleneksel attention bloklarıyla uygulansaydı, R1 token başına 4 megabayt KV cache gerektirirdi.
16:02Sekiz grup boyutlu grouped query attention bunu token başına 500 kilobayta düşürürdü
16:07ve multi-head latent attention, gereken cache'i token başına sadece 70 kilobayta düşürür, bu da 57 katlık bir azalmadır.
16:15Elimizde kalan, Transformer mimarisine gerçek bir iyileştirmedir
16:19ve deepseek R1'in vanilla bir Transformer'dan altı kat daha hızlı token üretmesini sağlarken, algoritmik performansı gerçekten iyileştirir.
16:28Multi-head latent attention, attention head'lerinin key ve value bilgilerini daha optimal bir şekilde paylaşmasına olanak tanır,
16:34burada modelin kendisi bu bilgiyi attention head'leri arasında nasıl sıkıştıracağını ve paylaşacağını öğrenir.
16:39Transformer mimarisi, modern AI tarihindeki en önemli atılımlardan biridir
16:44ve deepseek, onu önemli ölçüde daha iyi çalışır hale getirmiş görünüyor.
16:48Deepseek'in 2024 makaleleriyle çizdiği yolu görmek,
16:53yüz milyonlarca dolarlık R&D ve altyapı maliyeti gerektiren modellere sistematik olarak önemli iyileştirmeler yapması inanılmaz.
17:00Sinir ağları için riskler hiç bu kadar yüksek olmamıştı.
17:03Daha da akıllı sistemler inşa ederken, bir sonraki yetenek seviyesini hangi yeni fikirler setinin açığa çıkaracağını görmek büyüleyici olacak. Çeviren: Baran Başaran
17:13Bu videodaki grafikleri beğendiyseniz,
17:15poster versiyonunu gerçekten seveceğinizi düşünüyorum. Poster, multi-head latent attention'ın detaylı başlıklarla
17:20bir anlatımını içeriyor ve akışı poster olarak daha iyi çalışacak şekilde biraz yeniden düzenledim. Alt kısma,
17:25gerekli KV cache boyutları ve her attention bloğunun 3D modeli de dahil olmak üzere
17:30çeşitli attention formları arasında ayrıntılı bir karşılaştırma ekledim. Video ve posterdeki matris görüntüleri
17:36aslında gerçek deep seek modelinden alınmıştır. Çoğunlukla deep seek V3'ün ilk layer'ındaki
17:41ağırlıkları gösteriyorum. Poster, Amazon'dan alabileceğiniz basit bir çerçeve içinde harika görünüyor ve
17:46MLA'nın nasıl çalıştığını görmek için harika bir yol ve duvarlarınızı dekore etmenin güzel bir yolu.
17:52Welch labs.com'da sınırlı bir süre için postere ücretsiz kargo sunuyorum veya sınırlı sayıda üretilen bir paket olarak
17:57imzalı Hayali Sayılar kitabımla birlikte alabilirsiniz. Son olarak, Welch lab mağazasından alışveriş
18:02yapan herkese çok teşekkürler. Satın alımlarınız, daha fazla harika video yapmama büyük ölçüde yardımcı oluyor.