- Bilimsel veri görselleştirmede, büyük hacimli ve yüksek boyutlu veriler ile gerçek zamanlı analiz gereksinimleri nedeniyle darboğazlar büyüdü; fastplotlib, bunu GPU hızlandırmalı plotting ile azaltmayı hedefleyen bir Python kütüphanesidir
- WGPU tabanlı render yapısıyla büyük ölçekli veri keşfi, hızlı prototipleme, algoritma tasarımı ve ölçüm cihazları için gerçek zamanlı veri toplama sistemleri kurmayı destekler
- Dizi merkezli bir API benimser; böylece ilk plot sonrasında da NumPy tarzı indeksleme ile renk, colormap ve veri gibi grafik özellikleri dinamik olarak değiştirilebilir
- Callback tabanlı olay sistemiyle tıklama gibi kullanıcı etkileşimleri tanımlanır; örnekte tıklama konumuna en yakın çember bulunup rengi değiştirilir
- Render katmanı pygfx üzerinde soyutlanmıştır ve WGPU üzerinden Vulkan, Metal ve DX12'yi hedeflediği için OpenGL merkezli araçlara kıyasla modern GPU kullanımına odaklanır
fastplotlib'in hedeflediği bilimsel görselleştirme darboğazları
- fastplotlib, WGPU kullanan GPU hızlandırmalı bir bilimsel plotting kütüphanesidir ve hızlı, etkileşimli görselleştirmeyi hedefler
- Bilimsel görselleştirmenin zorlaşmasının başlıca nedenleri şunlardır
- Veriler terabayt ölçeğine ulaşabilir ve çoğu zaman yüksek boyutludur
- Hesaplama kaynaklarını verimli kullanmak zordur
- Birçok araç statik plot'lara odaklıdır veya büyük veri üzerinde iyi ölçeklenmez
- Görselleştirme, veri üretim hızının gerisinde kaldığı için gerçek zamanlı analiz gecikir
- fastplotlib, yüksek performanslı ve etkileşimli görselleştirme için şu kullanım alanlarını öne çıkarır
- GPU hızlandırmalı görselleştirme
- Hızlı prototipleme ve algoritma tasarımı
- Büyük ölçekli veri keşfi ve hızlı render
- Ölçüm cihazları için gerçek zamanlı veri toplama sistemleri oluşturma
- Kullanım senaryolarının çoğu için modern bir entegre GPU yeterlidir
Statik plot'ların ötesinde etkileşimli keşif
- Geleneksel bilimsel görselleştirme uzun süredir statik plot'lara dayanıyordu; ancak dinamik ve etkileşimli görselleştirme, veri keşfi ile analizi daha doğrudan hale getirir
- Örnek olarak Olivetti faces dataset'in kovaryans matrisi fastplotlib ile etkileşimli biçimde görselleştirilir
- Sol subplot, Olivetti faces dataset'in kovaryans matrisini gösterir
- Kovaryans matrisindeki her öğe, iki pikselin yoğunluğunun birlikte nasıl değiştiğini gösterir
- Sağ subplot, o anda seçili olan kovaryans matrisi satırından yeniden oluşturulmuş görüntüdür
- Seçici hareket ettirilerek görüntülenen satır kolayca değiştirilebilir
- Kovaryans matrisine yalnızca statik olarak bakmak yerine, her satırın yeniden oluşturulmuş görüntüsünü birlikte görmek, veri kümesindeki yüzlerde piksel yoğunluklarının nasıl değiştiğini daha iyi anlamayı sağlar
- Bu örnek, kovaryans matrisinin kendisini derinlemesine analiz etmekten çok, küçük düzeyde bir etkileşim ile bile veri anlayışının gelişebileceğini gösterir
- fastplotlib, yüksek seviyeli etkileşimli plot'lar oluşturmak için mekanizmalar sunarak bilimsel görselleştirmenin kullanım alanını genişletmeyi amaçlar
Dizi gibi kullanılan API
- Python bilimsel görselleştirme ekosisteminde birçok açık kaynak araç vardır; ancak bazı kütüphanelerde karmaşık API'ler, bilim insanları ve kullanıcılar için giriş bariyerini yükseltir
- fastplotlib, hızlı etkileşimli görselleştirmeyi sezgisel bir API ile sunmayı amaçlar
- Temel tasarım yaklaşımı, görselleştirme içindeki veriyi dizi dışında başka bir şey olarak düşünmeyi gerektirmemektir
- Veri tanıdık dizi yapısını koruduğunda, görselleştirmeyle etkileşim de sadeleşir
- Örnekte bir sinüs dalgası çizildikten sonra, NumPy tarzı indeksleme ile her üçüncü noktanın rengi kırmızıya çevrilir
sine_wave.colors[::3] = "red"
- Bu yaklaşımla ilk plot'tan sonra da grafiğin çeşitli özellikleri dinamik olarak değiştirilebilir
- Dizi tipi API, fastplotlib'i esnek ve sezgisel kullanabilmenin temelini oluşturur
Callback'lerle kurulan olay sistemi
- fastplotlib, olay sistemini de sade biçimde ele alacak şekilde tasarlanmıştır
- Grafikler veya plot'lar arasındaki olaylar callback fonksiyonları ile tanımlanabilir; bu sayede etkileşimli görselleştirmeler oluşturulup genişletilebilir
- Tıklama olayı örneği şu akışla çalışır
- Birden fazla çember verisi oluşturulur
add_line_collection ile çemberler plot'a eklenir
- Render bileşenine
"click" olay işleyicisi kaydedilir
- Tıklama konumu ekran koordinatlarından dünya koordinatlarına dönüştürülür
- Tıklanan konuma en yakın grafik bulunur
- En yakın çemberin rengi beyaza çevrilir
- Olay işleme, önce davranışı bir fonksiyon olarak tanımlayıp ardından ilgili grafik veya plot'a handler ekleme şeklinde ilerler
- Kullanıcılar, kütüphaneye özgü karmaşık API'leri yeniden öğrenmek yerine, fonksiyon tanımlayarak etkileşim kurabilir
Modern GPU'lar ve grafik API'lerinden yararlanma
- GPU'lar bilimsel iş yüklerinde fiilen bir ön koşul haline geldi ve görselleştirme de bunun istisnası değil
- Yüksek çözünürlüklü görselleştirmeleri iyi performansla üretmek için GPU'nun hesaplama kaynaklarını olabildiğince verimli kullanmak gerekir
- fastplotlib örneğinde 3 milyon nokta plot edilirken şu işlemler yapılır
- Çizgi plot edilir
- Yakınlaştırma ve uzaklaştırma yapılır
- Çizginin colormap'i değiştirilir
- Belirli noktaların renkleri tek tek değiştirilir
- Diğer Python bilimsel görselleştirme kütüphanelerinde bu kadar çok noktayı tek seferde plot edip nokta renklerini bu kadar ayrıntılı kontrol etmek zor olabilir
- fastplotlib, pygfx render motoru üzerinde soyutlanmıştır
- pygfx, WGPU ile çalışır ve WGPU platforma göre şu grafik API'lerini hedefler
- Linux: Vulkan
- Mac: Metal
- Windows: DX12
- Vulkan, Metal ve DX12; OpenGL'den daha hızlı ve verimlidir, ayrıca GPU donanımını daha iyi kullanabilen yeni nesil grafik API'leridir
- fastplotlib'in pygfx üzerinde inşa edilmesinin nedeni; kamera, render, sahne gibi düşük seviyeli render motoru ayrıntılarıyla tekrarlayan kodları soyutlayarak kullanıcının veriye odaklanmasını sağlamaktır
Dokümantasyon ve devam edecek içerikler
- fastplotlib, kullanımı kolay bir dizi tipi API ile modern grafik donanımını birleştirerek Python bilimsel görselleştirmenin mevcut sorunlarını ele almayı amaçlar
- Dokümantasyon ve örnekler fastplotlib dokümantasyonu adresinde sunuluyor
- Kullanıcı kılavuzu
- Başlangıç rehberi
- Örnek galerisi
- Sorular ve tartışmalar GitHub Issue veya Discussion üzerinden yürütülüyor
- İleride fastplotlib kullanım örneklerini ve temel grafik teknolojilerini daha derinlemesine ele alan yeni yazılar eklenmesi planlanıyor
Henüz yorum yok.