CUDA-X Veri Bilimi ile Model Eğitimini GPU ile Hızlandırma Yöntemleri

Önceki yazılarımızda, üretimde ve operasyonlarda yapay zekanın nasıl kullanıldığına dair belirli veri zorluklarını ele almıştık. Bu yazımızda, üretim verileri üzerinde makine öğrenimi (ML) modellerinin eğitimi için en iyi uygulamaları keşfedeceğiz. Ayrıca, NVIDIA cuML gibi GPU hızlandırmalı yöntemlerin ve kütüphanelerin, fabrika zemininde hızlı yenilik için deneme ve dağıtımı nasıl geliştirebileceğini inceleyeceğiz.

Üretimde Neden Ağaç Tabanlı Modeller İyi Sonuç Veriyor?

Yarı iletken fabrikasyonu ve çip testlerinin verileri genellikle son derece yapılandırılmış ve tablo formatındadır. Her çip veya wafer, sabit bir test seti ile birlikte gelir; bu da yüzlerce hatta binlerce sayısal özelliğin yanı sıra önceki testlerden gelen kategorik verileri içerir. Bu yapılandırılmış doğa, ağaç tabanlı modellerin, görüntü, video veya metin gibi yapılandırılmamış verilerde genellikle daha iyi sonuç veren sinir ağlarına kıyasla ideal bir seçim olmasını sağlar.

Ağaç tabanlı modellerin önemli bir avantajı açıklanabilirlikleridir. Bu yalnızca ne olacağını bilmekle ilgili değildir; aynı zamanda neden olduğunu anlamakla da ilgilidir. Yüksek doğrulukta bir model verimliliği artırabilirken, açıklanabilir bir model mühendislik ekiplerinin tanısal analiz yapmasına ve süreç iyileştirmesi için uygulanabilir içgörüler elde etmesine yardımcı olur.

Ağaç Tabanlı Modeller İçin Hızlandırılmış Eğitim Akışları

Ağaç tabanlı algoritmalar arasında, XGBoost, LightGBM ve CatBoost genellikle tablo verileri için veri bilimi yarışmalarında öne çıkmaktadır. Örneğin, 2022 Kaggle yarışmalarında, LightGBM, kazanan çözümlerde en sık adından söz ettiren algoritma oldu, ardından XGBoost ve CatBoost geldi. Bu modeller, dayanıklı doğrulukları ile bilinir ve yapılandırılmış veri setlerinde genellikle sinir ağlarını geride bırakır.

Tipik bir iş akışı şu şekildedir:

  1. Bir temel oluşturun: Öncelikle bir Random Forest (RF) modeli ile başlayın. Bu, güçlü ve açıklanabilir bir temel sağlar ve performans ile özellik önemini başlangıçta değerlendirmenizi mümkün kılar.
  2. GPU hızlandırması ile ayarlama yapın: XGBoost, LightGBM ve CatBoost’taki yerel GPU desteğinden yararlanarak n_estimators, max_depth ve max_features gibi hiperparametrelerde hızlıca iterasyon yapabilirsiniz. Bu, verilerin binlerce sütun içerebileceği üretim ortamlarında kritik öneme sahiptir.

Son çözüm genellikle bu güçlü modellerin bir ansamblıdır.

XGBoost, LightGBM ve CatBoost Nasıl Karşılaştırılır?

Üç popüler gradient-boosting çerçevesi – XGBoost, LightGBM ve CatBoost – esasen ağaç büyüme stratejileri, kategorik özellikleri yönetme yöntemleri ve genel optimizasyon teknikleri açısından farklılık gösterir. Bu farklılıklar, hız, doğruluk ve kullanılabilirlik arasında bazı uzlaşmalar doğurur.

XGBoost

XGBoost (eXtreme Gradient Boosting), ağaçları seviyeli (ya da derinlik açısından) bir büyüme stratejisi kullanarak inşa eder. Bu, her seviyedeki tüm olası düğümleri ayırarak, bir sonraki seviyeye geçmeden önce tüm seviyeleri dengeler. Bu yaklaşım, aşırı uyumu önlemek için düzenleme sağlar, fakat CPU’larda çalıştırıldığında hesaplama açısından pahalı olabilir. Ağaç genişlemesinin paralel çalışabilirliği sayesinde, XGBoost’un GPU’lar üzerinde eğitim süresi büyük ölçüde azaltılabilir.

  • Ana özellik: Dengeli ağaçlar ve sağlam düzenleme için seviyeli ağaç büyümesi.
  • En iyi kullanım alanı: Doğruluk, düzenleme ve hızın (GPU’larda) öncelikli olduğu durumlar.

