MMehmet Ünlü
Ana SayfaHakkındaProjelerNotlarCVİletişim
EN

Mehmet Ünlü

İTÜ'de Elektronik ve Haberleşme Mühendisliği okuyorum; tahminleme, bilgisayarlı görü ve veri iş akışlarını hızlandıran uygulamalı projeler geliştiriyorum.

Ana SayfaHakkındaProjelerNotlarCVİletişim
OptimizasyonNumPyPandasVektörleştirmeParalelleştirmeML Sistemleri

ML Veri Hattı Performans Optimizasyonu

Yoğun özellik üretimi yapan bir ML hattını vektörleştirilmiş işlemler, matris tabanlı hesaplama ve bellek farkındalığı olan dönüşümler etrafında yeniden düzenledim.

Süre

0dk -> 4dk

Uçtan uca veri hattı

Satır

0M

Özellik hesaplama ölçeği

Veri

~1 GB

Tabular iş yükü

Hızlanma

0x

İterasyon hızı

Problem

Çalışma süresi ve bellek baskısı iterasyonu yavaş, maliyetli ve üretim benzeri veri boyutlarında ölçeklenmesi zor hale getiriyordu.

Zorluk

Veri hattı tekrarlanan veri çerçevesi işlemleri, Python döngüleri, gereksiz ara nesneler ve verinin yapısına uymayan hesaplama yolları içeriyordu.

Mimari

Parçalar nasıl bir araya geliyor?

Optimize edilen akış özellik dönüşümlerini toplu işler, satır bazlı döngüleri NumPy/Pandas vektörleştirmesiyle değiştirir, bağımsız hesaplamaları paralelleştirir ve geçici bellek ayırmalarını kontrol eder.

Mimari Görünüm

Sistem yapısı ve karar akışı

Önce40m
Sonra4m

Python döngüleri

Interpreter maliyeti

Kopyalar

Bellek baskısı

Tekrarlı join'ler

Gereksiz iş yükü

Toplu işlenmeyen özellikler

Yavaş çıkarım

Veri Seti / Girdiler

  • Yaklaşık 1 GB tabular veri ve özellik üretimi/tahmin adımlarından geçen 3 milyon satır.

Teknik Kararlar

  • Önce profil çıkardım, sonra en yoğun hesaplama yollarını optimize ettim.
  • Satır seviyesindeki Python işlemlerini vektörleştirilmiş NumPy/Pandas dönüşümleriyle değiştirdim.
  • Tekrarlanan özellik hesaplamalarını toplu işledim ve gereksiz ara veri çerçevelerini kaldırdım.
  • Paralelliği yalnızca bağımsız iş yükleri ve net bellek sınırları için kullandım.

Uygulama Detayları

  • Tekrarlanan döngüleri matris odaklı işlemlere dönüştürdüm.
  • Veri çerçevesi kopyalarını ve geçici nesne büyümesini azalttım.
  • Hesaplamayı C destekli array işlemlerine yaklaştırdım.
  • Kritik özellik kolonları için çıktı eşdeğerliği kontrolleri tuttum.

Metrikler / Sonuçlar

  • Model davranışını koruyarak yaklaşık 1 GB ve 3 milyon satırlık veri üzerinde uçtan uca süreyi 40 dakikadan 4 dakikaya indirdim.

Çıkarımlar

  • Performans optimizasyonu çoğu zaman modelden önce veri düzeni problemidir.
  • Bellek şişmesi pratik veri çerçevesi zincirlerinin içinde görünmeden büyüyebilir.
  • Küçük Python işlemleri milyonlarca kez tekrarlandığında pahalı hale gelir.

Gelecek İyileştirmeler

  • CI sürecine otomatik profiling snapshot'ları eklemek.
  • Belleği aşan iş yükleri için Polars veya DuckDB denemek.
  • Üretim koşularında maksimum bellek kullanımını takip etmek.