RAPIDS, NVIDIA’nın CUDA-X kütüphaneleri ile Python veri bilimi için geliştirilmiş bir araç setidir. 25.06 sürümünün duyurulmasıyla birlikte, heyecan verici yeni özellikler ile kullanıcılarını sevindirdi. Bu yeni özellikler arasında, bir Polars GPU akış motoru, graf sinir ağları (GNN) için birleşik bir API ve kod değişikliği gerektirmeyen destek vektör makineleri için hızlandırma yer alıyor. Bu blog yazısında, bu güncellemelerin bazılarının derinlemesine incelenecek.
Polars GPU Motoru Güncellemeleri
2024 Eylül’ünde, Polars ekibiyle iş birliği yaparak, NVIDIA cuDF üzerine inşa edilmiş bir Polars GPU motoru piyasaya sürüldü. 25.06 sürümü ile birlikte, Polars GPU motorunun yeteneklerinde önemli güncellemeler yapıldı.
Akış Yürütücüsü Artık Deneysel Olarak Mevcut
25.06 sürümü ile, Polars GPU motorundaki akış yürütmesi özelliğini tanıttık. Akış yürütücüsü, veri parçalama ve paralel işleme yeteneklerinden faydalanarak, VRAM’den daha büyük veri kümesi üzerinde çalışmayı sağlıyor. Kullanıcılar, bu yeni akış yürütücüsünü kullanmak için uygun şekilde yapılandırılmış bir GPUEngine nesnesini collect
çağrısına iletebilir:
streaming_engine = GPUEngine(
executor="streaming",
executor_options={"scheduler": "synchronous"}
)
result = query.collect(engine=streaming_engine)
Bu yeni akış modu aynı zamanda kullanıcıların veri işleme iş akışlarını çoklu GPU’lara ölçeklendirmesine olanak tanır. Bu durum, yüzlerce GB’den TB’ye kadar genişleyen veri kümesi üzerinde analiz işlemlerini hızlandırabilir. Veri parçaları arasında hareket gerektiren işlemler (katılımlar ve gruplamalar gibi) için yeni bir karıştırma mekanizması veri dağılımını cihazlar arasında yönetir. Çoklu GPU yürütmesi Dask dağıtılmış zamanlayıcısı aracılığıyla düzenlenir ve önce bir Dask istemcisi kurmanız gerekmektedir:
from dask_cuda import LocalCUDACluster
from dask.distributed import Client
client = Client(LocalCUDACluster())
multi_gpu_streaming = GPUEngine(
executor="streaming",
executor_options={"scheduler": "distributed"}
)
result = query.collect(engine=multi_gpu_streaming)
Aktif olarak geliştirilmekte olan akış yürütücüsü için desteklenmeyen işlemler, bellekteki yürütücüyü kullanmaya geri dönecektir. Daha fazla bilgi için, son blog yazımızı ve NVIDIA’nın GTC Paris konuşmasını inceleyebilirsiniz.
Kaydırmalı Toplama ve Diğer Sütun Manipülasyonları Desteği
Son sürüm, Polars GPU motorundaki bazı önemli yeni DataFrame işlevlerini de içermektedir. Öncelikle, Polars’da .rolling()
işlemlerini desteklemeye başladık. Bu özellik, kullanıcıların DataFrame’lerindeki başka bir sütuna dayalı kaydırmalı gruplar oluşturmasını sağlar. Bu, özellikle zaman serisi veri kümeleri üzerinde çalışırken çok yararlıdır.
dates = [
"2025-01-01 13:45:48",
"2025-01-01 16:42:13",
"2025-01-01 16:45:09",
"2025-01-02 18:12:48",
"2025-01-03 19:45:32",
"2025-01-08 23:16:43",
]
df = (
pl.DataFrame({"dt": dates, "a": [3, 7, 5, 9, 2, 1]})
.with_columns(pl.col("dt").str.strptime(pl.Datetime()))
.lazy()
)
query = (
df.rolling(index_column="dt", period="2d")
.agg(
pl.sum("a").alias("sum_a"),
pl.min("a").alias("min_a"),
pl.max("a").alias("max_a"),
)
)
query.collect(engine="gpu")
Ayrıca, GPU motoru artık tarih/zaman sütunlarını manipüle etmek için daha geniş bir ifade sınıfını desteklemektedir. Desteklenen yeni yöntemler arasında .strftime()
ve .cast_time_unit()
bulunmaktadır ve API kapsamımızı genişletmek için daha fazlasının planlandığını belirtmek isteriz.
GNN’ler için Birleşik API
NVIDIA cuGraph-PyG, özellik alma işlemlerini hızlandırmak için WholeGraph ile daha fazla entegre oldu ve biz buna Birleşik API adını veriyoruz. Bu yeni API, artık kullanıcıların WholeGraph‘ın hızlandırılmış özellik depolamasını tek GPU iş akışlarında kullanmalarına olanak tanırken, çoklu GPU veya çoklu düğüm iş akışları için betikleri değiştirme zorunluluğunu ortadan kaldırmaktadır.
Birleşik API sayesinde, tek bir GPU üzerinde prototip yapmak için kullanılan aynı GNN eğitim betiği, tek bir düğümde çoklu GPU’lar ve birden fazla düğümde çalıştırılabilir. torchrun
komutu, işlem kurulumunu yönetir ve Birleşik API, çoğu PyTorch kullanıcısı için tanıdık bir deneyim sunar.
Başlarken yardımcı olacak örneklere göz atabilirsiniz.
Kod Değişikliği Olmadan cuML İyileştirmeleri
Mart ayında, cuML tarafından desteklenen, kod değişikliği gerektirmeyen bir hızlandırıcıyı açık beta sürümünde tanıttık. 25.06 sürümü ile, kullanıcılar için daha fazla kod değişikliği gerektirmeyen işlevsellik sağlandı.
Kod Değişikliği Olmadan Destek Vektör Makineleri
NVIDIA cuML, sıfır kod değişikliği hızlandırma yeteneklerini, destek vektör makineleri eklenmesiyle genişletti. Destek Vektör Sınıflandırması (SVC) ve Destek Vektör Regresyonu (SVR), yüksek boyutlu verileri etkili bir şekilde işleyen güçlü algoritmalardır ve GPU üzerinde çalıştıklarında önemli hız artışları sağlayabilirler. Bu tahmincilerin, cuML’in sıfır kod değişikliği arayüzüne eklenmesiyle, mevcut scikit-learn iş akışlarını herhangi bir değişiklik yapmadan hızlandırmak mümkündür. Bununla birlikte, cuML ve scikit-learn uygulamaları arasında bazı önemli farklılıklar bulunduğunu belirtmek önemlidir.
cuML’in çeşitli algoritmalar için sıfır kod değişikliği desteği hakkında daha fazla bilgi edinmek için belgelerimize göz atabilirsiniz.
Geliştirilmiş scikit-learn Uyumluluğu
25.06 sürümü ayrıca, scikit-learn tahmincilerinin cuML tarafından hızlandırılma şeklinin önemli bir tasarım değişikliğini içerir. Bu değişiklik, scikit-learn ile daha iyi uyumluluk sağlamakta ve parametre doğrulamasını ve hata yönetimini geliştirmektedir. Ayrıca, bu yeniden tasarım sayesinde, cuML’in scikit-learn API’siyle uyumu artırılmıştır ve bugün scikit-learn ile entegre üçüncü taraf kütüphaneleri hızlandırmayı daha da kolaylaştırmaktadır.
Güncellenmiş Orman Tahmin Kütüphanesi ile Rastgele Orman Entegrasyonu
cuML’in Rastgele Orman tahmincileri (RandomForestRegressor ve RandomForestClassifier), daha hızlı ve daha sağlam Orman Tahmin Kütüphanesi (FIL) ile güncellenmiştir. Bu uygulama, daha yüksek performans ve daha iyi bellek yönetimi sunarken, geriye dönük uyumluluğu da korur. Ayrıca, bazı mevcut API ayarlarının, önceki uygulama ile ilişkili olanların, değersizleştirildiğini ve 25.08 sürümünde kaldırılacağını belirtmekte fayda var.
RAPIDS Bellek Yöneticisi NVIDIA Blackwell Sıkıştırma Motoru ile Uyumluluk
RAPIDS Bellek Yöneticisi (RMM) kütüphanesi, kullanıcıların en son NVIDIA donanım özelliklerine erişimini sağlamak için yeni yetenekler ekledi. Son sürümde, RMM’nin asenkron bellek kaynağı, uyumlu NVIDIA Blackwell GPU’lar üzerindeki donanım tabanlı sıkıştırma motorunu desteklemektedir. Yeni sıkıştırma motoruyla, kullanıcılar G/Ç yoğun iş akışlarında performans iyileştirmeleri görebilirler.
Ayrıca, RMM artık bir başlık dosyası olarak değil, derlenmiş bir paylaşımlı kütüphane olarak sunulmaktadır. Bu değişikliğin gelecekte yeni özelliklerin kapısını açması beklenmektedir.
Platform Güncellemeleri: Python ve NVIDIA CUDA Desteği
25.06 sürümünde, bütün RAPIDS kütüphaneleri için Python 3.13 desteği eklenmiştir ve CUDA 11’i destekleyen son sürümdür. 25.08 RAPIDS sürümünden itibaren CUDA 11 kaldırılacaktır. CUDA 11 kullanmaya devam etmek isteyenler 25.06 sürümüne pinleyebilirler. Bu durumdan daha fazla bilgi almak için RSN 48‘e göz atabilirsiniz.
Sonuç
RAPIDS 25.06 sürümü, yeni makine öğrenimi algoritmalarında kod değişikliği olmadan kullanılabilirlik, yeni bir Polars GPU akış motoru, asenkron bellek kaynakları için donanım sıkıştırma yetenekleri ve daha fazlasını sunmaktadır.
Geri bildiriminizi GitHub üzerinden iletmekten çekinmeyin. Ayrıca, GPU hızlandırmalı veri işleme hakkında sohbet etmek için 3,500’den fazla üyesi olan RAPIDS Slack topluluğuna katılabilirsiniz.
RAPIDS’e yeni katıldınız mı? Başlamak için bu kaynaklara göz atmayı unutmayın. Hızlandırılmış veri bilimi hakkında daha fazlasını öğrenmek için DLI Öğrenme Yolu‘nı keşfedin ve uygulamalı bir kursa kaydolun.