Ray: Python ile Dağıtık Veri İşleme
Ray, gerçek zamanlı veri işleme sistemleri ve yapay zeka araştırmalarının yapıldığı RISELab tarafından 2017’de başlatılan bir projedir. Apache 2.0 lisansına sahip olan Ray, açık kaynaklı bir kütüphane olarak paralel ve dağıtık hesaplamaya odaklanarak geliştirilmeye başlanmıştır. Ray, son zamanlarda veri bilimcileri ve Python programcıları tarafından veri analitiği, yapay zeka ve makine öğrenimi projelerinde sıkça kullanılan bir araç haline gelmiştir. Bu yazıda, Ray’in ne olduğunu, avantajlarını ve katmanlarını ele aldık.
Ray, çok sayıda veri kümesiyle daha hızlı ve etkili bir şekilde çalışmamızı sağlar. Ayrıca, birden fazla dili destekleyen ve kullanıcılara çok sayıda özellik sağlayan API’leri bulunmaktadır.
Ray’in Sağladığı Avantajlar Nedir?
- Kolay kullanım: Ray, basit ve kullanıcı dostu bir API sağlar. Paralelleştirmeyi basitleştirir ve geliştirme sürecini hızlandırır.
- Yüksek performans: Paralel işleme ve dağıtık hesaplama sayesinde kodunuzun performansını artırır.
- Ölçeklenebilirlik: Ray, hesaplama kaynaklarını dinamik olarak yönetebilir ve büyük ölçekli hesaplamaları destekler.
- Hata toleransı: Ray, otomatik hata toleransı sağlar ve çökme durumlarında sistem stabilitesini korur. Görevlerin ve verilerin yedeklenmesini ve yeniden başlatılmasını sağlar.
Ray Katmanları
1. Ray Core
Ray Core, paralel ve dağıtık hesaplama için gerekli olan temel işlevleri sağlayan bir API’dir. Ray core u kullanarak kendi Python kodunuzu paralel ve dağıtık olarak çalıştırabilirsiniz.
- Ray Görev (Task): Ray Task, paralel fonksiyonları belirlemek için kullanılır. Bu fonksiyonlar, aynı anda birden fazla bilgisayarda veya işlemci çekirdeğinde çalıştırılabilir.
- Ray Aktör (Actors): Ray, aktör tabanlı bir programlama modeli sağlar. Aktör modeli, mesajlaşma tabanlı bir programlama modelidir. Aktörler, birbirleriyle mesajlaşarak çalışır. Ray aktörler sayesinde ölçeklenebilir ve dağıtık sistemlerde veri işleme ve koordinasyonunu kolaylaştırır.
- Ray Nesne (Object): Farklı fonksiyon ve aktörler arasında verilerin paylaşılmasını sağlar.
- Placement Groups: İşlemlerin veya aktörlerin belirli bir konumda çalıştırılmasını sağlayan Ray yapılandırmaları.
- Environment Dependencies: Çevre yapılandırmaları için Ray tarafından kullanılan Python paketleri ve sistem kitaplıkları.
2. Ray Cluster
Ray cluster birden fazla bilgisayarın tek bir bilgisayar gibi çalışmasını sağlayan yapıdır. Ray cluster sayesinde, hesaplama işlemlerini daha hızlı ve daha ölçeklenebilir hale getirebiliriz. Yani Ray Core ile tanımladığımız fonksiyon ve sınıfları paralel ve dağıtık olarak çalışmasını sağlar. Ray, birçok platformda kullanılabilir. Bunlar arasında AWS, Google Cloud, Microsoft Azure, Docker, Kubernetes, Slurm, macOS, Windows, Linux ve daha pek çok platform yer almaktadır. Bu platformlar, Ray’in ölçeklenebilirliğini artırır ve kullanıcıların ihtiyaçlarına göre yapılandırılabilir. Ray, esnek bir yapıya sahip olduğundan, farklı platformlarda çalıştırılabilmesi kullanıcılar için büyük bir avantajdır.
- Head Node:Ray üzerinde çalışan bir uygulamanın yöneticisi olan düğümdür. Baş düğüm, diğer düğümleri koordine eder ve uygulamanın çalışmasını sağlar.
- Worker Node: Ray üzerinde çalışan bir uygulamanın iş yüklerinin gerçekleştirildiği düğümdür. İşçi düğümleri, uygulamanın asıl hesaplama yükünü taşırlar ve işleri paralel olarak yürütürler.
- Autoscaling: Ray, iş yükü arttığında otomatik olarak düğüm sayısını arttırır. Bu özellik sayesinde, uygulamaların performansı ve ölçeklenebilirliği artırılabilir. Otomatik ölçeklendirme, kullanıcıların uygulamalarını daha verimli ve güçlü hale getirmelerine olanak tanır.
- Ray Jobs: Ray, yapılacak işleri planlamak için kullanılır. İşler, bir Python işlevi veya bir sınıf metodunun çağrısı olabilir. Ray, işleri otomatik olarak paralelleştirir ve farklı düğümler üzerinde çalıştırır. Bu sayede, uygulamaların performansı arttırılabilir ve hesaplama yükü daha dengeli hale getirilebilir.
3. Ray AIR
Ray Air, makine öğrenimi ve yapay zeka uygulamaları için özelleştirilmiş bir Ray API’sidir. Ray Air, model eğitiminden başlayarak, modelin canlıya alınması ve uygulanması sürecinde, verimliliği ve ölçeklenebilirliği sağlamak için tasarlanmıştır.
Ray AIR’deki ana kavramlar şöyledir:
- Datasets: Öğrenme algoritmalarının eğitiminde kullanılan verilerin toplandığı ve hazırlandığı koleksiyonlar. Bu veriler genellikle farklı kaynaklardan gelir ve farklı formatlarda olabilir. Datasets’in hazırlanması, veri temizliği, eksik verilerin tamamlanması, veri dönüştürme ve özellik seçimi gibi işlemleri içerir.
- Preprocessors: Veri ön işleme adımlarını yürütmek için kullanılan işlevler, verileri düzenler, standart hale getirir ve öznitelikleri belirler. Ön işleme adımları, veri setinin özelliklerine bağlı olarak değişebilir ve genellikle veri setinin kalitesini artırmaya yöneliktir.
- Trainers: Öğrenme algoritmalarını eğitmek ve modeli oluşturmak için kullanılan işlevler. Bu işlevler, veri setindeki örnekleri kullanarak bir model oluşturur ve modelin performansını ölçmek için bir test seti kullanır.
- Tuner: Öğrenme algoritmasının hiperparametrelerini otomatik olarak ayarlayan bir işlev. Bu işlev, birçok farklı hiperparametre kombinasyonunu deneyerek en iyi performansı sağlayan hiperparametreleri seçer.
- Checkpoints: Modelin eğitim sırasında kaydedildiği ve geri yüklenebileceği aşamalar. Bu işlev, eğitim sürecinde beklenmeyen bir durum oluştuğunda veya eğitim süreci kesildiğinde, kaldığı yerden devam etmek için kullanılır.
- Batch Predictor: Modelin birden fazla veri noktası üzerinde tahmin yapmak için kullanıldığı bir işlev. Bu işlev, veri setindeki tüm örnekleri aynı anda işler ve tahmin sonuçlarını bir çıktı dosyasına kaydeder.
- Deployments: Modelin kullanıma hazır hale getirilmesi ve gerçek veriler üzerinde tahmin yapmak için kullanılan işlevler ve yapılandırmalar. Bu işlevler, modelin hizmete sunulduğu platformlar için özelleştirilir ve gerçek zamanlı veri akışı için uygun hale getirilir
Bu yazıda Ray ile tanıştık. Günümüzde Anyscale, Hugging Face, Intel ve NVIDIA gibi önde gelen şirketler, projelerinde büyük veri setleriyle çalışırken verimliliği artırmak için Ray’i kullanıyorlar. Anyscale, ölçeklenebilir yapay zeka uygulamaları geliştirmek için kullanıyor, Hugging Face doğal dil işleme modellerini eğitirken ve dağıtırken Ray’i tercih ediyor, Intel ve NVIDIA ise yüksek performanslı hesaplama ve derin öğrenme alanlarında Ray’in avantajlarından yararlanıyorlar. Ray’in kullanımı daha da artacak gibi görünüyor ve gelişmelerini ilgiyle takip edeceğiz. Tekrar görüşmek üzere!
Kaynaklar: