SON DAKİKA

Nvdia

“Yapay Zeka Çıkarsamasında Gecikmeyi Azaltmak İçin Spekülatif Çözümleme: Temel Bir Giriş”

Metin üretimi, büyük dil modelleri (LLM’ler) ile gerçekleştirildiğinde, temel bir darboğaz ile karşılaşmak kaçınılmazdır. GPU’lar devasa hesaplama gücü sunar, ancak bu gücün büyük bir kısmı aktif olarak kullanılmaz çünkü otomatik üretim doğası gereği sıralıdır: Her token, tam bir ileri geçiş gerektirir ve bu işlem adım adım yapıldığında her aşama için hafıza senkronizasyonu ile ağırlıkların yeniden yüklenmesi gereklidir. Bu hafıza erişimi ve adım bağımlılığı, gecikmeyi yükseltmekte, donanımın verimli kullanımını kısıtlamakta ve sistem verimliliğini sınırlamaktadır.

Spekülatif kodlama bu engeli aşmaya yardımcı olur. Birden fazla token’i aynı anda tahmin edip doğrulayan bu teknik, sonuçlara ulaşma süresini kısaltır ve AI çıkarımını daha hızlı ve daha duyarlı hale getirir. Önemli ölçüde gecikmeyi azaltırken çıktı kalitesini korur. Bu yazı, spekülatif kodlamanın nasıl çalıştığını, ne zaman kullanılacağını ve EAGLE-3 gibi gelişmiş tekniklerin NVIDIA GPU’larda nasıl kullanılacağını araştırmaktadır.

Spekülatif Kodlama Nedir?

Spekülatif kodlama, bir hedef modeli hızlı bir şekilde birçok sonraki token’i öneren hafif bir taslak mekanizmasıyla birleştiren bir çıkarım optimizasyon tekniğidir. Hedef model, bu önerileri tek bir ileri geçişte doğrular, kendi tahminleriyle örtüşen en uzun ön eki kabul eder ve buradan devam eder. Standart otomatik kodlamaya kıyasla, bu teknik sistemin bir defada birden fazla token üretmesine olanak tanır, gecikmeyi azaltır ve verimliliği artırır, bu da doğruluk üzerinde hiçbir olumsuz etki yaratmaz.

Büyük dil modelleri (LLM’ler) oldukça yetenekli olmalarına rağmen, genellikle AI donanımının sınırlarını zorlar ve bu da kullanıcı deneyimini ölçeklendirirken daha da optimize etmeyi zorlaştırır. Spekülatif kodlama, bu çalışmanın bir kısmını daha az kaynak kullanan bir modele devrederek bir alternatif sunar.

Spekülatif kodlama, bir laboratuvardaki baş bilim insanı gibi çalışır; etkin ama deneyimsiz bir asistan, rutin deneyleri idare ederken, bilim insanı doğrulama ve ilerleme odaklı olur. Asistan, kontrol listesini hızla geçerken, bilim insanı gerektiğinde müdahale ederek veya devralarak doğru yolu bulur.

Bu bağlamda, hafif asistan model çoklu olası devamlılıkları önerirken, daha büyük model bunları bir grup halinde doğrular. Nihai fayda, ardışık adım sayısını azaltarak hafıza bant genişliği darboğazlarını hafifletmektir. Kritik olarak, bu hızlandırma çıktı kalitesi korunarak gerçekleşir; çünkü doğrulama mekanizmaları, temel modelin üretebileceği sonuçlardan sapmayı engeller.

Taslak-Hedef Yaklaşımı ile Spekülatif Kodlama Temelleri

Bu bölüm, spekülatif kodlamanın etkili mekaniklerini açıklayan temel kavramları ele almaktadır. Öncelikle, transformer’ın ileri geçişinin dizileri nasıl paralel işlediğini göstererek başlıyoruz. Sonraki adımlar ise taslak oluşturma, doğrulama ve bir taslak-hedef yaklaşımı ile örnekleme içermektedir. Bu temel bilgiler, hem klasik taslak-hedef yönteminin hem de gelişmiş teknikler için gerekli bağlamı sağlar.

