TRL documentation
Kernels Hub Entegrasyonu ve Kullanımı
Kernels Hub Entegrasyonu ve Kullanımı
kernels kütüphanesi, optimize edilmiş hesaplama çekirdeklerinin doğrudan Hub'dan yüklenmesine olanak tanır.
kernels öğelerini özel kuruluşlarda veya Hub içinde kernel etiketini aratarak bulabilirsiniz.
Kernels, model geliştirme, eğitim ve çıkarım süreçlerinde yardımcı olan optimize edilmiş kod parçalarıdır. Burada, TRL ile entegrasyonlarına odaklanacağız; ancak bunlar hakkında daha fazla bilgi edinmek için yukarıdaki kaynaklara göz atın.
Kurulum
TRL ile çekirdekleri kullanmak için kütüphaneyi Python ortamınıza kurmanız gerekir:
pip install kernels
TRL'de Hub'dan Çekirdekler Kullanma
Kernels, dikkat (attention) uygulamalarının yerini doğrudan alarak Flash Attention gibi dikkat arka uçlarını manuel olarak derleme ihtiyacını ortadan kaldırır ve ilgili dikkat çekirdeğini Hub'dan çekmekle yetinerek eğitim hızını artırır.
Bir model yüklerken bir çekirdek (kernel) belirtebilirsiniz:
from transformers import AutoModelForCausalLM
model = AutoModelForCausalLM.from_pretrained(
"your-model-name",
attn_implementation="kernels-community/flash-attn2" # other options: kernels-community/vllm-flash-attn3, kernels-community/paged-attention
)Veya bir TRL eğitim betiği çalıştırırken:
python sft.py ... --attn_implementation kernels-community/flash-attn2
veya TRL CLI'yi kullanarak:
trl sft ... --attn_implementation kernels-community/flash-attn2
Artık Hub'dan donanım yapılandırmanız için önceden optimize edilmiş bir çekirdek kullanarak daha hızlı dikkat (attention) arka uçlarından yararlanabilir, hem geliştirme hem de eğitim süreçlerini hızlandırabilirsiniz.
Çekirdek Sürümü Seçme ve Sabitleme
Hub üzerindeki çekirdek depoları dallar olarak sürümlenir (v1, v2, v3, …) ve Transformers her depo için varsayılan bir sürüm seçer. Bu varsayılan, bir Transformers sürümünden diğerine değişebileceğinden, aynı attn_implementation değeri her zaman aynı derlemeye çözümlenmeyebilir.
Hangi derlemenin yükleneceğini kontrol etmek için, depo kimliğine bir revizyon ekleyin; bu, bir sürüm dalı veya bir commit SHA olabilir:
from transformers import AutoModelForCausalLM
model = AutoModelForCausalLM.from_pretrained(
"your-model-name",
attn_implementation="kernels-community/flash-attn2@v2", # or a commit SHA to pin an exact build
)Pinning, bir eğitim çalışmasını yeniden üretilebilir kılmak ve daha yeni bir sürümde gerileme olduğunda bilinen iyi bir derlemede kalmak için kullanışlıdır. Her sürümün yalnızca belirli bir Torch ve CUDA sürümü aralığı için derlemeler içerdiğini unutmayın; bu nedenle sabitlenmiş bir sürümün sizin ortamınız için bir varyantı olmayabilir.
attn_implementation="flash_attention_2",flash-attnpaketi yüklü değilsekernels-community/flash-attn2Hub çekirdeğine geri döner; bu nedenle, açıkça talep etmemiş olsanız bile bir Hub çekirdeği kullanıyor olabilirsiniz.
CUDA 12.8 için
v3derlemeleri, gruplu sorgu dikkati (grouped-query attention) kullanan modellerde geri yayılım (backward pass) aşamasında şu anda başarısız oluyor. Ortamınız bu CUDA sürümünü kullanıyorsa, huggingface/kernels-community#1085 kapatılana kadar@v2sürümüne sabitleyin.
Dikkat Uygulamalarının Karşılaştırılması
TRL ve SFT kullanarak,
transformers içindeki çeşitli dikkat (attention) uygulamalarını ve farklı çekirdek (kernel) arka uçlarını değerlendirdik. Deneyler, H100 GPU üzerinde CUDA 12.9 ile, Qwen3-8B modeli, batch size of 8, gradient accumulation of 1 ve bfloat16 hassasiyeti kullanılarak gerçekleştirildi.
Burada gösterilen sonuçların bu kurulumla sınırlı olduğunu ve farklı eğitim yapılandırmalarıyla değişebileceğini göz önünde bulundurun.
Aşağıdaki şekil, farklı dikkat (attention) uygulamaları ve çekirdek (kernel) arka uçları için hem gecikmeyi (eğitim adımı başına süre) hem de zirve tahsis edilen belleği göstermektedir.
Çekirdeğe dayalı uygulamalar, özel olarak kurulan dikkat ile aynı performansı sergiler ve modelin max_length değerinin artırılması performansı daha da iyileştirir. Bellek tüketimi tüm uygulamalarda benzer olup önemli bir fark gözlenmemektedir. sonraki bölümde açıklandığı gibi, daha az sürtünme ile aynı performansı elde ediyoruz.

Flash Attention ve Hub Çekirdekleri
Flash Attention'ı kaynak kodundan derlemek zaman alıcı olabilir; donanımınıza, CUDA/PyTorch yapılandırmanıza ve önceden derlenmiş tekerleklerin (wheels) mevcut olup olmamasına bağlı olarak birkaç dakikadan saatlere kadar sürebilir.
Buna karşın, Hugging Face Kernels çok daha hızlı ve güvenilir bir iş akışı sunar. Geliştiricilerin karmaşık kurulumlarla uğraşmasına gerek yoktur; her şey otomatik olarak ele alınır. Benchmark testlerimizde, derleme gerektirmeden çekirdekler yaklaşık 2,5 saniyede kullanıma hazır hale geldi. Bu sayede eğitim neredeyse anında başlatılabilir ve geliştirme süreci önemli ölçüde hızlandırılır. İstenen sürümü belirtmeniz yeterlidir, gerisini kernels halleder.