LightGBM

LightGBM (Light Gradient Boosting Machine), hız ve verimlilik üzerine tasarlanmış, ancak sağlamlıktan ödün vermektedir. En büyük kayıp azalışını sağlayan yaprak düğümünü yalnızca bölen bir yaprak esaslı büyüme stratejisi kullanır; bu da, seviyeli yöntemden çok daha hızlı bir yakınsama sağlar. Ancak bu, derin ve dengesiz ağaçların oluşmasına yol açabilir ve uygun düzenleme yapılmadığında belirli veri setlerinde aşırı uyuma riski taşır.

  • Ana özellik: Maksimum hız için yaprak esaslı ağaç büyümesi; ayrıca, performansı artırmak için ileri düzey teknikler kullanır.
  • En iyi kullanım alanı: Bellek verimliliğinin kritik olduğu büyük veri setlerinde ilk iterasyonlar için bir temel oluşturmak.

CatBoost

CatBoost’un (Categorical Boosting) ana avantajı, kategorik özellikleri sofistike bir şekilde yönetmesidir. Hedef kodlama gibi standart teknikler genellikle hedef değişkenin yanlış bir şekilde özellik kodlamasını etkilemesi sonucu bilgi sızıntısına neden olur. CatBoost, bu durumu ordered boosting yani sıralı artırma ile çözer; bu teknik, yalnızca belirli bir sıralama içinde önceki örneklerin hedef değerlerini kullanarak kodlamalar yapar.

Ayrıca, CatBoost simetrik (bilinçsiz) ağaçlar inşa eder; bu da seviyedeki tüm düğümlerin aynı ayırma kriterini kullanmasıyla, bir tür düzenleme sağlar ve CPU üzerinde çalışmayı hızlandırır.

  • Ana özellik: Hedef sızıntısını önlemek için sıralı artırma ile kategorik verilerin üstün yönetimi.
  • En iyi kullanım alanı: Çok sayıda kategorik özellik veya yüksek kardinaliteli özelliklerle, kullanım kolaylığı ve kutudan çıktığı gibi performansın arzulandığı veri setleri.

Ağaç tabanlı modellerin eğitiminde, hızlandırıcı kütüphaneler olan cuML Forest Inference Library (FIL), Treelite formatına dönüştürülebilen XGBoost, Scikit-Learn ve cuML’den RandomForest modelleri gibi herhangi bir modelin tahmin hızını dramatik şekilde artırabilir. FIL yeteneklerini denemek için cuML’i indirin.

Daha Fazla Özellik Her Zaman Daha İyi Bir Model Mi Yaratır?

Daha fazla özelliğin her zaman daha iyi bir model yaratacağı yanılgısına düşmek sıkça karşılaşılan bir hatadır. Gerçekte, özellik sayısı arttıkça, doğrulama kaybı nihayetinde düz bir çizgi çizer. Belirli bir noktadan sonra daha fazla sütun eklemek nadiren performansı artırır ve gürültü bile katabilir.

Önemli olan “doğru dengeyi” bulmaktır. Bunu, doğrulama kaybını özellik sayısına karşı çizerek yapabilirsiniz. Gerçek bir senaryoda, öncelikle tüm özelliklerde bir temel model (Random Forest gibi) eğiterek, her sütunun ilk önem derecesini alabilirsiniz. Daha sonra bu sıralamayı kullanarak en önemli özellikleri kademeli olarak eklerken doğrulama kaybını da inceleyebilirsiniz.

Aşağıdaki Python kodu, bu konsepti uygulamak için hazırlanmıştır. Yalnızca sınırlı sayıda özelliği bilgilendiren geniş bir sentetik veri seti (10,000 örnek, 5,000 özellik) oluşturur. Sonrasında, en önemli özellikleri gruplar halinde ekleyerek modelin performansını değerlendirir.

# Gürültü özellikleri oluşturma
X_noise = np.random.randn(n_samples, n_noise)

# Bilgili ve gürültü özelliklerini bir araya getirme
X = np.column_stack([X, X_noise])

