- Karpathy'nin Autoresearch yaklaşımını GPU çekirdek optimizasyonuna uygular
- PyTorch modeli girdi olarak verildiğinde Triton veya CUDA C++ çekirdeklerini otomatik optimize eden bir GPU çekirdeği otomatik araştırma aracı
- Modelin darboğaz çekirdeklerini profilleyen, çıkaran, optimize eden ve doğrulayan tam otomatik bir boru hattı sunar
- Amdahl yasası tabanlı orkestrasyon ile öncelikleri ayarlar; her deney yaklaşık 90 saniye sürer ve gece boyunca yüzlerce kez yinelenebilir
- KernelBench ile entegre çalışarak 250'den fazla problem için 50 ila 300 tekrar deney yürütür; tek seferlik üretime kıyasla daha sistematik bir arama sağlar
- Triton ve CUDA C++ çift arka ucu, önce doğruluk doğrulaması ve tek dosya değiştirme yapısı ile verimli ve yeniden üretilebilir çekirdek optimizasyonunu destekler
Nasıl çalışır
- AutoKernel, bir PyTorch modelini girdi olarak alır ve şu adımları uygular
- Profilleme ile GPU darboğaz çekirdeklerini belirler
- Bunları çıkararak bağımsız Triton veya CUDA C++ çekirdeklerine ayırır
- Otomatik optimizasyon döngüsü üzerinden düzenleme, benchmark alma, koruma/geri alma işlemlerini tekrarlar
- Doğruluk doğrulamasından sonra toplam hızlanmayı raporlar
program.md içinde yer alan yönergeler temelinde kernel.py dosyasını değiştirir; bench.py üzerinden 5 aşamalı doğruluk kontrolü ve roofline analizi gerçekleştirir
- Her deney yaklaşık 90 saniye sürer; saatte yaklaşık 40, bir gecede yaklaşık 320 deney yapılabilir
Çalıştırma ve bileşenler
- Gerekli ortam: NVIDIA GPU (H100/A100/RTX 4090), Python 3.10+, uv paketi
- Başlıca betikler
profile.py: GPU süresine göre çekirdekleri sıralar
extract.py: en üst düzey darboğaz çekirdeklerini çıkarır
bench.py: 5 aşamalı doğruluk ve performans benchmark'ı
orchestrate.py: Amdahl yasası tabanlı çoklu çekirdek zamanlaması
verify.py: tüm model doğrulaması ve hızlanma raporu
program.md; 6 aşamalı optimizasyon stratejisi, çakışma yönetimi ve karar verme çerçevesi içerir; böylece uzun süreli otomatik çalıştırma mümkündür
Desteklenen çekirdekler ve örnek modeller
- 9 çekirdek türü desteklenir: matmul, softmax, layernorm, rmsnorm, flash_attention, fused_mlp, cross_entropy, rotary_embedding, reduce
- Her çekirdek için PyTorch tabanlı başvuru uygulaması (
reference.py) ve başlangıç Triton/CUDA sürümleri (kernels/, kernels/cuda/) bulunur
- Örnek modeller: GPT-2, LLaMA (7B dahil), BERT-base, kullanıcı tanımlı modeller
- HuggingFace modelleri de
uv sync --extra models ile entegre edilebilir
KernelBench entegrasyonu
- KernelBench (Stanford Scaling Intelligence Lab) ile entegredir ve yapay zeka tarafından üretilen GPU çekirdekleri için standart benchmark sağlar
- AutoKernel, her problem için 50 ila 300 tekrar deney ile optimizasyon alanını sistematik biçimde araştırır
- Başlıca araçlar
bridge.py: problemleri yükler ve başlangıç çekirdeğini oluşturur
bench_kb.py: doğruluk ve performans değerlendirmesi
scorer.py: tüm seviye puanını hesaplar
program_kb.md: KernelBench'e özel ajan yönergeleri
HuggingFace Hub'a dışa aktarma
- Optimize edilmiş çekirdekler HuggingFace Hub'a aktarılabilir ve
get_kernel() ile kolayca çağrılabilir
export_hf.py, CUDA çekirdeklerinin dışa aktarımını ve yüklenmesini destekler
Tasarım ilkeleri
- Triton + CUDA C++ çift arka ucu: Triton hızlı iterasyon, CUDA ise en yüksek performansı sağlar
- Önce doğruluk: Sonuç PyTorch ile eşleşmezse anında geri alınır
- Amdahl yasası tabanlı orkestrasyon ile toplam performansa katkısına göre öncelik belirlenir
- Tek dosya değiştirme yapısı (
kernel.py) sayesinde değişiklik takibi ve geri yükleme kolaydır
- TSV günlükleri (
results.tsv) ile deney sonuçları sade ve okunabilir biçimde kaydedilir
Sonuç kayıt biçimi
results.tsv içinde her deneyin numarası, çekirdek türü, işlem hacmi (TFLOPS), gecikme, GPU tepe değerine oran, PyTorch'a göre hızlanma, doğruluk, VRAM kullanımı ve açıklaması kaydedilir
Proje arka planı
- Andrej Karpathy'nin autoresearch kavramından ilham alarak, LLM araştırmaları için otonom yapay zeka ajanı yapısını GPU çekirdek optimizasyonuna uygular
- KernelBench entegrasyonu Stanford Scaling Intelligence Lab'in araştırmasına dayanır; AutoKernel tek seferlik üretim yerine yinelenen optimizasyon uygular
- Proje, RightNow AI'nin Forge ekibi tarafından geliştirildi ve MIT lisansı ile yayımlandı
1 yorum
Hacker News görüşleri
Gerçekten harika bir proje
Ben de son birkaç haftadır benzer bir şey yapıyordum ama çok daha genel amaçlı ve aşırı tasarlanmış bir sürümdü
Triton’a ve yalnızca belirli çekirdeklere odaklanan bu yaklaşım hem basit hem de verimli
Yalnız ilerleme grafiği kafa karıştırıcı. 4096x4096x4096 fp16 matmul benchmark’ı gibi görünüyor ama cuBLAS’a kıyasla 1.31 kat iyileşme denirken sadece 187 TFLOPS, yani %18.9 tepe kullanım oranı gösteriliyor
cuBLAS tepeye çok daha yakın performans veriyor; muhtemelen CPU overhead’i ya da başka bir darboğaz vardır
Benchmark yapmak gerçekten zor ama önümüzdeki 6 ay boyunca bu alanın aşırı umut verici olduğunu düşünüyorum
Eğer bu, llama.cpp gibi yerlerde çalışır hale gelirse çok daha büyük kazanım olabilir
Çok çeşitli kuantizasyon çekirdekleri ve donanım yapılandırmaları var, ayrıca çok sayıda bireysel kullanıcı bulunduğu için verimlilik artışı büyük olur
Bu projenin oraya katkı verenlerden biri olması güzel olurdu
llama.cpp içinde Q4_K_M, Q5_K_S, Q8_0 gibi çeşitli elle ayarlanmış CUDA çekirdekleri var ve her biri farklı donanım profillerini hedefliyor
GPU bazında otomatik optimizasyon mümkün olursa bu çok büyük bir değişim olur
Çünkü şu anda aynı kuantizasyon formatında bile RTX 3090 ile 5070 Ti arasında büyük performans farkı var
llama.cpp gibi donanım çeşitliliğinin yüksek olduğu ortamlar, otomatik çekirdek aramasının en çok parlayacağı yerlerdir
Harika!
Ben de aynı özelliği Apple Silicon için ekliyorum
autoresearch-everywhere projemde autoresearch’ü ciddi bir araca dönüştürme işi üzerinde çalışıyorum
Bir tuhaflık var
4kx4kx4k fp16 GEMM’e bakınca cutlass yaklaşık 3 kat daha hızlı
Acaba TVM’in Ansor gibi otomatik schedule etme yaklaşımlarıyla karşılaştırmalı benchmark yaptılar mı diye merak ediyorum
Bu daha başlangıç
Bu arada Google benzer bir şeyi zaten iki nesil önceki modelinde yapmıştı
Mayıs 2025 tarihli AlphaEvolve blog yazısında, büyük matris çarpımını daha küçük alt problemlere bölme yöntemiyle Gemini mimarisinin temel çekirdeğini %23 hızlandırıp eğitim süresini %1 azalttıklarını duyurmuşlardı
Artık bu tür teknolojilerin “evde de” mümkün olduğu bir döneme girildi
Özellikle son dönemde RL tabanlı eğitim arttığı için, çıkarım hızındaki artış doğrudan eğitim hızına da yansıyacaktır
Swift veya Rust gibi açık kaynak dil çalışma zamanlarına da bu tür optimizasyonların girip performansın son damlasına kadar sıkılacağı günün ne zaman geleceğini merak ediyorum