Yüksek riskli alanlar olan kuant finansmanı, algoritmik ticaret ve dolandırıcılık tespiti gibi alanlarda, veri uzmanları genellikle hızlı ve bilinçli kararlar almak için yüzlerce gigabayt (GB) veri işlemek zorundadır. Polars, bu ihtiyaca cevap veren en hızlı büyüyen veri işleme kütüphanelerinden biridir ve NVIDIA cuDF tarafından desteklenen bir GPU motoru sunar. Bu motor, bu alanlarda sıkça karşılaşılan hesaplama yoğun sorguları hızlandırır.
Ancak, GPU’lar ile çalışmanın sık karşılaşılan bir zorluğu, VRAM’in (GPU’nun özel belleği) genellikle sistem RAM’inden daha küçük olmasıdır. Bu, çok büyük veri kümelerini işlemek için GPU motorunu kullanırken sorun yaratabilir.
Bu yazı, Polars GPU motorunda bu kısıtlamayı aşmak için iki seçeneği keşfetmektedir. Bu stratejileri kullanarak, mevcut VRAM’den daha büyük verileri işlerken GPU hızlandırmasından faydalanabilirsiniz:
- Birleşik Sanal Bellek (UVM): GPU’nun sistem RAM’ine taşınmasına olanak sağlayan bir teknik.
- Çoklu GPU akışlı yürütme: Yüzlerce GB’den birkaç TB’a kadar ölçeklenebilen iş yüklerini dağıtmak için ideal bir deneysel özellik.
Seçenek 1: Tek GPU için UVM esnekliği
Veri kümesi boyutunuz VRAM’inizi aşmaya başladığında, NVIDIA UVM teknolojisinden yararlanabilirsiniz.
UVM, sistem RAM’i (ana bellek) ile GPU VRAM’i (cihaz belleği) arasında birleşik bir bellek alanı oluşturur. Bu, Polars GPU motorunun, VRAM dolduğunda verilere sistem RAM’inde taşınmasına olanak tanır. Bu sayede bellek hatası alınmaz ve VRAM’den daha büyük veri kümeleri ile çalışma imkanı sağlanır. GPU, sistem RAM’inde bulunan verilere erişmesi gerektiğinde, o veriler otomatik olarak VRAM’e getirilir.
Bu yaklaşım, tek bir GPU ile çalışırken ve kullanılabilir VRAM’inizden biraz daha büyük veri kümelerini yönetmeniz gerektiğinde idealdir. Kodda neredeyse hiç değişiklik yapmadan kesintisiz bir deneyim sağlar; ancak sistem RAM’i ile VRAM arasında veri taşınması sırasında bir performans kaybı yaşanabilir. Ancak, RAPIDS Bellek Yöneticisi (RMM) kullanılarak akıllı konfigürasyonlar ile bu performans maliyeti önemli ölçüde azaltılabilir.
UVM’nin nasıl çalıştığını, performansını ve belirli ihtiyaçlara göre nasıl ince ayar yapabileceğinizi öğrenmek için Polars GPU Motorunda VRAM’den Daha Büyük Veriler İçin UVM Tanıtımı‘na göz atabilirsiniz.
Seçenek 2: TB ölçeğinde performans için çoklu GPU akışlı yürütme
Birkaç yüz GB’den terabayt (TB) ölçeğine kadar veri kümeleri üzerinde çalışan kullanıcılar için Polars GPU motoru artık deneysel bir çoklu GPU akışlı yürütme yapılandırması sunuyor. Standart bellek içi yürütmenin aksine, akış yürütücüsü veri parçalamayı ve paralel işleme yeteneklerini tanıtarak iş yüklerini birden fazla GPU’ya dağıtır.
Temelde, bu akış yürütücüsü Polars tarafından üretilen optimize edilmiş iç temsil (IR) grafiğini alır ve toplu yürütme için yeniden yazar. Ortaya çıkan grafik, veri boyutu ve mevcut işçi sayısına göre parçalanır. Akış yürütücüsü, her bir parçanın bağımsız olarak işlendiği görev tabanlı bir yürütme modeli kullanır ve bu da görevlerin paralel olarak gerçekleştirilmesine olanak tanır.

Akış yürütücüsü, Dask senkronizasyon programlayıcısı aracılığıyla tek GPU yürütmeyi ve Dask dağıtılmış programlayıcısı aracılığıyla çoklu GPU yürütmeyi desteklemektedir. Bir dizi parametre, birleştirme stratejileri ve parça boyutlarını kontrol etmek için mevcuttur.
Testlerde ekip, PDS-H benchmark testinde 3 TB ölçeğinde güçlü bir performans sergileyerek, tüm 22 sorguyu saniyeler içerisinde işleyebilmiştir. Örnek deftere göz atarak çoklu GPU akışını kendi veri kümeniz üzerinde deneyebilirsiniz.
Polars GPU motorundaki akış yürütmeyi daha detaylı anlamak için, NVIDIA GTC Paris oturumu, Polars ile DataFrame’leri Ölçeklendirme‘yi izleyebilirsiniz.
Doğru Yaklaşımı Seçmek
Hem UVM hem de çoklu GPU akışlı yürütme, Polars GPU motorunda VRAM’inizden daha büyük veri kümelerini yönetmek için güçlü yollar sunar. En iyi seçim, özel ihtiyaçlarınıza bağlıdır.
- UVM, VRAM’den oldukça büyük veri kümesi için en iyisidir. Varsayılan olarak, Polars GPU motoru, çoğu veri boyutunda en iyi performans ve ölçeklenebilirlik karışımını sağlamak için UVM’yi kullanacak şekilde yapılandırılmıştır.
- Deneysel çoklu GPU akışlı yürütme, çoklu GPU kullanarak dağıtılmış işleme imkanına sahip çok büyük veri kümeleri (yüzlerce GB ile TB arası) için en iyisidir.
Bu yapılandırmalar hakkında daha fazla bilgi edinmek için Polars Kullanıcı Kılavuzuna göz atabilirsiniz.