Bu kod örneği, bilinen bir sıralama ile sentetik veriden faydalanmaktadır. Bu yaklaşımı gerçek bir sorun üzerine uygulamak için:

  1. Öncelikle bir temel sıralama edinin: İlk başta tüm özellik setinizle birlikte bir ön model, örneğin bir Random Forest veya LightGBM eğiterek, her sütun için ilk özellik önem derecesi elde edin.
  2. Eğriyi çizin: Bu sıralamayı kullanarak özellikleri en önemliden en az önemli olana kadar katmanlı bir şekilde ekleyin ve her adımda doğrulama kaybını çizmek için kullanın.

Bu yöntem, geri dönüşlerin azalmaya başladığı noktayı görsel olarak belirlemenizi sağlamakta ve nihai modeliniz için en verimli özellik setini seçmenize imkan tanımaktadır.

A graph showing the validation loss improvements diminishing after a certain threshold number of features in the dataset.
Şekil 1. Özellik patlaması tuzağını gösteren bir grafik

Forest Inference Library Neden Kullanılmalı?

Eğitim süreci genellikle dikkat çekiyor, ancak gerçek üretimde kritik olan tahmin hızıdır. Büyük modeller için, özellikle XGBoost, bu durum bir darboğaz haline gelebilir. cuML’deki FIL, bu sorunu aşarak, tahmin hızlarını hızlı bir şekilde artırmaktadır.

İş akışı oldukça basittir: XGBoost, LightGBM veya diğer gradient-boosted modellerinizi yerel GPU hızlandırmasıyla eğitin ve ardından onları FIL ile yükleyip sunun. Bu, büyük batch boyutlarından birine sahipken bile, 1 batch büyüklüğünde ve büyük batch büyüklüğünde öğrenilmiş olan scikit-learn’a göre 150x ve 190x tahmin hızını yakalamanızı sağlar; eğitim ortamınızdan ayrı donanımlar üzerinde bile. Daha derin bir keşif için, Forest Inference Library kullanarak Ağaç Tabanlı Model Tahminlerinizi Hızlandırın başlıklı makaleyi gözden geçirebilirsiniz.

Model Açıklanabilirliği: Doğrulamanın Ötesinde İçgörüler Elde Etmek

Ağaç tabanlı modellerin en büyük güçlü yönlerinden biri, şeffaflıklarıdır. Özellik önemi analizi, mühendislerin hangi değişkenlerin tahminleri etkilediğini anlamalarına yardımcı olur. Bunun yanında, “rastgele özellik” deneyleri yaparak önemi daha da ileriye taşıyabilirsiniz.

Bu yaklaşım, eğitim öncesinde veri setinize rastgele gürültü özellikleri eklemeyi içerir. Daha sonra, SHAP (SHapley Additive exPlanations) gibi bir araç kullanarak özellik önemlerini hesapladığınızda, rastgele gürültüden daha az önemli herhangi bir gerçek özelliği kolaylıkla göz ardı edebilirsiniz. Bu teknik, bilgilendirici olmayan özellikleri filtrelemenin sağlam bir yolunu sunar.

# Rastgele gürültü özellikleri oluşturma
X_noise = np.random.randn(n_samples, n_noise)

# Bilgili ve gürültü özelliklerini bir araya getirme
X = np.column_stack([X, X_noise])
Şekil 2. SHapley Additive eXplanation (SHAP) özellik önemleri

Bu tür açıklanabilirlik, model kararlarını doğrulamak ve sürekli süreç iyileştirmeleri için yeni içgörüler elde etmek adına son derece değerlidir.

Ağaç Tabanlı Model Eğitimine Nasıl Başlanır?

GPU optimize edilmiş kütüphanelerle desteklenen ağaç tabanlı modeller, üretim ve operasyonlar verisi bilimi için doğruluk, hız ve açıklanabilirlik dengesi sunar. Doğru modeli dikkatlice seçip en son tahmin optimizasyonlarından yararlanarak, mühendislik ekipleri yüksek performanslı çözümleri fabrikada hızlıca oluşturarak değerlendirebilir.

cuML ve XGBoost’u ölçeklendirme hakkında daha fazla bilgi edinin. Hızlandırılmış veri biliminin yeni başlayanları için, Sıfır Kod Değişikliği ile Veri Bilimi İş Akışlarını Hızlandırın ve Uçtan Uca Veri Bilimi İş Akışlarını Hızlandırma başlıklı uygulamalı atölyelere göz atabilirsiniz.

Kaynak

Nvdia Blog

Exit mobile version