Büyük dil modellerinin (LLM’ler) evrimi, metin işleme ve oluşturma kabiliyetlerinde önemli ilerlemelerle doludur. Bu gelişmeler arasında, bir modelin tek bir giriş örneğinde işleyebileceği bağlam uzunluğu kavramı öne çıkmaktadır. Bu, modelin başarısını belirleyen kritik bir faktördür ve çeşitli uygulamalar arasında önemli bir rol oynamaktadır.
Örneğin, bu modeller video girişlerini işleyebilmekte, uzun belgeleri özetleyebilmekte, çoklu diyaloglarda tutarlılığı koruyabilmekte, zincirleme düşünme ile akıl yürütme yapabilmekte ve çok sayıda örnekle ayrıntılı bağlam öğrenimi gerçekleştirebilmektedir. Bu genişletilmiş yetenek, video üretimi ve anlayışı, hukuki belge analizi, düşük kaynaklı dil çevirisi gibi kapsamlı bağlamın korunmasının kritik olduğu senaryolar için son derece değerlidir. Ayrıca, Yapay Zeka asistanları ile çalışırken de önem taşımaktadır.
Bu yazıda, uzun bağlamlı LLM’lerin teknik temelini keşfedeceğiz ve onları etkili bir şekilde nasıl eğitebileceğinize dair ipuçları sunacağız. İhtiyaçları ve zorlukları haritalandırarak, bu sorunları NVIDIA NeMo Framework kullanarak nasıl aşabileceğinizi göstereceğiz. Çeşitli optimizasyon teknikleri ile verimli bir eğitim ve yüksek throughput sunulmaktadır.
Uzun bağlam uzunluklarına duyulan ihtiyaç ve ilgili zorluklar
Çoklu modalite kullanımlarının artmasıyla birlikte, uzun biçimli video içeriklerini işlemek, modellerin aynı anda binlerce çerçeveye dikkat etmesini gerektirirken, zaman tutarlılığını da korumak önem kazanmaktadır. 1 milyon token’a kadar destek sağlayan uzun bağlamlı modeller, görsel girdilerde kapsamlı zaman bilgilerini saklayabilmektedir.
Kompleks akıl yürütme optimizasyonuna sahip olan modeller, örneğin DeepSeek-R1 ve Llama Nemotron, zincirleme düşünme yöntemi ile çok adımlı sorunları çözmek için uzun bağlama güvenmektedir. Yeterli bağlam penceresi boyutu olmadan, bu modeller kritik mantıksal yolları kesme sorunları yaşayabilir ve hatalar meydana gelebilir. DeepSeek-R1’in bağlam uzunlukları 128K’dan fazla iken, Llama 4 bu sınırları 10 milyon token’ı aşan bir seviyeye taşımıştır.
LLM’leri uzun bağlam uzunlukları ile eğitmek, özellikle bellek yönetimi konusunda önemli teknik zorluklar ortaya çıkarmaktadır. Dönüşüm tabanlı LLM’ler, dizilim uzunluğu arttıkça O(n^2) karmaşıklıkla hesaplama gereksinimini ölçeklendirirken (flash attention kullanımı ile O(n) seviyesine inebilir), ultra uzun bağlamlarla eğitim yapmak oldukça maliyetli hale gelmektedir.
NVIDIA NeMo ile uzun bağlam eğitimini etkinleştirmek
Geliştirici olarak, uzun bağlam eğitimi sürecindeki bellek yönetimini aşağıdaki yöntemlerle geliştirebilirsiniz:
- Aktivasyon yeniden hesaplama
- Bağlam paralelliği
- Aktivasyon dışa yükleme
NeMo Framework, bu yöntemleri en son uygulamalarla destekler ve popüler topluluk modelleri için uzun bağlam tarifleri sunmaktadır.
Aktivasyon Yeniden Hesaplama
Eğitim sırasında ara aktivasyonları saklamak için gereken bellek, dizilim uzunluğu ve model derinliği ile artarak en büyük GPU’ların kapasitesini hızla aşabilir. NeMo Framework, bu sınırlamayı aşmaya yardımcı olan aktivasyon yeniden hesaplama yöntemini destekler. Geri yayılma sırasında gereken tüm ara aktivasyonları saklamak yerine, eğitim süreci sadece bir alt kümesini (her bir dönüşüm katmanının girdileri gibi) kontrol noktası olarak saklar. Geri besleme sırasında gradyanlar hesaplanırken, gerekli aktivasyonlar, ileri aşamanın bir kısmı yeniden çalıştırılarak hesaplanır.
Aktivasyonları saklamaktansa yalnızca küçük bir kısmını depolamak ve geri kalanını yeniden hesaplamak, bellek ayak izini önemli ölçüde azaltır. Bu, ultra uzun dizilimler ve büyük batch boyutlarının sınırlı GPU belleğine sığdırılmasında kritik bir rol oynar. Bağlam uzunluğu arttıkça, aktivasyon belleği, model ağırlıkları ve optimizasyon durumları için gerektiğinden daha fazla bellek talep edebilir. Yeniden hesaplama, daha uzun bağlamları eğitirken maliyet etkinliğini koruyarak eğitim sürecini ölçeklendirmeyi mümkün kılar.

