Yapay zeka modellerinin yetenekleri, daha karmaşık sorunları çözme kapasitesine doğru genişledikçe, yeni bir ölçeklendirme yasası ortaya çıkıyor: test zamanı ölçeklendirme veya çıkarma zamanı ölçeklendirme. Bu teknik, model performansını artırmak amacıyla çıkarım sırasında ek hesaplama kaynakları tahsis ederek, olası birçok sonucu değerlendirir ve en iyi olanı seçer. Böylece yapay zeka, karmaşık problemleri insanlara benzer bir şekilde analiz edip, her bir bileşeni ayrı ayrı ele alarak nihai bir çözüme ulaşma yeteneğine sahip olur.
NVIDIA mühendislerinin, en yeni açık kaynak modellerinden biri olan DeepSeek-R1 modelini kullanarak gerçekleştirdiği bir deneye değineceğiz. Bu deneyde, ek hesaplama gücü ile karmaşık bir problemi çözmek için otomatik olarak GPU dikkat çekirdekleri üretildi. Amaç, herhangi bir açık programlama olmaksızın sayısal olarak doğru ve çeşitli dikkat türlerine optimize edilmiş çekirdekler oluşturmaktı.
Sonuçlar, bazı durumlarda yetenekli mühendisler tarafından geliştirilen optimize edilmiş çekirdeklerden daha iyi oldu.
Optimize Edilmiş Dikkat Çekirdeklerine Duyulan İhtiyaç ve İlgili Zorluklar
Dikkat, büyük dil modeli (LLM) geliştirilmesinde devrim yaratan ana bir konsepttir. Bu, yapay zeka modellerinin görevleri yerine getirirken girdi verilerinin en ilgili kısımlarına yönelik olarak odaklanmasını sağlayan güçlü bir mekanizmadır. Önemli bilgilere odaklanarak dikkatleme, modellerin daha iyi tahminler yapmalarına ve verilerde gizli kalıpları bulmalarına yardımcı olur.
Dikkat işleminin hesaplama karmaşıklığı, girdi dizisinin uzunluğuna bağlı olarak kare şeklinde artar. Bu, basit uygulamalardan (örneğin, bellek hataları gibi) doğan çalıştırma hatalarını önlemek ve hesaplama verimliliği sağlamak amacıyla optimize edilmiş daha düşük seviyeli bir uygulama (GPU çekirdeği) geliştirilmesi ihtiyacını doğurur.
Dikkatin birçok varyantı bulunmaktadır (nedenli, göreli pozisyonel gömme, alibi vb.) ve mühendislerin belirli bir görev için bu varyantların bir kombinasyonunu kullanması gerekebilir.
Çok modlu modeller (örneğin, görüntü dönüştürücüleri) ek zorluklar getirir; çünkü bunlar bilgisayarla görü, video üretim modelleri gibi durumlarda spatyal zamansal bilgilerin korunması için özel dikkat mekanizmalarına (Uzamsal Komşuluk Dikkati) ihtiyaç duyar.