Taslak-Hedef Yaklaşımı Nedir?

Taslak-hedef yaklaşımı, spekülatif kodlamanın klasik uygulamasıdır ve iki model sistemine dayanır. Birincil model, çıktı hızlandırılmak istenen büyük ve yüksek kaliteli hedef modeldir. Bunun yanında, genellikle hedef modelin basitleştirilmiş ya da damıtılmış bir versiyonu olan daha küçük ve hızlı bir taslak model yer alır.

Laboratuvar bilim insanı benzetmesine geri dönersek, hedef model titiz bir bilim insanı gibi, doğruluğu sağlarken; taslak model, önerileri hızlıca sunan etkili bir asistan gibidir. Bu işbirliği, taslak modelin hedef model için dört taslak token üretirken, hedef modelin ise bunları doğrulayıp iki tanesini kabul etmesi ve bir ek token üretmesi sürecini temsil eder.

Taslak-hedef yaklaşımını kullanarak spekülatif kodlama aşağıdaki adımları içerir:

Taslak Oluşturma

Daha küçük ve verimli bir mekanizma, genellikle 3 ila 12 token arası aday dizisi üretir. Bu genellikle, aynı veri dağılımında eğitim görmüş ayrı bir daha küçük model şeklindedir. Hedef modelin çıktısı, taslak modelin eğitimi için temel olarak kabul edilir.

Paralel Doğrulama

Hedef model, giriş dizisini ve tüm taslak tokenlerini aynı anda tek bir ileri geçişte işler; bu da her pozisyon için olasılık dağılımlarını hesaplar. Bu paralel işlemleme, sistem verimliliği için temel bir kazanç sağlar; çünkü bu yöntem, hedef modelin tüm hesaplama kapasitesini kullanarak ardışık üretim sırasında göz ardı edilen gücü kullandırır. KV Cache sayesinde, orijinal önceden hesaplanan değerler saklandığından, yalnızca yeni speküle edilmiş tokenler bu doğrulama geçişinde maliyet oluşturur. Doğrulanan tokenler, sonraki üretim aşaması için yeni ön eki oluşturmak üzere seçilir.

Reddeleme Örnekleme

Reddeleme, hedef modelden gelen olasılık dağılımı oluşturulmasının ardından karar verme aşamasıdır.

Reddeleme örneklemede önemli olan, kabul etme mantığıdır. Bu mantık, taslak modelin önerilen olasılığı P(Draft) ile hedef modelin gerçek olasılığı P(Target) arasında bir karşılaştırma yapar.

İlk iki token, “Brown” ve “Fox” için, P(Target) P(Draft)’den büyük olduğu için kabul edilir. Ancak, “Hopped” durumu bu oran düşmektedir. Bu durumda kabul edilemez ve daha sonra gelen bütün tokenler de reddedilmiş olur. Süreç, sadece son kabul edilen token olan “Fox” kelimesinden standart otomatik üretim sürecine geri döner.

Bir taslak tokenin yalnızca hedef modelin ürettikleriyle eşleştiğinde kabul edilmesi sağlanır. Bu token bazında yapılan titiz doğrulama, nihai çıktının hedef modelin ürettiği ile aynı olmasını garanti eder, hızlı sonuçların doğrulukta kayba neden olmadan elde edilmesini sağlar.

Kabul edilen token sayısının toplam üretimle oranı, kabul oranını tanımlar. Daha yüksek kabul oranları, daha önemli hızlandırmalar sağlar ve en kötü durumda, tüm taslak tokenler reddedildiğinde yalnızca bir hedef model tokeni üretilir.

EAGLE Yaklaşımı Nedir?

EAGLE ya da Daha Büyük Dil Modeli Verimliliği için Ekstrapolasyon Algoritması, özellik düzeyinde çalışan bir spekülatif kodlama metodudur ve hedef modelin çıktıların öncesindeki gizli durumlardan ekstrapole edilir. Taslak-hedef yaklaşımına göre, token önermek için ayrı bir taslak model gerektiğinden, EAGLE, hedef modelin gizli durumlarından gelen özellikleri kullanan hafif bir ardışık tahmin başlığı kullanır. Bu, ikinci bir model eğitme ve çalıştırma yükünü ortadan kaldırırken hâlâ hedef modelin çoklu token adayları doğrulamasını sağlar.

