AI Model Inference İçin CPU Affinity Ayarı

AI modellerinin çıkarım (inference) süreçlerinde performans optimizasyonu, modern veri merkezleri ve edge computing ortamlarında kritik bir öneme sahiptir.

AI modellerinin çıkarım (inference) süreçlerinde performans optimizasyonu, modern veri merkezleri ve edge computing ortamlarında kritik bir öneme sahiptir. CPU affinity ayarı, belirli CPU çekirdeklerini bir işleme veya iş parçacığına sabitleyerek, önbellek tutarlılığını artırır, bağlam anahtarlamalarını azaltır ve genel throughput’u yükseltir. Bu makalede, AI inference için CPU affinity’nin nasıl yapılandırılacağını, pratik adımları ve en iyi uygulamaları detaylı bir şekilde ele alacağız. Özellikle büyük dil modelleri veya görüntü işleme gibi yoğun hesaplama gerektiren senaryolarda, bu ayarlar saniyede işlenen token sayısını belirgin ölçüde iyileştirebilir.

CPU Affinity Kavramı ve AI Inference’daki Rolü

CPU affinity, bir işletim sistemi sürecinin veya iş parçacığının yalnızca belirli CPU çekirdekleri üzerinde çalışmasını sağlayan bir mekanizmadır. Linux tabanlı sistemlerde, scheduler tarafından yönetilen bu özellik, NUMA (Non-Uniform Memory Access) mimarilerinde bellek erişim gecikmelerini minimize eder. AI inference bağlamında, modellerin matris çarpımları ve aktivasyon fonksiyonları gibi işlemlerinde, çekirdekler arası göçler (migration) performans kaybına yol açar. Affinity ile sabit çekirdek ataması yaparak, L1/L2 önbellek hit oranlarını %20-30 oranında artırabilirsiniz.

Pratikte, multi-threaded inference kütüphaneleri gibi ONNX Runtime veya TensorFlow Serving kullanırken, affinity ayarları varsayılan scheduler davranışını ezer. Bu, özellikle ARM tabanlı sunucularda veya Intel Xeon işlemcilerde belirgindir. Affinity’nin etkinleştirilmesi, CPU utilization’ını dengeler ve termal throttling’i önler, böylece uzun süreli inference servislerinde stabilite sağlar.

Linux Ortamında CPU Affinity Yapılandırma Adımları

Taskset Komutu ile Temel Affinity Ataması

Taskset, en basit ve etkili araçtır. Bir süreci başlatırken belirli çekirdekleri belirtmek için kullanılır. Örneğin, 4 çekirdekli bir sistemde inference uygulamasını çekirdek 0-3’e sabitlemek için şu komut çalıştırılır: taskset -c 0-3 python inference_server.py. Bu, process ID’si (PID) bilinen bir işlem için de uygulanabilir: taskset -cp 0-3 <PID>. Affinity maskesini hex formatında da verebilirsiniz, örneğin 0xF için ilk dört çekirdek. Inference sırasında, bu ayar model yükleme süresini kısaltır ve latency’yi düşürür, zira önbellek sıcak kalır.

Otomatikleştirme için systemd servis dosyalarına ekleyin: CPUAffinity=0-3 direktifiyle. Testlerde, bu yöntemle inference hızı %15’e varan iyileşme gösterir, özellikle batch size 1-16 aralığında.

Numactl ile NUMA-Aware Affinity

NUMA sistemlerde numactl, bellek node’larını da dikkate alır. Komut örneği: numactl --cpunodebind=0 --membind=0 python model_inference.py. Bu, CPU node 0 ve memory node 0’i affinity yapar. AI modelleri için, tensor verilerinin yerel NUMA node’unda kalması page fault’ları azaltır. Python multiprocessing ile entegre etmek için, os.sched_setaffinity(0, [0,1,2,3]) kullanın; burada 0 process ID’sidir. Gerçek dünya senaryosunda, bir BERT modeli inference’ında latency 50ms’den 35ms’ye iner.

Python ve C++ Kütüphanelerinde Programatik Ayar

Python’da psutil veya os modülleriyle dinamik affinity: import os; os.sched_setaffinity(0, range(8)). C++’ta pthread_setaffinity_np ile thread-level kontrol sağlanır. Inference framework’lerinde, örneğin PyTorch’ta torch.set_num_threads ile kombine edin. Bu yaklaşım, dinamik workload’larda esneklik verir ve hyper-threading’i optimize eder.

En İyi Uygulamalar ve Performans Ölçümü

Affinity ayarlarını uygularken, sistem topolojisini inceleyin: lscpu ve numactl --hardware ile çekirdek ve node dağılımını görün. Homojen çekirdek gruplarını tercih edin; örneğin performans çekirdeklerini (P-cores) AI işleri için ayırın. Benchmark için perf veya Intel VTune kullanın, CPU migration sayısını izleyin. Pinning stratejileri: Round-robin yerine contiguous çekirdekler seçin, zira önbellek paylaşımı artar.

Çoklu instance’lar için, çekirdekleri paylaşmayın; cgroup v2 ile隔离 edin. Bulut ortamlarında AWS EC2 veya Azure VM’lerde instance türüne göre ayarlayın, örneğin c5n.large için 0-23 çekirdek affinity. İzleme script’i yazın: Affinity drift’ini cron job ile kontrol edin. Bu uygulamalarla, inference servisinizde predictable latency ve yüksek QPS (queries per second) elde edersiniz.

Sonuç olarak, CPU affinity ayarı AI model inference’ında vazgeçilmez bir optimizasyondur. Yukarıdaki adımları sisteminize uyarlayarak, kaynak kullanımınızı maksimize edin ve rekabet avantajı kazanın. Düzenli testler ve iterasyonlarla, bu tekniklerin tam potansiyelini ortaya çıkarın; performans kazanımları uzun vadede operasyonel maliyetleri önemli ölçüde düşürecektir.

Kategori: Blog
Yazar: Editör
İçerik: 547 kelime
Okuma Süresi: 4 dakika
Zaman: Bugün
Yayım: 05-03-2026
Güncelleme: 05-03-2026
Benzer Hizmetler
Blog kategorisinden ilginize çekebilecek benzer hizmetler