Optimize edilmiş bir GPU çekirdeği oluşturmak, deneyimli yazılım mühendisleri için bile oldukça zaman alıcı ve zor bir süreçtir.
Son zamanlarda DeepSeek-R1 gibi yeni LLM’ler, kod üretim görevlerinde büyük bir potansiyel göstermiştir, ancak ilk denemede optimize edilmiş kod oluşturma zorluğuyla karşılaşmaktadırlar. Bu, çıkarım zamanı için başka stratejilerin kullanılmasını gerektirir.
Aşağıda, göreli pozisyonel gömme dikkat çekirdeği için örnek bir kullanıcı girişi bulunmaktadır.
Lütfen göreli pozisyon kodlamalarını destekleyen bir GPU dikkat çekirdeği yazın. Kernel içinde görece pozisyonel kodlamayı dinamik olarak uygulayın. Tüm kodun, gerekli değişiklikler dahil olmak üzere, geri gönderilmesi gerekiyor.
Aşağıdaki fonksiyonu kullanarak göreli pozisyonel kodlamayı hesaplayın:
def relative_positional(score, b, h, q_idx, kv_idx):
return score + (q_idx - kv_idx)
Kernel'ı uygularken, göreli pozisyonel kodlama için 1.44269504 sabit ölçek faktörünün uygulanması gerektiğini unutmayın, çünkü qk_scale = sm_scale * 1.44269504. PyTorch referansı göreli pozisyonel kodlamayı ölçeklendirmiyor ancak GPU çekirdeğinde:
qk = qk * qk_scale + rel_pos * 1.44269504
Lütfen bu değişiklikleri etkili bir şekilde uygulayan güncellenmiş çekirdek kodunu sağlayın.
LLM’ler, bazen gerçek olmayan (hayalî) kodlar üretebilir veya farklı dillerden veya çerçevelerden sözdizimini karıştırabilir, bu da anında kod hatalarına veya verimsizliklere neden olur. Ayrıca, optimal GPU konu haritalaması yapmak da karmaşık bir görevdir ve doğru ve verimli bir çekirdek elde etmek için genellikle yinelemeli bir iyileştirme gerektirir.
Çıkarma Zamanı Ölçeklendirme ile Optimize Edilmiş GPU Çekirdekleri
Optimize edilmiş dikkat çekirdekleri ile en iyi sonuçları elde etmek için NVIDIA mühendisleri, çıkarım sırasında DeepSeek-R1 modelinin yanında özel bir doğrulayıcı kullanarak yeni bir iş akışı oluşturdu.

İş akışı, öncelikle manuel bir komutla başlatılır ve DeepSeek-R1 modeli, ilk aşamada GPU kodunu (yani çekirdek) üretir. Daha sonra doğrulayıcı, bir NVIDIA H100 GPU’sunda çalışır. Üretilen çekirdeği analiz ederek, yeni komutlar oluşturur ve bunları DeepSeek-R1 modeline girdi olarak verir.
Bu kapalı döngü yaklaşımı, kod üretim sürecini her seferinde farklı bir şekilde yönlendirerek geliştirmektedir. Ekip, bu işlemi 15 dakika boyunca sürdürdüklerinde, gelişmiş bir dikkat çekirdeği elde ettiklerini buldular.

Bu iş akışı, Stanford’un KernelBench benchmark’ı tarafından test edilen Seviye-1 problemlerinin %100’ü ve Seviye-2 problemlerinin %96’sı için sayısal olarak doğru çekirdekler üretti.
KernelBench’teki Seviye-1 çözümleme oranı, belirli hesaplama görevleri için etkili GPU çekirdeklerini üretme yeteneğini değerlendirmek için kullanılan sayısal doğruluk ölçütünü belirtmektedir. Bu test, en son LLM’lerin GPU programlama becerilerini test etmek için bir dizi zorluğun parçasıdır.
Şekil 4, çıkarım zamanı bütçesinin ajanın çözümleme oranını nasıl etkilediğini göstermektedir. Seviye-1 kategorisinde, her bir probleme 10 dakikadan fazla süre tahsis edilmesi, iş akışının %100 doğrulukla sayısal olarak doğru kod üretmesini sağlamaktadır.

DeepSeek-R1 Üzerinden Optimize Edilmiş GPU Çekirdekleri
Bu sonuçlar, en yeni DeepSeek-R1 modelinin çıkarım zamanı daha fazla bilgisayar gücü kullanarak daha iyi GPU çekirdekleri üretebileceğini göstermektedir. Bu hâlâ yeni bir araştırma alanı olup, etkili dikkat çekirdeklerini otomatik olarak oluşturma konusunda umut verici bir yaklaşımdır.
İlk aşamada iyi bir başlangıç yaptığımızı görmekle birlikte, daha geniş bir problem yelpazesi için daha tutarlı sonuçlar üretmek amacıyla daha fazla çalışmaya ihtiyaç bulunmaktadır. Son gelişmeler ve DeepSeek-R1‘in potansiyeli için heyecanlıyız.
Daha fazla bilgi almak veya başlamak için DeepSeek-R1 NIM mikroservisine göz atabilirsiniz. Bu servis artık build.nvidia.com adresinde mevcut.