Bağlam Paralelliği
Aktivasyon yeniden hesaplama, geri yayılma sırasında aktivasyonları atarak bellek kullanımını azaltmada etkili olsa da, bu yaklaşım önemli hesaplama yükü getirir ve bu da eğitim sürecini yavaşlatabilir; bu durum her eğitim adımında %30’a kadar yavaşlamalara yol açabilir.
Bağlam paralelliği (BP), daha verimli bir alternatif sunar. NeMo Framework’te uygulanmakla birlikte, Daire Dikkati ile Bloklu Dönüşümler için Neredeyse Sonsuz Bağlam başlıklı çalışmada da tanıtılmıştır. BP, dizilim boyutunu birden fazla GPU arasında bölerek her GPU’nun yalnızca bir dizi parçayı işleyip saklamasına olanak tanır. Bu sayede, çok daha uzun giriş dizilerinin eğitilmesi mümkündür.
Bağlam paralelliği, yalnızca belirli katmanlar için dizileri ayıran dizi paralelliğinden (DP) farklıdır. DP, yalnızca birkaç seçilmiş katmanda, örneğin LayerNorm ve Dropout’da dizileri bölerken, BP tüm katmanlar için dizileri bölmektedir; iletişim maliyetinin ise tüm hesaplamalarla çakışması sağlanmaktadır. Bu yaklaşım, tek bir GPU belleği kapasitesinin sınırlamalarını aşarak yeniden hesaplama yükünü azaltmayı sağlar. Bu da, büyük modelleri uzun diziler üzerinde eğitmek için ölçeklenebilir ve hesaplama açısından verimli bir çözüm sunar, bu da büyük ölçekli derin öğrenme döneminde güçlü bir araç haline gelir.
Bağlam paralelliğinin nasıl çalıştığı
Yüksek düzeyde bakıldığında, BP, standart modüllerin (örneğin Linear, LayerNorm ve diğer noktasal işlemler) herhangi bir değişiklik olmadan çalışmasına olanak tanır. Bu katmanlar, intertoken iletişimi gerektirmediği için doğal olarak parça dizilim düzenini destekler. Ancak dikkat mekanizmasında, her bir token’ın sorgusu (Q), dizideki tüm token’ların anahtar (K) ve değer (V) bilgilerine erişmek zorundadır.
BP, ileri aşama sırasında her GPU’nun yerel dizilim parçasındaki KV’yi saklamasına olanak tanırken, geri yayılma sırasında gereken yerel KV tensörleri tekrar toplanır. Katılım toplama (all-gather) ve indirme (reduce-scatter) gibi iletişim kolektifleri, bir halka topolojisinde optimizasyonlu nokta-nokta iletişim olarak uygulanır. KV değişimi ayrıca, yalnızca bir veya birkaç dikkat başlığı olduğundan iletişim hacimlerini azaltmak için MQA/GQA’yı da kullanabilir.
Örneğin, Şekil 2’de GPU0 ve GPU1 bir tensör paralel grubu oluştururken, GPU0 ve GPU2 bir bağlam paralel grubu oluşturur ve birbirleriyle KV çiftlerini değiş tokuş eder. GPU1 ve GPU3 arasında da aynı işlem gerçekleşmektedir. BP, ayrıca performansı artırarak şu avantajları sağlar:
- Başka bir açık kaynak yazılımı (OSS) ve NVIDIA cuDNN flash dikkat çekirdeklerini kullanarak daha hızlı ve bellek açısından daha verimli dikkat hesaplaması yapılır.
- Düşük üçgen nedensel maskelemelerden kaynaklanan gereksiz hesaplamaları kaldırarak GPU’lar arasında yük dengelemesini optimize eder.

