TorchNeuron Profilleme (Bölüm 1): AWS Trainium Üzerinde Sistem Düzeyinde Performans Analizi
Kaynak: Hugging Face Blog
İçindekiler 3 başlık
Birçok makine öğrenmesi (ML) geliştiricisi modelleri nasıl hızlandıracağına dair sezgisel bir fikre sahiptir; ancak bir modelin neden yavaş çalıştığını sistematik olarak analiz edebilenlerin sayısı oldukça azdır. Bu serinin ilk bölümünde, derin öğrenme eğitimi ve çıkarım (inference) iş yükleri için özel olarak tasarlanmış AWS Trainium yapay zeka çipi ve onun açık kaynaklı yerel PyTorch arka ucu olan TorchNeuron kullanarak çıkarım performansını sıfırdan nasıl analiz edeceğinizi öğreneceksiniz.
TorchNeuron, standart PyTorch iş akışlarını (eager execution, torch.compile ve standart API'ler) minimum kod değişikliğiyle destekler. Ayrıca özel operatörler ve donanım optimizasyonu için Neuron Kernel Interface (NKI) ile entegre çalışır. Yazılım geliştirme sürecinde varsayımlarla hareket etmek yerine darboğazları veriye dayalı olarak tespit etmek, üretim ortamındaki maliyet ve gecikme (latency) sürelerini doğrudan iyileştirir.
Bu rehberin sonunda şunları öğrenmiş olacaksınız:
torch.profileraracını Neuron arka ucu ile yapılandırmayı ve temiz bir izleme (trace) kaydı yakalamayı.- Hangi işlemlerin Neuron cihaz zamanını tükettiğini belirlemek ve bunları Self CPU zamanı ile karşılaştırmak için
key_averages()tablosunu okumayı. - Bir işlemi framework dağıtımından (dispatch) çalışma zamanı (runtime) planlamasına ve NeuronCore üzerindeki donanım yürütmesine kadar Neuron Explorer üzerinden takip etmeyi.
- Aynı işlemin üç farklı uygulamasında bu sinyallerin nasıl değiştiğini analiz etmeyi.
Bir PyTorch Arka Ucu Olarak Neuron#
Bir iş yükünü profillemeden önce Neuron'un PyTorch ile nasıl entegre olduğunu anlamak önemlidir. Neuron arka ucu, PyTorch'un PrivateUse1 genişletme noktasını kullanır. Bu mekanizma, bir hızlandırıcının cuda gibi özel bir dağıtım anahtarı eklemeden doğrudan framework ile entegre olmasını sağlar. torch_neuronx paketi, Neuron'u yerel bir arka uç olarak kaydetmek için ana PyTorch yapısıyla birlikte çalışır. Geliştiriciler için bu mimari, mevcut PyTorch kod tabanını neredeyse hiç değiştirmeden özel donanımlara taşıyabilme esnekliği sunar.
Profilleyiciyi (Profiler) Kurma#
Bir Neuron iş yükünü profillemek için iki temel nesne kullanılır:
- NeuronConfig: Hangi Neuron veri akışlarının ve NeuronCore birimlerinin yakalanacağını ve çıktının nereye yazılacağını kontrol eder.
torch.profiler.profileiçerisineexperimental_configolarak iletilir. - NeuronProfiler: Bir
NeuronConfigalır veexport_tracegeri çağırma (callback) işlevini sağlar. Bu işlev, framework izlemesini (trace.json) Neuron sistem izlemelerinin yanına yazar.
nc = NeuronConfig(
modes=[ProfileMode.DEVICE, ProfileMode.RUNTIME],
profile_output_dir=OUTPUT_DIR,
capture_enabled_for_nc='0',
correlate_device_time=True,
)
exporter = NeuronProfiler(nc)
Burada modes parametresi cihaz komutları ve çalışma zamanı izleri gibi yakalanacak veri akışlarını seçerken, capture_enabled_for_nc izlenecek çekirdekleri belirler. Pratik açıdan en kritik parametrelerden biri olan correlate_device_time=True ayarı, cihaz süresini izlemeden key_averages() tablosuna aktarır; böylece CPU ve Neuron cihaz sürelerini doğrudan aynı tabloda karşılaştırabilirsiniz.
Araçlar: Neuron Explorer#
Neuron Explorer, sistem izini, cihaz zaman çizelgesini ve motor bazında kırılımları incelemeye yarayan tarayıcı tabanlı bir görüntüleyicidir. Bir SSH tüneli veya Visual Studio Code eklentisi aracılığıyla erişilebilir. Pratik yazılım geliştirme süreçlerinde key_averages() tablosunun sayısal olarak raporladığı verileri görsel olarak doğrulamak ve dağıtımlar (dispatches) arasında donanım seviyesinde neler olup bittiğini incelemek için bu araç kritik bir rol oynar.
Bu konuyu derinlemesine öğrenmek isterseniz: Ölçeklendirme ve Optimizasyon modülüne göz atın.
Kaynak ve atıf
Bu yazı, Hugging Face Blog üzerinde yayımlanan içerikten yararlanılarak Edumints tarafından yapay zekâ desteğiyle Türkçe hazırlandı. Ayrıntılar ve yazarların kendi anlatımı için orijinaline bakabilirsin:
- huggingface.co/blog/amazon/profiling-torchneuron-part-1