EAGLE-3, bu temeli geliştirerek, hedef modelden düşük, orta ve yüksek seviyeli gömme özelliklerini doğrudan taslak başlığına alınmasını sağlar. Ayrıca, daha önceki EAGLE-2‘den miras alınan bağlama duyarlı ve dinamik bir taslak ağacı ile çoklu zincirlenmiş hipotezler önermektedir. Bu aday tokenler, hedef model tarafından paralel ağaç dikkati yardımıyla doğrulanır ve geçersiz dallar budanarak hem kabul oranı hem de verimlilik arttırılır.

EAGLE Başlığı Nedir?

En azından, taslak-hedef yaklaşımında olduğu gibi, EAGLE-3, hedef modelin iç katmanlarına bağlı hafif bir taslak bileşeni olan “EAGLE başlığı”nı ekler. EAGLE başlığı, genellikle, hafif bir Transformer decoder katmanı ve ardından bir son lineer katmandan oluşur. Esasında, bu, ana modelin yapı taşlarından oluşan küçültülmüş bir versiyonudur.

EAGLE başlığı, sadece bir dizi oluşturmakla kalmaz, aynı zamanda bir önceki durumda olduğu gibi tüm bir aday token ağacını da üretebilir. Bu süreç, başlığın oluşturduğu ağaç içerisinde güven seviyesini değerlendirerek ve güven seviyesi belirli bir eşiğin altına düştüğünde taslak oluşturmayı durdurarak örneklemeye alır. Buna bağlı olarak, EAGLE başlığı, tahmin edilebilir uzun metinlerin daha uzun dallarını ve karmaşık kısımlar için daha kısa olanlarını verimli bir şekilde keşfederek yalnızca bir hedef model ileri geçişinin işletim maliyeti ile çalışır.

Multi-Token Tahmin Nedir?

EAGLE’a benzer şekilde, Multi-Token Tahmin (MTP) birçok DeepSeek sürümünde kullanılan bir spekülatif teknik olarak tanımlanabilir. MTP, yalnızca hemen gelecek olan token’i öngörmek yerine, birden fazla token’i aynı anda tahmin etme yeteneğini geliştirir. Her bir başlık, ayrı tahminler yaparken, ilk başlık “ilk taslak token’i” tahmin ederken, diğer başlıklar bir sonraki token için tahminler yapar. Ana model, bu tahminleri sırayla kontrol ederek en uzun uyumlu ön eki muhafaza eder. Bu teknik, ayrıca ayrı bir taslak modeline ihtiyaç duymadan, bu kurgu gelecekten birkaç token önerir.

Özetle, bu teknik, EAGLE tarzında olan spekülatif kodlamaya benzer. Her ikisi de doğrulama için birden fazla token önerir. Ancak, önerilerin nasıl oluşturulacağı açısından farklıdır: MTP, özel çoklu-token tahmin başlıklarını kullanırken, EAGLE, içsel özellik durumlarını kullanarak adayları oluşturmak için tek bir başlık kullanır.

Spekülatif Kodlamayı Nasıl Uygulamalıyım?

Kendi modellerinize spekülatif kodlama uygulamak için NVIDIA TensorRT-Model Optimizer API kullanabilirsiniz. EAGLE-3 spekülatif kodlama tekniğini uygulamak için aşağıdaki adımları takip edebilirsiniz:

1. Adım: Orijinal Hugging Face modelini yükleyin.

import transformers

import modelopt.torch.opt as mto
import modelopt.torch.speculative as mtsp
from modelopt.torch.speculative.config import EAGLE3_DEFAULT_CFG

mto.enable_huggingface_checkpointing()

# Orijinal HF modelini yükle
base_model = "meta-llama/Llama-3.2-1B"
model = transformers.AutoModelForCausalLM.from_pretrained(
    base_model, torch_dtype="auto", device_map="cuda"
)