AG/RS: ileri yayılmada tüm toplanma ve geriye dönük yayılmada indirme. RS/AG: ileri yayılmada indirme, geriye dönük yayılmada ileri yayılma; /AG: ileri yayılmada no-op ve geriye dönük yayılmada tüm toplanma.
Bağlam paralelliği karşılaştırmaları
Şekil 3, Llama 3 8B üzerinde 16K’dan 1 milyona kadar dizilim uzunluklarında bağlam paralelliğinin etkinliğini göstermektedir. 32K dizilim uzunluğundan başlayarak, BP kullanıldığında daha yüksek teraflop değerleri elde edilmektedir. 1 milyon dizilim uzunluğuna ulaşıldığında, BP kullanımı modellerin çalışabilmesi için zorunlu hale gelmektedir. Dikkate değer olan, teraflop değerlerinin artan dizilim uzunluklarına rağmen düzleşmeye başlaması; bu da BP uygulamalarının minimum fazlalıkla verimli bir şekilde yapıldığını göstermektedir.

Aktivasyon Dışa Yükleme
Bağlam paralelliğine ek olarak, GPU belleğini etkili bir şekilde yönetmek için bir başka teknik de CPU dışa yükleme yöntemidir. CPU dışa yükleme, ara aktivasyonları ve pasif ağırlıkları CPU belleğine aktararak GPU’nun tepe bellek kullanımını azaltır. NeMo Framework, bu stratejiyi uygulamak için kullanıcıların kaçar katmanın bu yöntemi kullanacağını yapılandırmasına olanak tanır. İleri aşamada, NeMo Framework, aktivasyonları en uygun zamanda dışa yüklerken, geri yayılma aşamasında gerektiğinde tekrar yükler.
Bu dinamik dışa yükleme mekanizması, her GPU’nun bellek kapasitesini daha da artırmaya yardımcı olur; özellikle çok derin modelleri eğitirken çok değerlidir ve büyük model eğitiminde bağlam paralelliğine iyi bir tamamlayıcıdır.
Sonuç
Uzun bağlam uzunluklarının artırılmasına yönelik çeşitli teknikleri uygulamak mümkün olsa da, optimizasyon yaklaşımınızı model mimarisi ve donanım seçimlerinize göre şekillendirmek en iyisidir.
NVIDIA NeMo Framework, LLM’ler, konuşma modelleri ve çoklu modaliteler için GPU hızlandırmalı eğitim çerçevesi olarak, uzun bağlamlı modelleri eğitmek için test edilmiş tarifler sunmaktadır. Bu tarifler, NeMo Framework LLM tarifleri dizininde mevcuttur. Mevcut tarifler, Llama 3 8B ve 70B, Mixtral 8x7B toplantısal model türleri ve Nemotron 4 15B ile 22B gibi 16K, 64K ve 128K dizilim uzunluklarını kapsamaktadır.
Üstelik, önceden eğitilmiş bir kontrol noktası üzerinden bağlam penceresini uzatmayı da mümkün kılmaktadır. Daha fazla bilgi için uzun bağlamlı tarif dökümantasyonuna başvurabilirsiniz.