RAPIDS cuML ile Zaman Serisi Tahminini Hızlandırma Yöntemleri

Zaman serisi tahmini, geçmişten elde edilen verileri kullanarak gelecekteki değerleri tahmin etmek için kullanılan güçlü bir veri bilimi tekniğidir.

Açık kaynaklı Python kütüphaneleri, verilerinizi tahmin etmek için zaman serisi tahminleri yapmayı kolaylaştırır. Bu kütüphaneler, scikit-learn API ile uyumlu olan “kendi regresörünüzü” kullanmanıza olanak tanır, böylece istediğiniz modelle sorunsuz çalışabilirsiniz.

Veri setlerinin büyümesi ve doğrudan çok aşamalı tahmin gibi yöntemlerin birden fazla modeli aynı anda çalıştırmayı gerektirmesiyle, tahminler CPU tabanlı altyapıda çalıştırıldığında hızla hesaplama maliyetli hale gelebilir.

RAPIDS, GPU hızlandırmalı açık kaynaklı veri bilimi ve yapay zeka kütüphanelerinden oluşan bir koleksiyondur. cuML, scikit-learn ile uyumlu bir API’ye sahip, Python için GPU hızlandırmalı bir makine öğrenimi kütüphanesidir.

Bu yazıda, RAPIDS cuML‘in skforecast ile nasıl kullanılabileceğini göstererek zaman serisi tahminini hızlandıracak, daha büyük veri setleri ve tahmin pencereleri ile çalışmanıza olanak tanıyacağız.

Neden Zaman Serisi Tahmini?

Günümüzün veri odaklı dünyasında, işletmeler zaman serisi tahminlerine dayanarak bilinçli kararlar almakta, süreçlerini optimize etmekte ve riskleri azaltmaktadır. Hisse senedi piyasası trendlerini, arz veya talepte ani değişimleri ya da hastalıkların yayılmasını tahmin etmek gibi durumlarda doğru tahminler yapmak, planlama ve strateji için hayati önem taşımaktadır.

Tarihsel olarak, aylık veya haftalık tahminler, karar verme süreçlerini desteklemek için yeterli olabilirken, veri miktarındaki hızlı artış ve artan küresel belirsizlikler, organizasyonların neredeyse gerçek zamanlı tahminler yapabilme yeteneğine ihtiyaç duymasına yol açmıştır.

Çok Aşamalı Tahmin

Zaman serisi tahmininde sıklıkla kullanılan bir teknik örnekleme çok aşamalı tahmindir. Bu yöntemde tek bir model eğitilir ve sonraki n değerlerini tahmin etmek için art arda uygulanır.

Buna karşılık, doğrudan çok aşamalı tahmin, tahmin ufkunuzdaki her bir gelecekteki değeri tahmin etmek için ayrı bir model kullanır. Yani, n adım ileriye doğrudan tahmin yapmaya çalışıyorsunuz, dolayısıyla bu yöntem bazı durumlarda daha iyi sonuçlar üretebilir. Ancak, aynı zamanda birden fazla model eğitimi gerektirdiği için hesaplama açısından daha maliyetlidir.

Doğrudan Çok Aşamalı Tahmine Hızlandırıcı Hesaplama Getirmek

RAPIDS cuML, mevcut skforecast iş akışlarına entegre edilebilir. Aşağıdaki örnekte, saatlik mevsimsellik ve pozitif bir sürüklenme ile oluşturulmuş bir yapay zaman serisi veri seti oluşturarak başlıyoruz. Ardından, skforecast’ın ForecasterDirect sınıfını doğrudan çok aşamalı tahmin için kullanıyoruz ve scikit-learn regresörünü cuML’nin RandomForestRegressor ile değiştiriyoruz:

import numpy as np
import pandas as pd
from skforecast.direct import ForecasterDirect

from sklearn.ensemble import RandomForestRegressor
import cuml

USE_GPU = False

# Parametreler
n_records = 100000
drift_rate = 0.001
seasonality_period = 24
start_date = '2010-01-01'

# Pozitif sürüklenme ile yapay veri seti oluşturma
date_rng = pd.date_range(start=start_date, periods=n_records, freq='h')
np.random.seed(42)
noise = np.random.randn(n_records)
drift = np.cumsum(np.ones(n_records) * drift_rate)
seasonality = np.sin(np.linspace(0, 2 * np.pi, n_records) * (n_records / seasonality_period))

data = noise + drift + seasonality
df = pd.DataFrame(data, index=date_rng, columns=['y'])

if USE_GPU:
    forecaster = ForecasterDirect(
        regressor=cuml.ensemble.RandomForestRegressor(
            n_estimators=200,
            max_depth=13,
        ),
        steps=100,
        lags=100,
        n_jobs=1,
    )
else:
    forecaster = ForecasterDirect(
        regressor=RandomForestRegressor(
            n_estimators=200,
            max_depth=13,
            n_jobs=-1  # Random Forest'ü paralel hale getirerek tüm CPU çekirdeklerini kullan
        ),
        steps=100,
        lags=100,
        n_jobs=1,
    )

forecaster.fit(y=df['y'])
predictions = forecaster.predict()

Yüz binlerce kayıt içeren büyük veri setlerinde, CPU tabanlı regresörlerin her tahmini işlemekte uzun zaman alması kaçınılmazdır. Unutmayın ki, doğrudan çok aşamalı tahminle her bir adım için ayrı bir model eğitiyoruz. Bu tahminin CPU’da çalıştırılması 43 dakikadan fazla sürdü.

cuML’nin GPU hızlandırmalı regresörüne geçmek, tüm tahminin yalnızca 103 saniyede tamamlanmasını sağladı ki bu da 25 kat bir hız artışı demektir. Ve bunun için sadece minimum kod değişiklikleri yeterli oldu.

RAPIDS cuML ve scikit-learn ile doğrudan çok aşamalı tahminin çalışma süresi gösteren bir çubuk grafik.
Şekil 1. skforecast ForecasterDirect’in Random Forest Regresyonu ile fit etme süresi – scikit-learn (CPU) ile RAPIDS cuML (GPU) karşılaştırılması. NVIDIA H100 GPU ile çift soketli Intel(R) Xeon(R) Platinum 8480CL CPU üzerinde çalıştırıldı.

Tahmin süresinin kısalması, çok daha hızlı bir iterasyon sürecine olanak tanır; böylece en iyi uyumu bulmak için hiperparametre optimizasyonu yapabilir veya cuML tarafından desteklenen diğer regresörleri deneme imkanına sahip olursunuz.

Sonuç

Zaman serisi tahmini uzun yıllardır var, ancak bugün hala son derece önemlidir. Doğrudan çok aşamalı tahmin gibi teknikler, tahminleri optimize etmekte yararlı olabilir, ancak verinin boyutu ve tahmin süresi büyüdükçe çok daha fazla hesaplama gücü gerektirir.

RAPIDS cuML gibi hızlandırılmış hesaplama kütüphanelerini skforecast ile kullanmak, tahmin işlerinizi hızlandırmayı kolaylaştırır ve bu süreçte yalnızca minimum kod değişikliklerine ihtiyaç duyarsınız.

Hızlandırılmış makine öğrenimi hakkında daha fazla bilgi edinmek için cuML belgelerine göz atabilir veya NVIDIA Derin Öğrenme Enstitüsü’nden Hızlandırılmış Veri Bilimi Temelleri kursuna katılabilirsiniz.

Kaynak

Nvdia Blog

Exit mobile version