2. Adım: EAGLE-3’ün varsayılan yapılandırmasını içe aktarın ve mtsp kullanarak bunu dönüştürün.

# EAGLE3 için Varsayılan Yapılandırmayı Oku
config = EAGLE3_DEFAULT_CFG["config"]

# Gizli boyut ve kelime haznesi boyutu temel modelle eşleşmelidir
config["eagle_architecture_config"].update(
    {
        "hidden_size": model.config.hidden_size,
        "vocab_size": model.config.vocab_size,
        "draft_vocab_size": model.config.vocab_size,
        "max_position_embeddings": model.config.max_position_embeddings,
    }
)

# Modeli EAGLE spekülatif kodlaması için dönüştür
mtsp.convert(model, [("eagle", config)])

Spekülatif kodlamayı kendi modelinize uygulamak için bu yazımda yer alan örneklerin daha fazlasını TensorRT-Model-Optimizer/examples/speculative_decoding GitHub deposundaki uygulama kılavuzuna göz atabilirsiniz.

Spekülatif Kodlama Gecikmeyi Nasıl Etkiler?

Standart otomatik üretimdeki temel gecikme darboğazı, her aşamanın sabit ardışık maliyetidir. Tek bir ileri geçiş (ağırlıkları yükleme ve bir token’ı hesaplama) 200 milisaniye alıyorsa, üç token’ı üretmek her zaman 600 ms sürer (üç ardışık adım, 200 ms ile çarpılır). Kullanıcı, bu gecikmeyi birbirini izleyen bekleme süreleri olarak deneyimlemektedir.

Spekülatif kodlama, bu çoklu bekleme sürelerini tek bir zaman diliminde birleştirerek etki eder. Hızlı bir taslak mekanizması kullanarak iki aday token tahmin edebilir ve bunları tek bir 250 ms ileri geçişte doğrularken, model üç token (iki spekülasyon ve bir temel model üretimi) 250 ms içinde üretebilir. Bu kavram, Şekil 4’te gösterilmektedir.

Kullanıcı her bir kelimenin yanı sıra birden fazla token gruplarının aniden ortaya çıktığını gözlemleyerek daha akıcı bir deneyim yaşar. Bu durum, etkileşimli uygulamalar, örneğin chatbotlar gibi alanlarda, daha hızlı yanıt gecikmeleri yaratarak daha doğal ve akıcı bir sohbet ortamı sağlar. Şekil 5, spekülatif kodlama etkin ve etkisiz durumda bir chatbotun çıktısını yan yana göstermektedir.

Spekülatif Kodlamaya Başlamak İçin

Spekülatif kodlama, LLM çıkarımını hızlandırmak için temel bir strateji haline gelmektedir. Hem taslak-hedef üretimi hem de paralel doğrulama temelleri ile EAGLE-3 gibi ileri düzey yöntemler, ardışık token üretimi sırasında bekleyen hesaplamalarla başa çıkmaya yardımcı olmaktadır.

İş yükleri genişledikçe ve hem daha hızlı yanıt sürelerine hem de daha iyi sistem verimliliğine olan talep arttıkça, spekülatif kodlama gibi teknikler giderek daha merkezi bir rol oynamaktadır. Bu yöntemlerin NVIDIA TensorRT-LLM, SGLANG ve vLLM gibi çerçeveler ile birleştirilmesi, geliştiricilerin daha performanslı, daha pratik ve daha maliyet etkin modeller konuşlandırmasını sağlar.

Başlamak için hazır mısınız? Kendi modelinize spekülatif kodlamayı uygulamak için TensorRT-Model-Optimizer/examples/speculative_decoding GitHub reposundaki Jupyter notebook eğitimine göz atabilirsiniz.

Teşekkürler

Bu yazının geliştirilmesine ve yazımına katkı sağlayan NVIDIA mühendislerine, özellikle Chenhan Yu ve Hao Guo’ya teşekkür ederiz.

Kaynak

Nvdia Blog

Düşüncenizi Paylaşın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

İlgili Teknoloji Haberleri